2022年大规模集成电路硬件描述语言 .pdf
《2022年大规模集成电路硬件描述语言 .pdf》由会员分享,可在线阅读,更多相关《2022年大规模集成电路硬件描述语言 .pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、49 第五章大规模集成电路硬件描述语言(VHDL)80 年代以来,采用计算机辅助设计 CAD 技术设计硬件电路在全世界范围得到了普及和应用。一开始,仅用 CAD 来实现印刷板的布线,以后才慢慢实现了插件板级规模的设计和仿真,其中最具代表性的设计工具是OrCad 和 Tango,它们的出现使电子电路设计和印刷板布线工艺实现了自动化。但这种设计方法就其本身而言仍是自下而上的设计方法,即利用已有的逻辑器件来构成硬件电路,它没有脱离传统的硬件设计思路。随着集成电路规模与复杂度的进一步提高,特别是大规模、超大规模集成电路的系统集成,使得电路设计不断向高层次的模块式的设计方向发展,原有的电原理图输入方式显
2、得不够严谨规范,过多的图纸和底层细节不利于从总体上把握和交流设计思想;再者,自下而上的设计方法使仿真和调试通常只能在系统硬件设计后期才能进行,因而系统设计时存在的问题只有在后期才能较容易发现,这样,一旦系统设计存在较大缺陷,就有可能要重新设计系统,使得设计周期大大增加。基于以上电原理图输入方式的缺陷,为了提高开发效率,增加已有成果的可继承性并缩短开发时间,大规模专用集成电路 ASIC 研制和生产厂家相继开发了用于各自目的的硬件描述语言。其中最具代表性的就是美国国防部开发的 VHDL语言和 Verilog公司开发的Verilog HDL以及日本电子工业振兴协会开发的UDLI 语言。1987年 1
3、2 月 10 日,IEEE 标准化组织发布IEEE 标准的VHDL,定为 IEEE Stdl0761987 标准(该标准是从1983 年 8 月美国空军支持并开发的VHDL7 2 版发展而来)。这使得VHDL成为唯一被IEEE 标准化的HDL语言,这标志着 VHDL被电子系统设计行业普遍接收并推广为标准的HDL语言。许多公司因而纷纷使自己的开发工具与VHDL兼容。由此可见,使用 VHDL 语言来设计数字系统在一定程度上是电子设计技术的大势所趋。利用 VHDL设计硬件电路的优点是:1)设计技术齐全、方法灵活、支持广泛 VHDL语言可以支持自上而下和基于库的设计方法,还支持同步电路、异步电路、FP
4、GA以及其他随机电路的设计。目前大多数EDA工具几乎在不同程度上都支持VHDL语言。这给VHDL语言进一步推广和应用创造了良好的环境。2)系统硬件描述能力强 VHDL具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 35 页 -50 3)VHDL语言可以与工艺无关编程VHDL设计硬件系统时,可以编写与工艺有关的信息。但是,与大多数HDL语言不同的是,当门级或门级以上层次的描述通过仿真验证后,可以用相应的工具将设计映射成不同的工艺(如 MOS,CMOS 等)。这样,工艺更新时,就无须修改程序,只须修改相应的映射工具即
5、可。所以,在VHDL中,电路设计的编程可以与工艺相互独立。4)VHDL语言标准、规范,易于共享和复用VHDL语言的语法较严格,给阅读和使用都带来了极大的好处。再者,VHDL作为一种工业标准,设计成果便于复用和交流,反过来也能进一步推动VHDL语言的推广和普及。5-1 VHDL程序的基本结构一个完整的VHDL 语言程序通常包含实体(Entity),结构体(Architecture),配置(Configuation),包(package)和库(Library)5个部分。前四种是可分别编译的源设计单元。库存放已编译的实体、结构体、配置和包。实体用于描述系统内部的结构和行为;包存放各设计模块都能共享的
6、数据类型、常数和子程序等;配置用于从库中选取所需单元来支持系统的不同设计,即对库的使用;库可由用户生成或ASIC 芯片制造商提供,以便共享。本章将对上述5 部分作一详细介绍。5-1-1 VHDL 程序的基本单元与构成VHDL程序的基本单元是设计实体(Design Entity),它对应于硬件电路中的某个基本模块。该模块可以是一个门,也可以是一个微处理器,甚至整个系统。但无论是简单的还是复杂的数字电路,VHDL程序的基本构成都是一样的,都由实体和结构体构成。实体描述模块的对外端口,结构体描述模块的内部情况即模块的行为和结构。例 1 是一个如图5-1 所示半加器的VHDL描述。-The entit
7、y declaration entityHalf_adder isport(X Half_ Sum X:in Bit;Y adder Carry Y:in Bit;Sum:out Bit;Carry:out Bit);图 5-1 半加器end Half_adder;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 35 页 -51-The architecture body:architecture Behavioral_description of Half_adder isbeginprocess begin Sum=X xor Y after 5 Ns;Carry=X and
8、 Y after 5 Ns;wait on X,Y;end process;end Behavioral_description 例 2 描述了作为一个设计实体的二选一电路。entity mux isgeneric(m:TIME:=1ns);port(d0,d1,sel:in BIT;q:out BIT);end mux;architecture connect of mux isSignal tmp:BIT;begin Cale:process(d0,dl,sel)variable tmpl,tmp2,tmp3:BIT;begin tmp1:=d0 and sel;tmp2:=d1 and(
9、not sel);tmp3:=tmp1 or tmp2;tmp=tmp3;q A,Y=B,Sum=Temp_sum,Carry=Temp_carry_1);U1:Half_adder port map(X=Temp_sum,Y=Carry_in Sum=AB,Carry=Temp _Carry_2);U2:Or_gate port map(In1=Temp_carry_1,In2=Temp_carry_2,名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 35 页 -53 Out1=Carry_out);end structure;图 5-2 由半加器构造的全加器说明:在上述所有例
10、子中,粗斜体(如end)表示该标识符(end)为系统保留字。In1:in Bit;In2:in Bit;可写成 In1:Bit;In2:Bit;因为in是缺省的I/O状态。-为注释行标志,该行其后的所有字符均为注释内容。由component.end component;注明的一段为元件说明语句,给出了该元件的外端口情况,或者说是给出了一个元件的模板。由-component instantia tion statements说明的为元件例示语句部分。该语句将元件说明中的端口映射到实际元件中的端口,即将模板映射到现实电路。下面对实体说明和结构体的详细情况进行解释说明:1、实体说明(Entity D
11、eclaration)实体说明的一般形式是:entity 实体名 is 类属参数说明 formal_generic_clause 端口说明formal_port_clause 说明语句declarations begin 实体语句部分 end实体名 ;说明:实体名和所有端口名都由字符串组成(称为标识符)。该字符串中的任意字符可以是“a”到“z”,“A”到“Z”,或数字“0”到“9”,以及下划线“_”;字符串的第一个字符必须是字母,中间不包括空格,且最后一个字符不可以为下划线,两个下划线不允许相邻。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 35 页 -54 表示其中的部分是可
12、选项;对 VHDL而言,大小写一视同仁,不加区分;实体说明以 entity 实体名 is 开始,至 end 实体名 结束,最简单的实体说明是:entity E is end;除此之外,其余各项皆为可选项;类属(Generic)语句必须放在端口语句之前,用于指定由环境决定的参数。例如,在数据类型说明上用于传递位矢长度、数组的位长以及器件的延迟时间等参数。类属语句的一般形式为:generic(端口名,端口名:in子类型符:=初始值 ;端口名,端口名 :in子类型符:=初始值)例如,在二选一电路的描述中的 generic(m:time:=1ns)指定了结构体内延时m的值为 lns。又如:entity
13、 AndGate isgeneric(N:NatUral:=2);port(inputs:in Bit_vector(1 to N);result:out Bit);一一类属参数N规定了位矢量(Bit_Vector)inputs的长度end AndGate;端口(port)说明是设计实体之外部接口的描述,规定了端口的名称、数据类型和输入输出方向。例如对二选一电路描述中的 port(do,d1,sel:in BIT;q:out B1T);其一般书写格式是:port(端口名,端口名 :方向 子类型符 bus:=初始值 ;端口名,端口名 :方向 子类型符 bus:=初始值)其中方向用于定义外部引脚的
14、信号方向是输入还是输出,共有五种方向:in,out,inout,buffer,1inkage。In 表示信号自端口输入到结构体;out 表示信号自结构体输出到端口;inout表示该端口是双向的;buffer说明端口可以输出信号,且结构体内部可以利用该输出信号;1inkage用于说明该端口无指定方向,可以与任何方向的信号连接。上例中的 d0,d1,sel为输入引脚,q 为输出引脚。说明语句(Declaration)可以包括:subprogram 说明subprogram 定义(或称subprogram 体)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 35 页 -55 type
15、说明subtype说明constant说明signal说明file说明alias说明attribute说明attribute定义use 语句disconnection定义用于对设计实体内所用的信号、常数、数据类型和函数进行定义,这种定义对该设计实体是可见的。2、结构体(Architecture Body)结构体是对实体功能的具体描述,必须跟在实体后面。通常,先编译实体后才能对结构体进行编译,如果实体需要重新编译,那么相应的结构体也应重新编译。结构体的一般结构描述如下:Architecture结构体名of实体名is 说明语句;begin 并行处理语句;end 结构体名 ;说明:结构体的名称应是该
16、结构体的唯一名称,of后紧跟的实体名表明了该结构体所对应的是哪一个实体。is用来结束结构体的命名。结构体名称的命名规则与实体名的命名规则相同。说明语句的内容除了实体说明中可有的说明项外,还可以包括元件说明(component)和组装说明(或曰配置configuration)语句。说明语句用于对结构体内所用的信号、常数、数据类型和函数进行定义,且其定义仅对结构体内部可见。例如在对二选一电路的描述中:architecture connect of mux issignal tmp:BIT;-对内部信号tmp 进行定义-信号定义和端口语句一样,应有信号名和数据类型的说明-因它是内部连接用的信号,故没
17、有也不需要方向说明名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 35 页 -56 begin.end connect;关于说明语句还会在后面继续介绍。处于begin和end之间的并行处理语句(即各语句是并发执行的),用于描述该设计实体(模块)的行为和结构。包括block语句process语句Procedure调用语句assert语句assignment语句generate语句|component instance语句有关这部分语句的详情也会在后面几节中介绍。二选一电路描述中的进程语句如下:cale:process(d0,d1,sel)variable tmp1,tmp2,tmp
18、3:BIT;begin .end process;一个实体说明可以对应于多个不同的结构体。即对于对外端口相同而内部行为或结构不同的模块,其对应的设计实体可以具有相同的实体说明和不同的结构体。所以,一个给定的实体说明可以被多个设计实体共享,而这些设计实体的结构体不同。从这个意义上说,一个实体说明代表了一组端口相同的设计实体(如两输入端的“与非门”和两输入端的“或非门”等)。所以 VHDL规定:对应于同一实体的结构体不允许同名,而对应于不同实体的结构体可以同名。5-1-2 包(Package)、库(Library)和配置(Configuration)1、包(package)在实体说明和结构体中说明
19、的数据类型、常量和子程序等只对相应的结构体可见,而名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 35 页 -57 不能被其他设计实体使用。为了提供一组可被多个设计实体共享的类型、常量和子程序说明,VHDL提供了包(Package)。包用来单纯的罗列要用到的信号定义、常数定义、数据类型,元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。包分为包说明(Package Declaration)和包体(Package Body)两部分。包说明的一般形式是,Package包名is 说明语句;end 包名 ;包体的一般形式是:Package body包名 i
20、s 说明语句;end 包名 ;说明:包说明和相应的包体的名称必须一致。包说明中的说明语句可包括:subprogram 说明type 说明subtype 说明constant说明signal说明file说明alias说明attribute说明attribute定义use 语句disconnection定义即除了不包括子程序体外,与实体说明中的说明语句情况相同。包体中的说明语句可包括:subprogram 定义type 说明subtype 说明名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 35 页 -58 constant说明fi1e说明alias说明use 语句 VHDL中的 s
21、ubprogram(子程序)概念,与一般计算机高级语句中子程序的概念类似。子程序包括过程(procedure)和函数(function),分别由子程序说明和子程序体(子程序定义)两部分组成。可以出现在相应的实体说明、结构体、包说明和包体中,供其它语句调用。包说明可定义数据类型,给出函数的调用说明,而在包体中才具体的描述实现该函数功能的语句(即函数定义)和数据的赋值。这种分开描述的好处是,当函数的功能需要作某些调整时,只要改变包体的相关语句就行了,这样可以使重新编译的单元数目尽可能少。可见性:包体中的子程序体和说明部分不能被其它VHDL元件引用,只对相应的包说明可见,而包说明中的内容才是通用的和
22、可见的(当然还必须用use 子句才能提供这种可见性)。下面即为一个包说明及其相应包体的例子:Package Logic istype Three_level_logic is(0,1,z);function lnvert(input:Three_1evel_logic)return Three_1evel_logic;end logic;package body Logic isfunction invert(1nput:Three_1evel_1ogic)return Three_level_logic isbegin case lnput is whenO return1;when1ret
23、urn0;whenzreturnz;end case;end invert;end Logic;上例中,第一段是包说明,其中第三行是函数lnvert说明;第二段是包体,第二行开始函数的定义,给出了函数的行为。这部分内容只对包说明(即第一段)可见。所以,包说明包含的是通用的、可见的说明;而包体包含的是专用的、不可见的说明。在一个设计实体中加上use 子句(在实体说明之前),可以使包说明中的内容可见。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 35 页 -59 如:use IEEE.STD_LOGlC_1164 a11;a11 表示将IEEE 库中的 STD_LOGIC_116
24、4 包中的所有说明项可见。又如,use Logic.Three_1evel_1ogic;表示将用户自定义的包Logic中的类型Three_1evel_1ogic对相应的设计实体可见。包也可以只有个包说明,因为如果包说明中既不创造子程序说明也无有待在包体中赋值的常数(deferred constant)时,包体就没必要存在了。2、配置(Configuration)利用配置语句(又叫组装说明),设计者可以为待设计的实体从资源文件(库或包)中选择描述不同行为和结构的结构体。在仿真某个实体时,可以利用配置语句选择不同的结构体,以便进行性能对比得到最佳性能的结构体。配置语句的一般形式为:configur
25、ation配置名of实体名 is 配置说明部分:use 子句或 attribute 定义;语句说明;end 配置名 ;配置语句根据不同情况,其语句说明有繁有简,以下以一个微处理器的配置为例作一些简要说明。an architecture of a microprocessor:architecture Structure_View of Processor is component 说明语句Component ALU port(,)end component;Component MUX port(,)end component;begin component 例示语句:A1:ALU port m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年大规模集成电路硬件描述语言 2022 大规模集成电路 硬件 描述 语言
限制150内