第二章-Verilog-HDL基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第二章-Verilog-HDL基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 Verilog HDL 基础 课件
- 资源描述:
-
1、Verilog HDL历史历史v 1983年,年,Gateway Design Automation公司推出公司推出Verilog语言,开发语言,开发了仿真与验证工具;了仿真与验证工具;v 1985年,年,GDA推出推出Verilog仿真器仿真器Verilog-XL:仿真速度快,处理能:仿真速度快,处理能力强,具有交互式调试手段;力强,具有交互式调试手段;v 1987年,年,Synopsys公司的综合软件开始接受公司的综合软件开始接受Verilog输入;输入;v 1989年,年,Cadence公司收购公司收购GDA,进一步扩大,进一步扩大Verilog的影响;的影响;v 1990年,年,Ope
2、n Verilog International(OVI)成立,推广)成立,推广Verilog HDL和和Veriog-XL被广泛推广;被广泛推广;v 1993年,年,OVI推出推出Verilog2.0,作为,作为IEEE提案提出申请;提案提出申请;v 2019年,年,IEEE(Institute of Electrical and Electronics Engineers)通过通过Verilog HDL标准标准IEEE Std.1364-2019;v 2019年,年,IEEE 发布了发布了Verilog IEEE 1364-2019标准。标准。本课程以本课程以IEEE Std.1364-20
3、19为主为主Verilog HDL现状现状vVerilog HDL是最广泛使用的、具有国际标准支是最广泛使用的、具有国际标准支持的硬件描述语言,绝大多数的持的硬件描述语言,绝大多数的EDA厂商都支持;厂商都支持;v在工业界和在工业界和ASIC设计领域,设计领域,Verilog HDL应用更应用更加广泛。加广泛。Verilog HDL与与VHDLvVHDL Very-High-Speed Integrated Circuit Hardware Description Language v诞生于诞生于1982年;年;1987年底被年底被IEEE和美国国防部和美国国防部确认为标准硬件描述语言确认为标
4、准硬件描述语言。vIEEE 1076(1983)vIEEE 1076-2019vVerilog HDL与与VHDLv 建模层次建模层次 系统级系统级(system):用高级语言结构实用高级语言结构实现设计模块的外部性能的模型。现设计模块的外部性能的模型。算法级算法级(algorithmic):用高级语言结用高级语言结构实现设计算法的模型。构实现设计算法的模型。RTL级级(Register Transfer Level):描述数据在寄存器之间流动和如何描述数据在寄存器之间流动和如何处理这些数据的模型。处理这些数据的模型。门级门级(gate-level):描述逻辑门以及描述逻辑门以及逻辑门之间的连
5、接的模型。逻辑门之间的连接的模型。开关级开关级(switch-level):描述器件中描述器件中三极管和储存节点以及它们之间连三极管和储存节点以及它们之间连接的模型。接的模型。逻辑级 电路级 系统级 算法级 算法级 RTL 级 RTL 级 门级 门级 开关级 VHDL Verilog HDL 行为级 Verilog HDL与与VHDLv相同点:相同点:都能形式化抽象表示电路行为和结构;都能形式化抽象表示电路行为和结构;支持逻辑设计中层次与范围的描述;支持逻辑设计中层次与范围的描述;具有电路仿真和验证机制;具有电路仿真和验证机制;与工艺无关。与工艺无关。不专门面向不专门面向FPGA设计设计v不同
6、点:不同点:Verilog与与C语言相似,语法灵活;语言相似,语法灵活;VHDL源于源于Ada语言,语言,语法严格;语法严格;Verilog更适合更适合ASIC设计。设计。SystemVerilog与与SystemCvSystemVerilog:IEEE 1364 Verilog-2019 标准标准的扩展增强,兼容的扩展增强,兼容Verilog 2019,将硬件描述语,将硬件描述语言(言(HDL)与现代的高层级验证语言()与现代的高层级验证语言(HVL)结)结合。合。vSystemC:一种软:一种软/硬件协同设计语言硬件协同设计语言,既是系,既是系统级语言,也是硬件描述语言。统级语言,也是硬件
7、描述语言。系统建模系统建模v设计方法学设计方法学 自顶向下自顶向下 自底向上自底向上 混合式混合式v描述方式描述方式 数据流描述:描述电路数据流行为:数据流描述:描述电路数据流行为:assign 行为描述:描述功能:行为描述:描述功能:initial,always 结构化描述:描述元器件间连接关系:例化结构化描述:描述元器件间连接关系:例化 混合描述:混合描述:Verilog允许多描述方式共存于同一模块。允许多描述方式共存于同一模块。简单的简单的Verilog程序程序module trist1(out,in,enable);output out;/*输出信号输出信号*/input in,ena
8、ble;/输入信号输入信号 mytri tri_inst(out,in,enable);endmodulemodule mytri(out,in,enable);output out;input in,enable;assign out=enable?in:bz;endmodulev 三态门三态门v 模块模块trist1 trist1 调用调用模块模块 mytri mytri 的实的实例元件例元件tri_insttri_inst;v通过这种结构性通过这种结构性模块构造可构成模块构造可构成特大型模块。特大型模块。简单的简单的Verilog程序程序v三态门(综合)三态门(综合)简单的简单的Veri
9、log程序程序vVerilog HDLVerilog HDL程序是由模块构成的;程序是由模块构成的;v每个模块要进行端口定义每个模块要进行端口定义,并说明输入输出口并说明输入输出口,然然后对模块的功能进行逻辑描述;后对模块的功能进行逻辑描述;vVerilog HDLVerilog HDL程序的书写格式自由程序的书写格式自由,一行可以写几一行可以写几个语句个语句,一个语句也可以分写多行;一个语句也可以分写多行;v除了除了endmoduleendmodule语句外语句外,每个语句和数据定义的最每个语句和数据定义的最后必须有分号。后必须有分号。同一电路的多种描述方法同一电路的多种描述方法v 二选一的
10、选择器二选一的选择器 门级(结构化)描述门级(结构化)描述module muxtwo(out,a,b,sl);input a,b,sl;output out;wire nsl,sela,selb;not#1 u1(nsl,sl);/#1是仿真延迟是仿真延迟 and#1 u2(sela,a,nsl);and#1 u3(selb,b,sl);or#1 u4(out,sela,selb);endmodule RTL级行为描述级行为描述module muxtwo(out,a,b,sl);input a,b,sl;output out;reg out;always(sl or a or b)if(!sl
11、)out=a;else out=b;endmodule 布尔代数级行为描述布尔代数级行为描述module muxtwo(out,a,b,sl);input a,b,sl;output out;assign out=sel?b:a;endmodule 同一电路的多种描述方法同一电路的多种描述方法v 二选一的选择器(综合)二选一的选择器(综合)混合描述混合描述v 混合设计方式的混合设计方式的1位全加器实例位全加器实例module FA_Mix(A,B,Cin,Sum,Cout);input A,B,Cin;output Sum,Cout;reg Cout;reg T1,T2,T3;wire S1;
12、xor X1(S1,A,B);/门实例语句。门实例语句。always (A or B or Cin)/always 语句。语句。beginT1=A&Cin;T2=B&Cin;T3=A&B;Cout=(T1|T2)|T3;endassign Sum=S1 Cin;/连续赋值语句。连续赋值语句。endmodule混合描述混合描述v 混合设计方式的混合设计方式的1位全加器实例(综合)位全加器实例(综合)模块基本结构模块基本结构module 模块名模块名(端口列表端口列表);端口端口I/OI/O说明说明内部信号声明内部信号声明功能定义功能定义endmodule时延时延v Verilog HDL模型中的
13、所有时延都根据时间单位定义。下模型中的所有时延都根据时间单位定义。下面是带时延的连续赋值语句实例。面是带时延的连续赋值语句实例。assign#2 Sum=A B;#2指指2个时间单位。使用编译指令将时间单位与物理时间相关联。个时间单位。使用编译指令将时间单位与物理时间相关联。这样的编译器指令需在模块描述前定义,如下所示这样的编译器指令需在模块描述前定义,如下所示:timescale 1ns/100ps 此语句说明时,延时间单位为此语句说明时,延时间单位为1ns并且时间精度为并且时间精度为100ps(时间精时间精度是指所有的时延必须被限定在度是指所有的时延必须被限定在0.1ns内内)。如果此编译
14、器指令所。如果此编译器指令所在的模块包含上面的连续赋值语句在的模块包含上面的连续赋值语句,#2 代表代表2ns。v 如果没有这样的编译器指令如果没有这样的编译器指令,Verilog HDL 模拟器会指定模拟器会指定一个缺省时间单位。一个缺省时间单位。IEEE Verilog HDL 标准中没有规定标准中没有规定缺省时间单位。缺省时间单位。语言要素:标识符语言要素:标识符v 所谓标识别符就是用户为程序描述中的所谓标识别符就是用户为程序描述中的Verilog 对象所起对象所起的名字。的名字。模块名、变量名、常量名、函数名、任务名模块名、变量名、常量名、函数名、任务名v 标识符必须以英语字母(标识符
15、必须以英语字母(a-z,A-Z)起头,或者用下横线)起头,或者用下横线符(符(_)起头。其中可以包含数字、)起头。其中可以包含数字、$符和下划线符。符和下划线符。v 标识符最长可以达到标识符最长可以达到1023个字符。个字符。v 模块名、端口名和实例名都是标识符。模块名、端口名和实例名都是标识符。v Verilog语言大小写敏感,语言大小写敏感,sel 和和 SEL 是两个不同的标识符。是两个不同的标识符。所有的关键词都是小写的。所有的关键词都是小写的。语言要素:系统任务和函数语言要素:系统任务和函数v以以$字符开始的标识符表示系统任务或系统函数。字符开始的标识符表示系统任务或系统函数。v任务
16、可以返回任务可以返回0个或多个值,函数除只能返回一个或多个值,函数除只能返回一个值以外与任务相同。个值以外与任务相同。v函数在函数在0时刻执行,即不允许延迟,而任务可以时刻执行,即不允许延迟,而任务可以带有延迟。带有延迟。v常用于测试模拟,一般不用于源代码设计。常用于测试模拟,一般不用于源代码设计。$display(Hi,you have reached LT today);/*$display系统任务在新的一行中显示。*/$time/该系统任务返回当前的模拟时间。语言要素:编译指令语言要素:编译指令v以以(反引号)开始的某些标识符是编译器指令。(反引号)开始的某些标识符是编译器指令。defi
17、ne 和和undef,很像,很像C语言中的宏定义指令语言中的宏定义指令 ifdef、else 和和endif,用于条件编译,用于条件编译 include 文件既可以用相对路径名定义,也可以绝对文件既可以用相对路径名定义,也可以绝对路径路径 timescale 编译器指令将时间单位与实际时间相关联。编译器指令将时间单位与实际时间相关联。该指令用于定义时延的单位和时延精度。该指令用于定义时延的单位和时延精度。语言要素:值集合语言要素:值集合vVerilog HDL有下列四种基本的值:有下列四种基本的值:0:逻辑:逻辑0或或“假假”1:逻辑:逻辑1或或“真真”x:未知:未知 z:高阻:高阻 (x,z
18、不区分大小写)不区分大小写)vVerilog HDL中有三类常量:中有三类常量:整型整型 实数型实数型 字符串型字符串型语言要素:常量语言要素:常量1.整数整数v 表达方式:表达方式:标准方式标准方式:默认位宽,与机器类型有关默认位宽,与机器类型有关:不指明进制默认为十进制不指明进制默认为十进制v 进制进制 二进制(二进制(b或或B):):8b10101100,b1010 十进制(十进制(d或或D):):4d1543,512 十六进制(十六进制(h或或H):8ha2 八进制(八进制(o或或O):):6O41v x和和z值值 x:不确定:不确定:4b100 x z:高阻:高阻:16hzzzz,没
19、有驱动元件连接到线网,线网的缺省值为没有驱动元件连接到线网,线网的缺省值为z。语言要素:常量语言要素:常量v 负数:负数:在位宽表达式前加一个减号,在位宽表达式前加一个减号,如如-8d5 减号不可以放在位宽和进制之间,也不可以放在进制和具体的数之间,减号不可以放在位宽和进制之间,也不可以放在进制和具体的数之间,如如8d-5v 下划线:下划线:只能用在具体的数字之间,只能用在具体的数字之间,如如16b1010_1111_1010 位数指的是二进制位数。位数指的是二进制位数。v 数位扩展:(定义的长度比为常量指定的长度长)数位扩展:(定义的长度比为常量指定的长度长)最高位是最高位是0、1,高位用,
20、高位用0扩展:扩展:8b1111 等于等于 8b00001111 最高位是最高位是z、x,高位自动扩展:,高位自动扩展:4bz 等于等于 4bzzzzv 数位截断:数位截断:如果长度定义得更小,最左边的位被截断,如:如果长度定义得更小,最左边的位被截断,如:3 b1001_0011 等于等于 3b011,5H0FFF等于等于5H1F 语言要素:常量语言要素:常量v2.实数实数 十进制计数法;例如2.05.68 科学计数法;23_5.1e2 其值为23510.0,忽略下划线3.6E2 其值为360.0(e与E相同)实数通常不用于实数通常不用于FPGA源代码的常量源代码的常量语言要素:常量语言要素
21、:常量v3.字符串字符串 字符串是双引号内的字符序列。字符串不能分成多行字符串是双引号内的字符序列。字符串不能分成多行书写。例如书写。例如:INTERNAL ERROR REACHEDHERE“用用8位位ASCII值表示的字符可看作是无符号整数。值表示的字符可看作是无符号整数。为存储字符串“INTERNAL ERROR”,变量需要8*14位。reg 1:8*14 Message;(Message=“INTERNAL ERROR“)字符串较少用于字符串较少用于FPGA源代码的常量源代码的常量语言要素:数据类型语言要素:数据类型v 两大类数据类型两大类数据类型 线网型线网型 寄存器型寄存器型v 线
22、网型线网型 包含下述不同种类的线网子类型包含下述不同种类的线网子类型wire/FPGA设计中,通常只用设计中,通常只用wire型型triwortriorwandtriandtriregtri1tri0supply0supply1msb和lsb 定义了范围,并且均为常数值表达式。范围定义是可选的;如果没有定义范围,缺省值为1位线网wire Reset;wire 3:0 data_in;wire 3:2 select;wire 0:2 point;wire msb:lsb reg1,reg2,.regN;语言要素:数据类型语言要素:数据类型v寄存器型寄存器型 5种不同的寄存器类型。reg/FPGA
23、设计中,通常只用设计中,通常只用reg型,默认初始值型,默认初始值x。integer /其他类型用于仿真其他类型用于仿真timerealrealtimemsb和lsb 定义了范围,并且均为常数值表达式。范围定义是可选的;如果没有定义范围,缺省值为1位寄存器reg Reset;reg 3:0 data_in;reg 3:2 select;reg 0:2 point;reg msb:lsb reg1,reg2,.regN;语言要素:数据类型语言要素:数据类型v存储器存储器 存储器是一个寄存器数组。存储器使用如下方式说明存储器是一个寄存器数组。存储器使用如下方式说明reg msb:lsb memor
24、y1 upper1:lower1,memory2 upper2:lower2,.;reg 3:0 MyMem 63:0/MyMem为64个4位寄存器的数组。reg Bog 1:5/Bog为5个1位寄存器的数组。存储器赋值不能在一条赋值语句中完成,寄存器可以。存储器赋值不能在一条赋值语句中完成,寄存器可以。存储器常用于存储器常用于FPGA外围器件的仿真建模外围器件的仿真建模语言要素:数据类型语言要素:数据类型v 存储器赋值存储器赋值 2)系统任务赋值)系统任务赋值reg 3:0 RomB 7:0;$readmemb(ram.patt,RomB);Romb是存储器。文件“ram.patt”必须包含
25、二进制值。文件也可以包含空白空间和注释。下面是文件中可能内容的实例。1 1 0 11 1 1 01 0 0 00 1 1 10 0 0 01 0 0 10 0 1 10 0 0 1语言要素:数据类型语言要素:数据类型v存储器赋值存储器赋值 1)对每个单元逐一赋值)对每个单元逐一赋值reg 0:3 Xrom 0:2;.Xrom0=4hA;Xrom1=4h8;Xrom2=4hF;语言要素:参数语言要素:参数v参数是一个常量,常用于定义时延和变量的宽度。参数是一个常量,常用于定义时延和变量的宽度。parameter LINELENGTH=132;parameter ALL_X_S=16bx;para
展开阅读全文