Verilog语言编程基础.ppt
- 文档编号:18696860
- 上传时间:2023-09-19
- 格式:PPT
- 页数:48
- 大小:409KB
Verilog语言编程基础.ppt
《Verilog语言编程基础.ppt》由会员分享,可在线阅读,更多相关《Verilog语言编程基础.ppt(48页珍藏版)》请在冰点文库上搜索。
VerilogHDL语言编程基础,大连XXX网络技术有限公司,HDL语言简介,Verilog中的模块(Module),Verilog语言中常用语句,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog的语言要素,Verilog语言的4大法宝,HDL语言简介,HDL:
硬件描述语言(HardwareDescriptionLanguage)目前通用的HDL语言有VHDL和Verilog两种。
目前多数FPGA厂商都有自己的逻辑综合工具,或者采用第三方的设计综合工具来支持自己的器件开发。
这是由于HDL完成的设计具有可移植、易维护、好理解的性能。
HDL语言简介,VHDL语言最初于1981年由美国国防部(DOD)为解决所有电子产品存档而提出了一种统一标准语言,1987年成为IEEE107687标准.1993年后,形成IEEE1164,以解决可综合VHDL描述在不同EDA厂商之间的移植问题,及ASIC/FPGA的门级库描述问题。
Verilog语言最早由Gateway设计自动化公司于1981年提出,并提供相应的Verilog仿真器。
1985年,仿真器增强版Verilog-XL推出。
Cadence公司于1989年收购Gateway公司,并于1990年把Verilog语言推向市场,而保留了Verilog-XL的所有权。
1995年,Verilog成为IEEE1364标准。
HDL语言简介,VHDLVerilog比较:
两种语言均可有效地描述RTL级(寄存器传输级),但在行为/系统级,Verilog需要PLI的支持,门级以下级Verilog则有较大优势。
对于两种语言来说,没有一种语言能描述的功能而另一种不能实现的。
考虑到目前大多数的ASIC厂家支持Verilog网表,我们今后将主要推行使用VerilogHDL。
Verilog语言中常用语句,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog的语言要素,Verilog语言的4大法宝,Verilog中的模块(Module),Verilog中的模块,模块是Verilog的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。
整个逻辑设计就是通过模块之间的例化(instantiation)来构成一个整体的。
逻辑设计的思想体现了自顶向下的设计方法,模块间的例化方法,要求:
每个文件只包含一个模块。
模块名和文件名保持一致。
模块名,实例名,端口信号映射关系,模块的基本语法结构,modulemodule_name(port_list);Declarations:
reg,wire,parameter,input,output,inout,function,task,.Statements:
InitialstatementAlwaysstatementModuleinstantiationGateinstantiationUDPinstantiationContinuousassignmentendmodule,模块的结构需按上面的顺序进行,声明区用来对信号方向、信号数据类型、函数、任务、参数等进行描述。
语句区用来对功能进行描述如:
器件调用(Moduleinstantiation)等。
Verilog语言中常用语句,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog语言的4大法宝,Verilog的语言要素,标识符注释格式系统任务和函数编译指令值集合数据类型参数,Verilog的语言要素,Verilog的语言要素标识符,标识符(identifier)用于定义模块名、端口名、信号名等。
VerilogHDL中的标识符(identifier)可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。
另外,标识符是区分大小写敏感的。
以下是标识符的几个例子:
VerilogHDL定义了一系列保留字,叫做关键词,附录A列出了语言中的所有保留字。
注意只有小写的关键词才是保留字。
例如,标识符always(这是个关键词)与标识符ALWAYS(非关键词)是不同的。
Verilog的语言要素注释,两种注释的方式:
以“/*”符号开始,“*/”结束,在两个符号之间的语句都是注释语句,因此可扩展到多行。
如:
/*statement1,statement2,.statementn*/以上n个语句都是注释语句。
是以/开头的语句,它表示以/开始到本行结束都属于注释语句。
Verilog的语言要素格式,自由的书写格式:
VerilogHDL的书写格式是自由的,即一条语句可多行书写;一行可写多个语句。
白空(新行、制表符、空格)没有特殊意义。
如:
inputA;inputB;与inputA;inputB;功能是一样的,但是这方面公司有严格的书写规范。
Verilog的语言要素系统任务,以$字符开始的标识符表示系统任务。
任务提供了一种封装行为的机制。
这种机制可在设计的不同部分被调用。
任务可以返回0个或多个值。
函数在0时刻执行,即不允许延迟。
$display(Hi,youhavereachedLTtoday);/*$display系统任务在新的一行中显示。
*/$time/该系统任务返回当前的模拟时间。
Verilog的语言要素编译指令,以(反引号)开始的某些标识符是编译器指令。
在Verilog语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。
完整的标准编译器指令如下:
define,undefifdef,else,endifdefault_nettypeincluderesetalltimescaleunconnected_drive,nounconnected_drivecelldefine,endcelldefine,Verilog的语言要素值集合,四种基本的值类型:
0:
逻辑0或“假”;1:
逻辑1或“真”;X:
未知值;Z:
高阻。
注意这四种值的解释都内置于语言中。
如一个为z的值总是意味着高阻抗,一个为0的值通常是指逻辑0。
Verilog的语言要素数据类型,两种数据类型:
线网类型(nettype)和寄存器类型(regtype)。
线网类型代表的是物理连接线,因此它不存贮逻辑值。
必须由器件所驱动。
assign赋值语句必须用线网类型。
定义:
wirea;assignA=BC;当一个wire类型的信号没有被驱动时,缺省值为Z(高阻)。
信号没有定义数据类型时,缺省为wire类型。
寄存器类型通常用于对存储单元的描述,如D型触发器、ROM等。
存储器类型的信号当在某种触发机制下分配了一个值,在分配下一个值之时保留原值。
但必须注意的是,reg类型的变量,不一定是存储单元。
注意在always,initial语句中必须用reg类型的变量。
定义:
regmsb:
lsbreg1,reg2,.regN;,Verilog的语言要素参数,参数是一个常量。
参数经常用于定义时延和变量的宽度。
使用参数说明的参数只被赋值一次。
参数说明形式如下:
下面为具体实例:
parameterLINELENGTH=132;parameterALL_X_S=16bx;,Verilog的语言要素常量,三种常量:
整型、实型、字符串型。
整型数可以按如下两种方式书写:
1)简单的十进制数格式32十进制数322)基数格式:
sizebasevaluesize定义以位计的常量的位长;base为o或O(表示八进制),b或B(表示二进制),d或D(表示十进制),h或H(表示十六进制)之一;value是基于base的值的数字序列。
值x和z以及十六进制中的a到f不区分大小写。
如:
3b1011h6字符串是双引号内的字符序列。
字符串不能分成多行书写。
如:
INTERNALERRORREACHEDHERE,Verilog的语言要素运算符,算术运算符加法(二元运算符):
“+”;减法(二元运算符):
“-”;乘法(二元运算符):
“*”;关系运算符有:
(大于)=(不小于)=(不大于)=(逻辑相等)!
=(逻辑不等),Verilog的语言要素运算符,按位逻辑运算符条件运算符cond_expr?
expr1:
expr2连接运算符连接操作:
将小表达式合并形成大表达式或者说总线的操作。
形式如下:
expr1,expr2,.,exprN例如:
wire7:
0Dbus;assignDbus7:
4=Dbus0,Dbus1,Dbus2,Dbus3;,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog语言的4大法宝,Verilog语言中常用语句,Verilog其它常用语句,If语句,使用IF语句的注意事项,当比较向量时,verilog将对位数小的向量做0扩展以使它们的长度相匹配,它的自动扩展为隐式的。
建议采用显示扩展。
每一个If都应有一个else和它相对应,防止产生latch;if语句的嵌套时,应注意每个If条件的优先级;建议采用于if(variable=1),不要采用If(variable),以增强程序的可读性。
Verilog其它常用语句,Case语句,使用Case语句的注意事项,所有的Case应该有一个defaultcase,以免生成不必要的锁存器。
允许空语句:
Default:
;避免使用casex。
IF语句与CASE语句的比较,case语句通常综合成一级多路复用器,而if-then-else则综合成优先编码的串接的多个多路复用器。
case语句仿真要比条件赋值语句快,因为优先编码器的结构仅在信号的到达有先后时使用。
if语句有优先级,case语句没有。
IF语句与CASE语句的比较,两者综合实现后结果:
If语句case语句,同步复位和异步复位,区别在这里,Verilog中不能被综合的语句,initialwaitrepeatwhileforevernamedeventsfork/joindeassignforce/releaseproceduralassignmentsoperators:
caseequalityandinequality=!
=另外for语句虽然可以综合,但也不建议使用,Verilog语言中阻塞和非阻塞赋值,Verilog语言中常见的错误,Verilog语言的4大法宝,Verilog语言的4大法宝,Wire-数据类型:
Verilog结构化元件间的物理连线。
Reg-数据类型:
寄存器类型Assign-连续赋值语句Always-Always语句只要条件满足始终重复执行,连续赋值语句assign,连续赋值语句的执行是:
只要右边表达式任一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号。
连续赋值语句之间是并行语句,因此与位置顺序无关。
过程赋值语句Always,VerilogHDL有两种过程赋值语句:
initial和always语句,实现行为建模。
这两种语句之间的执行是并行的,即语句的执行与位置顺序无关。
这两种语句通常与语句块(begin.end)相结合,则语句块中的执行是按顺序执行的。
initial语句只执行一次,即在设计被开始模拟执行时开始(0时刻)。
通常只用在对设计进行仿真的测试文件中,用于对一些信号进行初始化和产生特定的信号波形。
always语句与initial语句相反,是被重复执行,执行机制是通过对一个称为敏感变量表的事件驱动来实现的,Verilog语言的4大法宝,assign、always例子:
Verilog语言的4大法宝,在assign语句中赋值的变量要定义为wire。
在always块中被赋值的变量要定义为reg。
reg变量并不一定被综合为寄存器。
always块也可以用来描述组合逻辑。
Reg变量,wire变量,小提示,整个逻辑设计中的Module,以及Module中的Always语句块、Assign语句都是并行动作的。
因此Module中的Always语句块、Assign语句、例化Module语句书写位置是没有要求的。
Verilog语言中常见的错误,Verilog语言中阻塞和非阻塞赋值,阻塞赋值与非阻塞赋值,阻塞赋值赋值操作符是“=”的过程赋值是阻塞性过程赋值。
阻塞性过程赋值在其后所有语句执行前执行,即在下一语句执行前该赋值语句完成执行。
T1赋值首先发生,计算T1;接着执行第二条语句,T2被赋值;然后执行第三条语句,T3被赋值;依此类推。
阻塞赋值与非阻塞赋值,非阻塞赋值在非阻塞性过程赋值中,使用赋值符号“=”。
当非阻塞性过程赋值被执行时,计算右端表达式,右端值被赋于左端目标,并继续执行下一条语句。
非阻塞语句并行执行,第一条语句的执行使Clr在第5个时间单位被赋于值1;第二条语句的执行使Clr在第4个时间单位被赋值为0(从0时刻开始的第4个时间单位);最终,第3条语句的执行使Clr在第10个时间单位被赋值为0(从0时刻开始的第10个时间单位)。
注意3条语句都是在0时刻执行的。
此时,非阻塞性赋值执行次序变得彼此不相关。
阻塞赋值与非阻塞赋值使用准则,原则1:
对时序逻辑建模时,使用非阻塞赋值。
原则2:
对锁存器建模时,使用非阻塞赋值。
原则3:
用always块对组合逻辑建模时,使用阻塞赋值。
原则4:
在同一always块中对时序逻辑和组合逻辑同时建模时,使用非阻塞赋值。
原则5:
在同一always块中,不要混合使用阻塞和非阻塞赋值。
原则6:
不要用多个always块对同一变量进行赋值。
原则7:
使用$strobe显示非阻塞赋值的结果。
Verilog语言中常见的错误,避免出现不期望的锁存器,所谓Latch,其实质上在组合电路中有反馈。
反馈的形成是因为利用到前一个状态。
a没有赋值,避免出现不期望的锁存器,If条件没有穷举,对if语句,除非在时序逻辑中,if语句需要有else语句。
若没有缺省语句,设计将产生一个锁存器,锁存器在ASIC设计中有诸多的弊端。
Always的敏感列表不完整,如果敏感列表不完整,会导致前仿真和后仿真结果不一致。
在一个Always中处理多个变量,没有涉及状态机和FIFO的讲解谢谢!
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
下载 | 加入VIP,免费下载 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog 语言 编程 基础
