- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 表达式
第四章 表达式 表达式由操作数和操作符组成。 表达式可以在出现数值的任何地方使用。 4.1 操作数 操作数可以是以下类型中的一种: 1) 常数 2) 参数 3) 线网 4) 寄存器 5) 位选择 6) 部分选择 7) 存储器单元 8) 函数调用 4.1.1 常数 256,7 //非定长的十进制数。 4b10_11, 8h0A //定长的整型常量。 b1, hFBA //非定长的整数常量。 90.00006 //实数型常量。 BOND // 串常量;每个字符作为8位ASCII值存储 4.1.2 参数 参数类似于常量,并且使用参数声明进行说明。下面是参数说明实例。 parameter LOAD= 4d12, STROBE = 4d10; LOADl和STROBE为参数的例子,值分别被声明为12和10。 4.1.3 线网 可在表达式中使用标量线网( 1位)和向量线网(多位)。 wire [0:3] Prt; //P r t 为4位向量线网。 wire Bdq; //Bbq 是标量线网。 线网中的值被解释为无符号数。在连续赋值语句中,assign Prt = -3;Prt被赋于位向量11 0 1,实际上为十进制的1 3。在下面的连续赋值中, assign Prt = 4HA;Prt被赋于位向量1 0 1 0,即为十进制的1 0。 4.1.4 寄存器 标量和向量寄存器可在表达式中使用。寄存器变量使用寄存器声明进行说明。例如: integer TemA, TemB; reg [1:5] State; time Que[ 1 : 5 ] ; 整型寄存器中的值被解释为有符号的二进制补码数,而reg寄存器或时间寄存器中的值被解释为无符号数。实数和实数时间类型寄存器中的值被解释为有符号浮点数。 TemA = -10; //TemA值为位向量1 0 1 1 0,是1 0的二进制补码。 TemA = b1011; //TemA值为十进制数1 1。 State = -10; // State值为位向量1 0 1 1 0,即十进制数2 2。 State = b1011; //State值为位向量0 1 0 1 1,是十进制值11。 4.1.5 位选择 位选择从向量中抽取特定的位。 net_or_reg_vector [bit _select _ expr] 下面是表达式中应用位选择的例子。 State [1] State [4] //寄存器位选择。 Prt [0] | Bbq //线网位选择。 如果选择表达式的值为x、z,或越界,则位选择的值为x。例如S t a t e [x]值为x。 4.1.6 部分选择 在部分选择中,向量的连续序列被选择。 net_or_reg _vector [msb _const _expr:lsb _const _expr] 其中范围表达式必须为常数表达式。 选择范围越界或为x、z时,部分选择的值为x。 4.1.7 存储器单元 存储器单元从存储器中选择一个字。memory [word _ address] 例如: reg [1:8] Ack, Dram [ 0: 63 ] ; . . . Ack = Dram[60]; //存储器的第60个单元。 不允许对存储器变量值部分选择或位选择。例如, Dram [60] [2] 不允许。 Dram [60] [2:4] 也不允许。 4.2 操作符 Verilog HDL中的操作符可以分为下述类型: 1) 算术操作符 2) 关系操作符 3) 相等操作符 4) 逻辑操作符 5) 按位操作符 6) 归约操作符 7) 移位操作符 8) 条件操作符 9) 连接和复制操作符 除条件操作符从右向左关联外,其余所有操作符自左向右关联。 A + B – C 等价于:(A + B ) - C / /自左向右 A ? B : C ? D : F 等价于:A ? B : (C ? D : F) //从右向左 圆括号能够用于改变优先级的顺序,如以下表达式: (A ? B : C) ? D : F 4.2.1 算术操作符 算术操作符有: ? +(一元加和二元加) ?-(一元减和二元减) ? *(乘) ? /(除) ? %(取模) 整数除法截断任何小数部分。例如: 7/4 结果为1 取模操作符求出与第一个操作符符号相同的余数。 7%4 结果为3 4.2.2 关系操作符 (大于) ? (小于) ? =(不小于) ? =(不大于) 关系操作符的结果为真( 1)或假( 0)。 如果操作数中有一位为X或Z,那么结果为X。 23 45结果为假( 0) 52 8‘hxFF结果为x。 如果操作数长度不同,长度较短的操作数在最重
文档评论(0)