第讲VHDL的运算符2ppt课件_第1页
第讲VHDL的运算符2ppt课件_第2页
第讲VHDL的运算符2ppt课件_第3页
第讲VHDL的运算符2ppt课件_第4页
第讲VHDL的运算符2ppt课件_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1111讲讲 VHDL VHDL的运算符的运算符2 2 本讲知识点:本讲知识点: 关系运算符关系运算符 并置运算符并置运算符3 3、关系运算符:、关系运算符: 操作符操作符 功能功能 操作数类型操作数类型 等于等于 任何数据类型任何数据类型 /= /= 不等于不等于 任何数据类型任何数据类型 小于小于 integer integer、realreal、 bit bit、 std_logicstd_logic等及其一维向量等及其一维向量 大于大于 integer integer、realreal、 bit bit、 std_logicstd_logic等及其一维向量等及其一维向量 = = 大

2、于等于大于等于 integer integer、realreal、 bit bit、 std_logicstd_logic等及其一维向量等及其一维向量注意:注意: (1 1关系运算符运算的最后结果总是布尔类关系运算符运算的最后结果总是布尔类型型 (2 2关系运算符两边的数据类型必须相同,关系运算符两边的数据类型必须相同,但是位的长度不一定相同。但是位的长度不一定相同。 (3 3对位矢量数据进行比较时,比较从最左对位矢量数据进行比较时,比较从最左边的位开始,自左至右进行比较的。在位长不同边的位开始,自左至右进行比较的。在位长不同的情况下,只能按自左至右的比较结果作为关系的情况下,只能按自左至右的

3、比较结果作为关系运算的结果。运算的结果。上例上例a的值位的值位10,而,而b的值位的值位7,a应该比应该比b大。大。但是,由于位矢量是从左至右按位比较的,当比但是,由于位矢量是从左至右按位比较的,当比较到次高位时,较到次高位时,a的次高位为的次高位为“0而而b的次高位为的次高位为“1”,故比较结果,故比较结果b比比a大。这样的比较结果显然大。这样的比较结果显然时不符合实际情况的。时不符合实际情况的。 例例1: SIGNAL a: STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL b: STD_LOGIC_VECTOR (2 DOWNTO 0); a =“1010”;

4、b b) THEN ELSE 为了能使位矢量进行关系运算,在包集合为了能使位矢量进行关系运算,在包集合“STD_LOGIC_UNSIGNED“STD_LOGIC_UNSIGNED中对中对“STD_LOGIC_VECTOR“STD_LOGIC_VECTOR关系运算重新作了定义,使其可以正确的进行关关系运算重新作了定义,使其可以正确的进行关系运算。注意在使用时必须首先说明调用该包集合。系运算。注意在使用时必须首先说明调用该包集合。当然,此时位矢量还可以和整数进行关系运算。当然,此时位矢量还可以和整数进行关系运算。 在关系运算符中小于等于符在关系运算符中小于等于符“=”“=”和代入和代入符符“=”“

5、=”时相同的,在读时相同的,在读VHDLVHDL语言的语句时,应按语言的语句时,应按照上下文关系来判断此符号到底时关系符还是代入照上下文关系来判断此符号到底时关系符还是代入符。符。例例2 2:比较下面:比较下面3 3组二进制数的大小:组二进制数的大小: “1011” “1011” 和和 “101011” “101011”; “1” “1” 和和 “011”“011”; “101” “101” 和和 “110” “110” 下面是下面是VHDLVHDL关系运算的结果:关系运算的结果: “1011” “1011” “101011” “101011” “1” “1” “011” “011” “101

6、” “101” “110” “110” 为了能使其正确地进行关系运算,在包集合为了能使其正确地进行关系运算,在包集合“std_logic_unsigned“std_logic_unsigned和和“std_logic_signed“std_logic_signed中对关系运算符重新做了定义,使用时必须要中对关系运算符重新做了定义,使用时必须要调用这些程序包。调用这些程序包。 【例【例3】位矢量比较】位矢量比较 ENTITY rel_1 IS PORT ( a : IN BIT_VECTOR (0 TO 2); b: IN bit_vector(0 to 1); m : OUT BOOLEAN)

7、; END rel_1; ARCHITECTURE example OF rel_1 IS BEGIN m = (a = b); END example; 【例【例4】无符号数比较】无符号数比较 library ieee;use ieee.std_logic_arith.all;entity ue isport(a,b:in unsigned(1 downto 0);m:out boolean);end ue;architecture ex of ue isbeginm=b);end ex;【例【例4】有符号数比较】有符号数比较 library ieee;use ieee.std_logic_

8、arith.all;entity re isport(a,b:in signed(1 downto 0);m:out boolean);end re;architecture ex of re isbeginm=b);end ex;综合实例:综合实例:library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_signed.all;entity cnt10 isport(a,b:in unsigned(3 downto 0);c,d:in signed(3 downto

9、 0);rab:out unsigned(3 downto 0);rcd:out signed(3 downto 0);ru,rs:out boolean);end;architecture rtl of cnt10 isbeginrab=a+b;rcd=c+d;rub);rsd);end;并置运算符并置运算符 并置运算符并置运算符“&”用于位的连接。例如,将用于位的连接。例如,将4个个位用并置运算符位用并置运算符“&”连接起来就可以构成一个具有连接起来就可以构成一个具有4位长度的位矢量。两个位长度的位矢量。两个 4 位的位矢量用并置运算符位的位矢量用并置运算符“&”连

10、接起来就可以构成连接起来就可以构成 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=b AND (en&en&en&en);y=a&tmp_b; 第一个语句表示b的4位位矢量由en进行选择得到一个4

11、位位矢量的输出。第二个语句表示4位位矢量a和4位位矢量b再次连接(并置)构成8位位矢量y输出。 位的连接也可使用集合体的方法,即将并置符换成逗号就可以了,例如:tmp_b=(en,en,en,en);但是,这种方法不适用于位矢量之间的连接。如下的描述方法是错误的:a=(a,tmp_b); 集合体也能指定位的脚标,例如上一个语句可表示为tmp_ben,2=en,1=en,0=en);或tmp_ben); 在指定位的脚标时,也可以用“OTHERS来说明:tmp_ben);要注意,在集合体中“OTHERS只能放在最后。假若b位矢量的脚标b(2)的选择信号为“0”,其他位的选择信号均为en。那么此时表达式可写为tmp_b0,OTHERS=en); P92 P92 例例4-11 4-11 注意:操作数必须有相同的类型。注意:操作数必须有相同的类型。VHDLVHDL运算符的优先级运算符的优先级运算符运算符 优先级优先

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论