第三讲 verilog的基本语法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0
x和X、z和Z不区别大小写。Z有时候也用?代替
verilog2011--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型,主要与基 本单元库有关,设计时很少使用
Nets(网络连线)
verilog2011--TJU. ASIC Center---Arnold Shi
verilog2011--TJU. ASIC Center---Arnold Shi
Verilog 的四种逻辑值
buf
0
buf 1
0、低、伪、逻辑低、地、VSS、负插入
1、高、真、逻辑高、电源、VDD、正插入
buf X X、不确定:逻辑冲突无法确定其逻辑值
bufif1 Z HiZ、高阻抗、三态、无驱动源
基数表示法(一)
格式:[位宽]‟进制 值 无符号数。 位宽是按照二进制数来计算的。 进制可以为b或B(二进 制)、o或O(八进制)、d或D(十进制)、h或H(十六进制)。 值是基于进制的数字序列。如: 3‟b001, 3‟B110 三位二进制 6‟o12, 6‟O12 六位八进制 4‟d9, 4‟D9 十位十进制 8‟hBF, 8‟HBF 八位十六进制
verilog2011--TJU. ASIC Center---Arnold Shi
参数的传递
参数值也可以在编译时被改变。改变参数值可以 使用参数定义语句或通过在模块初始化语句中定 义参数值 当某个模块在另一个模块内被引用时,高层模块 能够改变低层模块的参数值。模块参数值的改变 可采用下述两种方式:
TOP HA
verilog2011--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);
verilog2011--TJU. ASIC Center---Arnold Shi
基数表示法(二)
基数格式计数形式的数通常为无符号数。 这种形式的整型数的长度定义是可选的。如果没 有定义一个整数型的长度,数的长度为相应值中 定义的位数。 下面是两个例子:
'o721 9位八进制数 'hAF 8位十六进制数
参数定义语句(defparam); 带参数值的模块引用。
verilog2011--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; output S,C; parameter AND_DELAY=1, XOR_DELAY=2; assign #XOR_DELAY S=A^B; assign #AND_DELAY C=A&B; endmodule
Nets(网络连线,线网类型)
简单的线网类型定义说明语句为: net_kind [msb:lsb] net1,net2,….netN; 当一个线形有两个或多个驱动时,线网的有效 值按如下表确定。
verilog2011--TJU. ASIC Center---Arnold Shi
补充:CMOS NOR
//第1个值5赋给参数AND_DELAY,该参数在模块HA中说明。 //第2个值2赋给参数XOR_DELAY,该参数在模块HA中说明。
endmodule
verilog2011--TJU. ASIC Center---Arnold Shi
课堂练习-参数传递
假定一个模块为BK,内部 两个参数P1,P2;另外一 个模块为HA,内部参数P3, P4 其在TOP模块中实例化调 用的名称分别为U1, U2 请尝试在top模块中用两种 不同的方法改变其参数值 p1-p4分别为1,2,3,4
B A A+B A B
VDD
MP1
MP2
A 0
B 0
Baidu Nhomakorabea
F 1
MN1
A B
0 1 1
1 0 1
0 0 0
A
B
MN2
verilog2011--TJU. ASIC Center---Arnold Shi
补充:CMOS NAND
A B
A 0
A•B
B 0
1
F 1
1
0
A B A B
1 1
0 1
1 0
verilog2011--TJU. ASIC Center---Arnold Shi
格式: parameter param1 = const_expr1, param2 = const_expr2, …, paramN = const_exprN;
如: parameter Delay = 1; parameter A = 32,B=4‟b0001; parameter string = “exec_command”;
例如
15 -15
相当于二进制01111 相当于二进制10001
verilog2011--TJU. ASIC Center---Arnold Shi
实数类型
实数可以用下列两种形式定义 十进制记数法,例如: • 2.0 ; -0.1等 科学记数法,例如: • 235.1e2 等于23510.0 • 234_12e2 等于2341200.0 实数小数通过四舍五入被隐式地转换为最相近的整数。例如: 42.446, 42.45 转换为整数42 92.5, 92.699 转换为整数93 -5.62 转换为整数-6 -26.22 转换为整数-6
verilog2011--TJU. ASIC Center---Arnold Shi
基数表示法(三)
如果定义的长度比为常量指定的长度长,通常在左边填0 补位。但是如果数最左边一位为x或z,就相应地用x或z在 左边补位。
例如:10'b10 左边添0占位, 0000000010 10'bx0x1 左边添x占位, x x x x x x x 0 x 1
P1 BK P2
HA
P3 P4
TOP U2 U1
verilog2011--TJU. ASIC Center---Arnold Shi
二、变 量
在Verilog中有两大主要数据类型:线网类型(wire)、寄存 器类型(reg)。 线网类型
包含下述不同种类的线网子类型。 wire, tri 用于连线的最常见的线网类型 wor, trior 线或 wand, triand 线与 trireg 此线网存储数值,用于电容节点的建模 tri1, tri0 用于线逻辑的建模,上拉或下拉驱动 supply0, supply1 supply0用于对“地”建模,supply1对电源建 模
下划线
下划线可以用来分割数的表达式以提高程序的可读 性,但不能用在位宽和进制处,只能用于具体的数字 之间
比如 16‟b1010_1011_11111_000 //合法格式 8‟b_0011_1011 //非法格式
verilog2011--TJU. ASIC Center---Arnold Shi
verilog2011--TJU. ASIC Center---Arnold Shi
一、常量
在程序运行中,其值不能被改变的量叫常量 两类最基本的常量:数字型常量和参数 (parameter)
数字型常量:整型数可以按如下两种方式书写
• 简单的十进制数格式 • 基数格式
verilog2011--TJU. ASIC Center---Arnold Shi
verilog2011--TJU. ASIC Center---Arnold Shi
常量的位数
,x(或z)在十六进制值中代表4位x(或z),在八进制 中代表3位x(或z),在二进制中代表1位x(或z) 当常量不说明位数时候默认是32位,每个字母用8位 ASCII码来表示 10 =32‟d10 =32‟b1010 1=32‟d1 =32‟b1 -1 = -32‟d1 =32‟hFFFF_FFFF „BX=32‟BX=32‟BXXXXXXXXXX... “AB”=16‟B 010000001_01000010 A的ASCII值是85,B的值是86
如果长度定义得更小,那么最左边的位相应地被截断。
例如: 3 ' b1001_0011与3'b011 相等 5'H0FFF 与5'H1F 相等
?字符在数中可以代替值z在值z被解释为不分大小写的情 况下提高可读性
verilog2011--TJU. ASIC Center---Arnold Shi
nets
verilog2011--TJU. ASIC Center---Arnold Shi
Nets(线网型)
例: wire BpW; assign BpW=Error & Wait; assign BpW=Valid | Clear;
BpW电路图
verilog2011--TJU. ASIC Center---Arnold Shi
verilog2011--TJU. ASIC Center---Arnold Shi
nets(网络连线)
nets(网络连线): 由模块或门驱动的连线。 驱动端信号的改变会立刻 传递到输出的连线上。 例如:右图上,selb的改 变,会自动地立刻影响或 门的输出。
a
nsl
sela
out selb
b
sl
负数
一个数字可以被定义成负数,只要在位宽表达式前 加一个减号 - 8‟d5 // 合法格式 8‟d-5 //非法格式
verilog2011--TJU. ASIC Center---Arnold Shi
简单的十进制格式
这种形式的整数定义为带有一个可选的“+”(一 元)或“-”(一元)运算符的数字序列。 这种形式的整数值代表一个有符号的数。负数使 用补码形式表示。
verilog2011--TJU. ASIC Center---Arnold Shi
课堂练习
下列表达式的位模式是什 么?写出其具体的二进制 表示值
7'o44, 'Bx0, 5'bx110, 'hA0, 10'd2, 'hzF
Verilog描述
7'o44
实际的二进制值
100100
TJIC
第三章 verilog的基本语 法
天津大学电子科学与技术系史再峰 shizaifeng@tju.edu.cn
verilog2011--TJU. ASIC Center---Arnold Shi
TJIC
3.1数据类型及其常量及变量
天津大学电子科学与技术系史再峰 shizaifeng@tju.edu.cn
verilog2011--TJU. ASIC Center---Arnold Shi
字符串
字符串是双引号内的字符串列。 一个字符可用八位二进制表示。如: “INTEGER” 需要 8*7位。 例: reg [8*14:1] Message; Message = “INTERNAL ERROR”;
'Bx0
5'bx110 'hA0 10'd2 'hzF
x0
xx110 1010_0000 0000_0000_10 zzzz1111
verilog2011--TJU. ASIC Center---Arnold Shi
参数
参数是一个常量。用parameter定义一个标识符来代表 一个常量。参数经常用于定义时延和变量的宽度。