verilog hdl简明教程:第4章 表达式

verilog hdl简明教程:第4章 表达式

ID:5838758

大小:41.00 KB

页数:14页

时间:2017-12-25

verilog hdl简明教程:第4章 表达式_第1页
verilog hdl简明教程:第4章 表达式_第2页
verilog hdl简明教程:第4章 表达式_第3页
verilog hdl简明教程:第4章 表达式_第4页
verilog hdl简明教程:第4章 表达式_第5页
资源描述:

《verilog hdl简明教程:第4章 表达式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章讲述在VerilogHDL中编写表达式的基础。  表达式由操作数和操作符组成。表达式可以在出现数值的任何地方使用。4.1操作数  操作数可以是以下类型中的一种:  1)常数  2)参数  3)线网  4)寄存器  5)位选择  6)部分选择   7)存储器单元  8)函数调用4.1.1常数  前面的章节已讲述了如何书写常量。下面是一些实例。256,7//非定长的十进制数。4'b10_11,8'h0A//定长的整型常量。'b1,'hFBA//非定长的整数常量。90.00006//实数型常量。"BOND"//串常量;每个字符作为8位ASCII值存储。  表达式中的整数值可被

2、解释为有符号数或无符号数。如果表达式中是十进制整数,例如,12被解释为有符号数。如果整数是基数型整数(定长或非定长),那么该整数作为无符号数对待。下面举例说明。12是01100的5位向量形式(有符号)-12是10100的5位向量形式(有符号)5'b01100是十进制数12(无符号)5'b10100是十进制数20(无符号)4'd12是十进制数12(无符号)  更为重要的是对基数表示或非基数表示的负整数处理方式不同。非基数表示形式的负整数作为有符号数处理,而基数表示形式的负整数值作为无符号数。因此-44和-6'o54(十进制的44等于八进制的54)在下例中处理不同。intege

3、rCone;...Cone=-44/4Cone=-6'o54/4;  注意-44和-6'o54以相同的位模式求值;但是-44作为有符号数处理,而-6'o54作为无符号数处理。因此第一个字符中Cone的值为-11,而在第二个赋值中Cone的值为1073741813。4.1.2参数  前一章中已对参数作了介绍。参数类似于常量,并且使用参数声明进行说明。下面是参数说明实例。parameterLOAD=4'd12,STORE=4'd10;LOAD和STORE为参数的例子,值分别被声明为12和10。4.1.3线网  可在表达式中使用标量线网(1位)和向量线网(多位)。下面是线网说明实

4、例。wire[0:3]Prt;//Prt为4位向量线网。wireBdq;//Bbq是标量线网。  线网中的值被解释为无符号数。在连续赋值语句中,assignPrt=-3;Prt被赋于位向量1101,实际上为十进制的13。在下面的连续赋值中,assignPrt=4'HA;Prt被赋于位向量1010,即为十进制的10。4.1.4寄存器  标量和向量寄存器可在表达式中使用。寄存器变量使用寄存器声明进行说明。例如:integerTemA,TemB;reg[1:5]State;timeQue[1:5];  整型寄存器中的值被解释为有符号的二进制补码数,而reg寄存器或时间寄存器中的值

5、被解释为无符号数。实数和实数时间类型寄存器中的值被解释为有符号浮点数。TemA=-10;//TemA值为位向量10110,是10的二进制补码。TemA='b1011;//TemA值为十进制数11。State=-10;//State值为位向量10110,即十进制数22。State='b1011;//State值为位向量01011,是十进制值11。4.1.5位选择  位选择从向量中抽取特定的位。形式如下:net_or_reg_vector[bit_select_expr]  下面是表达式中应用位选择的例子。State[1]&&State[4]//寄存器位选择。Prt[0]

6、Bb

7、q//线网位选择。  如果选择表达式的值为x、z,或越界,则位选择的值为x。例如State[x]值为x。4.1.6部分选择  在部分选择中,向量的连续序列被选择。形式如下:net_or_reg_vector[msb_const_expr:1sb_const_expr]  其中范围表达式必须为常数表达式。例如。State[1:4]//寄存器部分选择。Prt[1:3]//线网部分选择。选择范围越界或为x、z时,部分选择的值为x。4.1.7存储器单元  存储器单元从存储器中选择一个字。形式如下:memory[word_address]例如:reg[1:8]Ack,Dram[0:6

8、3];... Ack=Dram[60];//存储器的第60个单元。  不允许对存储器变量值部分选择或位选择。例如,Dram[60][2]不允许。Dram[60][2:4]也不允许。  在存储器中读取一个位或部分选择一个字的方法如下:将存储器单元赋值给寄存器变量,然后对该寄存器变量采用部分选择或位选择操作。例如,Ack[2]和Ack[2:4]是合法的表达式。4.1.8函数调用  表达式中可使用函数调用。函数调用可以是系统函数调用(以$字符开始)或用户定义的函数调用。例如:$time+SumOfEvents(A,B)/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。