Verilog语言规则.ppt
《Verilog语言规则.ppt》由会员分享,可在线阅读,更多相关《Verilog语言规则.ppt(66页珍藏版)》请在三一办公上搜索。
1、第9章 Verilog语言规则,9.1 文字规则整数和实常数,Verilog 语言中常数可以是整数、实数和字符串:整数可以标明位数也可以不标明位数,表示方法:位宽进制数字 其中位宽表明该数用二进制的几位来表示 进制可以是二(b)、八(O)、十(d)或十六(h)进制 数字可以是所选基数的任何合法的值包括 不定值 x 位和高阻值 z(?)。如:64hff01 8b1101_0001 h83a-8d5 实常数可以用十进制表示也可以用科学浮点数表示,如:32e-4(表示0.0032)4.1E3(表示 4100),4个16进制数共64位,下划线不能出现在位宽和进制间,位宽可以缺省,由机器系统决定!,负数
2、写在前面,文字规则字符串,Verilog 语言中,字符串常常用于表示命令内需要显示的信息。用“”括起来的一行字符串,换新一行用“n”字符,与 C 语言一致。在字符串中可以用 C 语言中的各种格式控制符,如t,”,在字符串中可以用 C 语言中的各种数值型式控制符(有些不同),如:%b(二进制),%o(八进制),%d(十进制),%h(十六进制),%t(时间类型),%s(字符串类型),文字规则标识符,五、标识符 任何用Verilog HDL语言描述的“东西”都通过其名字来识别,这个名字被称为标识符。如源文件名、模块名、端口名、变量名、常量名、实例名等。标识符可由字母、数字、下划线和$符号构成;但第一
3、个字符必须是字母或下划线,不能是数字或$符号!在Verilog HDL中变量名是区分大小写的!合法的名字:A_99_ZReset_54MHz_Clock$Module,不合法的名字:123a$datamodule7seg.v,标识符不能与关键字同名!,9.2 数据类型,一、数据类型数据类型是用来表示数字电路中的数据存储和传送单元。Verilog HDL中共有19种数据类型;其中4个最基本的数据类型为:integer型parameter型reg型wire型,其它数据类型:large型、medium型、scalared型、small型、time型、tri型、tri0型、tri1型、triand型、
4、trior型、trireg型、vectored型、wand型、wor型等,二、常量在程序运行过程中,其值不能被改变的量,称为常量。数字(包括整数,x和z值,负数)parameter常量(或称符号常量),9.2 数据类型,三、变量在程序运行过程中,其值可以改变的量,称为变量。其数据类型有19种,常用的有3种:网络型(nets type)寄存器型(register type)数组(memory type),s型变量,定义输出始终随输入的变化而变化的变量。表示结构实体(如门)之间的物理连接。常用nets型变量:wire,tri:连线类型(两者功能一致)wor,trior:具有线或特性的连线(两者功能
5、一致)wand,triand:具有线与特性的连线(两者功能一致)tri1,tri0:上拉电阻和下拉电阻supply1,supply0:电源(逻辑1)和地(逻辑0),nets型变量不能储存值!,9.2 数据类型,wire型变量最常用的nets型变量,常用来表示以assign语句赋值的组合逻辑信号。模块中的输入/输出信号类型缺省为wire型。可用做任何方程式的输入,或“assign”语句和实例元件的输出。,wire 数据名1,数据名2,数据名n;,wiren-1:0 数据名1,数据名2,数据名m;或 wiren:1 数据名1,数据名2,数据名m;,每条总线位宽为n,共有m条总线,wire型向量(总
6、线),格式,9.2 数据类型,定义对应具有状态保持作用的电路元件(如触发器、寄存器等),常用来表示过程块语句(如initial,always,task,function)内的指定信号。常用register型变量:reg:常代表触发器integer:32位带符号整数型变量real:64位带符号实数型变量time:无符号时间变量,纯数学的抽象描述,2.register型变量,9.2 数据类型,register型变量与nets型变量的根本区别是:register型变量需要被明确地赋值,并且在被重新赋值 前一直保持原值。register型变量必须通过过程赋值语句赋值!不能通过assign语句赋值!在过
7、程块内被赋值的每个信号必须定义成register型!,9.2 数据类型,reg型变量定义在过程块中被赋值的信号,往往代表触发器,但不一定就是触发器(也可以是组合逻辑信号)!,reg 数据名1,数据名2,数据名n;,regn-1:0 数据名1,数据名2,数据名m;或 regn:1 数据名1,数据名2,数据名m;,每个向量位宽为n,共有m个reg型向量,例 reg4:1 regc,regd;/regc,regd为4位宽的reg型向量,reg型向量(总线),格式,9.2 数据类型,用reg型变量生成组合逻辑举例:module rw1(a,b,out1,out2);input a,b;output o
8、ut1,out2;reg out1;wire out2;assign out2=a;always(b)out1=b;endmodule,过程赋值语句,连续赋值语句,电平触发,Verilog中reg与wire的区别,reg型变量既可生成触发器,也可生成组合逻辑;wire型变量只能生成组合逻辑。,9.2 数据类型,用reg型变量生成触发器举例:module rw2(clk,d,out1,out2);input clk,d;output out1,out2;reg out1;wire out2;assign out2=d endendmodule,过程赋值语句,连续赋值语句,边沿触发,9.2 数据类
9、型,定义由若干个相同宽度的reg型向量构成的数组。Verilog HDL通过reg型变量建立数组来对存储器建模。memory型变量可描述RAM、ROM和reg文件。memory型变量通过扩展reg型变量的地址范围来生成:,regn-1:0 存储器名m-1:0;或 regn-1:0存储器名m:1;,每个存储单元位宽为n,共有m个存储单元,3.memory型变量数组,Quartus II不支持!,Verilog HDL中的变量名、参数名等标记符是对大小写字母敏感的!,9.2 数据类型,含义不同 例 regn-1:0 rega;/一个n位的寄存器 reg mema n-1:0;/由n个1位寄存器组成
10、的存储器,必须指明存储单元的地址!,赋值方式不同 一个n位的寄存器可用一条赋值语句赋值;一个完整的存储器则不行!若要对某存储器中的存储单元进行读写操作,必须指明该单元在存储器中的地址!例 rega=0;/合法赋值语句 mema=0;/非法赋值语句 mema8=1;/合法赋值语句 mema1023:0=0;/合法赋值语句,memory型变量与reg型变量的区别,9.3 操作符,一、算术操作符二、逻辑操作符三、位操作符四、关系操作符五、等式操作符,内容概要,六、缩减操作符七、缩位操作符八、条件操作符九、位拼接操作符十、操作符的优先级,9.3 操作符,操作符按功能分为9类:算术操作符逻辑操作符关系操
11、作符等式操作符缩位操作符条件操作符位操作符移位操作符位拼接操作符,操作符按操作数的个数分为3类:单目操作符带一个操作数 逻辑非!,按位取反,缩位操作符,移位操作符双目操作符带两个操作数 算术、关系、等式操作符,逻辑、位操作符的大部分三目操作符带三个操作数 条件操作符,9.3 操作符,一、算术操作符,双目运算符,进行整数除法运算时,结果值略去小数部分,只取整数部分!%称为求模(或求余)操作符,要求%两侧均为整型数据;求模运算结果值的符号位取第一个操作数的符号位!例-11%3 结果为-2进行算术运算时,若某操作数为不定值x,则整个结果也为x。,MAX+PLUS II不支持“/”和“%”运算!Qua
12、rtus II都支持!,9.3 操作符,例 除法和求模运算的区别,注意/和%的区别!,9.3 操作符,9/4=2,9%4=1,arithmetic.vwf,9.3 操作符,二、逻辑操作符逻辑操作符把它的操作数当作布尔变量:非零的操作数被认为是真(1b1);零被认为是假(1b0);不确定的操作数如4bxx00,被认为是不确定的(可能为零,也可能为非零)(记为1bx);但4bxx11被认为是真(记为1b1,因为它肯定是非零的)。,进行逻辑运算后的结果为布尔值(为1或0或x)!,9.3 操作符,“&”和“|”的优先级除高于条件操作符外,低于关系操作符、等式操作符等几乎所有操作符;逻辑非“!”优先级最
13、高。例(ab)&(bc)可简写为:ab&bc(a=b)|(x=y)可简写为:a=b|x=y(!a)|(ab)可简写为:!a|ab,为提高程序的可读性,明确表达各操作符之间的优先关系,建议使用括号!,为提高程序的可读性,明确表达各操作符之间的优先关系,建议使用括号!,9.3 操作符,三、位操作符,单目操作符,位运算其结果与操作数位数相同。位操作符中的双目操作符要求对两个操作数的相应位逐位进行运算。两个不同长度的操作数进行位运算时,将自动按右端对齐,位数少的操作数会在高位用0补齐。例 若A=5b11001,B=3b101,则A&B=(5b11001)&(5b00101)=5b00001,9.3 操
14、作符,例&操作符和&(按位与)的区别,&运算的结果为1位的逻辑值,注意&和&的区别!,被认为是 1b1,被认为是 1bx,逻辑与结果为 1bx,9.3 操作符,四、关系操作符,双目操作符,括号内先运算!,算术运算先运算!,运算结果为1位的逻辑值1或0或x。关系运算时,若关系为真,则返回值为1;若声明的关系为假,则返回值为0;若某操作数为不定值x,则返回值为x。所有的关系操作符优先级别相同。关系操作符的优先级低于算术操作符。例 asize-1等同于:a(size-1)size-(1a)不等同于:size-1a,9.3 操作符,五、等式操作符,双目操作符,运算结果为1位的逻辑值1或0或x。等于操作
15、符(=)和全等操作符(=)的区别:使用等于操作符时,两个操作数必须逐位相等,结果才为1;若某些位为x或z,则结果为x。使用全等操作符时,若两个操作数的相应位完全一致(如同是1,或同是0,或同是x,或同是z),则结果为1;否则为0。所有的等式操作符优先级别相同。=和!=操作符常用于case表达式的判别,又称为“case等式操作符”。,MAX+PLUS II和Quartus II都不支持!,9.3 操作符,例 if(A=1bx)$display(“AisX”);/当A为不定值时,式(A=1bx)的运算结果为x,则该语句不执行 if(A=1bx)$display(“AisX”);/当A为不定值时,式
16、(A=1bx)的运算结果为1,该语句执行,表3-1“=”的真值表,表3-2“=”的真值表,等于运算的结果可能为1或0或x,全等于运算的结果只有1或0,9.3 操作符,六、缩位操作符,单目操作符,运算法则与位操作符类似,但运算过程不同!对单个操作数进行递推运算,即先将操作数的最低位与第二位进行与、或、非运算,再将运算结果与第三位进行相同的运算,依次类推,直至最高位。运算结果缩减为1位二进制数。例reg3:0 a;b=|a;/等效于 b=(a0|a1)|a(2)|a3,注意缩减操作符和位操作符的区别!,9.3 操作符,七、移位操作符,单目操作符,只有当右操作数为常数时MAX+PLUS II支持!,
17、左移会扩充位数!,用法:An 或 A3=4b0001;4b10014=4b0000 4b10011=5b10010;4b10012=6b100100;16=32b1000000,将操作数右移或左移n位,相当于将操作数除以或乘以2n。,右移位数不变,但右移的数据会丢失!,9.3 操作符,八、条件操作符,三目操作符,信号=条件?表达式1:表达式2,条件操作符为?:用法:,例 数据选择器assign out=sel?in1:in0;,当条件为真,信号取表达式1的值;为假,则取表达式2的值。,sel=1时out=in1;sel=0时out=in0,9.3 操作符,九、位拼接操作符位拼接操作符为 用于将
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 语言 规则
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5452082.html