您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > VHDL硬件描述语言与数字系统开发(第3章)
硬件描述语言与数字系统开发第3章硬件描述语言VHDL及其程序结构•VHDL及其特点•VHDL程序结构•VHDL的实体•VHDL的构造体•VHDL的库及配置•VHDL的描述风格EDA设计描述—HDLVHDL具有强大的行为描述能力,丰富的仿真语句和库函数,对设计的描述也具有相对独立性。Verilog语法比较自由,易学易用,最大特点是便于综合,对开发工具要求降低。ABEL一种早期的硬件描述语言支持逻辑电路的多种表达形式,其中包括逻辑方程,真值表和状态图。AHDL(AlteraHDL)是ALTERA公司发明的HDL,特点是非常易学易用,学过高级语言的人可以在很短的时间(如几周)内掌握AHDL。缺点是只能用于ALTERA自己的开发系统。第3章硬件描述语言VHDL及其程序结构VHDL:VHSICHardwareDescriptionLanguage□VHDL是美国国防部在70年代末和80年代初提出的VHSIC计划的产物。□VHSIC—VeryHighSpeedIntegratedCircuit(1982年)□由美国国防部(DOD)制定,作为各合同厂商之间提交复杂电路设计文档的一种标准方案。VHDL发展历史70年代末、80年代初美国国防部提出VHSIC(VeryHighSpeedIntegratedCircuit)计划。1983年7月IBM、TI和Intermetrics三大公司承担了联合开发语言版本(VHDL)及其软件开发环境的任务。1986年,第一个VHDL公开版发表。1987年3月,IEEE开始致力于VHDL的标准化工作。1987年12月,IEEE发布VHDL标准版本IEEE.std-1076/1987。美国国防部(DOD)要求所有数字电路用VHDL描述,并决定F-22战斗机项目采用VHDL’87。1993通过修改,发布IEEE.std-1076/1993,即VHDL’93。1996基于IEEE.std-1076/1993的仿真和综合工具问世。1997发布能够同时描述数字和模拟集成电路的VHDL语言标准(VHDL-AMS)。VHDL主要特点VHDL是一门标准化语言,适用于各种EDA设计开发工具,具有很强的可移植性。VHDL是一门设计输入语言,将系统的行为功能用文本代码描述,充分体现了硬件电路的软件实现方式。VHDL是一门网表语言,在基于计算机的设计环境中作为不同设计工具间相互通信的一种低级格式,可替换,可兼容。VHDL是一门测试语言,可在设计描述的同时建立测试基准(test-bench),对设计进行功能模拟和行为仿真。VHDL是一门可读性语言,既为计算机接受,也易被人们所理解;既可作为设计输入,又是一份技术文挡。此外,与其它硬件描述语言相比,VHDL具有更强的行为描述能力和更长的生命周期,已成为数字系统设计领域最佳的硬件描述语言。VHDL程序基本结构VHDL的基本设计单元Entity(实体)用来说明模型的外部特征。Architecture(构造体)用来定义模型的功能。Library(库)用来存放已编译过的设计单元,可作为其它设计描述的共享资源。Package(程序包)构成库的基本单元,使实体和结构体内的数据类型、常量、子程序等对于其他设计单元可见,包括包头和包体两部分。Configuration(配置)将实体和它的构造体联系起来。设计实体库、程序包使用说明(LIBRARY)实体说明(ENTITY)构造体(ARCHITECTURE)GENERIC类属说明配置(CONFIGURATION)PORT端口说明构造体元素说明构造体功能说明实体(ENTITY)实体(ENTITY)用来描述设计单元的外部信息,即为设计单元命名,并说明端口。实体(ENTITY)说明语句的一般格式为:ENTITY实体名IS[类属参数说明][端口说明]END实体名;(斜体表示关键字;实体名为设计单元命名;[…]表示可选项;类属参数说明用以指定某些全局参数值;端口说明则定义了每个外部引脚的名称、模式和数据类型。)端口说明的一般格式为:PORT(端口名{,端口名}:端口模式数据类型;...端口名{,端口名}:端口模式数据类型);例如,4-7译码器的端口描述:ENTITYYMQ4_7ISPORT(Q1,Q2,Q3,Q4:INBIT;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO1));ENDYMQ4_7;端口模式模式说明IN输入端口,只读模式,变量或信号通过该端口读入OUT输出端口,单向赋值模式,信号通过该端口输出BUFFER双向端口,具有读功能的输出模式,只能有一个驱动源INOUT双向端口,既可流入,又可流出,信号可通过该端口读入或输出设计实体端口模式说明端口模式(MODE)端口模式(MODE)有以下几种类型:IN;OUT;INOUT;BUFFER端口模式可用下图说明:(黑框代表一个设计或模块)INOUTBUFFERINOUT实体(ENTITY)与电路图设计中的电路元件符号(Symbol)相对应。Symbol规定了电路元件的符号名、接口关系和数据类型,同样地,ENTITY也具有这样的功能。下面R-S触发器的例子可以看出两者间的对应关系。(右边是传统设计中的符号图描述,左边是VHDL的设计描述)ENTITIE与SYMBOL对应关系RSFFSetQBQReset*实体语句用关键词ENTITY开头,实体名rsff是设计描述的符号名,在结束实体语句ENDrsff;之间,是实体说明语句。*在ENTITY语句的实体说明部分,常用PORT语句描述实体对外界连接的端口(数目、名称、方向和数据类型),实体rsff有四个端口,IN模式是Set/Reset,输出Q/QB是BUFFER(缓冲)模式,都为BIT类型。对rsff实体写一段VHDL描述,即:ENTITYrsffISPORT(set,reset:INBIT;q.qb:BUFFERBIT);ENDrsff;ENTITIE与SYMBOL对应关系举例ENTITYcntm16IS--实体PORT(ci:INstd_logic;nreset:INstd_logic;clk:INstd_logic;co:outstd_logic;qcnt:bufferstd_logic_vector(3downto0));ENDcntm16;信号名端口类型端口模式构造体(architecture)构造体说明语句描述设计功能,即说明设计单元的具体行为或结构。构造体(ARCHITECTURE)说明语句的一般格式为:ARCHITECTURE构造体名OF实体名IS[构造体说明部分]BEGIN[并行处理语句];END构造体名;关键字ARCHITECTURE做为构造体的开头,构造体名可任取,说明是某设计实体的构造体。ARCHITECTURE和BEGIN之间是构造体参数说明区;BEGIN和END之间是构造体功能说明语句区。构造体(Architecture)构造体(Architecture)声明区(Declarations)信号声明;声明用于该结构体的类型,常数,元件,子程序。并发语句信号赋值(SignalAssignments计算结果,并赋值给信号元件例化(ComponentInstantiations)调用另一个实体所描述的电路。即元件调用过程调用(ProcedureCalls调用一个预先定义好的一个算法。进程(Processes)定义一个新算法实现电路功能。在过程中赋值顺序语句。语句按放置的顺序执行。构造体构造体元素说明构造体功能说明常数说明数据类型说明元件例化说明信号说明子程序说明块语句信号赋值语句元件例化语句进程语句子程序调用语句构造体组织结构功能说明语句是构造体描述的主体,采用并行语句(并行赋值语句或进程语句)来描述,有行为功能描述、数据流描述和结构描述三种设计描述方式(或称三种设计描述风格)。设计单元的构造体描述实体的行为功能,一个设计实体可以有多个构造体,一种可能为行为描述,另一种可能为结构描述。构造体可以用行为、数据流和结构等多种方式描述一个设计实体。通过配置语句将某一特定的构造体与实体联系。以设计实体rsff的构造体描述为例说明如下。结构描述风格rsff结构化描述的构造体:ARCHITECTUREnetlistOFrsffISBEGINCOMPONENTnand2U1:nand2PORT(a,b:INBIT;PORTMAP(set,qb,q);c:OUTBIT);U2:nand2ENDCOMPONENT;PORTMAP(reset,q,qb);ENDnetlist;实体rsff的线路图如下:U1U2SetResetqqb行为、数据流描述风格设计实体rsff的数据流描述如下:ARCHITECTUREdata_flowOFrsffISBEGINq=NOT(qbANDset)AFTER2ns;qb=NOT(qANDreset)AFTER2ns;ENDdata_flow;设计实体rsff的行为化描述如下:ARCHITECTUREbehaveOFrsffISBEGINPROCESS(set,reset)BEGINIFset=‘1’ANDreset=‘0’THENELSIFset=‘0’ANDreset=‘0’THENq=‘0’AFTER2ns;q=‘1’AFTER2ns;qb=‘1’AFTER4ns;qb=‘1’AFTER2ns;ELSIFset=‘0’ANDreset=‘1’THENENDIF;q=‘1’AFTER4ns;ENDPROCESS;qb=‘0’AFTER2ns;ENDbehave;U1U2SetResetqqb行为描述模型用输入/输出响应来描述器件的模型只描述电路的功能,而不是结构不针对专门的硬件可用于综合和仿真Input1…NOutput1…NIFinput1THENFORjINhighDOWNTOlowLOOPshift(j):=shift(j);ENDLOOP;output1=shiftAFTER5ns结构描述模型用更低层次的器件的互连来描述器件的模型描述电路的功能和结构调用特殊的硬件可用于综合和仿真Input1InputnOutput1Outputn底层元件底层元件Process(a,b,c,d,sel)begincase(sel)iswhen“00”=mux_out=a;when“01”=mux_out=b;when“10”=mux_out=c;when“11”=mux_out=d;endcase;ABCDSelMUX_Out2等效ad转换ad优化数据流描述模型•将硬件的RTL模型转化为某种优化的特殊的门级电路来具体实现实体和构造体之间的关系Input1InputnOutput1Outputn实体ABCDSelMUX_Out2库(library)库的作用:利用VHDL进行设计时,为提高设计效率和遵循统一的语言规则或数据类型,将一些有用的数据定义信息程序包汇集到一个或几个库中以供调用,实现资源共享。库的种类:WORK库---设计库,对当前项目默认可视,无需调用说明语句。STD库---资源库,为VHDL标准库,无需调用说明语句。IEEE库---资源库,含std_logic_1164等逻辑设计标准和设计单元,需加调用说明语句。ASIC库---资源库,又称逻辑门库,含已通过编译的设计实体,需加调用说明语句。用户自定义库---资源库,由用户开发的共用程序包,需加调用说明语句。std库,ieee库中的程序包库名程序包名包中预定义内容stdstandardVHDL类型,如bit,bit_vectorieeestd_logic_1164定义std_logic,srd_logic_vector等ieeenumeric_std定义了一组基于std_logic_1164中定义的类型的算术运算符,如“+”,“-”,SHL,SHR等。ieeestd_logic_arith定义有符号与无符号类型,及基于这些类型上的算术运算
本文标题:VHDL硬件描述语言与数字系统开发(第3章)
链接地址:https://www.777doc.com/doc-3613714 .html