




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 VHDL基本概念,硬件描述语言概述 VHDL程序的实体和结构体 VHDL程序的库和程序包 VHDL程序的配置,VHDL基本概念,硬件描述语言概述,目前,国际上越来越多的EDA工具都接收HDL语言作为设计输入。硬件描述语言向着标准化、集成化的方向发展,VHDL和Verilog HDL适应了这种趋势的要求,先后成为IEEE标准。目前应用最广泛的硬件描述语言有VHDL和Verilog两种。此外ABEL-HDL也有少量应用。,Verilog HDL,Verilog HDL全称为Verilog硬件描述语言,它是1983年由GDA公司的Phil Moorby首创的。1989年Cadence公司收购
2、了GDA公司,并公开了Verilog HDL。基于Verilog HDL的优越性,IEEE于1995年制订了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995。,硬件描述语言概述,Verilog HDL是专为ASIC设计而开发的。Verilog HDL较为适合算法级、寄存器传输级RTL、逻辑级和门级的设计,它可以很容易地把完成的设计移植到不同厂家的不同芯片中去,并且对设计很容易修改。 采用Verilog HDL输入法的最大优点是其与工艺的无关性,这使得设计者在功能设计、逻辑验证阶段可不必过多考虑门级及其工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不
3、同的约束条件,即可设计出实际电路。,Verilog HDL完全集成于MAX+plus中,它可以包含MAX+plus支持结构的任何形式的组合,也可以包含Altera提供的元器件和宏功能模块。利用Verilog HDL可以进行功能描述、仿真验证、时序分析、逻辑综合等。,硬件描述语言概述,VHDL,VHDL全称为超高速集成电路硬件描述语言。它是美国国防部于20世纪80年代后期出于军事工业的需要开发的。1987年VHDL被IEEE确定为标准化的硬件描述语言,即VHDL87版本。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,形成了新版本的VHDL,即VH
4、DL93版本。,VHDL语言涵盖面广,抽象描述能力强,支持硬件的设计、验证、综合与测试。VHDL能在多个级别上对同一逻辑功能进行描述,如可以在寄存器级别上对电路的组成结构进行描述,也可以在行为描述级别上对电路的功能与性能进行描述。无论哪种级别的描述,都有赖于优良的综合器其转化为具体的硬件结构。,硬件描述语言概述,利用VHDL描述设计,设计者可以不懂硬件结构,也不必考虑最终实现的目标器件是什么,只需用正确的语言描述系统的行为即可。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,使得VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的CPLD、FPGA及各种门阵列器件。,在
5、各种硬件描述语言中,VHDL的行为抽象描述能力是最强的,从而决定了它成为系统设计领域最佳的硬件描述语言。,硬件描述语言概述,ABEL-HDL,ABLE-HDL是一种最基本的硬件描述语言。它支持各种行为的输入方式,其中包括布尔方程、真值表、状态机等逻辑表达方式。ABEL语言和Verilog 同属一种描述级别,但ABEL的特性和受支持程度远不如Verilog。 ABLE的主要优点有使用灵活、格式简洁、编译要求宽松等。 ABLE被广泛用于可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模的可编程逻辑器件的设计。,虽然有不少EDA软件支持ABEL-HDL,但提供ABEL-HD
6、L综合器的EDA公司仅DATA IO公司一家,描述风格一般只用门电路级描述方式,对于复杂的设计显得力不从心。应用不广,未能进入IEEE国际标准。,硬件描述语言概述,VerilogHDL与VHDL的比较,一般的硬件描述语言可在三个层次上进行电路描述,其层次由高到低依次可分为行为级、RTL级和门电路级。VHDL语言通常更适合行为级和RTL级的描述;VerilogHDL通常只适合RTL级和门电路级的描述。 因此与VerilogHDL相比,VHDL是一种高级描述语言,适用于电路高级建模,最适合描述电路的行为,即描述电路的功能,但它几乎不能直接控制门电路,即控制电路的资源;VerilogHDL则是一种低
7、级的描述语言,最适合于描述门级电路,易于控制电路资源。,硬件描述语言概述,任何一种语言源程序,最终都要转换成门电路级才能被布线器或适配器所接收。VHDL语言的综合通常要经过行为级RTL级门电路级的转化;而VerilogHDL语言的综合过程要稍简单些,即经过RTL级门电路级的转化。,VHDL和VerilogHDL主要区别在于逻辑表达的描述级别。VHDL虽然也可以直接描述门电路,但这方面的能力却不如VerilogHDL;相反,VerilogHDL在高级建模描述方面不如VHDL。VerilogHDL的描述风格接近于电路原理图,从某种意义上说,它是电路原理图的高级文本表示方式。,硬件描述语言概述,由于
8、VHDL和VerilogHDL各有所长,市场占有量也相差不多。VHDL描述语言层次较高,不易控制底层电路,因而对综合器的综合性能要求较高。但当设计者积累一定经验后会发现,每种综合器一般将一定描述风格的语言综合成确定的电路,只要熟悉基本单元电路的描述风格,综合后的电路还是易于控制的。 VHDL入门相对稍难,但在熟悉以后,设计效率明显高于VerilogHDL,生成的电路性能也与VerilogHDL的不相上下。在VHDL设计中,综合器完成的工作量是巨大的,设计者所做的工作就相对减少了;而在VerilogHDL设计中,工作量通常比较大,因为设计者需要搞清楚具体电路结构的细节。,硬件描述语言概述,第三章
9、 VHDL基本概念,硬件描述语言概述 VHDL程序的实体和结构体 VHDL程序的库和程序包 VHDL程序的配置,VHDL基本概念,VHDL语言的程序结构,一般结构,VHDL程序结构的一个显著特点就是,任何一个完整的设计项目(或称为设计实体,简称实体)都可以分为两部分。 第一部分主要用于描述电路的“外部端口”,包括器件名称、端口的名称、数据类型等,我们把它称为“实体说明”; 第二部分主要用于描述电路的“内部结构、功能及其实现的算法”,我们把它称为“结构体”。 以上两部分是一个VHDL程序必备的两部分,缺一不可。当一个设计实体的内、外两部分都设计完成后,其他设计实体就可以像调用普通元件一样直接调用
10、它。,VHDL语言的程序结构,【例3-1】试用VHDL语言描述一个2输入端的与非门。 -第一部分:“外部端口” ENTITY nand2 IS -实体说明描述,实体名称为nand2 PORT(a,b:IN BIT;-a、b为输入引脚,数据类型为BIT y:OUT BIT); -y为输出引脚,数据类型为BIT END nand2; -结束实体说明 -第二部分:“结构体” ARCHITECTURE a OF nand2 IS -结构体名称为a BEGIN y=a NAND b; -a和b进行与非运算,结果赋给y END a; -结束结构体描述,从上述例子可看出,VHDL的所有语句都是以“;”结束的
11、;语句后面的“-”部分表示程序注释。,VHDL语言的程序结构,“实体说明”部分给出了器件nand2的外部引脚(PORT),如图所示。a、b为输入引脚,y为输出引脚,数据类型均为BIT。BIT指的是1位二进制数,只有2两种逻辑取值“0”和“1”。,“结构体”部分给出了nand2的内部功能信息。其中“NAND”是实现“与非”运算的运算符;“=”是赋值运算符,从电路的角度来看就是表示信号的传输,即将a和b“与非”运算后的结果信号传输给y。,VHDL语言的程序结构,实体,实体是VHDL程序设计中最基本的模块,可以单独编译和并入设计库。 实体就是设计对象(或设计项目),实体可代表任何电路,从一个门电路、
12、一个芯片、一块电路板,到一个复杂系统都可看成一个实体。如果在设计时采用的是自顶向下分层、划分模块的设计方法,那么,各层的设计模块都可看成一个实体。顶层的系统模块称为顶层实体,低层的设计模块称为低层实体。 在用VHDL语言描述时,顶层的实体可将比它低的低层实体当作元件来调用。至于低层实体的具体结构和功能,在低层实体中描述。,实体,实体说明,实体说明的功能就是对实体与外部电路的接口进行描述,是实体的表层设计单元,它规定了实体的输入输出接口信号,是实体对外的一个通信界面。,实体说明常用的语句结构如下: ENTITY 实体名 IS GENERIC(类属参数说明语句); PORT(端口说明); END
13、实体名;,实体,2中间方括号内的语句描述并非必需。,3对于VHDL的编译器和综合器来说,程序字母的大小写是不加区分的,但为了便于阅读和分辨,建议将VHDL的表示符或基本语句的关键词以大写方式表示,而由设计者添加的内容以小写方式来表示。,实体说明中应注意以下几个问题:,1实体名可由设计者自己规定,可采用英文字母“A-Z”、“a-z”,阿拉伯数字“0-9”,或底线符号“_”,但字符数不能超过32个,不能以数字或“_”开头,不能连续使用底线符号“_ _”,也不能以“_”结束。,实体,ENTITY dff IS PORT(clk,d:IN BIT; q,qb:OUT BIT); END dff;,【例
14、3-2】试编写一个D触发器的实体说明。,本例中: 实体名:dff 类属参数说明语句:缺省(非必须) 端口说明:输入端口 clk, d ;输出端口q, qb。 端口类型 BIT。,实体,一、类属参数说明语句(GENERIC),类属参数说明语句必须放在端口说明语句之前,类属参数的值可由实体外部提供,它通常用于设定元件内部电路的结构和规模,设计者可从外面通过重新设定类属参数的值而容易地改变元件内部电路结构和规模。,类属参数说明语句的一般书写格式如下: GENERIC(常数名:数据类型 :设定值; 常数名:数据类型 :设定值);,其中的常数名由设计者定义,数据类型通常取INTEGER(整数)或TIME
15、等类型,设定值即为常数名所代表的值。但需注意,综合器只支持整数数据类型。,实体,【例3-3】试编写一个12位二进制计数器的实体说明。 ENTITY counter_x IS GENERIC(n:INTEGER:=12); PORT(clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(n-1 DOWNTO 0); END counter_x;,本例中,定义了类属参数n的设定值为12,在后续语句中,用到n的地方均可用12代替。本例的第4行语句也可写成 q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0);,优点:当在某个实体内大量使用某个参数时,可把
16、该参数定义成类属参数。当设计者需改变该参数的值时,只需在类属参数语句中改写一次即可。从EDA工具综合的结果来看,将大大地影响设计结果的硬件规模。,实体,二、端口说明(PORT),端口说明对设计实体与外部电路的接口通道进行了说明,包括对每一接口的输入输出模式和数据类型进行了定义。,端口说明的一般书写格式如下: PORT(端口名,端口名:端口模式 数据类型; 端口名,端口名:端口模式 数据类型);,实体,(1)端口名。端口名是设计者赋给每个对外通道的名字,它与原理图中元件符号上的管脚名相类似。对端口的命名可采用英文字母“A-Z”、“a-z”,阿拉伯数字“0-9”,或底线符号“_”,但字符数不能超过
17、32个,不能以数字或“_”开头,不能连续使用底线符号“_ _”,也不能以“_”结束。每个端口名在同一实体中必须是唯一的,不能有重复现象。,(2)端口模式。端口模式用来说明端口上的数据流动方向。,端口模式包括IN、OUT、INOUT、BUFFER四种类型。,实体,1)IN。定义的端口为输入端口,可以通过此端口将外部的其他信号读入设计实体中。 2)OUT。定义的端口为输出端口,通过此端口可将信号从设计实体输出到外部。 3)INOUT。定义的端口为输入输出双向端口,即实体可以通过该端口输入外部信号,又可以通过该端口把实体内的信号输出到外部。,实体,4)BUFFER。定义的端口为具有数据读入功能的输出
18、端口。它与INOUT的区别是,INOUT是双向端口,即可以输入信号,也可以输出信号;而BUFFER也可以输出实体信号到外部,但作为输入时,信号不是由外部输入,而是在实体内由输出信号反馈得到,即BUFFER模式的端口在信号输出实体的同时,也可以被实体本身读入。,(3)数据类型。数据类型是指端口信号的取值类型。,1)BIT。二进制位类型,其取值是一个1位的二进制数,取值只能是0或1。,2)BIT_VECTOR。位向量数据类型,其取值是一组二进制数,常用来描述总线等端口,如data:IN BIT_VECTOR(3 DOWNTO 0),定义了一个具有4位位宽的输入数据总线端口。,实体,3)STD_LO
19、GIC。工业标准逻辑类型,取值有0、1、Z(高阻)、X(未知)等9种,该数据类型由IEEE库中的STD_LOGIC_1164程序包定义。,4)STD_LOGIC_VECTOR。工业标准逻辑向量类型,是STD_LOGIC的组合,也常用来描述总线等端口。,5)INTEGER。整数类型,可用作循环的指针或常数,通常不用作I/O信号。,6)BOOLEAN。布尔类型,取值有FALSE(假)、TRUE(真)两种。,常用端口数据类型,实体,结构体,对一个设计实体而言,实体说明部分描述的是实体的对外接口,并不考虑实体内部的具体细节。实体的内部结构与行为由结构体来描述。,结构体是实体的一个重要组成部分,主要用来
20、描述实体内的硬件结构、元件之间的连接、实体所完成的逻辑功能以及数据的传输和变换等方面的内容。一个实体可以有一个或多个结构体,每个结构体可分别描述该实体功能的不同实现方案。,结构体一般由两大部分组成: 对数据类型、常数、信号、子程序和元器件等因素的说明; 描述实体逻辑行为的功能描述语句,包括各种顺序语句和 并行语句。,结构体,一、结构体的一般书写格式,ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 功能描述语句 END 结构体名;,在书写格式上需注意,结构体中“实体名”必须与实体说明中的“实体名”相一致,而“结构体名”可由设计者自己选择,但当一个实体具有多个结构体时
21、,各结构体名不可重复。说明语句必须放在关键词“ARCHITECTURE”和“BEGIN”之间,结构体必须以“END 结构体名;”作为结束句。,结构体,二、结构体的说明语句,结构体中的说明语句是对结构体的功能描述语句中要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明。 结构体信号定义和端口说明一样,应有信号名称和数据类型定义,因是内部连接用的信号不需说明方向。 需要注意的是,在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于该结构体中。如果希望这些定义也能用于其
22、他的实体或结构体中,需要将其作为程序包来处理。,结构体,三、功能描述语句,功能描述语句含有五种不同类型且以并行方式工作的语句结构,这可以看成是结构体的五个子结构。而在每一子结构的内部也可能含有顺序运行的逻辑描述语句。这就是说虽然五个子结构本身是并行语句,但每个子结构内所包含的语句并不一定是并行语句。,结构体,右图给出了结构体的一般构造图。 可以看出结构体包含说明语句和功能描述语句。 有关常用的子结构基本组成和语句描述将在后续内容中介绍。,结构体,四、结构体描述方法,(1) 行为描述法:采用进程语句,顺序描述被称设计实体的行为。 (2) 数据流描述法:采用进程语句顺序描述数据流在控制流作用下被加
23、工、处理、存储的全过程。 (3) 结构描述法,采用并行处理语句描述设计实体内的结构组织和元件互连关系。,结构体,【例3-4】试用VHDL语言描述下图所示电路。,VHDL语言的程序结构,-实体说明 ENTITY xor2 IS -实体名为xor2 PORT(A,B:IN BIT; -A、B为输入引脚,数据类型BIT Y:OUT BIT); -Y为输出引脚,数据类型BIT END xor2; -结构体 ARCHITECTURE a OF xor2 IS -结构体名为a SIGNAL temp1,temp2,temp3:BIT; -类属参数说明语句 BEGIN -开始结构体描述 temp1=A NA
24、ND B; -A和B与非运算,结果赋给temp1 temp2=A NAND temp1; -A和temp1与非运算给temp2 temp3=B NAND temp1; -B和temp1与非运算给temp3 Y=temp2 NAND temp3; END a; -结束结构体描述,VHDL语言的程序结构,在上述例子中,temp1、temp2、temp3和Y这四条赋值语句之间是并行运行的关系,即它们的执行是同步的。只要某个信号发生变化,都会立即引起相应的语句被执行,产生相应的输出,而不管该语句的书写先后顺序。这一点和传统的程序设计语言的顺序执行情况是不同的,但它和硬件电路的工作情况相一致,这种并行的
25、执行方式是VHDL与传统程序语言的最显著区别。,VHDL语言的程序结构,第三章 VHDL基本概念,硬件描述语言概述 VHDL程序的实体和结构体 VHDL程序的库和程序包 VHDL程序的配置,VHDL基本概念,一、库 (LIBRARY),库是经编译后数据的集合,它可以是预先定义好的数据类型,也可以是已编译过的设计单元(包括实体说明、结构体、程序包等)。因此可以把库看成是用于存放预先完成的数据类型和源设计单元的仓库。如果在一项VHDL设计中要用到库中的信息,就必须在这项设计中预先打开这个库。在综合过程中,每当综合器遇到库语言,就可将库指定的源文件读入,并参与综合。,库的语句书写格式如下:,LIBR
26、ARY 库名;,VHDL的库,1IEEE库。IEEE库是VHDL设计中最常用的库,它包含了IEEE标准的程序包和其他一些支持工业标准的程序包。IEEE库中主要包括STD_LOGIC_1164、STD_LOGIC_UNSIGNED、STD_LOGIC_SIGNED等标准程序包,其中的STD_LOGIC_1164是最重要和最常用的程序包。使用IEEE库时必须先用语句LIBRARY IEEE声明。,2STD库。STD库是VHDL的标准库。在利用VHDL进行设计时,可以自动使用这个库,而不必像IEEE库那样需首先声明。因此类似“LIBRARY STD;”的语句是不必要的。,库的分类,VHDL的库,3W
27、ORK库。WORK库是VHDL设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包。因此它自动满足VHDL标准,在实际调用时不必预先声明,所以像“LIBRARY WORK;”的语句也是不必要的。 在PC或工作站上利用VHDL进行项目设计时,不允许在根目录下进行,而必须为此设定一个文件夹,用于保存此项目的设计文件。VHDL综合器将此文件夹默认为WORK库。必须注意,工作库并非文件夹的名称,而是一个逻辑名,综合器将指向该文件夹的路径。,4用户自定义库。用于为自身设计需要所开发的共用程序包河实体等,也可以汇集在一起定义成一个库。,VHDL的库,在一个库中往往有很多可使用的资源,这些资源通常存放在不同的程序包中。使用时,除了声明所在的库外,还要说明使用的是该库中的哪个程序包。说明书写格式如下。,LIBRARY 库名; USE 库名.程序包名.使用的范围;,例如要使用IEEE库的STD_LOGIC_1164程序包中的所有内容,可如下书写。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;,注意:库说明语句的作用范围从一个实体说明开始到它所属的结构体、配置为止。当一个源程序中出现多个实体时,库说明语句应在每个设计实体说明语句之前重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版场项目投标失败后人力资源配置调整合同
- 2025版办事处环保设施建设及运营管理协议
- 二零二五版范文范本:高科技产业研发合作协议
- 宝宝饮食健康课件
- 2025版智能办公区使用权租赁合作合同
- 二零二五年度环保绿色能源项目租赁服务协议
- 二零二五年财务主管在职期间保密义务及违约责任合同
- 2025版笔译服务与翻译服务标准化合同
- 2025年度越野车抵押租赁经营合同
- 二零二五年度材料运输合同范本(含应急预案)
- 旅游定制师入行培训方案
- 肝恶性肿瘤护理查房课件
- 工作中怎么拍照(摄影技巧)
- 空调电缆施工方案
- 中国儿童严重过敏反应诊断与治疗建议(2022年)解读
- 卡吉斯铸铁锅炉
- 钢箱拱钢箱梁吊装施工方案
- GB/T 23821-2022机械安全防止上下肢触及危险区的安全距离
- GB/T 25980-2010道路车辆旅居挂车和轻型挂车的连接球尺寸
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- GB/T 1633-2000热塑性塑料维卡软化温度(VST)的测定
评论
0/150
提交评论