版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-10-211第九章第九章 硬件描述语言简介硬件描述语言简介9.1 概述概述9.2 verilog hdl简介简介9.3 用用verilog hdl描述逻辑描述逻辑电路的实例电路的实例 2021-10-2129.1 概述概述硬件描述语言硬件描述语言hdl(hardware description language )是一种用形式化方法来描述数字电路和)是一种用形式化方法来描述数字电路和数字逻辑系统的语言。数字逻辑电路设计者可利用这数字逻辑系统的语言。数字逻辑电路设计者可利用这种语言来描述自己的设计思想,然后利用种语言来描述自己的设计思想,然后利用eda工具进工具进行仿真,再自动综合到门
2、级电路,最后用行仿真,再自动综合到门级电路,最后用asic或或fpga实现其功能。实现其功能。2021-10-213举个例子,在传统的设计方法中,对举个例子,在传统的设计方法中,对2输入的与输入的与门,我们可能需到标准器件库中调个门,我们可能需到标准器件库中调个74系列的器件系列的器件出来,但在硬件描述语言中,出来,但在硬件描述语言中,“& ”就是一个与门的就是一个与门的形式描述,形式描述,“c = a & b”就是一个就是一个2输入与门的描述。输入与门的描述。而而“and”就是一个与门器件。就是一个与门器件。 硬件描述语言发展至今已有二十多年历史,当硬件描述语言发展至今已有二十多年历史,当今
3、业界的标准中(今业界的标准中(ieee标准)主要有标准)主要有vhdl和和verilog hdl 这两种硬件描述语言。这两种硬件描述语言。2021-10-214 在数字电路设计中,数字电路可简单归纳为两种要素:在数字电路设计中,数字电路可简单归纳为两种要素:线线和和器件器件。线线是器件管脚之间的物理连线;是器件管脚之间的物理连线;器件器件也可简单也可简单归纳为组合逻辑器件(如与或非门等)和时序逻辑器件归纳为组合逻辑器件(如与或非门等)和时序逻辑器件(如寄存器、锁存器、(如寄存器、锁存器、ram等)。一个数字系统(硬件)等)。一个数字系统(硬件)就是多个器件通过一定的连线关系组合在一块的。因此,
4、就是多个器件通过一定的连线关系组合在一块的。因此,verilog hdl的建模实际上就是如何使用的建模实际上就是如何使用hdl语言对数字电语言对数字电路的两种基本要素的特性及相互之间的关系进行描述的过路的两种基本要素的特性及相互之间的关系进行描述的过程。程。9.2 verilog hdl 简介简介2021-10-215模块模块(module)是)是verilog 的基本描述单位,用于描的基本描述单位,用于描述某个设计的功能或结构及与其他模块通信的外部端述某个设计的功能或结构及与其他模块通信的外部端口。口。模块在概念上可等同一个器件就如我们调用通用器件模块在概念上可等同一个器件就如我们调用通用器
5、件(与门、三态门等)或通用宏单元(计数器、(与门、三态门等)或通用宏单元(计数器、alu、cpu)等,因此,)等,因此,一个模块可在另一个模块中调用一个模块可在另一个模块中调用。一个电路设计可由多个模块组合而成,因此一个模块一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次设计,的设计只是一个系统设计中的某个层次设计,模块设模块设计可采用多种建模方式计可采用多种建模方式。模模 块块 (module)2021-10-216三个描述层次三个描述层次 开关级描述:描述电阻、晶体管以及它描述电阻、晶体管以及它们之间的相互连线关系。们之间的相互连线关系。 门级描述:描述基本
6、逻辑门、触发器以描述基本逻辑门、触发器以及相互连线关系。及相互连线关系。 寄存器传输级(rtl)描述:描述寄存器描述寄存器以及它们之间的数据传递关系。以及它们之间的数据传递关系。2021-10-217verilog hdl 允许一个设计中每个模块均在不同设计允许一个设计中每个模块均在不同设计层次层次上建模。上建模。2021-10-2189.2.1 基本程序结构基本程序结构module ();endmodule2021-10-219几个简单事例:几个简单事例:例例1 加法器加法器module addr (a, b, cin, cout, sum);input 2:0 a;input 2:0 b;
7、input cin;output cout;output 2:0 sum;assign cout,sum = a +b + cin;endmodule2021-10-2110例例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几个简单事例:几
8、个简单事例:2021-10-2111module mytri (din, d_en, d_out);input din;input d_en;output d_out;assign d_out = d_en ? din :bz;endmodulemodule trist (din, d_en, d_out);input din;input d_en;output d_out;mytri u_mytri(din,d_en,d_out);endmodule例例3 三态驱动器三态驱动器几个简单事例:几个简单事例:2021-10-2112 通过上面的实例可看出,一个设计是由一个个模块通过上面的实例可看
9、出,一个设计是由一个个模块(module)构成的。一个模块的设计如下:)构成的。一个模块的设计如下:1、模块内容是嵌在模块内容是嵌在module 和和endmodule两个语句之间。两个语句之间。每个模块实现特定的功能,模块可进行层次的嵌套,因此每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最后通过由顶层模块调用子模块来实现整现特定的功能,最后通过由顶层模块调用子模块来实现整体功能,这就是体功能,这就是top-down的设计思想,如例的设计思想,如例3。2、模块包括模块包括接口
10、描述部分接口描述部分和和逻辑功能描述部分逻辑功能描述部分。这可以把。这可以把模块与器件相类比。模块与器件相类比。模块的结构:模块的结构:2021-10-2113模块的端口定义部分:模块的端口定义部分:如上例:如上例: module addr (a, b, cin, count, sum); 其中其中module 是模块的保留字,是模块的保留字,addr 是模块的名字,相当于器件名。是模块的名字,相当于器件名。()内是该模块的端口声明,定义了该模块的管脚名,是()内是该模块的端口声明,定义了该模块的管脚名,是该模块与其他模块通讯的外部接口,相当于器件的该模块与其他模块通讯的外部接口,相当于器件的
11、pin。模块的内容,包括模块的内容,包括i/o说明,内部信号、调用模块等的声说明,内部信号、调用模块等的声明语句和功能定义语句。明语句和功能定义语句。i/o说明语句如:说明语句如: input 2:0 a; input 2:0 b; input cin; output count; 其中的其中的input 、output、inout 是保留字,定是保留字,定义了管脚信号的流向,义了管脚信号的流向,n:0表示该信号的位宽(总线或表示该信号的位宽(总线或单根信号线)。单根信号线)。2021-10-2114逻辑功能描述部分如:逻辑功能描述部分如: assign d_out = d_en ? din
12、:bz;mytri u_mytri(din,d_en,d_out);功能描述用来产生各种逻辑(主要是组合逻辑和时序功能描述用来产生各种逻辑(主要是组合逻辑和时序逻辑,可用多种方法进行描述。还可用来实例化一个逻辑,可用多种方法进行描述。还可用来实例化一个器件,该器件可以是厂家的器件库也可以是我们自己器件,该器件可以是厂家的器件库也可以是我们自己用用hdl设计的模块(相当于在原理图输入时调用一设计的模块(相当于在原理图输入时调用一个库元件)。在逻辑功能描述中,主要用到个库元件)。在逻辑功能描述中,主要用到assign 和和always 两个语句。两个语句。2021-10-21153、对每个模块都要
13、进行端口定义,并说明输入、对每个模块都要进行端口定义,并说明输入、输出口,然后对模块的功能进行逻辑描述,当然,输出口,然后对模块的功能进行逻辑描述,当然,对测试模块,可以没有输入输出口。对测试模块,可以没有输入输出口。4、verilog hdl 的书写格式自由,一行可以写的书写格式自由,一行可以写几个语句,也可以一个语句分几行写。几个语句,也可以一个语句分几行写。5、除除endmodule 语句外,每个语句后面需有分语句外,每个语句后面需有分号表示该语句结束。号表示该语句结束。模块的结构:模块的结构:2021-10-21169.2.2 词法构成词法构成1、间隔符与注释符、间隔符与注释符 在在
14、verilog hdl里有两种形式的注释:里有两种形式的注释:/ 是单行注释是单行注释 /* */ 是多行注释是多行注释白空(新行、制表符、空格)没有特殊意义。白空(新行、制表符、空格)没有特殊意义。书写规范建议:书写规范建议:一个语句一行。一个语句一行。采用空四格的采用空四格的table 键进行缩进。键进行缩进。2021-10-21172、操作符、操作符 arithmetic: +, - ! * / binary operators: &, |, , , ! shift: relational: , , =, =, != logical: &, |9.2.2 词法构成词法构成2021-10-
15、2118examples:549 / 十进制十进制h 8ff / 十六进制十六进制o765 / 八进制八进制4 b11 / 4位二进制数位二进制数 00113 b10 x / 3位二进制数,最低位不确定位二进制数,最低位不确定5 d3 / 5位十进制数位十进制数00003-4b11 / 4位二进制数位二进制数0011的补码,的补码,11019.2.2 词法构成词法构成3、数值常量、数值常量size base valuesize 定义以位计的常量的位长;定义以位计的常量的位长;base 为为o 或或o(表示八进制),(表示八进制),b 或或b(表示二进制),(表示二进制),d 或或d(表示十进制
16、),(表示十进制),h 或或h (表示十六进制)之一;(表示十六进制)之一;value 是基于是基于base 的值的数字序列。值的值的数字序列。值x 和和z 以及以及十六进制中的十六进制中的a 到到f 不区分大小写。不区分大小写。2021-10-2119 verilog hdl中规定了四种基本的值类型:中规定了四种基本的值类型: 0:逻辑:逻辑0或或“假假”; 1:逻辑:逻辑1或或“真真”; x:未知值;:未知值; z:高阻。:高阻。 注意这四种值的解释都内置于语言中。如一个为注意这四种值的解释都内置于语言中。如一个为z 的值的值总是意味着高阻抗,一个为总是意味着高阻抗,一个为0 的值通常是指
17、逻辑的值通常是指逻辑0 。 此外,此外,x 值和值和z 值都不分大小写。值都不分大小写。9.2.2 词法构成词法构成3、数值常量、数值常量2021-10-21209.2.2 词法构成词法构成4、字符串、字符串5、标识符、标识符6、关键字、关键字字符串是双引号内的字符序列。字符串不能分成多行书写。字符串是双引号内的字符序列。字符串不能分成多行书写。标识符是模块、寄存器、端口、连线、示例和标识符是模块、寄存器、端口、连线、示例和begin end 等等元素的名称,是赋给对象的唯一的名称。元素的名称,是赋给对象的唯一的名称。2021-10-2121数据类型数据类型数据类型有数据类型有 wire 和和
18、 reg 。wire 用于对结构化器件之间的物理连线的建模。如器用于对结构化器件之间的物理连线的建模。如器件的管脚,内部器件如与门的输出等。件的管脚,内部器件如与门的输出等。由于线网类型代表的是物理连接线,因此它不存贮逻由于线网类型代表的是物理连接线,因此它不存贮逻辑值。必须由器件所驱动。通常由辑值。必须由器件所驱动。通常由assign进行赋值。进行赋值。如如 assign a = b c;当一个当一个wire 类型的信号没有被驱动时,缺省值为类型的信号没有被驱动时,缺省值为z(高阻)。(高阻)。信号没有定义数据类型时,缺省为信号没有定义数据类型时,缺省为 wire 类型。类型。2021-10
19、-2122数据类型数据类型数据类型有数据类型有 wire 和和 reg 。reg 是最常用的寄存器类型,寄存器类型通常用于对是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,如存储单元的描述,如d型触发器、型触发器、rom等。等。存储器类型的信号当在某种触发机制下分配了一个值,存储器类型的信号当在某种触发机制下分配了一个值,在分配下一个值之时保留原值。在分配下一个值之时保留原值。但必须注意的是,但必须注意的是,reg 类型的变量,不一定是存储单类型的变量,不一定是存储单元,如在元,如在always 语句中进行描述的必须用语句中进行描述的必须用reg 类型的变类型的变量。量。2021-1
20、0-2123简单事例:简单事例:reg a;always (b or c) begina = b & c;endalways (b or c) begin x = b & c;endalways (posedge clk) y = b & c; always (negedge clk) z = b & c; “=”用于组合逻辑器件的赋值用于组合逻辑器件的赋值“=”用于时序逻辑器件的赋值用于时序逻辑器件的赋值2021-10-2124简单事例:简单事例:/ 与非门模块与非门模块module nand(in1, in2, out);input in1, in2;output out;assign o
21、ut = (in1 & in2);endmodule2021-10-2125简单事例:简单事例:/ 用两个与非门构成与门模块用两个与非门构成与门模块module and(in1, in2, out);input in1, in2;output out;wire w1;nand nand1(in1, in2, w1);nand nand2(w1, w1, out);endmodule2021-10-2126更多结构事例:更多结构事例:2021-10-21279.2.3 模块的描述方式模块的描述方式1、行为描述方式、行为描述方式行为描述方式是通过行为语句来描述电路要实现的功行为描述方式是通过行为语
22、句来描述电路要实现的功能,表示输入与输出间转换的行为,不涉及具体结构。能,表示输入与输出间转换的行为,不涉及具体结构。从这个意义上讲,行为建模是一种从这个意义上讲,行为建模是一种“高级高级”的描述方的描述方式。式。例:一位例:一位2选选1的数据选择器的数据选择器module mux_2_to_1(a, b, out,outbar,sel);input a, b, sel ;output out,outbar ;assign out = sel? a : b ;assign outbar= out ;endmodule2021-10-2128例:一位全加器的行为建模例:一位全加器的行为建模mod
23、ule fa_behav1(a, b, cin, sum, cout );input a,b,cin;output sum,cout;reg sum, cout;reg t1,t2,t3;always ( a or b or cin )beginsum = (a b) cin ;t1 = a & cin;t2 = b & cin ;t3 = a & b;cout = (t1| t2) | t3;endendmodule2021-10-21292、结构描述方式、结构描述方式结构化的建模方式就是通过对电路结构的描述来建模,结构化的建模方式就是通过对电路结构的描述来建模,即通过对器件的调用(即通过对器件的调用(hdl概念称为例化),并使用线概念称为例化),并使用线网来连接各器件的描述方式。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度创意园区个人租赁合同书3篇
- 2025年度农产品自产自销农村电商扶贫合作合同3篇
- 2025年度汽车维修企业员工绩效考核与激励合同范本3篇
- 二零二五年度网络红人经纪合作合同范本3篇
- 二零二五年度风力发电工程质保金合同规定2篇
- 2025年度公租房合同(含租户信息保密条款)2篇
- 二零二五年度农村墓地墓区照明系统设计与安装协议
- 2025年度文化产业股权置换及合作协议书3篇
- 二零二五年度企业股份分割与股权激励实施协议书2篇
- 二零二五年度消费股东合作协议及创新业务拓展2篇
- 《弘扬教育家精神》专题课件
- 职业中专对口升学复习语文基础知识-5-辨析并修改病句36张讲解
- 新能源汽车ISO9001:2015认证产品一致性控制程序
- 中药附子课件
- DL-T5434-2021电力建设工程监理规范
- 2024可燃性粉尘除尘系统防爆设计指南
- 新人教版五年级上册《道德与法治》期末试卷及答案下载
- 加油站题材搞笑小品剧本-(加油-加油)
- (2024年)《管理学》第四章组织
- 开题报告金融
- 心肺复苏知识培训总结与反思
评论
0/150
提交评论