VLSI电路设计课设20112_第1页
VLSI电路设计课设20112_第2页
VLSI电路设计课设20112_第3页
VLSI电路设计课设20112_第4页
VLSI电路设计课设20112_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文由fybysys贡献pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。VLSI电路设计ⅠVHDL语言基础2011.3主要内容硬件描述语言简介VHDL基本结构VHDL数据和表达式VHDL描述语句系统仿真综合硬件描述语言HDLHardwareDescriptionLanguage广义地说,描述电子实体的语言:逻辑图,电路图。硬件描述语言能在高层设计阶段描述硬件。起源:大规模电路的出现,使得逻辑图、布尔方程不太适用,需要在更高层次上描述系统;出现多种HDL语言,为便于信息交换和维护,出现工业标准。?分类:VHDL、VerilogHDL等。硬件描述语言HDLHDL语言的特点用HDL语言设计电路能够获得非常抽象的描述–用HDL描述电路设计,在设计的前期就可以完成电路功能级的验证–用HDL设计电路类似于计算机编程。带有注解的文字描述更有利于电路的开发与调试能提供HDL模拟器的公司:Cadence、Altera、MentorGraphics、Synopsys等大型EDA公司和专门公司–学习HDL的几点重要提示了解HDL的可综合性问题HDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。不可综合的HDL语句在软件综合时将被忽略或者报错。我们应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。”用硬件电路设计思想来编写HDL学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要我们多实践,多思考,多总结。语法掌握贵在精,不在多30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新语法要有用的多。VHDLvs.VerilogHDL●VHDL和VerilogHDL都是用于逻辑设计的硬件描述语言并且都已成为IEEE标准。VHDL是在1987年成为IEEE标准,VerilogHDL则在1995年才正式成为IEEE标准。●VHDL和VerilogHDL共同的特点:◆能形式化地抽象表示电路的行为和结构◆支持逻辑设计中层次与范围的描述,可借用高级语言的精巧结构来简化电路行为的描述◆具有电路仿真与验证机制以保证设计的正确性◆支持电路描述由高层次到低层次的综合转换◆硬件描述与实现工艺无关,有关工艺参数可通过语言提供的属性包括进去便于文档管理,易于理解和设计重用。VHDLvs.VerilogHDLVerilogHDL和VHDL又各有其自己的特点:◆VerilogHDL拥有更广泛的设计群体,成熟的资源也远比VHDL丰富◆VerilogHDL是一种非常容易掌握的硬件描述语言(类C语言),而掌握VHDL设计技术就相对比较困难(语法要求严格)◆一般认为VerilogHDL在系统级抽象方面比VHDL略差一些而在门级开关电路描述方面比VHDL强得多◆大学、研究机构更多使用VHDL,而工业界更多使用VerilogHDLVHDLvs.VerilogHDL■五年前,设计者使用Verilog和VHDL的情况●美国:Verilog:60%,VHDL:40%●台湾:Verilog:50%,VHDL:50%■目前,设计者使用Verilog和VHDL的情况●美国、台湾:Verilog:80%,VHDL:20%■两者的区别●VHDL侧重于系统级描述,从而更多的为系统级设计人员所采用●Verilog侧重于电路级描述,从而更多的为电路级设计人员所采用VHDLvs.VerilogHDLVHDL简介1980由美国国防部(DOD)推动作为VHSIC计划的一部分;1983IBM、Ti和Intermetrics公司的工程师开发一种新的基于语言的设计方法的规范;1985VHDL的第一个公开Version7.2;1987VHDL成为标准,IEEE1076-1987;VHDL标准程序包,IEEE1164;美国国防部要求所有的电子设计使用VHDL描述,并决定在F-22战斗机项目中使用VHDL。1994发布VHDL增强标准,IEEE1076-1993;1996完全符合IEEE1076’93的VHDL商业仿真器和综合器发布;用于综合工具的程序包IEEE1076.3;IEEE1076.4(VITAL),用于ASIC和FPGA建库;1997VHDL-AMS(IEEE1076.1)发布可以在一种语言下对数字、模拟和混合信号系统进行描述和仿真;VHSIC(VeryHighSpeedIntegratedCircuit)计划VHDL是美国国防部在二十世纪70年代末和80年代初提出的VHSIC(VeryHighSpeedIntegratedCircuit)计划的产物。VHSIC计划的目标当时是为下一代集成电路的生产,推出在IC设计与制造应达到的工艺极限(1μMcmos、1万门和40MHz)。工艺方面的目标实现以后,但当时的工具很难完成10万门级的设计。由于工具差不多是建立在门级基础之上,完成10万门级设计,必须制订一项新的HDL的描述方法。VHSIC计划和同期的ARPAR(先进的计算机体系结构)计划,成为了后来信息高速公路计划的基础。VHDL基本结构VHDL语言五大要素实体-Entity结构体-Architecture配置-Configuration包集合—Package/PackageBody:库—Library:VHDL基本结构示意···VHDL大小写不敏感--Filename:eqcomp4.vhd--Author:HuXiaolingBJUT文件名和实体名一致--Data:04/07--Version:0.1--Abstract:Thisfileeqcomp4isafourbitequalitycomparator.LIBIARYIEEE;USEIEEE.std_logic_1164.all;ENTITYeqcomp4ISPORT(a,b:instd_logic_vector(3downto0);每行;结尾equal:outstd_logic);ENDeqcomp4;关键字END后跟实体名ARCHITECTUREdataflowOFeqcomp4ISBEGIN关键字BEGINequal<=‘1’whena=belse‘0’;ENDdataflow;关键字END后跟结构体名--表示说明语句库实体结构体VHDL基本结构—实体描述实体描述:实体在电路中主要是说明该电路的输入、输出关系,更具体地说就是用来定义实体与外部的连接关系以及需传送给实体的参数。实体描述的一般格式为ENTITY实体名IS[GENERIC(类属表说明);][PORT(端口表说明);][实体说明部分;]END[ENTITY][实体名];注意:[]中的部分为可缺省内容VHDL不区分大小写例:2输入与非门的实体说明实体名类属表说明ENTITYand2ISGENERIC(tpd_hl,tpd_lh:time:=2ns);PORT(input:INBit_vector(1TO0);output:OUTBit);ENDand2;端口说明注:类属表和端口说明用于说明实体和其外部环境通信的对象。类属为实体和其外部环境通信的静态信息提供通道;最常用的信息是器件的上升沿到下降沿的延迟时间、负载电容和电阻、驱动能力以及功耗等。端口说明是对实体与外部接口的描述。例:全加器的实体说明ENTITYfull_adderISPORT(X,Y,Cin:INBit;Sum,Cout:OUTBit);ENDfull_adder;XYCin一位全加器框图一位全加器CoutSum端口模式VHDL提供了五种端口模式输入(IN):允许数据流入实体,而不允许数据流出实体。输出(OUT):允许数据流出实体,而不允许数据流入实体。缓冲(BUFFER):与OUT类似,只是缓冲模式允许内部引用该端口的信号。缓冲模式既能用于输出,也能用于反馈。双向(INOUT):可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口。链接模式(LINKAGE):用来说明端口无指定方向,可以与任意方向的信号相连。端口模式端口模式说明:IN不可以出现在<=或:=的左边OUT不可以出现在<=或:=的右边BUFFER可以出现在<=或:=的两边IN信号只能被引用,不能被赋值OUT信号只能被赋值,不能被引用BUFFER信号可以被引用,也可以被赋值Out与Buffer的区别Entitytest1isport(a:instd_logic;b,c:outstd_logic);endtest1;architectureaoftest1isbeginb<=not(a);c<=b;Errorenda;Entitytest2isport(a:instd_logic;b:bufferstd_logic;c:outstd_logic);endtest2;architectureaoftest2isbeginb<=not(a);c<=b;enda;VHDL基本结构—结构体描述结构体描述:结构体具体地描述了设计实体的逻辑功能或内部电路结构关系,从而建立设计实体输入与输出之间的关系。结构体的格式为ARCHITECTURE结构体名OF实体名IS[定义语句](内部信号,常数,数据类型,函数等的定义;)BEGIN[并行处理语句];END[ARCHITECTURE][结构体名];VHDL基本结构—结构体描述说明:(1)结构体名称的命令。结构体的名称是对本结构的命名,它是该结构体的唯一名称。“OF”后面紧跟的实体名表明了该实体所对应的是哪一个实体。用“IS”来结束结构体的命名。(2)定义语句。位于“ARCHITECTURE”和“BEGIN”之间。用于对结构体内部所使用的信号常数、数据类型和函数等进行定义。(3)并行处理语句。处于“BEGIN”和“END”之间。具体描述了结构体的行为及其连接关系。结构体有三种描述方式–––行为描述(behavioral)数据流描述(dataflow)结构化描述(structural)结构体的行为描述结构体的行为描述表示输入与输出间转换的关系,是对设计实体按算法的路径来描述,不包含电子实体内部的任何结构信息。行为描述在EDA工程中称为高层次描述或高级描述。看个例题看个例题吧!!!吧!!!结构体的行为描述Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal<=‘1’;elseequal<=‘0’;endif;endprocesscomp;endbehavioral;高层次的功能描述,不必考虑在电路中到底是怎样实现的。结构体的数据流描述它反映了从输入数据到输出数据之间所发生的逻辑变换,或者说描述了数据流程的运动路径、运动方向和运动结果。看个例题看个例题吧!!!吧!!!结构体的数据流描述Architecturedataflow2ofeqcomp4isbeginequal<=not(a(0)xorb(0))andnot(a(1)xorb(1))andnot(a(2)xorb(2))andnot(a(3)xorb(3));enddataflow2;当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐结构体的结构化描述结构化描述就是把一个复杂的电子实体按其不同硬件电路功能划分成若干部分,然后对各部件进行具体的描述。看个例题看个例题吧!!!吧!!!结构体的结构化描述就这样吧!结构体的结构化描述architecturestructofeqcomp4isbeginU0:xnor2portmap(a(0),b(0),x(0));U1:xnor2portmap(a(1),b(1),x(1));U2:xnor2portmap(a(2),b(2),x(2));U3:xnor2portmap(a(3),b(3),x(3));U4:and4portmap(x(0),x(1),x(2),x(3),equal);endstruct;类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。一般用于大规模电路的层次化设计时。三种描述方式的比较描述方式优点缺点适用场合结构化描述连接关系清晰,电路模块化清晰布尔函数定义明白电路特性清楚明了电路不易理解、繁琐、复杂不易描述复杂电路,修改不易进行综合效率相对较低电路层次化设计数据流描述小门数设计行为描述大型复杂的电路模块设计VHDL基本结构—配置配置:是把元件具体安装到实体的最基本设计单元,用于描述层与层之间的连接关系和实体与结构体之间的连接关系。配置描述的一般格式为CONFIGURATION配置名OF实体名ISFOR选配构造体名ENDFOR;END[配置名];元件配置体内配置体外配置默认配置包集合与库包集合:包集合说明象C语言中include语句一样,用来单纯概括VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义、过程定义。包集合的一般格式为:PACKAGE包集合名IS[说明语句];END包集合名;PACKAGEBODY包集合名IS[说明语句];ENDBODY;包集合包集合体VHDL基本结构—库库:库(Library)是经编译后的数据的集合,它存放包集合定义、实体定义、构造体定义和器件配置定义。库的种类在VHDL语言中存放的库大致可以归纳为五种:IEEE库、STD库、VITAL库、WORK库、用户定义的库。库的使用(1)库的说明格式LIBRARYLIBRARY_name;USELIBRARY_name.package_name.ALL;(2)库说明的作用范围从一个实体说明开始到它所属的构造体、配置为止。VHDL基本结构—库IEEE标准程序包std_logic_1164多值逻辑体系std_logic_arith基本算术运算std_logic_unsigned无符号向量的算术运算std_logic_signed有符号向量的算术运算例:LIBRAYRIEEEUSEIEEE.std_logic_1164.ALLUSEIEEE.std_logic_unsigned.ALLVHDL标识符(Identifiers)标识符是最常用的操作符,可以是常数、变量、信号、端口、子程序或参数的名字。VHDL基本标识符的书写遵守如下规则:基本标识符由字母、数字和下划线组成第一个字符必须是字母最后一个字符不能是下划线不允许连续2个下划线保留字(关键字)不能用于标识符综合、仿真时,大小写是等效的VHDL数据对象(DataObjects)基本对象:在VHDL语言中,凡是可以赋予一个值的实体叫对象(Object)。VHDL中主要有四个基本类型:◆◆◆◆常量信号变量文件(文件是VHDL′93标准中新通过的)VHDL数据对象(DataObjects)常量(Constant)–––固定值,不能在程序中被改变增强程序的可读性,便于修改程序可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定常量说明的一般格式:CONSTANT常量名:数据类型:=表达式;CONSTANTdata_bus_width:integer:=8;VHDL数据对象(DataObjects)信号(Signals)–––––代表连线,Port也是一种信号没有方向性,可给它赋值,也可当作输入在Entity中和Architecture中定义设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。用:=或<=进行赋值信号书写的一般格式:SIGNAL信号名:数据类型约束条件:=表达式;SIGNALcount:bit_vector(3downto0):=“0011”;T1<=T2after20ns;VHDL数据对象(DataObjects)变量(Variable)临时数据,没有物理意义–只能在Process和Function中定义,并只在其内部有效–要使其全局有效,先转换为Signal–用:=进行赋值变量书写的一般格式:VARIABLE变量名数据类型约束条件:=表达式;–VARIABLEcount:integerrange0TO255:=10;信号与变量的区别architectureaofstartissignaltmp:std_logic;beginprocess(a_bus)begintmp<='1';foriin3downto0looptmp<=a_bus(i)andtmp;endloop;carryout<=tmp;endprocess;enda;architectureaofstartisbeginprocess(a_bus)variabletmp:std_logic;begintmp:='1';foriin3downto0looptmp:=a_bus(i)andtmp;endloop;carryout<=tmp;endprocess;enda;VHDL数据对象(DataObjects)文件(Files)-传送大量数据-可包含一些专门数据类型的数值-在仿真时,测试激励数据的输入和仿真结果的输出都要用文件来进行VHDL数据类型标量类型(Scalar)––––枚举(Enumeration)整数(Integer)浮点数(Float)物理(Physical)复合类型(Composite)VHDL数据类型--枚举列举数据对象可能存在的值,一般用于定义状态机的状态––Typestatesis(idle,start,running,pause,stop)Signalcurrent_state:states;Typebooleanis(False,True)Typebitis(‘0’,‘1’)Signala:bit;IEEE1076标准中预定义了两个枚举类型–––VHDL数据类型--枚举IEEE1164标准中预定义了一个枚举类型Typestd_logicis(‘U’,‘X’,‘0’,‘1’,‘Z’,–––‘W’,‘L’,‘H’,‘-’);该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bitSignala:std_logic;注意:这里的大小写是敏感的VHDL数据类型整数、浮点数方便用于数值方面的运算:加减乘除–整数范围:-231~231–1,经常用于计数器–实数范围:-1.0E38~+1.0E38,不被Max+PLusII支持Variablea:integerrange–255to+255;–物理类型–主要用于调试VHDL数据类型--复合类型ArrayTypes多个相同类型成员组成的队列,一般用于定义数据总线、地址总线等。Signala:std_logic_vector(7downto0);a<=B“00111010”;a<=X“3A”;–可自定义复合类型Typewordisarray(15downto0)ofbit;Signalb:word;Typetable8x4isarray(0to7,0to3)ofbit;–VHDL数据类型--复合类型RecordTypes–相同或不同类型的元素组成,类似C中的结构–具有模型抽象能力,用于描述一个功能模块–TypeiocellisrecordEnable:bit;DataBus:bit_vector(7downto0);endrecord;singalbus:iocell;bus.Enable<=‘1’;bus.DataBus<=“00110110”;属性(Attributes)提供Entity、Architecture、Type和Signals的信息。有许多预定义的值、信号和范围的属性一个最常用的属性是’event–ifclk’eventandclk=‘1’then’left,’right,’high,’low,’length–typecountisintegerrange0to127–count’left=0;count’right=127;–count’high=127;count’low=0;–count’length=128;VHDL运算符VHDL语言中预定义的运算符有四种。分别为算术运算符、关系运算符、逻辑运算符合其他运算符。各类别包含的运算符见下表。算术运算符关系运算符逻辑运算符+-*/MODREM**SLLSRLSLASRAROLRORABS=/=<><=>=ANDORNOTNANDNORXORXNORVHDL描述语句-顺序语句变量与信号赋值语句VHDL有两种赋值符号:(1)“:=”为立即赋值符,将右边表达式的值立即赋给左边的对象。(2)“<=“为延迟赋值符,将右边表达式的值经一定时间间隔之后赋给左边的对象。常量和变量以及信号的初始值用立即赋值符“:=”赋值。延迟赋值符“<=”用于在信号转播、变化过程中对信号赋值,对象只能被赋予与该对象数据类型相一致的数据。VHDL描述语句-顺序语句IF语句IF语句的一般格式如下:IF布尔表达式1THEN顺序语句1;[ELSIF布尔表达式2THEN顺序语句2;][ELSE顺序语句3;]ENDIF;例:IFmode=‘0’THENd<=aORb;ENDIF;VHDL描述语句-顺序语句CASE语句CASE语句的一般格式为:CASE条件表达式ISWHEN表达式值1=>顺序处理语句1;[WHEN表达式值2=>顺序处理语句2;][WHENOTHERS=>顺序处理语句3;]ENDCASE;注意:各表达式不能有重复,OTHERS只能放在所有分支之后。若CASE语句中没有OTHERS分支,则各表达式分支应涵盖表达式的所有可能值。顺序语句例:YesCNT=8?NoCNT←0CNT←CNT+1CASEcntISWHEN8=>cnt:=0;WHENOTHERS=>cnt:=cnt+1;ENDCASECASE语句中的WHEN选项可以是一个范围。VHDL描述语句-顺序语句LOOP语句FOR循环变量形成的LOOP语句的格式为:[标号]:FOR循环变量IN离散范围LOOP<顺序处理语句>ENDLOOP[标号];WHILE条件下的LOOP语句格式为:[标号]:WHILE条件LOOP<顺序处理语句>ENDLOOP[标号];在LOOP语句中可以安排一个EXIT退出循环。VHDL描述语句-并行语句并行信号赋值语句并行信号赋值语句代表着对该信号赋值得等价的进程语句。它有两种形式:条件型信号赋值语句条件型信号赋值语句的格式为:目标信号名<=表达式1WHEN(条件1)ELSE……表达式N-1WHEN(条件N-1)ELSE表达式N;根据条件(布尔表达式)满足与否决定将哪个表达式的值赋给待赋值的信号。VHDL描述语句-并行语句选择型信号赋值语句选择型信号赋值语句的格式为:WITH表达式SELECT目标信号名<=表达式1WHEN条件1,表达式2WHEN条件2,……表达式NWHEN条件N;根据多值表达式的值进行相应的赋值,其功能与CASE语句相仿。用这种语句来表示真值表达式的译码电路较为方便。VHDL描述语句-并行语句进程语句进程语句的一般格式为:[进程名:]PROCESS[(敏感信号表)][IS][变量说明语句];BEGIN顺序说明语句;ENDPROCESS[进程名];变量说明语句用于说明除信号外的局部数据环境。信号是全局量,必须在进程外说明,在进程内使用。结构体中进程模型进程语句中的等待语句等待语句是一种特殊的顺序语句,执行等待语句的结果是,进程立即被挂起,同时建立起进程再次被激活的条件。等待语句常用几种格式WAITON<敏感信号表>WAITUNTIL<条件表达式>WAITFOR<时间表达式>WAIT;--无限等待,需谨慎使用进程语句实例Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal<=‘1’;elseequal<=‘0’;endif;endprocesscomp;endbehavioral;VHDL描述语句-并行语句断言语句:断言语句(ASSERT)既可以作为顺序语句,又可作为并行语句。前者位于进程或过程之内,而后者位于进程或过程之外。断言语句主要用于程序仿真、调试中的人-机对话。断言语句的格式为:ASSERT条件[REPORT报告信息][SEVERITY出错级别]断言语句有十条使用规则。其中,REPORT子句的默认报告信息为AssertionViolation。SEVERITY的默认出错级别为error。VHDL描述语句-并行语句生成语句生成语句用来产生多个相同的结构和描述规则结构。FOR语法的形式为:生成标号:FOR变量IN不连续区间GENERATE<并发处理的生成语句〉ENDGENERATE[生成标号];IF语句的形式为:生成标号:IF条件GENERATE<并发处理的生成语句〉ENDGENERATE[生成标号];VHDL描述语句-并行语句块语句:块(BLOCK)可以看成是结构体中的子模块,BLOCK可以把许多并行语句包装在一起。(主要用于模块化电路描述)BLOCK语句的一般格式为:块名:BLOCK[(保护表达式)]{[类属子句类属接口表;]}{[端口子句端口接口表;]}〈块说明部分〉BEGIN〈并行语句〉ENDBLOCK[块标号]子程序及其引用函数语句的定义与引用函数的作用是求值,它有若干参数输入,但只有一个返回值作为输出。函数语句的一般格式为:FUNCTION函数名(参数表);RETURN数据类型IS[说明语句];BEGIN[顺序处理语句];END[FUNCTION][函数名];FUNCTION语句中括号内的所有参数都是输入参数或输出参数。函数语句的定义与引用例:FUNCTIONmax(a,b:integer);RETURNintegerISBEGIN[y为a、b中大的数];ENDmax;调用函数语句z<=max(d1,d2);子程序及其引用过程语句的定义与应用过程是通过参数来进行内、外信息的传递。参数需说明类别、类别以及传递方向。过程语句的一般格式为:PROCEDURE过程名(参数表)IS[说明语句]BEGIN顺序语句;END[PROCEDURE][过程名]参数的说明类别有:信号、变量、常量。参数的传递方向有:IN、OUT、INOUT。元件的调用元件:是一个完整的VHDL文件,作为底层设计,可以重复调用。Component语句的格式COMPONENT元件名GENERIC(类属表说明)PORT(端口说明)ENDCOMPONENT元件的调用例化语句的使用COMPONENT<低层设计名称>ISPORT(<端口名称>:<端口类型><数据类型>;…..<端口名称>:<端口类型><数据类型>;)ENDCOMPONENT;元件配置:用于映射端口<实例名称>:<低层设计名称>PORTMAP(<低层端口名称>=><本层端口名称>;…;<低层端口名称>=><本层端口名称>;)元件的例化元件例化格式标号名:元件名PORTMAP(信号1,信号2,······)位置映射PORTMAP映射关系有两类名称映射例:port(A,B:instd_logic;Z:outstd_logic);U1:nandPORTMAP(d0,sel,aa);U2:nandPORTMAP(A=>d0,B=>sel,Z=>aa);元件例化语句说明低层次元件嵌入到高一层的设计中,并把相应端口正确连接起来,就是元件例化语句的功能。体现层次化设计、模块化设计思想;应用广泛,避免大量重复工作;用Component语句指明结构体所要调用的元件、单元或模块;用PortMap语句进行元件端口信号映射(包括位置映射和名称映射);元件描述:用于声明端口类型和数据类型元件调用与例化实例例:图a中所示的全加器,x、y、cin依次表示被加数加数、进位输入;sum和cout分别为和数与进位输入。图b为一种实现方案。xycin全加器图acoutsumxycina半加器b图b半加器c≥1sumcoutLibraryIEEE;UseIEEE.std_logic_1164.all;Entityhalf_adderISport(x,y:instd_logic;sum,cout:outstd_logic);Endhalf_adder;Architecturehalf_adderofhalf_adderISBegin……Endhalf_adder;LibraryIEEE;UseIEEE.std_logic_1164.all;EntityadderISport(x,y,cin:instd_logic;sum,cout:outstd_logic);Endadder;ArchitectureadderofadderIScomponenthalf_adder--元件调用语句port(x,y:instd_logic;sum,cout:outstd_logic);endcomponent;signalx,y,cin,sum,cout,a,b,c:std_logic;Beginu0:half_adderportmap(x,y,b,a);--被测元件作为实例放入测试基准中,位置关联的实例语句u1:half_adderportmap(b,cin,sum,c);cout<=aorc;Endadder;VHDL程序结构ENTITY(实体)ARCHITECTURE1(结构体1)PROCESS(进程)ARCHITECTUREN(结构体N)BLOCK(块结构)······SUBPROGRAMES(子程序)PROCEDURE(过程)FUNCTION(函数)如何确定我们用VHDL语言描述的数字系统能够符合我们的设计要求呢???VHDL系统仿真(Simulation)我们将用VHDL描述的电路系统看作一个黑匣子,给它一定的输入(激励或者测试向量),它就会按照一定的算法给出一组输出信号(响应)。检查系统输出结果是否跟我们预期的结果一样,就可以验证系统的VHDL描述是否正确。undertestsystemtestbenchverify系统仿真模式VHDL系统仿真(Simulation)系统仿真可分为三个阶段:★系统行为仿真:对系统的VHDL描述的系统行为进行验证。不带任何时延信息。★门级仿真:对VHDL描述的数字系统进行逻辑综合和优化以后生成的网表文件进行仿真。包含库文件中的单元延时信息。★后仿真:主要指布局布线并且提取寄生参数以后进行的系统功能验证,这时的仿真带有所有延时信息,包括连线上的寄生电容电阻带来的时延等。设计的测试与验证一般需要编写测试文件对设计进行仿真测试,称为testbenchTestbench一般采用行为级描述,产生一定的输入激励,得到设计的输出响应,并检查输出结果的正确性在规范的模块设计中,每一个模块都需要编写独立的测试文件对模块进行充分的测试注意选择合适的输入激励,保证测试能够覆盖典型输入和特殊输入VHDL激励的实现VHDL产生激励信号:--VHDL产生时钟信号SIGNALclk:std_logic:=’0’;--clk时钟信号说明,初始值为’0’clk<=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论