第二讲-Verilog语法的基本概念汇总课件.ppt

上传人(卖家):晟晟文业 文档编号:3905415 上传时间:2022-10-24 格式:PPT 页数:39 大小:717.19KB
下载 相关 举报
第二讲-Verilog语法的基本概念汇总课件.ppt_第1页
第1页 / 共39页
第二讲-Verilog语法的基本概念汇总课件.ppt_第2页
第2页 / 共39页
第二讲-Verilog语法的基本概念汇总课件.ppt_第3页
第3页 / 共39页
第二讲-Verilog语法的基本概念汇总课件.ppt_第4页
第4页 / 共39页
第二讲-Verilog语法的基本概念汇总课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、TJIC第二讲第二讲 VerilogVerilog语法的基本概念语法的基本概念-模块与测试模块与测试天津大学电子科学与技术系史再峰天津大学电子科学与技术系史再峰1Verilog HDLVerilog HDL是一种用于数字逻辑电路设计的语言是一种用于数字逻辑电路设计的语言:-用用Verilog HDLVerilog HDL描述的电路设计就是该电路的描述的电路设计就是该电路的Verilog HDLVerilog HDL模型。模型。-Verilog HDL-Verilog HDL 既是一种行为描述的语言也是一种结构描述既是一种行为描述的语言也是一种结构描述的语言。的语言。这也就是说,既可以用电路的功

2、能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种:一、概述:一、概述:Verilog HDL的应用的应用2 系统级(system):用高级语言结构实现设计模块的外部性能的模 算法级(algorithmic):用高级语言结构实现设计算法的模型。RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。开关级(switch-level):描述器件中三极

3、管和储存节点以及它们之间连接的模型。Verilog HDL的应用的应用3VerilogHDLVerilogHDL的抽象级别的抽象级别系统级算法级寄存器传输级门级开关级4ModelModel的抽象层次的抽象层次Behavioral Models(function only)if enable is true for (i=0;i=15;i=i+1)RTL Models(Register Transfer Level)always (posedge clock)result_register=a+b+carry;Gate Level Models(function+structure)Switch

4、 Level Models(function+structure)AbstractModelsDetailedmodelso5 Verilog HDL Verilog HDL的构造性语句可以精确地建立信号的的构造性语句可以精确地建立信号的模型。这是因为在模型。这是因为在Verilog HDLVerilog HDL中,提供了延迟和输出中,提供了延迟和输出强度的原语来建立精确程度很高的信号模型。信号值强度的原语来建立精确程度很高的信号模型。信号值可以有不同的的强度,可以通过设定宽范围的模糊值可以有不同的的强度,可以通过设定宽范围的模糊值来降低不确定条件的影响。来降低不确定条件的影响。Verilog

5、 HDL的应用的应用6 Verilog HDL作为一种高级的硬件描述编程语言,有着类似C语言的风格。其中有许多语句如:if语句、case语句等和C语言中的对应语句十分相似。如果已经掌握C语言编程的基础,那么学习 Verilog HDL并不困难,我们只要对Verilog HDL某些语句的特殊方面着重理解,并加强上机练习就能很好地掌握它,利用它的强大功能来设计复杂的数字逻辑电路。Verilog HDL的应用的应用7 一个复杂电路的完整一个复杂电路的完整Verilog HDLVerilog HDL模型是由若个模型是由若个 Verilog HDL Verilog HDL 模块构成的,每一个模块又可以由

6、若干模块构成的,每一个模块又可以由若干个子模块构成。个子模块构成。利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计。Verilog HDLVerilog HDL行为描述语言作为一种结构化和过程性行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和的语言,其语法结构非常适合于算法级和RTLRTL级的模型级的模型设计。这种行为描述语言具有以下八项功能:设计。这种行为描述语言具有以下八项功能:Verilog HDL的应用的应用8可描述顺序执行或并行执行的程序结构。用延迟表达式或事件表达式来明确地控制过程的启动时间。通过命名

7、的事件来触发其它过程里的激活行为或停止行为。提供了条件、if-else、case、循环程序结构。提供了可带参数且非零延续时间的任务(task)程序结构。提供了可定义新的操作符的函数结构(function)。提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。Verilog HDL语言作为一种结构化的语言也非常适合于门级和开关级的模型设计。Verilog HDL的应用的应用9模块的抽象技术指标:技术指标:用文字表示用算法表示用高级行为的Verilog模块表示RTL/RTL/功能级:功能级:用可综合的Verilog模块表示门级门级/结构级:结构级:用实例引用的Verilog模块表示版图布局版图

8、布局/物理级:物理级:用几何形状来表示 行为综合逻辑综合综合前仿真综合后仿真布局布线10二、二、VerilogHDLVerilogHDL的模块的模块 Verilog HDL程序是由模块构成的。模块是可以进行层次嵌套的。正因为如此,才可以将大型的数字电路设计分割成不同的小模块来实现特定的功能,最后通过顶层模块调用子模块来实现整体功能。每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行行为逻辑描述。Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。除了endmodule语句外,每个语句和数据定义的最后必须有分号 可以用/*.*/和/.对Verilog

9、 HDL程序的任何部分作注释。一个好的,有使用价值的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。11模块的结构Verilog的基本设计单元是“模块”。一个模块是由两部分组成的描述接口和描述逻辑功能,即定义输入是如何影响输出的。module block(a,b,c,d);input a,b;output c,d;assign c=a|b;assign d=a&b;endmodule abcd12简单的简单的VerilogHDLVerilogHDL模块模块例例2.1.1:2.1.1:module adder(count,sum,a,b,cin);input 2:0 a,b;input

10、 cin;output count;output 2:0 sum;assign count,sum=a+b+cin;endmodule 这个例子描述了一个三位的加法器。从例子中可以看出整这个例子描述了一个三位的加法器。从例子中可以看出整个个Verilog HDLVerilog HDL程序是嵌套在程序是嵌套在modulemodule和和endmoduleendmodule声明语句声明语句里的。里的。132.1.2模块的结构从上面的例子可以看出:从上面的例子可以看出:-VerilogVerilog模块结构完全嵌在模块结构完全嵌在modulemodule和和endmoduleendmodule声明语

11、句之间;声明语句之间;-每个每个VerilogVerilog程序包括四个主要部分:端口定义、程序包括四个主要部分:端口定义、I/OI/O说明、内说明、内部信号声明、功能定义。部信号声明、功能定义。端口I/O内部信号功能端口定义各信号的名称等I/O说明输入输出引脚性质内部信号声明;指电路内部线网和寄存器等功能定义,内部信号流实现逻辑功能14模块的端口定义模块的端口定义v模块的端口声明了模块的输入输出口。v其格式如下 module 模块名(端口1,端口2,端口3,端口4.);15模块内容模块内容v模块内容包括I/O说明,内部信号声明和功能定义及描述。每一语句后用;表示该语句结束vI/O说明的格式如

12、下:input 端口1,端口2.;/输入端口 output 端口1,端口2.;/输出端口 inout 端口1,端口2.;/双向端口v也可以写在端口声明语句中,如 module XXX(input port1,output port2);16功能定义功能定义v 用assign声明语句assign a=b&C;v 用实例化元件and u1(q,a,b);v 用always语句块或者initial语句块alwas(posedge clk)beigin if(clr)q=1b0;else q=a;end17课堂练习课堂练习(一一)v手写描述一个模块,要求:v模块名称:y_Multiply_Chipv输

13、入端口:CLK,reset,cand,cator,env输出端口:result,cout,18标识符所谓标识别符就是用户为程序描述中的所谓标识别符就是用户为程序描述中的Verilog Verilog 对象所起的名对象所起的名字。字。标识符必须以英语字母(标识符必须以英语字母(a-z,A-Za-z,A-Z)起头,或者用下横线符()起头,或者用下横线符(_ _)起头。其中可以包含数字、)起头。其中可以包含数字、$符和下横线符。符和下横线符。标识符最长可以达到标识符最长可以达到10231023个字符。个字符。模块名、端口名和实例名都是标识符。模块名、端口名和实例名都是标识符。VerilogVeril

14、og语言是大小写敏感的,因此语言是大小写敏感的,因此sel sel 和和 SEL SEL 是两个不同的是两个不同的标识符。标识符。19合法和非法标识符 合法的:合法的:shift_reg_a shift_reg_a busa_indexbusa_index bus263 bus263 非法的:非法的:34net 34net /不能用数字开头a a*b_net b_net/不能含有非字母符号*n263 n263 /不能含有非字母符号Verilog Verilog 是大小写敏感的。所有的是大小写敏感的。所有的Verilog Verilog 关键词都是小写的。关键词都是小写的。20课堂练习(二)课堂

15、练习(二)v 建立该模块的verilog描述,未确定的模块名和端口名称自己定义。A_busD_bus21空格和注释 Verilog 是一种格式很自由的语言。是一种格式很自由的语言。空格在文本中起一个分离符的作用,空格在文本中起一个分离符的作用,别的没有其他用处。别的没有其他用处。单行注释符用单行注释符用 /*与与C 语言一致语言一致 多行注释符用多行注释符用/*-*/与与C 语言一致语言一致22特别的标识符 特别标识符是用特别标识符是用 “”符开始,以空格符结束的标符开始,以空格符结束的标 识符。它可以包含任何可打印的识符。它可以包含任何可打印的ASCIIASCII字符。字符。但但“”符和空格

16、并不算是标识符的一部分。符和空格并不算是标识符的一部分。特别标识符往往是由特别标识符往往是由RTLRTL级源代码或电路图类型的级源代码或电路图类型的 设计输入经过综合器自动综合生成的网表结构型设计输入经过综合器自动综合生成的网表结构型 Verilog Verilog 语句中的标识符。语句中的标识符。举例说明:举例说明:#sel,bus+index,A,B,#sel,bus+index,A,B,T1,T1,/在层次模块中的标识名23例2module compare(equal,a,b);output equal;/声明输出信号equal input 1:0 a,b;/声明输入信号a,b assi

17、gn equal=(a=b)?1:0;/*如果两个输入信号相等,输出为1。否则为0*/endmodule这个程序描述了一个比较器这个程序描述了一个比较器.在这个程序中在这个程序中,/,/*.*/和和/./.表示注释部分表示注释部分,注释只是为了方便程序员理解注释只是为了方便程序员理解程序程序,对编译是不起作用的。对编译是不起作用的。24例3module trist2(out,in,enable);output out;input in,enable;bufif1 mybuf(out,in,enable);endmodule这个程序描述了一个三态驱动器。程序通过调用一这个程序描述了一个三态驱动器

18、。程序通过调用一个实例元件个实例元件bufif1bufif1来实现其功能。来实现其功能。25例例44module trist1(out,in,enable);output out;input in,enable;mytri tri_inst(out,in,enable);endmodule module mytri(out,in,enable);output out;input in,enable;assign out=enable?In:bz;endmodule26关于例关于例44说明说明 上述程序例子通过另一种方法描述了一个三态门。在这个例子中存在着两个模块:模块trist1调用模块 my

19、tri 的实例元件 tri_inst。模块 trist1 是上层模块。模块 mytri 则被称为子模块。通过这种结构性模块构造可构成特大型模块。272.1.5 模块的测试module adder(count,sum,a,b,cin);input 2:0 a,b;input cin;output count;output 2:0 sum;assign count,sum=a+b+cin;endmodule 282.1.5 模块的测试如何检查上述例子其功能是否正确?如何检查上述例子其功能是否正确?u需要有测试激励信号输入到被测模块需要有测试激励信号输入到被测模块u需要记录被测模块的输出信号需要记录

20、被测模块的输出信号u需要把用功能和行为描述的需要把用功能和行为描述的VerilogVerilog模块转换为门级模块转换为门级电路互连的电路结构(综合)。电路互连的电路结构(综合)。u需要对已经转换为门级电路结构的逻辑进行测试(需要对已经转换为门级电路结构的逻辑进行测试(门级电路仿真)。门级电路仿真)。u需要对布局布线后的电路结构进行测试。(布局布需要对布局布线后的电路结构进行测试。(布局布线后仿真)。线后仿真)。29用Verilog设计的步骤 注:虚线表示编译器能检查输入文件的可读性和是否存在以及是否允许生成输出文件include文件设计文件厂家元件库文件输入文件:激励和期望的输出信号输出文件

21、:激励和实际输出的信号编译器仿真器仿真器30模块的测试 被测模块被测模块激励和控激励和控制信号制信号输出响应输出响应和验证和验证31测试平台的组成 激励信号需要验证的设计激励信号和用于验证的结果数据需要验证的设计简单的测试平台复杂的测试平台32测试模块常见的形式module t;reg;/被测模块输入/输出变量类型定义wire;/被测模块输入/输出变量类型定义initial begin;end /产生测试信号always#delay begin;end /产生测试信号Testedmd m(.in1(ina),.in2(inb),.out1(outa),.out2(outb);/被测模块的实例引

22、用initial begin.;.;.end /记录输出和响应endmodule33模块的测试测试模块中常用的过程块:测试模块中常用的过程块:initial initial always always所有的过程块都所有的过程块都在在0 0时刻同时启时刻同时启动;它们是并行动;它们是并行的,在模块中不的,在模块中不分前后。分前后。initialinitial块块 只只执行一次。执行一次。alwaysalways块块 只只要符合触发条件要符合触发条件可以循环执行。可以循环执行。34模块的测试如何描述激励信号:如何描述激励信号:module t;module t;reg a,b,sel;wire o

23、ut;/引用多路器实例 mux2_m(out,a,b,sel);/加入激励信号initial begin a=0;b=1;sel=0;#10 b=0;#10 b=1;sel=1;#10 a=1;#10$stop;end35模块的测试如何观察被测模块的响应:如何观察被测模块的响应:在initial 块中,用系统任务$time 和$monitor$time 返回当前的仿真时刻$monitor 只要在其变量列表中有某一个或某几个变 量值发生变化,便在仿真单位时间结束时显示其变 量列表中所有变量的值。例:例:initial begin$monitor($time,“out=%b a=%b sel=%b

24、”,out,a,b,sel);end36模块的测试如何把被测模块的输出变化记录到数据库文件中?如何把被测模块的输出变化记录到数据库文件中?(文件格式为VCD,大多数的波形显示工具都能读取该格式)可用以下七个系统任务:可用以下七个系统任务:1)$dumpfile(“file.dump”);/打开记录数据变化的数据文件2)$dumpvars();/选择需要记录的变量3)$dumpflush;/把记录在数据文件中的资料转送到硬盘保存4)$dumpoff;/停止记录数据变化5)$dumpon;/重新开始记录数据变化6)$dumplimit();/规定数据文件的大小(字节)7)$dumpall;/记录所

25、有指定信号的变化值到数据文件中37模块的测试如何把被测模块的响应变化记录到数据库文件中?如何把被测模块的响应变化记录到数据库文件中?举例说明:举例说明:$dumpvars;$dumpvars;/记录各层次模块中所有信号的变化$dumpvars(1,top);$dumpvars(1,top);/只记录模块top中所有信号的变化$dumpvars(2,top.u1);$dumpvars(2,top.u1);/记录top模块中实例u1和它以下一层子模块所有信号的变化$dumpvars(0,top.u2,top.u1.u13.q);$dumpvars(0,top.u2,top.u1.u13.q);/记

26、录top模块中实例u2和它本层所有信号的变化,还有top.u1.u13.q信号的变化。$dumpvars(3,top.u2,top.u1);$dumpvars(3,top.u2,top.u1);/记录top模块中u2和u1所有信号的变化(包括其两层以下子模块的信号变化)。38模块的测试如何把被测模块的响应变化记录到数据库文件中?如何把被测模块的响应变化记录到数据库文件中?举例说明:举例说明:下面的 Verilog 代码段可以代替测试文件中的系统任务$monitor initialinitial begin begin$dumpfile($dumpfile(“vlog.dumpvlog.dump”););$dumpvars(0,top);$dumpvars(0,top);end end39

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第二讲-Verilog语法的基本概念汇总课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|