第5讲 数据类型与表达式_第1页
第5讲 数据类型与表达式_第2页
第5讲 数据类型与表达式_第3页
第5讲 数据类型与表达式_第4页
第5讲 数据类型与表达式_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、通常是无符号数,形式如下: sizebase valuesize定义常量的位数(长度),这是可选项;base是基数,规定这个数据的进制,可以是o或O(表示八进制),b或B(表示二进制),d或D(表示十进制),h或H(表示十六进制)之一;value是一个数字序列,其形式应与base定义的形式相符。这个数字序列中出现的值x和z以及(yj)十六进制中的af不区分大小写,“?”字符可以代替值z。共四十五页下面给出一些典型书写方法,有正确的也有错误(cuw)的。5O37 /5位八进制数4D2 /4位十进制数4B1x_01 /4位二进制数7Hx /7位x(扩展的x), 即xxxxxxx4hZ /4位z(扩

4、展的z) , 即zzzz2h1? /2位十六进制数,与2h1z相同8h2 A /在位数和字符之间,以及基数和数值之间允许出现空格4d-4 /非法:数值不能为负3b001 /非法:和基数b之间不允许出现空格(2+3)b10 /非法:位数不能够为表达式共四十五页如果没有定义常量的位数,那么这个数的长度就是相应值的位数,例如(lr):o721 /9位八进制数hAF /8位十六进制数如果定义的长度大于数字序列的实际长度,通常在数据序列的高位(左侧)补0。但是如果这个数字序列最左边一位为x或z,就用x或z在左边补位,例如:10b10 /左边补0, 000000001010bx0 x1 /左边补x, xx

5、xxxxx0 x1如果定义的长度小于数字序列的实际长度,这个数字序列最左边超出的位将被截断,例如:3b1001_0011 /与3b011相等5H0FFF /与5H1F相等共四十五页实数(shsh)的定义方式有两种:(1)十进制格式,由数字和小数点组成(必须有小数点),例如:2.05.67811572.120.12. / 非法:小数点右侧必须有数字2实数(shsh)型常量(浮点数)共四十五页2)指数格式,由数字和字符e(E)组成例:23_5.1e2 /其值为23510.0,忽略下划线3.6E2 /其值为360.0 ( e与E相同)5E4 /其值为0.0005e的前面(qin mian)必须要有数

6、字而且后面必须为整数共四十五页3字符串型常量(chngling)字符串常量是由一对双引号括起来的字符序列。例:INTERNAL ERROR“ R E A C H E D H E R E ” /空格(kn )出现在/双引号内,所以是字符串的组成部分12345_6789_0 /下划线出现在/双引号内,所以是字符串的组成部分共四十五页字符(z f)都会被转换成二进制数(ASCII码) 。所以字符串实际就是若干个8位ASCII码的序列。例如: 字符串“INTERNAL ERROR”共有14个字符,存储这个字符串的变量就需要8*14位的存储空间,如下:reg 1:8*14 Message; /定义变量M

7、essage并分配存储空Message = INTERNAL ERROR /给变量Message赋值为字符串常量共四十五页参数(cnsh)在Verilog语言(yyn)中,用参数parameter来定义符号常量。参数常用来定义时延和变量的宽度。其定义格式如下:parameter 参数名1=表达式1,参数名2=表达式2,参数名3=表达式3, ;例: parameter sel=8,code=8ha3;共四十五页Verilog HDL有线网net和寄存器两种类型(lixng)的变量,每种类型(lixng)都有其在电路中的实际意义。1线网型变量Net型数据相当于硬件电路中的各种物理连接,其特点是输出

8、的值紧跟输入值的变化而变化。 对net型有两种驱动方式: 一种方式是在结构描述中将其连接到一个门元件或模块的输出端; 另一种方式是用持续赋值语句assign对其进行赋值。 wire是最常用的Net型变量。(二) 变量(binling)共四十五页wire型变量(binling)的定义格式如下:wire 数据名1,数据名2,数据名n;例如: wire a,b; /定义了两个wire型变量a和bWire7:0 databus; /databus的宽度是8位共四十五页2寄存器型变量(binling)寄存器表示一个抽象的数据存储单元。寄存器只能在always和initial过程语句中赋值,在未被赋值时,

9、寄存器的缺省值为x。Verilog HDL共有(n yu)5种寄存器类型: reg(最常用的寄存器型),integer,time,real,realtime reg定义格式如下: reg 数据名1,数据名2,数据名n;例:reg a,b; /定义了两个reg型变量a,b reg7:0 q; /定义q为8位宽的reg型向量共四十五页用reg声明(shngmng)存储器在Verilog HDL中不能直接声明存储器,存储器是通过(tnggu)寄存器数组声明的。存储器声明形式如下:reg msb: lsb memory1 upper1:lower1 , memory2 upper2:lower2 ,.

10、;定义单个寄存器的位宽定义存储器的大小(共有多少个寄存器)注意:maxplus不支持此种定义方式。共四十五页例:reg 0:3 MyMem 0:63/ /MyMem是由64个4位寄存器组成(z chn)的存储器reg Bog 1:5/ /Bog是由5个1位寄存器组成的数组reg 1:4 Xrom 1 : 5 /Xrom是由5个4位寄存器组成的存储器共四十五页存储器的赋值 reg 1:4 Xrom 1 : 5 对存储器Xrom赋值的正确方法有两种:对存储器赋值方法一:Xrom1 = 4hA; /对其中(qzhng)一个寄存器赋值Xrom2 = 4h8; /对其中一个寄存器赋值Xrom3 = 4h

11、F; /对其中一个寄存器赋值Xrom4 = 4h2; /对其中一个寄存器赋值Xrom5 = 4h9; /对其中一个寄存器赋值注意:不能只用一条赋值语句就完成(wn chng)对整个存储器的赋值,应当对存储器中的每个寄存器单独赋值共四十五页对存储器赋值方法二: 使用$readmemb系统任务(rn wu)从指定的文本文件中读取数据并加载到存储器。例: $readmemb (ram.patt, Xrom );存储器的赋值 reg 1:4 Xrom 1 : 5 存储器名包含(bohn)数据的文本文件注意:ram.patt必须包含二进制值,也可以包含空白和注释。共四十五页注意: 这里讨论的verilo

12、g存储器设计,在综合时都是用触发器来实现的。 平时在实际设计中如果需要用到存储器,更多的是采用设计软件(如quartusII)所提供(tgng)的存储器宏功能模块来实现(参考教材8.1.4节),这样在综合时会自动采用FPGA器件中的嵌入式存储器块去物理实现。共四十五页1 操作数操作数就是运算对象,位于操作符左右两侧。VerilogHDL操作数有如下8种类型:常数参数(parameter定义的数)线网(wire定义的数)寄存器(Reg定义的数)位选择(线网或寄存器的某个位)部分(b fen)选择(线网或寄存器的部分连续位)存储器单元函数调用二、表达式共四十五页Verilog HDL的操作符有如下

13、9种类型:算术操作符关系操作符相等操作符逻辑操作符按位操作符归约操作符(缩位操作符)移位操作符条件操作符连接和复制(fzh)操作符其中,除条件操作符从右向左关联外,其余所有操作符均自左向右关联。2 操作符共四十五页(1)算术(sunsh)运算符(Arithmetic operators)常用的算术运算符包括:+加-减*乘/除%求模共四十五页注意:整数除法将截断所有小数部分,如7/4 结果为1;模操作符将求出与第一个操作数符号(fho)相同的余数,如7%4结果为3,而-7%4结果为-3;MaxplusII不支持“/和%”运算符如果算术操作符的操作数中出现x或z,那么整个算术操作的运算结果为x。例

14、如:b10 x1 + b01111 的结果为不确定数 bxxxxx。共四十五页(2)关系操作符关系操作符是对两个(lin )操作数进行比较,如果比较结果为真则结果为1,如果比较结果为假则结果为0,关系操作符多用于条件判断。关系操作符有如下4种: (大于) =(不小于) 45 /结果为假(0) 52= b01110 等价于: b01000 = b01110 /结果为假(0)共四十五页(3)相等操作符与关系操作符类似,相等操作符也是对两个操作数进行比较,如果(rgu)比较结果为假,则结果为0,否则结果为1。相等操作符有如下4种: =(逻辑相等) !=(逻辑不等) =(全等) !=(非全等)共四十五

15、页其中,“=”和“!=”是把两个操作数的逻辑值做比较,由于操作数中某些位可能是x或z,所以比较结果也有可能是x。而 “=”和“!=”是按位进行比较,即便在两个操作数中某些位出现了x或z,只要它们出现在相同的位,那么就认为(rnwi)二者是相同的,比较结果为1,否则为0,而不会出现结果为x的情况。共四十五页(4)逻辑操作符逻辑操作(cozu)符是对操作(cozu)数做与、或、非运算,操作(cozu)结果为0或1。逻辑操作符有3种: &(逻辑与) |(逻辑或) !(逻辑非)共四十五页逻辑操作符的操作数只能是逻辑值0或1如: Crd = b0; /Crd是逻辑0 Dgs = b1; /Dgs是逻辑1

16、 那么(n me): Crd & Dgs /结果为0 (假) Crd | Dgs /结果为1 (真) !Dgs /结果为0 (假)共四十五页(5)位操作符位操作(cozu)符是对操作(cozu)数按位进行与、或、非等逻辑操作(cozu)。位操作(cozu)符有如下5种: (一元非,只有一个操作数位于右侧) &(二元与,有两个操作数位于左右两侧) |(二元或,有两个操作数位于左右两侧) (二元异或,有两个操作数位于左右两侧) 或者 (二元异或非,有两个操作数位于左右两侧)共四十五页例如(lr): A = b0110; B = b0100; 那么: A | B /结果为0110 A & B /结果

17、为0100共四十五页(6)缩位运算符(归约操作符)&与&与非|或|或非异或,同或缩位运算符与位运算符的逻辑运算法则一样,但缩位运算是对单个操作数进行(jnxng)与、或、非递推运算的,它放在操作数的前面。缩位运算符将一个矢量缩减为一个标量。例:共四十五页A = b0110;B = b0100;那么:|B /结果为1,因为(yn wi)B中有1&B /结果为0,因为B中有0A /结果为0,因为A中有偶数个1归约异或操作符“”可用于检查操作数中是否包含x,例如:MyReg = 4b01x0;MyReg /结果为x,说明操作数MyReg中包含x共四十五页(7) 移位(y wi)操作符移位操作符是把操

18、作数向左或向右移位若干位。移位操作符有2种: (右移)例:module yiwei(a,c,d); input7:0 a; output7:0 c,d; assign c=a2; endmodule若a=2h08,则程序执行后c=2h20,d=2h02;若a=2h04,则程序执行后c=2h10,d=2h01;共四十五页(8) 条件(tiojin)运算符(conditional operators) ?:三目运算符,其定义方式如下: 信号=条件?表达式1:表达式2;当条件成立时,信号取表达式1的值,反之取表达式2的值。共四十五页【例】用Verilog HDL语言(yyn)描述下图所示的电路。ca

19、by源程序如下(rxi)module example1(out,a,b,c);inputa,b,c;outputout;assign out = a? b:c;endmodule y = a*c+a*b 共四十五页(9) 位拼接(pn ji)运算符(concatenation operators) 该运算符将两个或多个信号的某些位拼接起来。如:信号1的某几位,信号2的某几位,信号n的某几位例:module full_add2(a, b, cin, sum, cout);input 3:0a, b; input cin;output3:0 sum; output cout;assign cout,sum=a+b+cin;endmodule共四十五页运算符的优先级在书写程序(chngx)时建议用括号()来控制运算的优先级 共四十五页(10) 复制操作符复制操作符是通过指定重复(chngf)次数来多次执行连接操作。例:Abus = 34b1011; /做3次连接操作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论