verilog的基本语法.ppt
《verilog的基本语法.ppt》由会员分享,可在线阅读,更多相关《verilog的基本语法.ppt(219页珍藏版)》请在三一办公上搜索。
1、verilog2009-TJU.ASIC Center-Arnold Shi,第三章 verilog的基本语法,天津大学电子科学与技术系史再峰,verilog2009-TJU.ASIC Center-Arnold Shi,3.1数据类型及其常量及变量,天津大学电子科学与技术系史再峰,verilog2009-TJU.ASIC Center-Arnold Shi,0、低、伪、逻辑低、地、VSS、负插入,1、高、真、逻辑高、电源、VDD、正插入,X、不确定:逻辑冲突无法确定其逻辑值,HiZ、高阻抗、三态、无驱动源,Verilog 的四种逻辑值,x和X、z和Z不区别大小写。Z有时候也用?代替,veri
2、log2009-TJU.ASIC Center-Arnold Shi,数据类型,Verilog HDL中共有19种数据类型,分成常量和变量最基本最常用的4种:寄存器型reg线网型wire整形 integer参数型 parameter其余的包括:large medium scalared time small tri trio tri1 triand trior trireg vectored wand wor型,主要与基本单元库有关,设计时很少使用,verilog2009-TJU.ASIC Center-Arnold Shi,一、常量,在程序运行中,其值不能被改变的量叫常量两类最基本的常量:数
3、字型常量和参数(parameter)数字型常量:整型数可以按如下两种方式书写简单的十进制数格式 基数格式,verilog2009-TJU.ASIC Center-Arnold Shi,基数表示法(一),格式:位宽进制 值无符号数。位宽是按照二进制数来计算的。进制可以为b或B(二进制)、o或O(八进制)、d或D(十进制)、h或H(十六进制)。值是基于进制的数字序列。如:3b001,3B110 三位二进制 6o12,6O12 六位八进制 4d9,4D9 十位十进制 8hBF,8HBF 八位十六进制,verilog2009-TJU.ASIC Center-Arnold Shi,基数表示法(二),基数
4、格式计数形式的数通常为无符号数。这种形式的整型数的长度定义是可选的。如果没有定义一个整数型的长度,数的长度为相应值中定义的位数。下面是两个例子:o721 9位八进制数hAF 8位十六进制数,verilog2009-TJU.ASIC Center-Arnold Shi,基数表示法(三),如果定义的长度比为常量指定的长度长,通常在左边填0补位。但是如果数最左边一位为x或z,就相应地用x或z在左边补位。例如:10b10 左边添0占位,000000001010bx0 x1 左边添x占位,x x x x x x x 0 x 1如果长度定义得更小,那么最左边的位相应地被截断。例如:3 b1001_0011
5、与3b011 相等5H0FFF 与5H1F 相等?字符在数中可以代替值z在值z被解释为不分大小写的情况下提高可读性,verilog2009-TJU.ASIC Center-Arnold Shi,下划线,下划线可以用来分割数的表达式以提高程序的可读性,但不能用在位宽和进制处,只能用于具体的数字之间比如 16b1010_1011_11111_000/合法格式8b_0011_1011/非法格式,verilog2009-TJU.ASIC Center-Arnold Shi,负数,一个数字可以被定义成负数,只要在位宽表达式前加一个减号-8d5/合法格式 8d-5/非法格式,verilog2009-TJU
6、.ASIC Center-Arnold Shi,简单的十进制格式,这种形式的整数定义为带有一个可选的“+”(一元)或“”(一元)运算符的数字序列。这种形式的整数值代表一个有符号的数。负数使用补码形式表示。例如 15相当于二进制01111-15相当于二进制10001,verilog2009-TJU.ASIC Center-Arnold Shi,实数类型,实数可以用下列两种形式定义 十进制记数法,例如:2.0;-0.1等 科学记数法,例如:235.1e2等于23510.0234_12e2等于2341200.0实数小数通过四舍五入被隐式地转换为最相近的整数。例如:42.446,42.45 转换为整数
7、4292.5,92.699 转换为整数935.62 转换为整数626.22 转换为整数6,verilog2009-TJU.ASIC Center-Arnold Shi,常量的位数,,x(或z)在十六进制值中代表4位x(或z),在八进制中代表3位x(或z),在二进制中代表1位x(或z)当常量不说明位数时候默认是32位,每个字母用8位ASCII码来表示10=32d10=32b10101=32d1=32b1-1=-32d1=32hFFFF_FFFFBX=32BX=32BXXXXXXXXXX.“AB”=16B 010000001_01000010A的ASCII值是85,B的值是86,verilog20
8、09-TJU.ASIC Center-Arnold Shi,字符串,字符串是双引号内的字符串列。一个字符可用八位二进制表示。如:“INTEGER”需要 8*7位。例:reg 8*14:1 Message;Message=“INTERNAL ERROR”;,verilog2009-TJU.ASIC Center-Arnold Shi,课堂练习,下列表达式的位模式是什么?写出其具体的二进制表示值7o44,Bx0,5bx110,hA0,10d2,hzF,verilog2009-TJU.ASIC Center-Arnold Shi,参数,参数是一个常量。用parameter定义一个标识符来代表一个常量
9、。参数经常用于定义时延和变量的宽度。格式:parameter param1=const_expr1,param2=const_expr2,paramN=const_exprN;如:parameter Delay=1;parameter A=32,B=4b0001;parameter string=“exec_command”;,verilog2009-TJU.ASIC Center-Arnold Shi,参数的传递,参数值也可以在编译时被改变。改变参数值可以使用参数定义语句或通过在模块初始化语句中定义参数值当某个模块在另一个模块内被引用时,高层模块能够改变低层模块的参数值。模块参数值的改变可采
10、用下述两种方式:参数定义语句(defparam);带参数值的模块引用。,verilog2009-TJU.ASIC Center-Arnold Shi,defparam举例,module TOP(NewA,NewB,NewS,NewC);input NewA,NewB;output NewS,NewC;defparam Ha1.XOR_DELAY=5,/实例Ha1中的参数XOR_DELAY。Ha1.AND_DELAY=2;/实例Ha1中参数的AND_DELAY。HA Ha1(NewA,NewB,NewS,NewC);endmodule,module HA(A,B,S,C);input A,B;o
11、utput S,C;parameter AND_DELAY=1,XOR_DELAY=2;assign#XOR_DELAY S=AB;assign#AND_DELAY C=A&B;endmodule,HA,TOP,verilog2009-TJU.ASIC Center-Arnold Shi,参数值的模块引用,module TOP3(NewA,NewB,NewS,NewC);input NewA,NewB;output NewS,NewC;HA#(5,2)Ha1(NewA,NewB,NewS,NewC);/第1个值5赋给参数AND_DELAY,该参数在模块HA中说明。/第2个值2赋给参数XOR_D
12、ELAY,该参数在模块HA中说明。endmodule,verilog2009-TJU.ASIC Center-Arnold Shi,课堂练习-参数传递,假定一个模块为BK,内部两个参数P1,P2;另外一个模块为HA,内部参数P3,P4其在TOP模块中实例化调用的名称分别为U1,U2请尝试在top模块中用两种不同的方法改变其参数值p1-p4分别为1,2,3,4,verilog2009-TJU.ASIC Center-Arnold Shi,二、变 量,在Verilog中有两大主要数据类型:线网类型(wire)、寄存器类型(reg)。线网类型 包含下述不同种类的线网子类型。wire,tri 用于连线
13、的最常见的线网类型 wor,trior 线或 wand,triand 线与 trireg 此线网存储数值,用于电容节点的建模 tri1,tri0 用于线逻辑的建模,上拉或下拉驱动 supply0,supply1 supply0用于对“地”建模,supply1对电源建模,verilog2009-TJU.ASIC Center-Arnold Shi,nets(网络连线),nets(网络连线):由模块或门驱动的连线。驱动端信号的改变会立刻传递到输出的连线上。例如:右图上,selb的改变,会自动地立刻影响或门的输出。,nets,verilog2009-TJU.ASIC Center-Arnold Sh
14、i,Nets(线网型),例:wire BpW;assign BpW=Error,BpW电路图,verilog2009-TJU.ASIC Center-Arnold Shi,Nets(网络连线,线网类型),简单的线网类型定义说明语句为:net_kind msb:lsb net1,net2,.netN;当一个线形有两个或多个驱动时,线网的有效值按如下表确定。,verilog2009-TJU.ASIC Center-Arnold Shi,补充:CMOS NOR,A+B,A,B,A,B,A,B,verilog2009-TJU.ASIC Center-Arnold Shi,补充:CMOS NAND,A,
15、B,A B,A,B,A,B,verilog2009-TJU.ASIC Center-Arnold Shi,Nets(网络连线),verilog2009-TJU.ASIC Center-Arnold Shi,补充知识:连续赋制值语句,连续赋制语句用于把值赋给线网型变量(不能为寄存器型变量赋值)语句形式为:assign A=B 连续赋值语句在什么时候执行呢?只要在右端表达式的操作数上有事件(事件为值的变化)发生时,表达式即被计算;如果结果值有变化,新结果就赋给左边的线网。,verilog2009-TJU.ASIC Center-Arnold Shi,连续赋值的目标类型,标量线网 向量线网 向量的常
16、数型位选择,如 a1 向量的常数型部分选择 如:a3:1 上述类型的任意的拼接运算结果,verilog2009-TJU.ASIC Center-Arnold Shi,连续赋值语句举例,module F A _ D f(A,B,Cin,Sum,Cout);input A,B,Cin;output Sum,Cout;assign S u m=A B Cin;assign C o u t=(A endmodule,在本例中,有两个连续赋值语句。这些赋值语句是并发的,与其书写的顺序无关,verilog2009-TJU.ASIC Center-Arnold Shi,数据流描述方式,例:wor BpW;w
17、and BpR;assign BpW=Error,BpW和BpR电路图,verilog2009-TJU.ASIC Center-Arnold Shi,寄存器(register)类型变量,寄存器(register)类型变量 register 型变量能保持其值,直到它被赋于新的值。register 型变量常用于行为建模,产生测试的激励信号。常用行为语句结构来给寄存器类型的变量赋值。,verilog2009-TJU.ASIC Center-Arnold Shi,reg型,寄存器是数据存储单元的抽象reg型数据常用来表示always块内的指定信号,常代表触发器reg型数据用initial或者alway
18、s块中指定信号reg型数据的缺省值是x。可以被赋正值或者负值。当它作为一个表达式中的操作数时候,作为无符号数。reg数据类型定义格式为reg n-1:0 数据名1,.;或者 reg n:1 数据名1,.;,verilog2009-TJU.ASIC Center-Arnold Shi,寄存器阵列,Verilog 语言支持寄存器阵列的声明:integer NUMS 7:0;/8个整型变量的寄存器阵列time t_vals 3:0;/4个时间变量的寄存器阵列数据类型为 reg 的阵列常称为存储器(即 memory):reg 15:0 MEM 0:1023;/1K x 16 位的存储器reg 7:0
19、PREP hfffe:hffff;/2 x 8 位的存储器可以用参数来表示存储器的大小:parameter wordsize=16;parameter memsize=1024;reg wordsize-1:0 MEM3memsize-1:0;只能一次选择一个字,不允许对存储器变量值部分进行部分选择或位选择.如 dram60 2:4是错误的,verilog2009-TJU.ASIC Center-Arnold Shi,存储器 memory型变 量,存储器 memory型 用一个寄存器数组来对存储器建模。格式:reg msb:lsb 存储器名 upper1:lower1;如:reg 3:0 My
20、Mem 63:0;/64个四位寄存器组,verilog2009-TJU.ASIC Center-Arnold Shi,其他类型变量,integer 整数寄存器 有符号数。主要用来高层次建模。如:integer A;/整形寄存器,32位 integer B 1023:0;/10位time 时间类型寄存器 如:time CurrentTime;/CurrentTime存储一个时间值 CurrentTime=$time;,verilog2009-TJU.ASIC Center-Arnold Shi,输入端口(input)可以由寄存器(reg)或线网(wire)连接驱动,但它本身只能驱动网络连接。输出
21、端口(output)可以由寄存器或线网连接驱动,但它本身只能驱动线网连接。输入/输出端口(inout)只可以由线网连接驱动,但它本身只能驱动线网连接。如果信号变量是在过程块(initial块 或 always块)中被赋值的,必须把它声明为寄存器类型变量,如何选择正确的数据类型?,verilog2009-TJU.ASIC Center-Arnold Shi,module top;wire y;reg a,b;DUT u1(y,a,b);initial begin a=0;b=0;#10 a=1;.endendmodule,module DUT(Y,A,B_);output Y;input A,B
22、:wire Y,A,B;and(Y,A,B);endmodule,举例说明数据类型的选择,verilog2009-TJU.ASIC Center-Arnold Shi,在过程块(always initial)中对变量赋值时,忘了把它定义为寄存器 类型(reg)或已把它定义为连接类型了(wire)把实例的输出连接出去时,把它定义为寄存器类型把模块的输入信号定义为寄存器类型。这是经常犯的三个错误!,选择数据类型时常犯的错误,verilog2009-TJU.ASIC Center-Arnold Shi,3.2运算符及表达式,天津大学电子科学与技术系史再峰,verilog2009-TJU.ASIC C
23、enter-Arnold Shi,3.2 运算符(操作符)及表达式,Verilog HDL中的运算符可以分为下述类型:算术运算符关系运算符相等运算符逻辑运算符按位运算符缩减(归约)运算符移位运算符条件运算符连接和复制运算符,verilog2009-TJU.ASIC Center-Arnold Shi,按所带操作数的个数分类,单目运算符(unary operator)带一个操作数,操作数在运算符的 右边如 clock双目运算符(binary operator)带两个操作数,操作数分别在运算符的两边如 a|b三目运算符(ternary operator)带三个操作数,用三目运算符隔开,verilo
24、g2009-TJU.ASIC Center-Arnold Shi,算术运算符,算术运算符有:+(一元加和二元加)-(一元减和二元减)*(乘)/(除)%(取模)整数除法截断任何小数部分。例如:7/4 结果为1取模运算符求出与第一个运算符符号相同的余数。7%4 结果为3而-7%4 结果为-3,verilog2009-TJU.ASIC Center-Arnold Shi,课堂练习,以下表达式在verilog HDL中的值是多少?(结果用16位hex表示表示)5/3(-9)/6(-9)%611%(-5)12/(-7),答案是5/3=16h0001(-9)/6=16hFFFF(-9)%6=16h FFF
25、D11%(-5)=16h000112/(-7)=16hFFFF,verilog2009-TJU.ASIC Center-Arnold Shi,按位运算符,按位运算符有:(一元非)&(二元与)|(二元或)(二元异或),(二元异或非)这些运算符在输入操作数的对应位上按位操作,并产生向量结果。不同长度操作符运算时,会右端对齐,左端补0,verilog2009-TJU.ASIC Center-Arnold Shi,按位非运算符,verilog2009-TJU.ASIC Center-Arnold Shi,按位与运算符,verilog2009-TJU.ASIC Center-Arnold Shi,按位或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- verilog 基本 语法
链接地址:https://www.31ppt.com/p-5452063.html