资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,先来看一个例子:,4,位加法器,语法检查结果:,综合出的,RTL,级框图,:,相同的函数名“,+”,居然,可以有不同的操作数?,从包集合中看一看函数“,+”,到底是怎么回事,关于“,+”,函数:,Std_logic_unsigned,包集合中的“,+”,函数:,概念:,运算符重载(重载函数),指两个或两个以上的函数具有相同的函数,名,而操作数的数据类型有差别,足以区分实际想要的函数。,由编译器根据操作数的数据类型来判断用那一函数,作用:,运算符重载(重载函数)使得运算符(或函数)能对多种数据类型进行操作,扩展了,VHDL,的功能。,好比是同名不同人,不同的人能做不同的事,用到谁时谁上,包集合中定义了很多重载运算符(重载函数):,一元:,asb,,,-,运算:,+,,,-,,*,,/,,,rem,,,mod,关系:,=,,,/=,,,=,,,=,,,=,逻辑:,not,,,and,,,or,,,nand,,,nor,,,xor,,,xnor,移位:,shift_left,,,shift_right,,,rotate_left,rotate_right,,,sll,,,srl,,,rol,,,ror,同一函数名可能在不同的包集合中定义了不同的函数,具体用哪一函数就要 将其所在的包集合在文件头声明。,例如:运算符“,+”,在包集合,IEEE.numeric_bit,,,IEEE.,std_logic_unsigned,,,IEEE.,std_logic_signed,中都有定义。,std_logic,类型换为,bit,类型,刚才的,4,位加法器:,自定义重载运算符(重载函数):,在包集合中定义重载函数:,编译通过:,声明自定义的包集合,刚才的,4,位加法器:,该函数将,bit,型转换为,std_logic,子类型,总结:,同名不同人,不同的人做不同的事,用到谁时谁上;,我们是女娲,也能造自己需要的人。,谢谢大家,
展开阅读全文