资源描述:
《VHDL设计方法-用VHDL语言实现可编程数字系统设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VHDL设计方法—用VHDL语言实现可编程数字系统设计VHDL设计方法VHDL概述VHDL的设计单元VHDL的基本语法结构第一部分VHDL概述VHDL的含义VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguageVHDL历史1982年,诞生于美国国防部赞助的VHSIC项目1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言,即IEEE-1076(简称87版)1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL,即IEEE标准的1076-1993(116
2、4)版本1996年,IEEE-1076.3成为VHDL综合标准VHDL特点与其他的硬件描述语言相比,VHDL具有更强的行为描述能力VHDL丰富的仿真语句和库函数,使得在设计的早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计
3、VHDL与其他HDL比较VHDL—“告诉我你想要电路做什么,我给你提供能实现这个功能的硬件电路”Verilog—和VHDL类似ABEL、AHDL—“告诉我你想要什么样的电路,我给你提供这样的电路”典型的综合流程典型的仿真流程第二部分VHDL的设计单元VHDL的设计单元Entity(实体)用来说明模型的外部输入输出特征Architecture(构造体)用来定义模型的内容和功能每一个构造体必须有一个实体与它相对应,所以两者一般成对出现实体类似一个“黑盒”,实体描述了“黑盒”的输入输出口黑盒rstd[7:0]clkq[7:0]co实体举例ENTITYbl
4、ack_boxISGeneric(constantwidth:integer:=7;);PORT(clk,rst:INstd_logic;d:INstd_logic_vector(widthDOWNTO0);q:OUTstd_logic_vector(widthDOWNTO0);co:OUTstd_logic);ENDblack_box;黑盒rstd[7:0]clkq[7:0]co关键字类属参量端口定义端口模式端口数据类型实体结束Generic类属参量一种端口界面常数,用来规定端口的大小、实体中子元件的数目等与常数不同,常数只能从内部赋值而类属参量
5、可以由实体外部赋值数据类型通常取Integer或Time综合器仅支持数据类型为整数的类属值.PORTS端口(PORT)是实体的一部分PORT类似于器件的管脚,主要用于信号的传输PORT一般有Name,Mode,和Type端口说明格式PORT([SIGNAL]Name:ModeType[BUS][:=表达式],…)端口类型IN:数据只能从端口流入实体OUT:数据只能从端口流出实体INOUT:数据从端口流入或流出实体BUFFER:数据从端口流出实体,同时可被内部反馈Entity数据类型BIT:位类型,其值只能为‘0’或'1‘BIT_VECTOR:位矢
6、量类型,包含一组位类型BOOLEAN:布尔类型,其值可为‘TRUE’或‘FALSE’INTEGER:整型,范围为-214783647到214783647(232),综合时,要对范围加以限制。常用于循环语句的循环次数、常量、数学函数或模式仿真Natural:自然数类型,整型的子类型,含零和正整数Positive:正整数类型,整型的子类型,含非零和非负整数REAL:浮点类型,范围为:-1.0E38到1.0E38很多综合器不支持该类型数据类型枚举类型:用户定义的数据类型例:TYPEtraffic_lightIS(red,yellow,green)TYP
7、EintISRANGE0TO100数组类型:分一维数组和二维数组,限定性和非限定性数组例:TYPEBit_VectorISARRAY(NaturalRANGE<>)OFBit;TYPEWordISARRARY(31downto0)OFBit;SUBTYPE:子类型,一般用来对其父类型加以限制例:SUBTYPEStd_LogicISresolvedStd_UlogicTIME:时间类型,范围和整型一样,表达时要包括数值和单位两部分。单位包括:fs、ps、ns、us、ms、sec、min、hr。一般用于仿真数据类型记录类型TYPEMonth_Nam
8、eIS(Jan,Fab,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);TYPEdate