9-硬件描述语言简介课件

上传人:文**** 文档编号:240743275 上传时间:2024-05-04 格式:PPT 页数:34 大小:544.50KB
返回 下载 相关 举报
9-硬件描述语言简介课件_第1页
第1页 / 共34页
9-硬件描述语言简介课件_第2页
第2页 / 共34页
9-硬件描述语言简介课件_第3页
第3页 / 共34页
点击查看更多>>
资源描述
第九章第九章 硬件描述语言简介硬件描述语言简介9.1 概述概述9.2 Verilog HDL简介简介9.3 用用Verilog HDL描述逻辑描述逻辑电路的实例电路的实例 5/4/202419.1 概述概述硬件描述语言硬件描述语言HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和数)是一种用形式化方法来描述数字电路和数字逻辑系统的语言。数字逻辑电路设计者可利用这种语字逻辑系统的语言。数字逻辑电路设计者可利用这种语言来描述自己的设计思想,然后利用言来描述自己的设计思想,然后利用EDA工具进行仿工具进行仿真,再自动综合到门级电路,最后用真,再自动综合到门级电路,最后用ASIC或或FPGA实实现其功能。现其功能。5/4/20242举个例子,在传统的设计方法中,对举个例子,在传统的设计方法中,对2输入的与输入的与门,我们可能需到标准器件库中调个门,我们可能需到标准器件库中调个74系列的器件系列的器件出来,但在硬件描述语言中,出来,但在硬件描述语言中,“&”就是一个与门的就是一个与门的形式描述,形式描述,“C=A&B”就是一个就是一个2输入与门的描述。输入与门的描述。而而“and”就是一个与门器件。就是一个与门器件。硬件描述语言发展至今已有二十多年历史,当硬件描述语言发展至今已有二十多年历史,当今业界的标准中(今业界的标准中(IEEE标准)主要有标准)主要有VHDL和和Verilog HDL 这两种硬件描述语言。这两种硬件描述语言。5/4/20243 在数字电路设计中,数字电路可简单归纳为两种要素:在数字电路设计中,数字电路可简单归纳为两种要素:线线和和器件器件。线线是器件管脚之间的物理连线;是器件管脚之间的物理连线;器件器件也可简单也可简单归纳为组合逻辑器件(如与或非门等)和时序逻辑器件归纳为组合逻辑器件(如与或非门等)和时序逻辑器件(如寄存器、锁存器、(如寄存器、锁存器、RAM等)。一个数字系统(硬件)等)。一个数字系统(硬件)就是多个器件通过一定的连线关系组合在一块的。因此,就是多个器件通过一定的连线关系组合在一块的。因此,Verilog HDL的建模实际上就是如何使用的建模实际上就是如何使用HDL语言对数字电语言对数字电路的两种基本要素的特性及相互之间的关系进行描述的过路的两种基本要素的特性及相互之间的关系进行描述的过程。程。9.2 Verilog HDL 简介简介5/4/20244模块模块(module)是)是Verilog 的基本描述单位,用于描的基本描述单位,用于描述某个设计的功能或结构及与其他模块通信的外部端述某个设计的功能或结构及与其他模块通信的外部端口。口。模块在概念上可等同一个器件就如我们调用通用器件模块在概念上可等同一个器件就如我们调用通用器件(与门、三态门等)或通用宏单元(计数器、(与门、三态门等)或通用宏单元(计数器、ALU、CPU)等,因此,)等,因此,一个模块可在另一个模块中调用一个模块可在另一个模块中调用。一个电路设计可由多个模块组合而成,因此一个模块一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次设计,的设计只是一个系统设计中的某个层次设计,模块设模块设计可采用多种建模方式计可采用多种建模方式。模模 块块(module)5/4/20245三个描述层次三个描述层次开关级描述:描述电阻、晶体管以及它描述电阻、晶体管以及它们之间的相互连线关系。们之间的相互连线关系。门级描述:描述基本逻辑门、触发器以描述基本逻辑门、触发器以及相互连线关系。及相互连线关系。寄存器传输级(RTL)描述:描述寄存器描述寄存器以及它们之间的数据传递关系。以及它们之间的数据传递关系。5/4/20246Verilog HDL 允许一个设计中每个模块均在不同设计允许一个设计中每个模块均在不同设计层次层次上建模。上建模。5/4/202479.2.1 基本程序结构基本程序结构module ();endmodule5/4/20248几个简单事例:几个简单事例:例例1 加法器加法器module addr(a,b,cin,cout,sum);input 2:0 a;input 2:0 b;input cin;output cout;output 2:0 sum;assign cout,sum=a+b+cin;endmodule5/4/20249例例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几个简单事例:几个简单事例:5/4/202410module 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 三态驱动器三态驱动器几个简单事例:几个简单事例:5/4/202411 通过上面的实例可看出,一个设计是由一个个模块通过上面的实例可看出,一个设计是由一个个模块(module)构成的。一个模块的设计如下:)构成的。一个模块的设计如下:1、模块内容是嵌在模块内容是嵌在module 和和endmodule两个语句之间。两个语句之间。每个模块实现特定的功能,模块可进行层次的嵌套,因此每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最后通过由顶层模块调用子模块来实现整现特定的功能,最后通过由顶层模块调用子模块来实现整体功能,这就是体功能,这就是Top-Down的设计思想,如例的设计思想,如例3。2、模块包括模块包括接口描述部分接口描述部分和和逻辑功能描述部分逻辑功能描述部分。这可以把。这可以把模块与器件相类比。模块与器件相类比。模块的结构:模块的结构:5/4/202412模块的端口定义部分:模块的端口定义部分:如上例:如上例:module addr(a,b,cin,count,sum);其中其中module 是模块的保留字,是模块的保留字,addr 是模块的名字,相当于器件名。是模块的名字,相当于器件名。()内是该模块的端口声明,定义了该模块的管脚名,是()内是该模块的端口声明,定义了该模块的管脚名,是该模块与其他模块通讯的外部接口,相当于器件的该模块与其他模块通讯的外部接口,相当于器件的pin。模块的内容,包括模块的内容,包括I/O说明,内部信号、调用模块等的声说明,内部信号、调用模块等的声明语句和功能定义语句。明语句和功能定义语句。I/O说明语句如:说明语句如:input 2:0 a;input 2:0 b;input cin;output count;其中的其中的input、output、inout 是保留字,定是保留字,定义了管脚信号的流向,义了管脚信号的流向,n:0表示该信号的位宽(总线或单表示该信号的位宽(总线或单根信号线)。根信号线)。5/4/202413逻辑功能描述部分如:逻辑功能描述部分如:assign d_out=d_en?din:bz;mytri u_mytri(din,d_en,d_out);功能描述用来产生各种逻辑(主要是组合逻辑和时序功能描述用来产生各种逻辑(主要是组合逻辑和时序逻辑,可用多种方法进行描述。还可用来实例化一个逻辑,可用多种方法进行描述。还可用来实例化一个器件,该器件可以是厂家的器件库也可以是我们自己器件,该器件可以是厂家的器件库也可以是我们自己用用HDL设计的模块(相当于在原理图输入时调用一个设计的模块(相当于在原理图输入时调用一个库元件)。在逻辑功能描述中,主要用到库元件)。在逻辑功能描述中,主要用到assign 和和always 两个语句。两个语句。5/4/2024143、对每个模块都要进行端口定义,并说明输入、对每个模块都要进行端口定义,并说明输入、输出口,然后对模块的功能进行逻辑描述,当然,输出口,然后对模块的功能进行逻辑描述,当然,对测试模块,可以没有输入输出口。对测试模块,可以没有输入输出口。4、Verilog HDL 的书写格式自由,一行可以写的书写格式自由,一行可以写几个语句,也可以一个语句分几行写。几个语句,也可以一个语句分几行写。5、除除endmodule 语句外,每个语句后面需有分语句外,每个语句后面需有分号表示该语句结束。号表示该语句结束。模块的结构:模块的结构:5/4/2024159.2.2 词法构成词法构成1、间隔符与注释符、间隔符与注释符 在在 Verilog HDL里有两种形式的注释:里有两种形式的注释:/是单行注释是单行注释/*/是多行注释是多行注释白空(新行、制表符、空格)没有特殊意义。白空(新行、制表符、空格)没有特殊意义。书写规范建议:书写规范建议:一个语句一行。一个语句一行。采用空四格的采用空四格的table 键进行缩进。键进行缩进。5/4/2024162、操作符、操作符 Arithmetic:+,-!*/Binary operators:&,|,!Shift:Relational:,=,=,!=Logical:&,|9.2.2 词法构成词法构成5/4/202417Examples: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(表示十进制),(表示十进制),h 或或H(表示十六进制)之一;(表示十六进制)之一;value 是基于是基于base 的值的数字序列。值的值的数字序列。值x 和和z 以及以及十六进制中的十六进制中的a 到到f 不区分大小写。不区分大小写。5/4/202418 Verilog HDL中规定了四种基本的值类型:中规定了四种基本的值类型:0:逻辑:逻辑0或或“假假”;1:逻辑:逻辑1或或“真真”;X:未知值;:未知值;Z:高阻。:高阻。注意这四种值的解释都内置于语言中。如一个为注意这四种值的解释都内置于语言中。如一个为z 的值的值总是意味着高阻抗,一个为总是意味着高阻抗,一个为0 的值通常是指逻辑的值通常是指逻辑0。此外,此外,x 值和值和z 值都不分大小写。值都不分大小写。9.2.2 词法构成词法构成3、数值常量、数值常量5/4/2024199.2.2 词法构成词法构成4、字符串、字符串5、标识符、标识符6、关键字、关键字字符串是双引号内的字符序列。字符串不能分成多行书写。字符串是双引号内的字符序列。字符串不能分成多行书写。标识符是模块、寄存器、端口、连线、示例和标识符是模块、寄存器、端口、连线、示例和begin end 等等元素的名称,是赋给对象的唯一的名称。元素的名称,是赋给对象的唯一的名称。5/4/202420数据类型数据类型数据类型有数据类型有 wire 和和 reg。wire 用于对结构化器件之间的物理连线的建模。如器用于对结构化器件之间的物理连线的建模。如器件的管脚,内部器件如与门的输出等。件的管脚,内部器件如与门的输出等。由于线网类型代表的是物理连接线,因此它不存贮逻由于线网类型代表的是物理连接线,因此它不存贮逻辑值。必须由器件所驱动。通常由辑值。必须由器件所驱动。通常由assign进行赋值。进行赋值。如如 assign A=B C;当一个当一个wire 类型的信号没有被驱动时,缺省值为类型的信号没有被驱动时,缺省值为Z(高阻)。(高阻)。信号没有定义数据类型时,缺省为信号没有定义数据类型时,缺省为 wire 类型。类型。5/4/202421数据类型数据类型数据类型有数据类型有 wire 和和 reg。reg 是最常用的寄存器类型,寄存器类型通常用于对是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,如存储单元的描述,如D型触发器、型触发器、ROM等。等。存储器类型的信号当在某种触发机制下分配了一个值,存储器类型的信号当在某种触发机制下分配了一个值,在分配下一个值之时保留原值。在分配下一个值之时保留原值。但必须注意的是,但必须注意的是,reg 类型的变量,不一定是存储单类型的变量,不一定是存储单元,如在元,如在always 语句中进行描述的必须用语句中进行描述的必须用reg 类型的变类型的变量。量。5/4/202422简单事例:简单事例: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;“=”用于组合逻辑器件的赋值用于组合逻辑器件的赋值“=”用于时序逻辑器件的赋值用于时序逻辑器件的赋值5/4/202423简单事例:简单事例:/与非门模块与非门模块module NAND(in1,in2,out);input in1,in2;output out;assign out=(in1&in2);endmodule5/4/202424简单事例:简单事例:/用两个与非门构成与门模块用两个与非门构成与门模块module AND(in1,in2,out);input in1,in2;output out;wire w1;NAND NAND1(in1,in2,w1);NAND NAND2(w1,w1,out);endmodule5/4/202425更多结构事例:更多结构事例:5/4/2024269.2.3 模块的描述方式模块的描述方式1、行为描述方式、行为描述方式行为描述方式是通过行为语句来描述电路要实现的功行为描述方式是通过行为语句来描述电路要实现的功能,表示输入与输出间转换的行为,不涉及具体结构。能,表示输入与输出间转换的行为,不涉及具体结构。从这个意义上讲,行为建模是一种从这个意义上讲,行为建模是一种“高级高级”的描述方式。的描述方式。例:一位例:一位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;endmodule5/4/202427例:一位全加器的行为建模例:一位全加器的行为建模module 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;endendmodule5/4/2024282、结构描述方式、结构描述方式结构化的建模方式就是通过对电路结构的描述来建模,结构化的建模方式就是通过对电路结构的描述来建模,即通过对器件的调用(即通过对器件的调用(HDL概念称为例化),并使用线网概念称为例化),并使用线网来连接各器件的描述方式。来连接各器件的描述方式。这里的器件包括这里的器件包括Verilog HDL的内置门如与门的内置门如与门and,异或门异或门xor等,也可以是用户的一个设计。结构化的描述等,也可以是用户的一个设计。结构化的描述方式反映了一个设计的层次结构。方式反映了一个设计的层次结构。5/4/202429例:一位全加器的结构建模例:一位全加器的结构建模module FA_struct(A,B,Cin,Sum,Count);input A;input B;input Cin;output Sum;output Count;wire S1,T1,T2,T3;xor x1(S1,A,B);xor x2(Sum,S1,Cin);and A1(T3,A,B);and A2(T2,B,Cin);and A3(T1,A,Cin);or O1(Cout,T1,T2,T3);endmodule5/4/202430通过具体实例来说明如何用通过具体实例来说明如何用HDL来进行系统设计来进行系统设计在该系统中,我们划分成如下三个部分:在该系统中,我们划分成如下三个部分:2 2输入与门输入与门模块,模块,LEDLED显示模块,显示模块,4 4位计数器模块。位计数器模块。系统的层次描述如下:系统的层次描述如下:例:一个频率计数系统例:一个频率计数系统顶层模块顶层模块 CNT_BCD CNT_BCD,文件名,文件名 CNT_BCD.v CNT_BCD.v,该模块调,该模块调用了底层模块用了底层模块 AND2 AND2、CNT_4b CNT_4b 和和 HEX2LED HEX2LED。5/4/202431系统的电路结构图如下:系统的电路结构图如下:系统的设计文档系统的设计文档5/4/202432p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!