EDAPPT课件:第4章 硬件描述语言Verilog HDL.ppt

上传人:bingfeng 文档编号:201454 上传时间:2022-02-21 格式:PPT 页数:99 大小:2.46MB
返回 下载 相关 举报
EDAPPT课件:第4章 硬件描述语言Verilog HDL.ppt_第1页
第1页 / 共99页
EDAPPT课件:第4章 硬件描述语言Verilog HDL.ppt_第2页
第2页 / 共99页
亲,该文档总共99页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《EDAPPT课件:第4章 硬件描述语言Verilog HDL.ppt》由会员分享,可在线阅读,更多相关《EDAPPT课件:第4章 硬件描述语言Verilog HDL.ppt(99页珍藏版)》请在迅下文库上搜索。

1、2教学内容4.1 4.1 HDLHDL简介简介 4.2 4.2 初步认知初步认知 4.3 4.3 Verilog HDLVerilog HDL基本知识基本知识 4.4 4.4 数据类型、操作符和表达式数据类型、操作符和表达式4.5 4.5 数据流建模数据流建模 4.6 4.6 行为级建模行为级建模 4.7 4.7 结构级建模结构级建模 34.1 HDL简介4.1.1 关于关于HDL(硬件描述语言)(硬件描述语言) 传统设计方法传统设计方法对于复杂的数字逻辑电路,设计师从原理设计、功能对于复杂的数字逻辑电路,设计师从原理设计、功能设计、电路设计到版图设计一般要一年以上的设计周设计、电路设计到版图

2、设计一般要一年以上的设计周期,其中仅仅版图布线一环,工程师就要花费数周的期,其中仅仅版图布线一环,工程师就要花费数周的时间才能完成。时间才能完成。必须等到样机完成后才能进行实测和调试,并且为了必须等到样机完成后才能进行实测和调试,并且为了对设计进行验证,设计者必须通过搭建硬件平台对设对设计进行验证,设计者必须通过搭建硬件平台对设计进行验证。计进行验证。随着大规模集成电路的研发,集成数百万逻辑门的电随着大规模集成电路的研发,集成数百万逻辑门的电路变得非常复杂,而其功能的仿真也很难通过传统的路变得非常复杂,而其功能的仿真也很难通过传统的面包板测试法验证设计的系统面包板测试法验证设计的系统44.1

3、HDL简介4.1.1 关于关于HDL(硬件描述语言)(硬件描述语言) 使用使用HDL 用一种高级语言来表达大规模集成电路的功能,隐藏用一种高级语言来表达大规模集成电路的功能,隐藏其具体实现的细节,对数字电路和数字逻辑系统能够其具体实现的细节,对数字电路和数字逻辑系统能够进行形式化的描述。进行形式化的描述。 提高逻辑设计效率,降低设计成本,缩短设计周期。提高逻辑设计效率,降低设计成本,缩短设计周期。 多方位的仿真可以在设计完成之前检测到其错误,减多方位的仿真可以在设计完成之前检测到其错误,减少设计重复的次数,使第一次投片便能成功实现芯片少设计重复的次数,使第一次投片便能成功实现芯片成为可能。成为

4、可能。 使检测各种设计方案变得容易和方便,对方案的修改使检测各种设计方案变得容易和方便,对方案的修改只需要修改只需要修改HDL程序,比修改原理图容易得多。程序,比修改原理图容易得多。54.1 HDL简介当今业界的标准中(当今业界的标准中(IEEE标准)主要硬件描述语言:标准)主要硬件描述语言: VHDL美国国防部提出美国国防部提出1987年:年:IEEE std 10761993年:年:IEEE Std 1076-2002 Verilog HDL企业(企业(GDA公司)首创公司)首创1995年:制定了年:制定了Verilog HDL的的IEEE1364-19952001年:年: IEEE136

5、4-2001诞生诞生64.1 HDL简介4.1.2 Verilog HDL的特点Verilog HDL是在使用最广泛的是在使用最广泛的C语言的基础上发展语言的基础上发展起来的一种硬件描述语言。起来的一种硬件描述语言。 采用标准的文本格式,充分保留了采用标准的文本格式,充分保留了C语言简洁、高语言简洁、高效的编程风格,最大特点就是易学易用。效的编程风格,最大特点就是易学易用。具有多层次的抽象,用于从算法级、门级到开关级具有多层次的抽象,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。使用同一种的多种抽象设计层次的数字系统建模。使用同一种建模语言,就可对从最复杂的芯片到完整的电子系建模

6、语言,就可对从最复杂的芯片到完整的电子系统进行描述。统进行描述。Verilog HDL己经被绝大多数的己经被绝大多数的IC设计者所采用。设计者所采用。74.2 初步认知通过本节通过本节初初步了解:步了解: 不同风格的程序描述不同风格的程序描述 测试平台测试平台 仿真操作过程及效果仿真操作过程及效果 综合结果综合结果84.2.1 门级(结构)风格的描述例:2选1数据选择器(MUX)电路 ,使用内置门原语对2选1 MUX的结构进行门级风格描述 :94.2.2 数据流风格的描述 最基本的机制:使用连续赋值语句右边表达式的操作数无论何时发生变化,表达式都重新计算,计算结果被赋予左边表达式的线网类型变量

7、。 例:2选1(MUX)电路 ,使用数据流描述方式描述 :104.2.3 行为风格的描述抽象层次更高抽象层次更高的设计风格,常用于复杂数字系统的顶层逻顶层逻辑设计辑设计。使用initial语句(只执行一次)和always语句(重复执行)进行行为风格的设计。 例:2选1(MUX)电路 ,使用行为风格描述方式建模 :114.2.4 测试平台的编写 测试平台(测试平台(testbench):为了模拟数据的输入和输出、测试和验证功能模块正确性而编写的另一个模块。124.2.5 使用Modelsim进行仿真 在在Modelsim中进行仿真中进行仿真:使用前述的代码(2选1 MUX模块及测试平台),验证运

8、行的结果。1新建新建Verilog HDL文件文件 2使用使用Modelsim打开文件打开文件 3编译编译4选择仿真对象选择仿真对象5配置仿真显示内容配置仿真显示内容6运行仿真并查看结果运行仿真并查看结果操作过程134.2.6 Verilog HDL在电路综合中的应用 电路综合:将设计者建立的电路模型与基本逻辑单元库相结合,得到可以实现设计目标功能的电路。在使用HDL语言对设计进行描述时,可以不用画出电路图,而是通过综合工具(第5章中将进行介绍),把HDL代码转换为电路设计。例:2选1 MUX的综合结果 :144.3 Verilog HDL基本知识 4.3.1 标识符和关键字标识符和关键字1标

9、识符(标识符(Identifier)任意一组字母、数字、任意一组字母、数字、$符号和符号和_(下划线)符号的组合(下划线)符号的组合区分大小写区分大小写第一个字符必须是字母或者下划线,不能以数字和第一个字符必须是字母或者下划线,不能以数字和$符号开始符号开始如:如:Max,MIN(与(与Min不同),不同),Four$,_Y20112转义标识符转义标识符 以以 (反斜线)符号开头,以空格、制表符或换行符(反斜线)符号开头,以空格、制表符或换行符结尾,反斜线和结束空格并不是转义标识符的一部分结尾,反斜线和结束空格并不是转义标识符的一部分 3关键字关键字Verilog HDL中预留的表示特定含义的

10、保留标识符中预留的表示特定含义的保留标识符 全部是小写全部是小写 154.3.2 编写格式1格式格式自由格式(代码可以在一行内编写,也可以跨越多行编写)自由格式(代码可以在一行内编写,也可以跨越多行编写)空格、制表符和空白行没有特殊意义空格、制表符和空白行没有特殊意义 2注释注释 第一种注释形式:行尾注释第一种注释形式:行尾注释 第二种注释形式第二种注释形式 :可以跨行:可以跨行164.3.3 模块和端口模块模块:模块是Verilog HDL设计中的基本功能块,用于描述某个设计的功能或结构,以及它与其它模块进行通信的端口。端口端口:模块与外部环境交互的接口和通道(input,output,in

11、out)。例如IC芯片的输入输出引脚就是它的端口。174.3.3 模块和端口184.3.3 模块和端口模块的调用模块的调用(1) 按顺序连接(信号名1,信号名2,.,信号名n)(2) 按名字连接(.端口名1(信号名1),.端口名2(信号名2),.,.端口名n(信号名n)HAdder ADD1(DataA,DataB,SUM,CARRY);/ 调用现有模块HAdder,实例名为add1,按端口顺序进行调用HAdder ADD2(.Carry(CARRY), .Sum(SUM), .B(DataB) .A(DataA),);/ 调用现有模块HAdder,实例名为add2,按名称进行匹配194.3.

12、4 系统任务和系统函数系统任务系统任务:任务型的功能调用:任务型的功能调用系统函数系统函数:函数型的功能调用:函数型的功能调用相同点:相同点:以以$字符开始的标识符(字符开始的标识符($形式)形式)区别:区别:系统任务:可以有系统任务:可以有0个或多个返回值,可以带个或多个返回值,可以带有延迟有延迟系统函数:系统函数:1个返回值,不允许任何延迟个返回值,不允许任何延迟 204.3.4 系统任务和系统函数常用的几个系统任务和系统函数:常用的几个系统任务和系统函数: 1$display任务:任务:类似C语言的printf语句 可用转义字符输出显示各种不同的信息,例:$display(time=%t

13、 , a=%b , b=%b , Cin=%b , Sum=%b, Cout=%b , $time , pa , pb , pCin , Sum , Cout);214.3.4 系统任务和系统函数常用的几个系统任务和系统函数:常用的几个系统任务和系统函数: 2$monitor任务:任务:对信号值变化进行动态动态监视 $monitor ( time=%t , a=%b , b=%b , Cin=%b , Sum=%b , Cout=%b , $time , pa , pb , pCin , Sum , Cout );3$stop任务和任务和$finish任务任务 $stop任务使得仿真被挂起(例

14、:暂停仿真以检查任务使得仿真被挂起(例:暂停仿真以检查信号值信号值 ) $finish任务将结束仿真,并退出仿真环境任务将结束仿真,并退出仿真环境 224.3.4 系统任务和系统函数常用的几个系统任务和系统函数:常用的几个系统任务和系统函数: 4时间函数:时间函数:$time ,$stime ,$realtime 5$random函数函数$random %b:产生一个范围在(-b+1)到(b-1)间的随机数 234.3.5 常用编译器指令编译器指令(编译器指令()以以 (反引号,注意非单引号(反引号,注意非单引号 )开头的标识符)开头的标识符常用的编译器指令常用的编译器指令1define和un

15、def : 用于文本替换,类似用于文本替换,类似C语言中的语言中的#define指令指令 宏定义名必须用大写宏定义名必须用大写 在整个编译过程中都有效,能被多个文件使用在整个编译过程中都有效,能被多个文件使用 undef指令取消前面定义的宏指令取消前面定义的宏 244.3.5 常用编译器指令2include :在编译期间将一个Verilog源文件包含在另一个Verilog文件中,类似C语言的#include 文件可用相对路径名或绝对路径名 。编译时,这一行由位于上一层文件夹中(“./”)的“head.v”的内容替代。254.3.5 常用编译器指令3timescale :将时间单位与实际时间相关

16、联timescale指令用于定义延迟的单位和延迟精度指令用于定义延迟的单位和延迟精度timescale指令在模块说明的外部出现指令在模块说明的外部出现 格式:格式: timescale / time_unit(时间单位) time_precision(时间精度) 值可以是1、10、和100,单位可以是s、ms、us、ns、ps和fstimescale 1ns / 1timescale 1ns / 100p00ps s # #5 5 T1=A&Cin;T1=A&Cin;/ / 5 5个单位时间后执行语句个单位时间后执行语句 assign #2 T2=B&Cin; assign #2 T2=B&Cin; / / 延迟延迟2 2个单位时间后,计算个单位时间后,计算B&CinB&Cin赋值给赋值给T2T2264.4 4.4 数据类型、操作符和表达式 4.4.1 值的种类值的种类 四种基本的值:四种基本的值: 0:逻辑:逻辑0或或“假假” 1:逻辑:逻辑1或或“真真” x(X):未知状态,):未知状态,x对大小写不敏感对大小写不敏感 z(Z):高阻状态,):高阻状态,z对大小写不敏感对大小写不敏

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

当前位置:首页 > 教育教学 > 高等教育


copyright@ 2022 迅下文库网站版权所有

川公网安备 51130302000146号 | 蜀ICP备2021010507号-3