《VHDL的运算符》PPT课件.ppt
上传人:天马****23 上传时间:2024-09-15 格式:PPT 页数:18 大小:60KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

《VHDL的运算符》PPT课件.ppt

《VHDL的运算符》PPT课件.ppt

预览

免费试读已结束,剩余 8 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第11讲VHDL的运算符23、关系运算符:操作符功能操作数类型=等于任何数据类型/=不等于任何数据类型<小于integer、real、bit、std_logic等及其一维向量<=小于等于integer、real、bit、std_logic等及其一维向量>大于integer、real、bit、std_logic等及其一维向量>=大于等于integer、real、bit、std_logic等及其一维向量注意:(1)关系运算符运算的最后结果总是布尔类型(2)关系运算符两边的数据类型必须相同,但是位的长度不一定相同。(3)对位矢量数据进行比较时,比较从最左边的位开始,自左至右进行比较的。在位长不同的情况下,只能按自左至右的比较结果作为关系运算的结果。上例a的值位10,而b的值位7,a应该比b大。但是,由于位矢量是从左至右按位比较的,当比较到次高位时,a的次高位为“0”而b的次高位为“1”,故比较结果b比a大。这样的比较结果显然时不符合实际情况的。为了能使位矢量进行关系运算,在包集合“STD_LOGIC_UNSIGNED”中对“STD_LOGIC_VECTOR”关系运算重新作了定义,使其可以正确的进行关系运算。注意在使用时必须首先说明调用该包集合。当然,此时位矢量还可以和整数进行关系运算。在关系运算符中小于等于符“<=”和代入符“<=”时相同的,在读VHDL语言的语句时,应按照上下文关系来判断此符号到底时关系符还是代入符。例2:比较下面3组二进制数的大小:“1011”和“101011”;“1”和“011”;“101”和“110”下面是VHDL关系运算的结果:“1011”>“101011”“1”>“011”“101”<“110”为了能使其正确地进行关系运算,在包集合“std_logic_unsigned”和“std_logic_signed”中对关系运算符重新做了定义,使用时必须要调用这些程序包。【例3】位矢量比较ENTITYrel_1ISPORT(a:INBIT_VECTOR(0TO2);b:INbit_vector(0to1);m:OUTBOOLEAN);ENDrel_1;ARCHITECTUREexampleOFrel_1ISBEGINm<=(a=b);ENDexample;【例4】无符号数比较libraryieee;useieee.std_logic_arith.all;entityueisport(a,b:inunsigned(1downto0);m:outboolean);endue;architectureexofueisbeginm<=(a>=b);endex;【例4】有符号数比较libraryieee;useieee.std_logic_arith.all;entityreisport(a,b:insigned(1downto0);m:outboolean);endre;architectureexofreisbeginm<=(a>=b);endex;综合实例:libraryieee;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;useieee.std_logic_signed.all;entitycnt10isport(a,b:inunsigned(3downto0);c,d:insigned(3downto0);rab:outunsigned(3downto0);rcd:outsigned(3downto0);ru,rs:outboolean);end;architecturertlofcnt10isbeginrab<=a+b;rcd<=c+d;ru<=(a>b);rs<=(c>d);end;并置运算符并置运算符“&”用于位的连接。例如,将4个位用并置运算符“&”连接起来就可以构成一个具有4位长度的位矢量。两个4位的位矢量用并置运算符“&”连接起来就可以构成8位长度的位矢量。图3-1就是使用并置运算符的实例。图3-1使用并置运算符的实例在图3-1中,en是b(0)~b(3)的允许输出信号,而y(0)~y(7)中存在如下关系:y(0)=b(0)y(1)=b(1)y(2)=b(2)y(3)=b(3)y(4)=a(0)y(5)=a(1)y(6)=a(2)y(7)=a(3)这种逻辑关系用并置运算符就很容易表达出来:tmp_b<=bAND(en&en&en&en);y<=a&tmp_b;第一个语句表示b的4位位矢量由en进行选择得到一个4位位矢量的输出。第二个语句表示4位位矢量a和