Verilog数据类型与表达式.ppt

上传人:tia****nde 文档编号:11497947 上传时间:2020-04-25 格式:PPT 页数:43 大小:367KB
返回 下载 相关 举报
Verilog数据类型与表达式.ppt_第1页
第1页 / 共43页
Verilog数据类型与表达式.ppt_第2页
第2页 / 共43页
Verilog数据类型与表达式.ppt_第3页
第3页 / 共43页
点击查看更多>>
资源描述
第4讲数据类型与表达式,VerilogHDL提供了丰富的数据类型,本讲把VerilogHDL的数据分为常量和变量两类,并分别介绍其特点和使用方法。表达式是操作符、操作数和标点符号序列,其目的是用来说明一个计算过程。程序中的大部分语句是由表达式构成的。本讲将给出操作符和操作数的种类及正确用法。,主要内容,(一)常量在程序运行过程中,其值不能被改变的量称为常量。VerilogHDL有整型、实数型、字符串型3种常量。在整型或实数型常量的任意位置可以随意插入下划线“_”(但是不能当作首符号),这些下划线对数本身并没有意义,但是当数字很长时使用下划线可以提高可读性。,一、数据类型,VerilogHDL有4种基本的逻辑状态:0表示逻辑0或“假”;1表示逻辑1或“真”;x表示未知;z表示高阻。注意:x值和z值都是不分大小写的,如:值0 x1z与值0X1Z相同。VerilogHDL的常量是由以上这4种基本值组成的。,VerilogHDL的整数有两种书写格式:十进制数格式;基数格式。(1)十进制数格式是一个可以带正负号的数字序列,代表一个有符号数,如下例:32/十进制数32-15/十进制数-15,1整型常量(整数),(2)基数格式的数通常是无符号数,形式如下:sizebasevaluesize定义常量的位数(长度),这是可选项;base是基数,规定这个数据的进制,可以是o或O(表示八进制),b或B(表示二进制),d或D(表示十进制),h或H(表示十六进制)之一;value是一个数字序列,其形式应与base定义的形式相符。这个数字序列中出现的值x和z以及十六进制中的af不区分大小写,“?”字符可以代替值z。,下面给出一些典型书写方法,有正确的也有错误的。5O37/5位八进制数4D2/4位十进制数4B1x_01/4位二进制数7Hx/7位x(扩展的x),即xxxxxxx4hZ/4位z(扩展的z),即zzzz2h1?/2位十六进制数,与2h1z相同8h2A/在位数和字符之间,以及基数和数值之间允许出现空格4d-4/非法:数值不能为负3b001/非法:和基数b之间不允许出现空格(2+3)b10/非法:位数不能够为表达式,如果没有定义常量的位数,那么这个数的长度就是相应值的位数,例如:o721/9位八进制数hAF/8位十六进制数如果定义的长度大于数字序列的实际长度,通常在数据序列的高位(左侧)补0。但是如果这个数字序列最左边一位为x或z,就用x或z在左边补位,例如:10b10/左边补0,000000001010bx0 x1/左边补x,xxxxxxx0 x1如果定义的长度小于数字序列的实际长度,这个数字序列最左边超出的位将被截断,例如:3b1001_0011/与3b011相等5H0FFF/与5H1F相等,实数的定义方式有两种:(1)十进制格式,由数字和小数点组成(必须有小数点),例如:2.05.67811572.120.12./非法:小数点右侧必须有数字,2实数型常量(浮点数),2)指数格式,由数字和字符e(E)组成例:23_5.1e2/其值为23510.0,忽略下划线3.6E2/其值为360.0(e与E相同)5E4/其值为0.0005e的前面必须要有数字而且后面必须为整数,3字符串型常量,字符串常量是由一对双引号括起来的字符序列。例:INTERNALERROR“REACHEDHERE”/空格出现在/双引号内,所以是字符串的组成部分12345_6789_0/下划线出现在/双引号内,所以是字符串的组成部分,实际上,字符都会被转换成二进制数,而且这种二进制数是按特定规则编码的。现在普遍都采用ASCII码,这种代码把每个字符用一个字节(8位)的二进制数表示。所以字符串实际就是若干个8位ASCII码的序列。例如字符串“INTERNALERROR”共有14个字符,存储这个字符串的变量就需要8*14位的存储空间,如下:reg1:8*14Message;/定义变量Message并分配存储空Message=INTERNALERROR/给变量Message赋值为字符串常量,参数,在Verilog语言中,用参数parameter来定义符号常量。参数常用来定义时延和变量的宽度。其定义格式如下:parameter参数名1=表达式1,参数名2=表达式2,参数名3=表达式3,;例:parametersel=8,code=8ha3;,VerilogHDL有线网net和寄存器两种类型的变量,每种类型都有其在电路中的实际意义。1线网型变量Net型数据相当于硬件电路中的各种物理连接,其特点是输出的值紧跟输入值的变化而变化。对net型有两种驱动方式,一种方式是在结构描述中将其连接到一个门元件或模块的输出端;另一种方式是用持续赋值语句assign对其进行赋值。wire是最常用的Net型变量。,(二)变量,wire型变量的定义格式如下:wire数据名1,数据名2,数据名n;例如:wirea,b;/定义了两个wire型变量a和b,2寄存器型变量,寄存器表示一个抽象的数据存储单元,可以通过赋值语句改变寄存器内存储的值。寄存器只能在always和initial过程语句中赋值,在未被赋值时,寄存器的缺省值为x。VerilogHDL共有5种寄存器类型:Reg(最常用的寄存器型),integer,time,real,realtimeReg定义格式如下:reg数据名1,数据名2,数据名n;例:rega,b;/定义了两个reg型变量a,breg7:0q;/定义q为8位宽的reg型向量,用reg声明存储器,在VerilogHDL中不能直接声明存储器,存储器是通过寄存器数组声明的,即用reg声明。存储器声明形式如下:regmsb:lsbmemory1upper1:lower1,memory2upper2:lower2,.;其中msb、lsb定义了存储器中单个寄存器的位宽;memory1和memory2是存储器名;upper1、lower1和upper2、lower2分别定义了这两个存储器的大小(有多少个寄存器)。下面是两个存储器声明实例:,reg0:3MyMem0:63/MyMem是由64个4位寄存器组成的存储器regBog1:5/Bog是由5个1位寄存器组成的数组,注意:可以只用一条赋值语句就完成对一个寄存器的赋值,但是不能只用一条赋值语句就完成对整个存储器的赋值,应当对存储器中的每个寄存器单独赋值。,对存储器赋值的正确方法如下:reg0:3Xrom1:4/Xrom是由4个4位寄存器组成的存储器对存储器赋值方法一:Xrom1=4hA;/对其中一个寄存器赋值Xrom2=4h8;/对其中一个寄存器赋值Xrom3=4hF;/对其中一个寄存器赋值Xrom4=4h2;/对其中一个寄存器赋值,对存储器赋值方法二:使用$readmemb系统任务从指定的文本文件中读取数据并加载到存储器。例:reg1:4RomB1:7;$readmemb(ram.patt,RomB);RomB是存储器名,ram.patt是包含数据的文本文件,ram.patt必须包含二进制值,也可以包含空白和注释。,1操作数操作数就是运算对象,位于操作符左右两侧。操作数有如下8种类型:常数参数(parameter定义的数)线网(wire定义的数)寄存器(Reg定义的数)位选择(线网或寄存器的某个位)部分选择(线网或寄存器的部分连续位)存储器单元函数调用,二、表达式,VerilogHDL的操作符有如下9种类型:算术操作符关系操作符相等操作符逻辑操作符按位操作符归约操作符(缩位操作符)移位操作符条件操作符连接和复制操作符其中,除条件操作符从右向左关联外,其余所有操作符均自左向右关联。,2操作符,(1)算术运算符(Arithmeticoperators)常用的算术运算符包括:+加-减*乘/除%求模,注意:整数除法将截断所有小数部分,如7/4结果为1;模操作符将求出与第一个操作数符号相同的余数,如7%4结果为3,而-7%4结果为-3;如果算术操作符的操作数中出现x或z,那么整个算术操作的运算结果为x。例如:b10 x1+b01111的结果为不确定数bxxxxx。,(2)关系操作符关系操作符是对两个操作数进行比较,如果比较结果为真则结果为1,如果比较结果为假则结果为0,关系操作符多用于条件判断。关系操作符有如下4种:(大于)=(不小于)45/结果为假(0)52=b01110等价于:b01000=b01110/结果为假(0),(3)相等操作符与关系操作符类似,相等操作符也是对两个操作数进行比较,如果比较结果为假,则结果为0,否则结果为1。相等操作符有如下4种:=(逻辑相等)!=(逻辑不等)=(全等)!=(非全等),其中,“=”和“!=”是把两个操作数的逻辑值做比较,由于操作数中某些位可能是x或z,所以比较结果也有可能是x。而“=”和“!=”是按位进行比较,即便在两个操作数中某些位出现了x或z,只要它们出现在相同的位,那么就认为二者是相同的,比较结果为1,否则为0,而不会出现结果为x的情况。,(4)逻辑操作符逻辑操作符是对操作数做与、或、非运算,操作结果为0或1。逻辑操作符有3种:/Crd是逻辑0Dgs=b1;/Dgs是逻辑1那么:CrdB=b0100;那么:A|B/结果为0110AB=b0100;那么:|B/结果为1,因为B中有1MyReg/结果为x,说明操作数MyReg中包含x,(7)移位操作符移位操作符是把操作数向左或向右移位若干位。移位操作符有2种:(右移),(8)条件运算符(conditionaloperators)?:三目运算符,其定义方式如下:信号=条件?表达式1:表达式2;当条件成立时,信号取表达式1的值,反之取表达式2的值。,(9)位拼接运算符(concatenationoperators)该运算符将两个或多个信号的某些位拼接起来。如:信号1的某几位,信号2的某几位,信号n的某几位,运算符的优先级,在书写程序时建议用括号()来控制运算的优先级,(10)复制操作符复制操作符是通过指定重复次数来多次执行连接操作。例:Abus=34b1011;/做3次连接操作,Abus的值是12b1011_1011_1011,Abus=4Dbus7,Dbus;/结果与Dbus7,Dbus7,Dbus7,Dbus7,Dbus相同31b1/结果为1113Ack/结果与Ack,Ack,Ack相同。,习题,5-5下列数字的表示是否正确?6d18,Bx0,5b0 x110,da30,10d2,hzF,习题,5-6定义如下的变量和常量:(1)定义一个名为count的整数;(2)定义一个名为ABUS的8位wire总线;(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数128;(4)定义参数Delay_time,参数值为8;(5)定义一个名为DELAY的时间变量;(6)定义一个32位的寄存器MYREG;(7)定义一个容量为128,字长为32位的存储器MYMEM;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!