Chapter4硬件描述语言VHDL语法概要2020/2/172武汉职业技术学院电信学院光电系周琦lorrainechow@126.com§4.1概述§4.2VHDL程序基本结构§4.3VHDL语言要素§4.4VHDL语言的基本描述语句§4.5不可综合性语句Chapter4硬件描述语言VHDL语法概要2020/2/173武汉职业技术学院电信学院光电系周琦lorrainechow@126.comVHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage超高速集成电路硬件描述语言§4.1概述一、什么是VHDL?2020/2/174武汉职业技术学院电信学院光电系周琦lorrainechow@126.com80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。1987年由IEEE协会批准为IEEE工业标准,称为IEEE1076-1987。各EDA公司相继推出支持VHDL的设计环境。1993年被更新为93标准,即IEEE1076-1993。进一步提高抽象描述层次,扩展系统描述能力。二、VHDL的历史§4.1概述2020/2/175武汉职业技术学院电信学院光电系周琦lorrainechow@126.com1、VHDL打破软、硬件的界限传统的数字系统设计分为:硬件设计(硬件设计人员)软件设计(软件设计人员)VHDL是电子系统设计者和EDA工具之间的界面。三、VHDL的作用EDA工具及HDL的流行,使电子系统向集成化、大规模和高速度等方向发展。美国硅谷约有80%的ASIC和FPGA/CPLD已采用HDL进行设计。§4.1概述2020/2/176武汉职业技术学院电信学院光电系周琦lorrainechow@126.com2、VHDL与C、C++的比较:C、C++代替汇编等语言VHDL代替原理图、逻辑状态图等3、VHDL与电原理图描述的比较:VHDL具有较强的抽象描述能力,可进行系统行为级别的描述。描述简洁,效率高。VHDL描述与实现工艺无关。电原理图描述需给出完整、具体的电路结构图,不能进行抽象描述。描述繁杂,效率低。电原理图描述与实现工艺有关。§4.1概述2020/2/177武汉职业技术学院电信学院光电系周琦lorrainechow@126.com1、VHDL具有强大的语言结构,系统硬件描述能力强、设计效率高;具有较高的抽象描述能力。如:一个可置数的16位计数器的电原理图:四、VHDL语言特点§4.1概述2020/2/178武汉职业技术学院电信学院光电系周琦lorrainechow@126.com用VHDL描述的可置数16位计数器:2020/2/179武汉职业技术学院电信学院光电系周琦lorrainechow@126.com2、VHDL语言可读性强,易于修改和发现错误。3、VHDL具有丰富的仿真语句和库函数,可对VHDL源代码进行早期功能仿真,有利于大系统的设计与验证。4、VHDL设计与硬件电路关系不大。5、VHDL设计不依赖于器件,与工艺无关。6、移植性好。7、VHDL体系符合TOP-DOWN和CE(并行工程)设计思想。8、VHDL设计效率高,产品上市时间快,成本低。9、易于ASIC实现。§4.1概述2020/2/1710武汉职业技术学院电信学院光电系周琦lorrainechow@126.com五、VHDL与其它硬件描述语言的比较VHDL:具有较强的系统级抽象描述能力,适合行为级和RTL级的描述。设计者可不必了解电路细节,所作工作较少,效率高。但对综合器的要求高,不易控制底层电路的生成。IEEE标准,支持广泛。行为级RTL级门电路级RTL:RegisterTranslateLevel§4.1概述2020/2/1711武汉职业技术学院电信学院光电系周琦lorrainechow@126.comVerilogHDL:系统级抽象描述能力比VHDL稍差;门级开关电路描述方面比VHDL强。适合RTL级和门电路级的描述。设计者需要了解电路细节,所作工作较多。IEEE标准,支持广泛。ABEL、PALASM、AHDL(AlteraHDL):系统级抽象描述能力差,一般作门级电路描述。要求设计者对电路细节有详细的了解。对综合器的性能要求低,易于控制电路资源。支持少。§4.1概述2020/2/1712武汉职业技术学院电信学院光电系周琦lorrainechow@126.comVHDL主要用于描述数字系统的结构、行为、功能和接口。VHDL将一个设计(元件、电路、系统)分为:外部(可视部分、端口)内部(不可视部分、内部功能、算法)六、VHDL设计简述§4.1概述2020/2/1713武汉职业技术学院电信学院光电系周琦lorrainechow@126.com外部与内部:器件或子系统ARCHITECTUREProcessProcessENTITYSequentialProcessCombinationalProcessportsportscomponentportsports§4.1概述2020/2/1714武汉职业技术学院电信学院光电系周琦lorrainechow@126.com2选1选择器的VHDL描述:2020/2/1715武汉职业技术学院电信学院光电系周琦lorrainechow@126.comVHDL语言由保留关键字组成;一般,VHDL语言对字母大小写不敏感;例外:‘’、“”所括的字符、字符串;每条VHDL语句由一个分号(;)结束;VHDL语言对空格不敏感,增加可读性;在“--”之后的是VHDL的注释语句;VHDL有以下描述风格:行为描述;数据流(寄存器传输RTL)描述;结构化描述;VHDL语言的一些基本特点:§4.1概述2020/2/1716武汉职业技术学院电信学院光电系周琦lorrainechow@126.comStructure描述(结构化描述)描述该设计单元的硬件结构,即该硬件是如何构成的,类似于数字电路中的逻辑图描述。DateFlow描述(数据流描述)是类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。与数字电路中的真值表描述相似。BehaviorProcess描述(行为描述)只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。与数字电路中的逻辑表达式描述相似。结构体的三种描述形式§4.1概述2020/2/1717武汉职业技术学院电信学院光电系周琦lorrainechow@126.comarchitectureoneofmux21isbeginy=(aand(nots)or(bands);endone;逻辑函数式BehaviorProcess描述(行为描述)2020/2/1718武汉职业技术学院电信学院光电系周琦lorrainechow@126.comarchitectureoneofmux21isbeginy=awhens='0'elsebwhens=‘1';endone;真值表DateFlow描述(数据流描述)§4.1概述2020/2/1719武汉职业技术学院电信学院光电系周琦lorrainechow@126.comarchitectureoneofmux21issingled,e:bit;begind=aand(not)s;e=bands;y=dore;endone;Structure描述(结构化描述)VCC6bINPUTVCC5sINPUT7NOT2AND23OR28yOUTPUTVCC4aINPUT1AND2逻辑图de2020/2/1720武汉职业技术学院电信学院光电系周琦lorrainechow@126.com基本结构包括:•实体(Entity)•结构体(Architecture)•配置(Configuration)•库(Library)、程序包(Package)§4.2VHDL程序基本结构2020/2/1721武汉职业技术学院电信学院光电系周琦lorrainechow@126.com库、程序包实体(Entity)结构体(Architecture)进程或其它并行结构配置(Configuration)§4.2VHDL程序基本结构2020/2/1722武汉职业技术学院电信学院光电系周琦lorrainechow@126.com一、实体实体:定义系统的输入输出端口语法:ENTITYentity_nameISGenericDeclarationsPortDeclarationsENDentity_name;(1076-1987version)ENDENTITYentity_name;(1076-1993version)§4.2VHDL程序基本结构2020/2/1723武汉职业技术学院电信学院光电系周琦lorrainechow@126.com1、类属说明确定实体或组件中定义的局部常数。模块化设计时多用于不同层次模块之间信息的传递。可从外部改变内部电路结构和规模。类属说明必须放在端口说明之前。Generic(常数名称:类型[:=缺省值]{常数名称:类型[:=缺省值]});§4.2VHDL程序基本结构2020/2/1724武汉职业技术学院电信学院光电系周琦lorrainechow@126.com类属常用于定义:实体端口的大小、设计实体的物理特性、总线宽度、元件例化的数量等。例:entitymckisgeneric(width:integer:=16);port(add_bus:outstd_logic_vector(width-1downto0));…§4.2VHDL程序基本结构2020/2/1725武汉职业技术学院电信学院光电系周琦lorrainechow@126.com例:2输入与门的实体描述entityand2isgeneric(risewidth:time:=1ns;fallwidth:time:=1ns);port(a1:instd_logic;a0:instd_logic;z0:outstd_loigc);endentityand2;§4.2VHDL程序基本结构2020/2/1726武汉职业技术学院电信学院光电系周琦lorrainechow@126.com其中,端口模式:in:输入型,此端口为只读型。(只能读)out:输出型,只能在实体内部对其赋值。(只能写)inout:输入输出型,既可读也可赋值。(能读能写)buffer:缓冲型,与out相似,但可读。(能读能写)Port(端口名称{,端口名称}:端口模式数据类型;…端口名称{,端口名称}:端口模式数据类型);2.端口说明语句作用:确定输入、输出端口的数量和类型。§4.2VHDL程序基本结构2020/2/1727武汉职业技术学院电信学院光电系周琦lorrainechow@126.comout和buffer的区别:只能写只能读能读能写能读能写§4.2VHDL程序基本结构2020/2/1728武汉职业技术学院电信学院光电系周琦lorrainechow@126.comExercise1编写包含以下内容的实体代码:端口d为12位输入总线端口oe和clk都是1位输入端口ad为12位双向总线端口a为12位输出总线端口int是1位输出端口as是一位输出同时被用作内部反馈my_designd[11:0]oeclkad[11:0]a[11:0]intas2020/2/1729武汉职业技术学院电信学院光电系周琦lorrainechow@126.comAnswer1LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYmy_designISPORT(d:INstd_logic_vector(11DOWNTO0);oe,clk:INstd_logic;ad:INOUTstd_logic_vector(11DOWNTO0);a:OUTstd_logic_vector(11DOWNTO0);int:OUTstd_logi