硬件描述语言verilogHDL基础ppt课件.ppt
《硬件描述语言verilogHDL基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《硬件描述语言verilogHDL基础ppt课件.ppt(302页珍藏版)》请在三一办公上搜索。
1、Verilog HDL 基础 第一部分 初级篇,第一讲 Verilog 的基本概念,2023/8/4,2,硬件描述语言HDL(Hardware Description Language)是硬件设计人员和电子设计自动化(EDA)工具之间的接口,其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。,1.1 硬件描述语言HDL,2023/8/4,3,1.1 硬件描述语言HDL,硬件描述语言利用计算机的巨大能力对用HDL建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路然后生成该工艺条件下这种
2、具体电路的延时模型。仿真验证无误后用于制造ASIC芯片或写入CPLD和FPGA器件中。,2023/8/4,4,什么是硬件描述语言,具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言这种特殊结构能够:描述电路的连接描述电路的功能在不同抽象级上描述电路描述电路的时序表达具有并行性HDL主要有两种:Verilog和VHDLVerilog起源于C语言,因此非常类似于C语言,容易掌握VHDL格式严谨VHDL出现较晚,但标准化早。IEEE 1706-1985标准。,2023/8/4,5,为什么要使用硬件描述语言,电路的逻辑功能容易理解;便于计算机对逻辑进行分析处理;把逻辑设计与具体电路的实现分
3、成两个独立的阶段来操作;逻辑设计与实现的工艺无关;逻辑设计的资源积累可以重复利用;可以由多人共同更好更快地设计非常复杂的逻辑电路(几十万门以上的逻辑系统)。,2023/8/4,6,1.2 Verilog HDL 的历史,1.2.1 什么是Verilog HDL Verilog HDL是硬件描述语言的一种,用于数字电子系统设计。设计者可用它进行各种级别的逻辑设计,可用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。,2023/8/4,7,1.2 Verilog HDL 的历史,1.2.2 Verilog HDL的产生及发展Verilog HDL是在1983
4、年由GDA(GateWay Design Automation)公司的Phil Moorby所创。Phi Moorby后来成为Verilog-XL的主要设计者和Cadence公司的第一个合伙人。在19841985年间,Moorby设计出了第一个Verilog-XL的仿真器。1986年,Moorby提出了用于快速门级仿真的XL算法。1990年,Cadence公司收购了GDA公司1991年,Cadence公司公开发表Verilog语言,成立了OVI(Open Verilog International)组织来负责Verilog HDL语言的发展。1995年制定了Verilog HDL的IEEE标准
5、,即IEEE1364。,2023/8/4,8,1.2 Verilog HDL 的历史,2023/8/4,9,VHDL-比VerilogHDL早几年成为I EEE标准;-语法/结构比较严格,因而编写出的 模块风格比较清晰;-比较适合由较多的设计人员合作完成 的特大型项目(一百万门以上)。,1.3 Verilog HDL 和 VHDL的比较,2023/8/4,10,Verilog HDL-较多的第三方工具的支持-语法结构比VHDL简单-学习起来比VHDL容易-仿真工具比较好使-测试激励模块容易编写,1.3 Verilog HDL 和 VHDL的比较,2023/8/4,11,1.3 Verilog
6、HDL 和 VHDL的比较,2023/8/4,12,1.4 Verilog 目前的应用情况和适用的设计,Verilog的主要应用包括:ASIC和FPGA工程师编写可综合的RTL代码高抽象级系统仿真进行系统结构开发测试工程师用于编写各种层次的测试程序用于ASIC和FPGA单元或更高层次的模块的模型开发,2023/8/4,13,1.4 Verilog 目前的应用情况和适用的设计,Verilog 较为适合系统级(System)、算法级(Alogrithem)、寄存器传输级(RTL)、逻辑(Logic)、门级(Gate)和电路开关级(Switch)的设计,而对于特大型(千万门级以上)的系统级(Syst
7、em)设计,则VHDL更为合适。,2023/8/4,14,1.5 采用 Verilog HDL 设计复杂数字电路的优点,1.5.1 传统设计方法电路原理图输入法 采用电路原理图输入法进行设计,周期长、需要专门的设计工具、需手工布线等。这种低水平的设计方法大大延长了设计周期。,2023/8/4,15,采用Verilog输入法,可以很容易地把完成的设计移植到不同厂家的不同芯片中去,并在不同规模应用时可以较容易地作修改。采用Verilog输入法最大的优点是其与工艺无关性。实际上这是利用了计算机的巨大能力并在EDA工具帮助下,把逻辑验证与具体工艺库匹配、布线即时延计算分成不同的阶段来实现,从而减轻了人
8、们的繁琐劳动。,1.5.2 Verilog HDL 设计法与传统的电路原理图输入法的比较,2023/8/4,16,1.5 采用 Verilog HDL 设计复杂数字电路的优点,1.5.3 Verilog 的标准化与软核的重用 Verilog 是在1983年由GDA公司首先开发成功的,经过诸多改进,于1995年11月正式被批准为Verilog IEEE13631995标准,又于2001年3月在原标准的基础上经过改进和补充推出Verilog IEEE13642001新标准。由于Verilog HDL设计方法与工艺无关性,因而大大提高了Verilog 模型的可重用性。我们把功能经过验证的、可综合的、
9、实现后电路结构总门数在5000门以上的Verilog HDL模型称之为“软核”(Softcore),而把由软核构成的器件成为虚拟器件。利用软核和虚拟器件的可重复利用的特性就可大大缩短设计周期,加快了复杂电路的设计。,2023/8/4,17,1.5.4 软核、固核和硬核的概念以及它 们的重用,显而易见,在具体实现手段和工艺技术尚未确定的逻辑设计阶段,软核具有最大的灵活性。而近年来电路实现工艺技术的发展是相当迅速的,为了逻辑电路设计成果的积累,和更快更好地设计更大规模的电路,发展软核的设计和推广软核的重用技术是非常有必要的。,把在某一种专用半导体集成电路工艺的(ASIC)器件上实现的经验证是正确的
10、总门数在5000门以上的电路结构掩膜,称之为“硬核”。,把在某一种现场可编程门阵列(FPGA)器件上实现的,经验证是正确的总门数在5000门以上电路结构编码文件,称之为“固核”。,2023/8/4,18,1.6 Verilog HDL 的设计流程简介,自顶向下的设计是从系统级开始,把系统级划分为若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库的基本元件来实现为止图1.1.3为自顶向下(Top-Down)的示意图,以设计树的形式绘出。,1.6.1 自顶向下(Top-Down)设计的基本概念,图 1.1.3 Top-Down 设计思想,202
11、3/8/4,19,1.6 Verilog HDL 的设计流程简介,1.6.2 层次管理的基本概念 复杂数字逻辑电路和系统的层次化、结构化设计隐含着硬件设计方案的逐次分解。完整的硬件设计可以由图1.1.3所示的设计树描述。在这个设计树上,节点对应着该层次上基本单元的行为描述,树枝对应着基本单元的结构分解。在不同的层次都可以进行仿真以对设计思想进行验证。EDA工具提供了有效的手段来管理错综复杂的层次,即可以很方便地查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。,2023/8/4,20,1.6.3 具体模块的设计编译和仿真的过程,1.6 Verilog HDL 的设计流程简介,从左图可以
12、看出,模块设计流程主要由两大主要功能部分组成:1)设计开发:即从编写设计文件综合到布局布线投片生成这样一系列步骤。2)设计验证:也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。,2023/8/4,21,1.6 Verilog HDL 的设计流程简介,1.6.4 对应具体工艺器件的优化、映象和布局布线 由于各种ASIC和FPFA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)时,就需要不同的基本单元库与布线延迟模型与之对应才能进行准确的优化、映象、和布局布线。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工
13、程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺器件和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进行准确的处理从而大大提高设计效率。,2023/8/4,22,1.7 小结,掌握HDL设计方法应从学习Verilog HDL设计方法开始。由于Top-Down的设计方法是首先从系统设计入手的,因而从顶层进行功能划分和结构设计。系统的总体仿真是顶层进行功能化分的重要环节,这时的设计与工艺无关。从底向上的设计在某种意义上讲是Top-Down设计的逆过程。,Verilog 数字系统设计教程,第二讲 Verilog 语法的基本概念,2023/8/4,24,概述,Veril
14、og既是一种行为描述的语言也是一种结构描述语言。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别包括:系统级(system):用高级语言结构实现设计模块的外部性能的模型。算法级(algorithm):用高级语言结构实现设计算法的模型。RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理、控制这些数据流动的模型。以上三种都属于行为描述,只有RTL级才与逻辑电路有明确的对应关系。门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。,2023
15、/8/4,25,Verilog HDL行为描述语言具有以下功能:可描述顺序执行或并行执行的程序结构。用延迟表达式或事件表达式来明确地控制过程的启动时间。通过命名的事件来触发其它过程里的激活行为或停止行为。提供了条件如if-else、case、循环程序结构。提供了可带参数且非零延续时间的任务(task)程序结构。提供了可定义新的操作符的函数结构(function)。提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。Verilog HDL语言作为一种结构化的语言也非常适合于门级和开关级的模型设计。,概述,2023/8/4,26,概述,因其结构化的特点又使它具有以下功能:提供了一套完整的表示组
16、合逻辑的基本元件的原语(primitive);提供了双向通路(总线)和电阻器件的原语;可建立MOS器件的电荷分享和电荷衰减动态模型。,2023/8/4,27,2.1 Verilog 模块的基本概念,下面先介绍几个简单的Verilog HDL 程序,从中了解Verilog模块的特性【例 2.1】module muxtwo(out,a,b,sl);input a,b,sl;output out;reg out;always(sl or a or b)if(!sl)out=a;else out=b;endmodule,a,b,sl,out,2023/8/4,28,2.1 Verilog 模块的基本概
17、念,MUX(多路选择器)的行为可以描述为:只要信号a或b或sl发生变化,如果sl为0则选择a输出;否则选择b输出。这个行为的描述并没有说明如果输入 a 或 b是三态的(高阻时)输出应该是什么,但有具体结构的真实电路是有一定的输出的。没有考虑延时问题,2023/8/4,29,2.1 Verilog 模块的基本概念,【例2.2】,module twomux(out,a,b,sl);input a,b,sl;output out;not u1(nsl,sl);and#1 u2(sela,a,nsel);and#1 u3(selb,b,sl);or#2 u4(out,sela,selb);endmod
18、ule,MUX的结构级描述,采用Verilog基本单元(门)描述。描述中含有传输延时。,2023/8/4,30,2.1 Verilog 模块的基本概念,【例 2.3】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,这个例子描述了一个三位的加法器。从例子中可以看出,整个Verilog HDL程序是位于module和endmodule声明语句之间的,2023/8/4,31,2.1 Verilog 模块的基本概念
19、,【例 2.4】module compare(equal,a,b);output equal;/声明输出信号equal input 1:0 a,b;/声明输入信号a,b assign equal=(a=b)?1:0;/*如果两个输入信号相等则输出为1。否则输出为0*/endmodule,这个程序描述了一个比较器.在这个程中,/*.*/和/.表示注释部分,注释只是为了方便程序员理解程序,对编译是不起作用的。,2023/8/4,32,【例2.5】module trist2(out,in,enable);output out;input in,enable;bufil1 mybuf(out,in,e
20、nable);endmodule,2.1 Verilog 模块的基本概念,程序通过调用一个在Verilog语言提供的原语库中现存的三态驱动器元件bufil1来实现其逻辑功能。这个调用过程也称为库元件bufif1的实例化,在本模块中它被具体化为mybuf.,33,【例2.6】module trist1(sout,sin,ena);output sout;input sin,ena;mytri tri_inst(.out(sout),.in(sin),.enable(ena);/调用由mytri模块定义的实例元件tri_inst,即把已定义的模块myfri在本模块中具体化为tri_instendm
21、odulemodule mytri(out,in,enable);output out;input in,enable;assign out=enable?in:bz;endmodule,2.1 Verilog 模块的基本概念,2023/8/4,34,2.2 Verilog 用于模块的测试,如何检查上述例子其功能是否正确?需要有测试激励信号输入到被测模块 需要记录被测模块的输出信号 需要把用功能和行为描述的Verilog模块转换为门级电路互连的电路结构(综合)。需要对已经转换为门级电路结构的逻辑进行测试(门级电路仿真)。需要对布局布线后的电路结构进行测试。(布局布线后仿真)。,35,2.2 V
22、erilog 用于模块的测试,36,2.3 小结,通过上面的例子可以看到:(1)Verilog HDL程序是由模块构成的。每个模块的内容都是位于module和endmodule两个语句之间。每个模块实现特定的功能。(2)模块是可以进行层次嵌套的。(3)每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行描述。(4)Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。(5)除了endmodule语句外,每个语句和数据定义的最后必须有分号。(6)可以用/*.*/和/.对Verilog HDL程序的任何部分作注释。一个好的,有使用价值的源程序都应当加上必要
23、的注释,以增强程序的可读性和可维护性。,Verilog 数字系统设计教程,第三讲 常用Verilog 语法之一,3.1 模块的结构,Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成的,一部分描述接口,另一部分描述逻辑功能,即定义输入是如何影响输出的。module block1(a,b,c,d);input a,b;output c,d;assign c=a|b;assign d=a endmodule,a,b,c,d,Verilog 模块的结构由在module和endmodule 关键词之间的四个主要部分组成:-端口定义:module block1(a,b,c,d)
24、;-I/O说明:input a,b,c;output d;-内部信号声明:wire x;-功能定义:assign d=a|x;assign x=(b endmodule,3.1 模块的结构,3.1 模块的结构,3.1.1 模块的端口定义 模块的端口声明了模块的输入输出口。其格式如下:module 模块名(口1,口2,口3,口4,);3.1.2 模块内容 模块的内容包括I/O说明、内部信号声明、功能定义。I/O说明的格式 输入口:input信号位宽1:0 端口名1;input信号位宽1:0 端口名2;input信号位宽1:0 端口名i;/(共有i个输入口),3.1 模块的结构,输出口 outpu
25、t信号位宽1:0 端口名1;output信号位宽1:0 端口名2;output信号位宽1:0 端口名j;/(共有j个输出口)输入/输出口:inout信号位宽1:0 端口名1;inout信号位宽1:0 端口名2;inout信号位宽1:0 端口名k;/(共有k个双向总线端口)I/O说明也可以写在端口声明语句里。其格式如下:module module_name(input port1,input port2,output port1,output port2);,3.1 模块的结构,内部信号说明 在模块内用到的和与端口有关的wire 和 reg 变量的声明。如:reg width-1:0 R变量1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 描述 语言 verilogHDL 基础 ppt 课件
链接地址:https://www.31ppt.com/p-5630853.html