第2讲 Verilog HDL层次建模
- 格式:pptx
- 大小:1002.75 KB
- 文档页数:84
第四章 Verilog-HDL的建模1.内容回顾通常认为,给硬件建模的模型可以分为5个层次:▪系统级和算法级建模通常是软件工程师用C语言开发的软件模型,目的在于验证设计思想是否正确。
HDL也能做一些算法级建模的工作,但是有很多算法描述不被综合工具支持。
▪行为级建模主要考虑一个模块的抽象功能描述,而不考虑其具体以实现(具体电路结构由综合工具得到)。
▪门级模型是对电路结构的具体描述,主要是描述与、或、非等基本门电路的连接方式。
▪开关级模型是把最基本的MOS晶体管连接起来实现电路功能。
注:这5个层次从高到低越来越接近硬件。
Verilog HDL有两种建模方法:结构建模方法和行为建模方法。
结构建模方法是对电路具体结构的描述:1.调用Verilog内置门元件(门级结构描述)2.调用开关级元件(晶体管级结构描述)3.用户自定义元件UDP(也在门级)4.子模块调用行为建模方法是对电路功能的描述1.数据流行为建模2.顺序行为建模2.结构建模结构建模是对电路具体结构的描述,是一种比较底层的方法。
简单说,就是把所需要的基本电路单元(逻辑门、MOS开关等)调出来,再用连线把这些基本单元连接起来。
(调用、连线)。
2.1 内置的基本单元Verilog HDL为门级电路建模提供了26个内置基本单元,分类如下:多输入门:and, nand, or, nor, xor, xnor多输出门:buf, not三态门: bufif0, bufif1, notif0, notif1上拉、下拉电阻:pullup, pulldownMOS开关:cmos, nmos, pmos, rcmos, rnmos, rpmos双向开关:tran,tranif0, tranif1, rtran, rtranif0, rtranif1注:多输入门、多输出门和三态门构成Verilog-HDL的内置基本门。
2.1.1多输入门1.内置的多输入门包括: and nand nor or xor xnor2.这些逻辑门只有单个输出, 1个或多个输入。
门级建模门级建模是指调用Verilog内部自定义的基本门元件(或者用户自定义基本元件)来对硬件电路进行结构描述门级建模方式采用的是一种特殊的模块调用方式。
此时所调用的模块式Verilog内部预先定义好的基本门级元件或者用户自定义的基本元件,在这种建模方式下硬件电路将被描述成由一组基本门级元件的实例组成。
内置基本门级元件Verilog HDL内含的基本门级元件有14中,包括and(与门)、nand(与非门)、or(或门)、nor(或非门)、xor(异或门)、xnor(异或非门)、buf(缓冲器)、not(非门)、bufif1(高电平使能缓冲器)、bufif0(低电平使能缓冲器)、notif1(高电平使能非门)、notif0(低电平使能非门)、pullup(上拉电阻)、pulldown(下拉电阻)基本门级元件的调用其语法格式为:<门级元件名><驱动强度说明>#(<门级延时量>)<实例名>(端口连接表);对上述格式做如下说明:•<门级元件名>:就是前面列出的Verilog HDL内含的14种基本门级元件类型中的任意一种,它用于指明被当前模块调用的是哪一种门级基本元件。
•<驱动强度说明>:这一项是可选项,它的格式为:(<对高电平的驱动强度>,<对低电平的驱动强度>)<驱动强度说明>用来对本次基本门级元件调用所引用的门级元件实例的输出端驱动能力加以说明。
这是因为:在结构建模方式下,一条连线可能会由多个前级输出端同时驱动,该连线最终的逻辑状态将取决于各个驱动端的不同驱动能力,因此有必要对元件实例的输出驱动能力进行说明。
对于门级元件,驱动强度分为对高电平(逻辑1)的驱动强度和对低电平(逻辑0)的驱动强度,因此<驱动强度说明>部分由<对高电平的驱动强度>和<对低电平的驱动强度>这两种成分组成。
VerilogHDL建模概述Verilog HDL 建模概述在数字电路设计中,数字电路可简单归纳为两种要素:线和器件。
线是器件管脚之间的物理连线;器件也可简单归纳为组合逻辑器件(如与或⾮门等)和时序逻辑器件(如寄存器、锁存器、RAM等)。
⼀个数字系统(硬件)就是多个器件通过⼀定的连线关系组合在⼀块的。
因此,Verilog HDL的建模实际上就是如何使⽤HDL语⾔对数字电路的两种基本要素的特性及相互之间的关系进⾏描述的过程。
下⾯通过⼀些实例,以便对Verilog HDL 的设计建模有个⼤概的印象。
1 模块模块(module)是Verilog 的基本描述单位,⽤于描述某个设计的功能或结构及与其他模块通信的外部端⼝。
模块在概念上可等同⼀个器件就如我们调⽤通⽤器件(与门、三态门等)或通⽤宏单元(计数器、ALU、CPU)等,因此,⼀个模块可在另⼀个模块中调⽤。
⼀个电路设计可由多个模块组合⽽成,因此⼀个模块的设计只是⼀个系统设计中的某个层次设计,模块设计可采⽤多种建模⽅式。
1.1 简单事例下⾯先介绍⼏个简单的Verilog HDL程序。
例[1] 加法器module addr (a, b, cin, count, sum);input [2:0] a;input [2:0] b;input cin;output count;output [2:0] sum;assign {count,sum} = a +b + cin;endmodule该例描述⼀个3位加法器,从例⼦可看出整个模块是以module 开始,endmodule 结束。
例[2] ⽐较器module compare (equal,a,b);input [1:0] a,b; // declare the input signal ;output equare ; // declare the output signal;assign equare = (a == b) ? 1:0 ;/ * if a = b , output 1, otherwise 0;*/endmodule该例描述⼀个⽐较器,从上可看到,/* .... */ 和// ... 表⽰注释部分。
第二章 Verilog HDL设计方法概述前言随着电子设计技术的飞速发展,专用集成电路(ASIC)和用户现场可编程门阵列(FPGA)的复杂度越来越高。
数字通信、工业自动化控制等领域所用的数字电路及系统其复杂程度也越来越高,特别是需要设计具有实时处理能力的信号处理专用集成电路,并把整个电子系统综合到一个芯片上。
设计并验证这样复杂的电路及系统已不再是简单的个人劳动,而需要综合许多专家的经验和知识才能够完成。
由于电路制造工艺技术进步非常迅速,电路设计能力赶不上技术的进步。
在数字逻辑设计领域,迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述,这样就能把系统设计工作分解为逻辑设计(前端)和电路实现(后端)两个互相独立而又相关的部分。
由于逻辑设计的相对独立性就可以把专家们设计的各种常用数字逻辑电路和系统部件(如FFT算法、DCT算法部件)建成宏单元(Megcell)或软核(Soft-Core)库供设计者引用,以减少重复劳动,提高工作效率。
电路的实现则可借助于综合工具和布局布线工具(与具体工艺技术有关)来自动地完成。
VHDL和Verilog HDL这两种工业标准的产生顺应了历史的潮流,因而得到了迅速的发展。
作为跨世纪的中国大学生应该尽早掌握这种新的设计方法,使我国在复杂数字电路及系统的设计竞争中逐步缩小与美国等先进的工业发达国家的差距。
为我国下一个世纪的深亚微米百万门级的复杂数字逻辑电路及系统的设计培养一批技术骨干。
2.1.硬件描述语言HDL(Hardware Description Language)硬件描述语言(HDL)是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。
它可以使数字逻辑电路设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化(在下面简称为EDA)工具进行仿真,再自动综合到门级电路,再用ASIC或FPGA实现其功能。
目前,这种称之为高层次设计(High-Level-Design)的方法已被广泛采用。
verilog HDL建模方式简单的归纳为三类:结构化描述方式、数据流描述方式、行为描述方式。
一个模块中往往是将三种建模方式混合起来使用,来描述一个完整的功能。
系统级、算法级、RTL级属于行为级,门级、开关级属于结构级。
系统级:用高级语言实现设计模块的外部性能的模型。
算法级:用高级语言结构实现设计算法的模型。
RTL级:描述数据在寄存器之间流动和如何树立这些数据的模型门级:描述逻辑门以及逻辑门之间的连线的模型开关级:描述器件中三极管和存储节点以及他们之间连线的模型1)结构化的建模方式是通过对电路的层次和组成结构进行描述来建模,即通过对器件的调用(HDL概念称为例化),并使用线网来连接各器件来描述一个模块的结构。
这里的器件包括Verilog HDL的内置门如与门and,异或门xor等,也可以是用户自定义的一个模块,还可以是FPGA厂商的提供的一个基本逻辑单元或者宏。
结构化的描述方式反映了一个设计的层次结构。
module FA_struct (A, B, Cin, Sum, Cout);input A;input B;input Cin;output Sum;output Cout;wire S1, T1, T2, T3;// -- statements -- //xor x1 (S1, A, B);xor x2 (Sum, S1, Cin);and A1 (T1, A, B );and A2 (T2, B, Cin);and A3 (T3, A, Cin);or O1 (Cout, T1, T2, T3 );endmodule该实例显示了一个全加器由两个异或门、三个与门、一个或门构成。
S1、T1、T2、T3则是门与门之间的连线。
代码显示了用纯结构的建模方式,其中xor 、and、or 是Verilog HDL 内置的门器件。
以 xor x1 (S1, A, B) 该例化语句为例:xor 表明调用一个内置的异或门,器件名称xor ,代码实例化名x1(类似原理图输入方式)。
第2章 Verilog HDL基础知识2.1 Verilog HDL的语言要素2.2 数据类型2.3 运算符2.4 模块本章小结12 Verilog HDL 语法来源于C 语言基本语法,其基本词法约定与C 语言类似。
程序的语言要素也称为词法,是由符号、数据类型、运算符和表达式构成的,其中符号包括空白符、注释符、标识符和转义标识符、关键字、数值等。
2.1 Verilog HDL 的语言要素2.1.1 空白符 空白符包括空格符(\b)、制表符(\t)、换行符和换页符。
空白符使代码看起来结构清晰,阅读起来更方便。
在编译和综合时,空白符被忽略。
Verilog HDL程序可以不分行,也可以加入空白符采用多行编写。
3 例2.1-1空白符使用示例。
initial begin a = 3'b100; b = 3'b010; end 相当于: initial begin a = 3'b100; b = 3'b010; end452.1.2 注释符 Verilog HDL语言中允许插入注释,标明程序代码功能、修改、版本等信息,以增强程序的可阅读性和帮助管理文档。
Verilog HDL中有两种形式的注释。
(1) 单行注释:单行注释以“//”开始,Verilog HDL忽略从此处到行尾的内容。
(2) 多行注释:多行注释以“/*”开始,到“*/”结束,Verilog HDL忽略其中的注释内容。
需要注意的是,多行注释不允许嵌套,但是单行注释可以嵌套在多行注释中。
例2.1-2 注释符使用示例。
单行注释: assign a=b & c; //单行注释 多行注释: assign a[3:0]=b[3:0]&c[3:0;]; /*注释行1 注释行2 */ 非法多行注释:/*注释内容 /*多行注释嵌套多行注释*/ 注释内容*/ 合法多行注释:/*注释内容 //多行注释嵌套单行注释*/672.1.3 标识符和转义标识符 在Verilog HDL中,标识符(Identifier)被用来命名信号名、模块名、参数名等,它可以是任意一组字母、数字、$符号和_(下划线)符号的组合。
门级建模门级建模是指调用Verilog内部自定义的基本门元件(或者用户自定义基本元件)来对硬件电路进行结构描述门级建模方式采用的是一种特殊的模块调用方式。
此时所调用的模块式Verilog内部预先定义好的基本门级元件或者用户自定义的基本元件,在这种建模方式下硬件电路将被描述成由一组基本门级元件的实例组成。
内置基本门级元件Verilog HDL内含的基本门级元件有14中,包括and(与门)、nand(与非门)、or(或门)、nor(或非门)、xor(异或门)、xnor(异或非门)、buf(缓冲器)、not(非门)、bufif1(高电平使能缓冲器)、bufif0(低电平使能缓冲器)、notif1(高电平使能非门)、notif0(低电平使能非门)、pullup(上拉电阻)、pulldown(下拉电阻)基本门级元件的调用其语法格式为:<门级元件名><驱动强度说明>#(<门级延时量>)<实例名>(端口连接表);对上述格式做如下说明:•<门级元件名>:就是前面列出的Verilog HDL内含的14种基本门级元件类型中的任意一种,它用于指明被当前模块调用的是哪一种门级基本元件。
•<驱动强度说明>:这一项是可选项,它的格式为:(<对高电平的驱动强度>,<对低电平的驱动强度>)<驱动强度说明>用来对本次基本门级元件调用所引用的门级元件实例的输出端驱动能力加以说明。
这是因为:在结构建模方式下,一条连线可能会由多个前级输出端同时驱动,该连线最终的逻辑状态将取决于各个驱动端的不同驱动能力,因此有必要对元件实例的输出驱动能力进行说明。
对于门级元件,驱动强度分为对高电平(逻辑1)的驱动强度和对低电平(逻辑0)的驱动强度,因此<驱动强度说明>部分由<对高电平的驱动强度>和<对低电平的驱动强度>这两种成分组成。