- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CPLD/FPGA技术与应用 第 3 章 VHDL设计初步 3.5 VHDL操作符【P331 9.9】 操作符又称为运算符,其操作对象称为操作数。操作符和操作数相结合就构成了各种VHDL表达式。 与其他高级语言相似,VHDL有着丰富的操作符,主要有四类常用的操作符,分别是逻辑操作符、算术操作符、关系操作符和符号操作符。 此外还有并置操作符。 3.5 VHDL操作符 对于VHDL中的操作符与操作数间的运算有两点需要特别注意: 严格遵循在基本操作符间操作数是同数据类型的规则。 严格遵循操作数的数据类型必须与操作符所要求的数据类型完全一致。 3.5 VHDL操作符 操作符的优先级顺序为: 逻辑操作符 包括一元逻辑操作符和二元逻辑操作符: 一元逻辑操作符:NOT(非) 二元逻辑操作符:AND(与)、OR(或)、NAND (与非)、NOR(或非)、XOR(异或)、XNOR(同或) 逻辑操作符可以对“STD_LOGIC”和“BIT”等逻辑型数据、“STD_LOGIC _VECTOR”逻辑型数组及布尔数据进行逻辑运算。 【注意】 操作符的左边和右边,以及代入的信号的数据类型必须是相同的。 逻辑操作符 【注意】 在VHDL中,逻辑操作符左右没有优先组合的区别,一个表达式中如果有多个逻辑操作符,运算顺序的不同可能会影响运算结果,就需要用括号来解决组合顺序的问题。如: q = a AND b OR NOT c AND d; 这条语句在编译时会给出语法错误信息,可以加上括号改为: q = (a AND b) OR (NOT (c AND d)); 如果逻辑表达式中只有AND、OR、XOR这3个操作符中的一种,可以不加括号,因为对于这三种逻辑运算来说,改变运算顺序不会影响逻辑结果。 P333【例9-22】 SIGNAL a, b, c: STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL d, e, f, g: STD_LOGIC_VECTOR (1 DOWNTO 0); SIGNAL h, i, j, k: STD_LOGIC; SIGNAL l, m, n, o, p: BOOLEAN; … a=b AND c; -- b、c相与后向a赋值,a、b、c的 -- 数据类型同属4位长的位矢量 d=e OR f OR g; -- 两个操作符OR相同,不必加括号 h= (i NAND j) NAND k; -- NAND不属于上述三种算符中的一种, -- 必须加括号 l= (m XOR n) AND (o XOR p); -- 操作符不同,必须加括号 h= i AND j AND k; -- 两个操作符都是AND,不必加括号 h=i AND j OR k; -- 两个操作符不同,未加括号,表达错误 a=b AND e; -- 操作数b与e的位矢长度不一致,表达错误 h=i OR l; -- i的数据类型是位STD_LOGIC, -- 而l的数据类型是布尔量BOOLEAN, -- 因而不能相互作用,表达错误 关系操作符 包括= 、/= 、<、<= 、>、>= 。 关系操作符的使用规则如下: 两个对象进行比较时,数据类型一定要相同。 =(等于)和/=(不等于)适用于所有数据类型的对象之间的比较。 大于、小于、大于等于、小于等于适用于整数、实数位、位矢量及数组类型的比较。 <=符号有两种含义:代入符和小于等于符,要根据上下文判断。 两个位矢量类型的对象比较时,自左至右,按位比较。 关系操作符 P334【例9-23】 ENTITY relational_ops_1 IS PORT(a, b : IN BIT_VECTOR (0 TO 3); m : OUT BOOLEAN ); END relational_ops_1; ARCHITECTURE example OF relational_ops_1 IS BEGIN m = (a=b); --P334,例9-23和9-24有错 END example; 算术操作符 包括一元算术操作符和二元算术操作符: 一元算术操作符: +(正号)、-(负号)、ABS(求绝对值) 二元算术操作符: + 、- 、* 、/ 、MOD(求模)、REM(求余)、**(乘方运算) 算术操作符 【例】 SIGNAL a, b, c, d, e, f, g, h : INTEGER RANGE 0 TO
文档评论(0)