Verilog数据类型与表达式

上传人:宝路 文档编号:48059973 上传时间:2018-07-09 格式:PPT 页数:43 大小:369.93KB
返回 下载 相关 举报
Verilog数据类型与表达式_第1页
第1页 / 共43页
Verilog数据类型与表达式_第2页
第2页 / 共43页
Verilog数据类型与表达式_第3页
第3页 / 共43页
Verilog数据类型与表达式_第4页
第4页 / 共43页
Verilog数据类型与表达式_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《Verilog数据类型与表达式》由会员分享,可在线阅读,更多相关《Verilog数据类型与表达式(43页珍藏版)》请在金锄头文库上搜索。

1、第第4 4讲讲 数据类型与表达式数据类型与表达式nVerilog HDL提供了丰富的数据类型,本讲把 Verilog HDL的数据分为常量和变量两类,并 分别介绍其特点和使用方法。n表达式是操作符、操作数和标点符号序列,其 目的是用来说明一个计算过程。程序中的大部分语句是由表达式构成的。本讲 将给出操作符和操作数的种类及正确用法。主要内容(一) 常量n在程序运行过程中,其值不能被改变的量称 为常量。Verilog HDL有整型、实数型、字 符串型3种常量。n在整型或实数型常量的任意位置可以随意插 入下划线“_”(但是不能当作首符号),这些 下划线对数本身并没有意义,但是当数字很 长时使用下划线

2、可以提高可读性。一、数据类型一、数据类型nVerilog HDL有4种基本的逻辑逻辑 状态态:0 表示逻辑0或“假”;1 表示逻辑1或“真”;x 表示未知;z 表示高阻。n注意:x值和z值都是不分大小写的,如:值0x1z与值0X1Z相同。nVerilog HDL的常量是由以上这4种基本值组 成的。Verilog HDL的整数有两种书写格式:n十进制数格式;n基数格式。 (1)十进制数格式是一个可以带正负号的数字 序列,代表一个有符号数,如下例: n32 /十进制数32n-15 /十进制数-151 1整型常量(整型常量(整数整数)(2)基数格式的数通常是无符号数,形式如下:sizebase va

3、luensize定义常量的位数(长度),这是可选项;nbase是基数,规定这个数据的进制,可以是o或O (表示八进制),b或B(表示二进制),d或D( 表示十进制),h或H(表示十六进制)之一;nvalue是一个数字序列,其形式应与base定义的形 式相符。这个数字序列中出现的值x和z以及十六进 制中的af不区分大小写,“?”字符可以代替值z。n下面给出一些典型书写方法,有正确的也有错误的。n5O37 /5位八进制数n4D2 /4位十进制数n4B1x_01 /4位二进制数n7Hx /7位x(扩展的x), 即xxxxxxxn4hZ /4位z(扩展的z) , 即zzzzn2h1? /2位十六进制数

4、,与2h1z相同n8h 2 A /在位数和字符之间,以及基数和数值之间允 许出现空格n4d-4 /非法:数值不能为负n3 b001 /非法:和基数b之间不允许出现空格n(2+3)b10 /非法:位数不能够为表达式n如果没有定义常量的位数,那么这个数的长度就是相 应值的位数,例如:no721 /9位八进制数nhAF /8位十六进制数n如果定义的长度大于数字序列的实际长度,通常在数 据序列的高位(左侧)补0。但是如果这个数字序列 最左边一位为x或z,就用x或z在左边补位,例如:n10b10 /左边补0, 0000000010n10bx0x1 /左边补x, xxxxxxx0x1n如果定义的长度小于数

5、字序列的实际长度,这个数字 序列最左边超出的位将被截断,例如:n3b1001_0011 /与3b011相等n5H0FFF /与5H1F相等n实数的定义方式有两种: (1)十进制格式,由数字和小数点组成(必须 有小数点),例如:n2.0n5.678n11572.12n0.1n2. / 非法:小数点右侧必须有数字2 2实数型常量实数型常量(浮点数)(浮点数)2)指数格式,由数字和字符e(E)组成 例:n23_5.1e2 /其值为23510.0,忽略下划 线n3.6E2 /其值为360.0 ( e与E相同)n5E4 /其值为0.0005e的前面必须要有数字而且后面必须为整数3 3字符串型常量字符串型

6、常量n字符串常量是由一对双引号括起来的字符序列。 例:n“INTERNAL ERROR“n“ R E A C H E D H E R E ” /空格出现在 /双引号内,所以是字符串的组成部分n“12345_6789_0“ /下划线出现在 /双引号内,所以是字符串的组成部分n实际上,字符都会被转换成二进制数,而且 这种二进制数是按特定规则编码的。现在普 遍都采用ASCII码,这种代码把每个字符用 一个字节(8位)的二进制数表示。所以字符 串实际就是若干个8位ASCII码的序列。例如 字符串“INTERNAL ERROR”共有14个字符 ,存储这个字符串的变量就需要8*14位的存 储空间,如下:n

7、reg 1:8*14 Message; /定义变 量Message并分配存储空nMessage = “INTERNAL ERROR“ /给 变量Message赋值为字符串常量参数参数n n 在在VerilogVerilog语言中,用语言中,用参数参数parameterparameter来定义符号常来定义符号常量。参数常用来定义时延和变量的宽度。量。参数常用来定义时延和变量的宽度。 n n 其定义格式如下:其定义格式如下: parameter parameter 参数名参数名1=1=表达式表达式1 1,参数名,参数名2=2=表达式表达式2 2,参,参 数名数名3=3=表达式表达式3 3, ;n

8、n 例:例:parameter parameter selsel=8,code=8ha3=8,code=8ha3;nVerilog HDL有线网net和寄存器两种类型的变 量,每种类型都有其在电路中的实际意义。 1线网型变量nNet型数据相当于硬件电路中的各种物理连接, 其特点是输出的值紧跟输入值的变化而变化。对net型有两种驱动方式,一种方式是在结构描 述中将其连接到一个门元件或模块的输出端;另 一种方式是用持续赋值语句assign对其进行赋值 。 wire是最常用的Net型变量。(二)(二) 变量变量nwire型变量的定义格式如下:nwire 数据名1,数据名2,数据名n;n例如: wir

9、e a,b; /定义了两个wire型变量a和b2 2寄存器型变量寄存器型变量n寄存器表示一个抽象的数据存储单元,可以通过 赋值语句改变寄存器内存储的值。n寄存器只能在always和initial过程语句中赋值, 在未被赋值时,寄存器的缺省值为x。nVerilog HDL共有5种寄存器类型:Reg(最常用的寄存器型),integer,time, real,realtimen Reg定义格式如下:reg 数据名1,数据名2,数据名n; 例:reg a,b; /定义了两个reg型变量a,breg7:0 q; /定义q为8位宽的reg型向量用reg声明存储器n在Verilog HDL中不能直接声明存储

10、器,存储 器是通过寄存器数组声明的,即用reg声明。n存储器声明形式如下:nreg msb: lsb memory1 upper1:lower1 ,memory2 upper2:lower2 ,.;n其中msb、lsb定义了存储器中单个寄存器的位宽; memory1和memory2是存储器名;upper1、 lower1和upper2、lower2分别定义了这两个存储 器的大小(有多少个寄存器)。n下面是两个存储器声明实例:nreg 0:3 MyMem 0:63n/ /MyMem是由64个4位寄存器组成的存储 器nreg Bog 1:5n/ /Bog是由5个1位寄存器组成的数组n注意:可以只用

11、一条赋值语句就完成对一个 寄存器的赋值,但是不能只用一条赋值语句 就完成对整个存储器的赋值,应当对存储器 中的每个寄存器单独赋值。对存储器赋值的正确方法如下:nreg 0:3 Xrom 1 : 4 /Xrom是由4个4位 寄存器组成的存储器 对存储器赋值方法一:nXrom1 = 4hA; /对其中一个寄存器赋值nXrom2 = 4h8; /对其中一个寄存器赋值nXrom3 = 4hF; /对其中一个寄存器赋值nXrom4 = 4h2; /对其中一个寄存器赋值n对存储器赋值方法二: 使用$readmemb系统 任务从指定的文本文件中读取数据并加载到存 储器。n例:reg 1:4 RomB 1:7

12、 ;$readmemb (“ram.patt“, RomB);RomB是存储器名,ram.patt是包含数据的 文本文件,ram.patt必须包含二进制值,也可 以包含空白和注释。1 操作数n操作数就是运算对象,位于操作符左右两侧。操 作数有如下8种类型:n常数n参数(parameter定义的数)n线网(wire定义的数)n寄存器(Reg定义的数)n位选择(线网或寄存器的某个位)n部分选择(线网或寄存器的部分连续位)n存储器单元n函数调用二、表达式nVerilog HDL的操作符有如下9种类型:n算术操作符n关系操作符n相等操作符n逻辑操作符n按位操作符n归约操作符(缩位操作符)n移位操作符n

13、条件操作符n连接和复制操作符 其中,除条件操作符从右向左关联外,其余所有操作 符均自左向右关联。2 操作符(1)算术运算符(Arithmetic operators)n常用的算术运算符包括: +加 -减 *乘 /除 %求模n注意:n整数除法将截断所有小数部分,如7/4 结果 为1;n模操作符将求出与第一个操作数符号相同的 余数,如7%4结果为3,而-7%4结果为-3 ;n如果算术操作符的操作数中出现x或z,那么 整个算术操作的运算结果为x。例如: b10x1 + b01111 的结果为不确定数 bxxxxx。(2)关系操作符n关系操作符是对两个操作数进行比较,如果 比较结果为真则结果为1,如果

14、比较结果为假 则结果为0,关系操作符多用于条件判断。n关系操作符有如下4种:(大于)=(不小于)45 /结果为假(0)52= b01110 等价于:b01000 = b01110 /结果为假(0)(3)相等操作符n与关系操作符类似,相等操作符也是对两个 操作数进行比较,如果比较结果为假,则结 果为0,否则结果为1。n相等操作符有如下4种:=(逻辑相等)!=(逻辑不等)=(全等)!=(非全等)n其中,“=”和“!=”是把两个操作数的逻辑值 做比较,由于操作数中某些位可能是x或z, 所以比较结果也有可能是x。n而 “=”和“!=”是按位进行比较,即便在 两个操作数中某些位出现了x或z,只要它们 出

15、现在相同的位,那么就认为二者是相同的 ,比较结果为1,否则为0,而不会出现结果 为x的情况。(4)逻辑操作符n逻辑操作符是对操作数做与、或、非运算, 操作结果为0或1。逻辑操作符有3种:/Crd是逻辑0 Dgs = b1; /Dgs是逻辑1 那么:Crd B = b0100;那么:A | B /结果为0110A B = b0100; 那么: |B /结果为1,因为B中有1MyReg /结果为x,说明操作数MyReg中包含x(7) 移位操作符n移位操作符是把操作数向左或向右移位若干 位。移位操作符有2种: (右移)(8) 条件运算符(conditional operators)?:n三目运算符,其定义方式如下:信号=条件?表达式1:表达式2; 当条件成立时,信号取表达式1的值,反之取表达式 2的值。(9) 位拼接运算符(concatenation operators) 该运算符将两个或多个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号