




已阅读5页,还剩240页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术与数字系统设计,1,第4章VHDL硬件描述语言,4.1概述4.2VHDL语言设计实体的基本结构4.3VHDL语言结构体的描述方式4.4VHDL语言的库、程序包及配置4.5VHDL语言的语言要素4.6VHDL语言的描述语句,EDA技术与数字系统设计,2,4.1概述,VHDL语言是一种在EDA设计中广泛流行的硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL语言的句法、语言形式和描述风格十分类似于一般的计算机高级语言,是目前硬件描述语言中应用最为广泛的一种。,第4章VHDL硬件描述语言,EDA技术与数字系统设计,3,4.1.1VHDL语言简介,VHDL语言全称是“超高速集成电路硬件描述语言”,它诞生于1982年,由美国国防部于20世纪七、八十年代组织研制开发,其目的首先是用这种语言描述复杂电路,其次是希望这种语言能够成为一种标准语言。,第4章VHDL硬件描述语言,1987年底,VHDL语言被电气和电子工程师协会IEEE和美国国防部确认为标准硬件描述语言,版本为IEEE-1076(简称87版)。此后在电子产业界被广泛地接受,并逐步取代了原有的非标准硬件描述语言(如CUPL、ABEL等)。,EDA技术与数字系统设计,4,4.1.1VHDL语言简介,1993年,IEEE对VHDL进行了修订,增加了一些功能,并从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了VHDL新的版本,编号为IEEEStd1076-1993(简称93版)。,第4章VHDL硬件描述语言,1995年中国国家技术监督局组织编写并出版了CAD通用技术规范,推荐VHDL语言作为我国电子自动化硬件描述语言的国家标准。1996年,IEEE1076.3成为VHDL综合标准。,EDA技术与数字系统设计,5,4.1.1VHDL语言简介,目前,VHDL已经成为一个数字电路和硬件系统描述、综合、优化和布线的IEEE工业标准,已得到众多EDA公司的支持,越来越多的硬件电路设计工具向VHDL标准靠拢,支持VHDL语言。在电子工程领域中,无论ASIC设计人员,还是系统设计人员,都需要学习VHDL语言来提高自己的工作效率。有专家认为,在未来的IT行业中,VHDL语言和VerilogHDL语言将承担几乎全部的数字系统设计任务。,第4章VHDL硬件描述语言,EDA技术与数字系统设计,6,4.1.2VHDL语言特点,VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,支持从系统级到逻辑门级电路所有层次的设计,适合于复杂逻辑电路和系统的设计。,第4章VHDL硬件描述语言,作为高级硬件描述语言,VHDL有如下特点:,支持从系统级到逻辑门级电路的描述;具有很强的硬件描述能力;设计技术齐全、方法灵活、支持广泛;对设计描述具有相对的独立性;具有很强的移植能力;易于共享和复用;具有丰富的仿真语句和库函数;,EDA技术与数字系统设计,7,4.1.2VHDL语言特点,第4章VHDL硬件描述语言,作为高级硬件描述语言,VHDL有如下特点:,设计结构清晰、易读易懂;易实现系统的更新和升级;数据类型丰富、安全性好。,EDA技术与数字系统设计,8,4.2VHDL语言设计实体的基本结构,用VHDL语言设计的电路无论规模大小,都要使用一个完整的VHDL程序结构,这个完整的程序结构称为设计实体或实体。设计实体是指能被VHDL语言综合器所接受,并能作为独立的设计单元,以元件的形式存在的VHDL语言程序。所谓的元件,既可以被高层次的系统调用,成为系统的一部分,也可以作为一个电路的功能模块,独立存在和运行。,第4章VHDL硬件描述语言,EDA技术与数字系统设计,9,4.2.1VHDL语言设计实体的组成,VHDL语言的设计实体都由实体说明(Entity)和结构体(Architecture)两个最基本的部分组成。实体说明部分用来描述该模块或系统的接口信息,包括端口的数目、方向和类型,其作用相当于传统设计方法中所使用的元件符号。结构体部分则描述该模块的内部电路,对应于原理图、逻辑方程和模块的输入/输出特性。一个设计实体可以包含一个或多个结构体,用于描述其的逻辑结构和逻辑功能。,第4章VHDL硬件描述语言,EDA技术与数字系统设计,10,1.VHDL设计实体的结构,第4章VHDL硬件描述语言,一个完整的VHDL设计实体(设计文件),通常包括:实体说明(Entity)结构体(Architecture)配置(Configuration)库(Library)和程序包(Package),EDA技术与数字系统设计,11,1.VHDL设计实体的结构,第4章VHDL硬件描述语言,库、程序包,配置,设计实体,实体说明,结构体,进程或其他并行结构,基本结构:,EDA技术与数字系统设计,12,2.设计实体举例,【例4.2.1】试用VHDL语言设计一个四选一数据选择器。,第4章VHDL硬件描述语言,数据输入:D3D2D1D0,数据输出:Y,选择控制:S1S0,EDA技术与数字系统设计,13,第4章VHDL硬件描述语言,VHDL程序如下:,LIBRARYIEEE;-IEEE库USEIEEE.STD_LOGIC_1164.ALL;-程序包USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYmux41IS-定义实体名PORT(S1,S0:INSTD_LOGIC;-定义输入信号D3,D2,D1,D0:INSTD_LOGIC;Y:OUTSTD_LOGIC-定义输出信号);ENDmux41;ARCHITECTUREbehaveiorOFmux41IS-定义结构体名BEGIN-逻辑功能描述Y=D0WHENS1=0ANDS0=0ELSED1WHENS1=0ANDS0=1ELSED2WHENS1=1ANDS0=0ELSED3;ENDbehaveior;,库,程序包,实体说明,结构体,EDA技术与数字系统设计,14,2.设计实体举例,库:是用来存放已设计好的程序包、数据集合体、元件的仓库,供用户进行VHDL设计时调用。,第4章VHDL硬件描述语言,程序包:用VHDL语言编写的共享文件,定义了将要使用的常数、数据类型、子程序和设计好的电路单元等。,实体说明:定义电路单元的输入、输出引脚信号。以标识符ENTITY开始,以END结束。,结构体:用来描述电路内部结构和逻辑功能。并以标识符ARCHITECTURE开头,以END结尾。,EDA技术与数字系统设计,15,4.2.2VHDL语言的实体说明,实体说明是VHDL程序设计中最基本的组成部分,主要用来描述设计实体的外部接口信号,定义设计单元的输入、输出端口,是设计实体对外的一个通信界面,但它不描述设计的具体功能。,第4章VHDL硬件描述语言,实体说明语句的格式如下:,ENTITY实体名ISGENERIC(类属表);PORT(端口表);ENDENTITY实体名;,实体说明语句类属说明语句端口说明语句结束语句,规则:实体声明语句必须以“ENTITY实体名IS”开始,以“ENDENTITY实体名;”结束;,实体名是设计者给设计实体的命名;方括号内的语言描述可任选。,EDA技术与数字系统设计,16,1.实体说明语句ENTITY,该语句是实体说明的引导语句,用来指明实体说明部分的开始,并定义实体名。,第4章VHDL硬件描述语言,关键字:ENTITY格式:ENTITY实体名IS,在设计编程时,实体名必须与设计文件名相同,否则无法编译。,EDA技术与数字系统设计,17,2.类属说明语句GENERIC,该语句用来确定设计实体中定义的局部常数,将外部环境的信息参数传递到设计实体,并用类属表的形式指明器件的一些特征。,第4章VHDL硬件描述语言,关键字:GENERIC格式:GENERIC(常数名,常数名:数据类型:设定值;常数名,常数名:数据类型:设定值),常数名:是由设计者定义的类属常数名;数据类型:常取INTEGER或TIME的类型;设定值:为常数名所代表的数值。,EDA技术与数字系统设计,18,2.类属说明语句GENERIC,例如:,第4章VHDL硬件描述语言,类属表对数据总线的类型和宽度做了定义,类属参数datawith的数据类型为整数,数据宽度为8位。,ENTITYbodyISGENERIC(datawidth:INTEGER:=8);,类属说明必须位于端口说明之前,用于指定设计实体和外部环境通信的参数,并以关键字GENERIC引导一个类属参数表,在表中提供时间参数、总线宽度等信息。,EDA技术与数字系统设计,19,3.端口说明语句PORT,该语句是设计实体与外界接口的描述,用来指明实体的输入、输出信号及其模式,包括端口的名称、数据的类型和数据的传递方向(端口模式)。,第4章VHDL硬件描述语言,关键字:PORT格式:PORE(端口名,端口名:端口模式数据类型;端口名,端口名:端口模式数据类型),端口名:是赋予每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。端口模式:即端口方向,用来定义外部引脚的信号方向,共有五种模式。数据类型:用来指定每个端口信号的取值类型,共有10种。,EDA技术与数字系统设计,20,3.端口说明语句PORT,端口模式说明:,第4章VHDL硬件描述语言,EDA技术与数字系统设计,21,3.端口说明语句PORT,端口模式的符号:,第4章VHDL硬件描述语言,IN端口模式:,OUT端口模式:,INOUT端口模式:,BUFFER端口模式:,EDA技术与数字系统设计,22,3.端口说明语句PORT,【例4.2.2】编写2输入与非门的实体说明。,第4章VHDL硬件描述语言,设与非门的输入为A和B,输出为Y。,ENTITYnand2ISGENERIC(risew:TIME:=1ns;fallw:TIME:=1ns);PORT(A:INSTD_LOGIC;B:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDnand2;,-定义risew为上升沿-定义fallw为下降沿-定义A、B和Y为逻辑位,EDA技术与数字系统设计,23,4.2.3VHDL语言的结构体,结构体是设计实体的核心,它具体指明了设计实体的行为、元件及内部连接关系。,第4章VHDL硬件描述语言,结构体所承担的任务:,定义结构体内部所使用的各项元素;通过VHDL提供的语句来描述设计实体所要求的具体行为和功能;描述各元件之间的连接。,EDA技术与数字系统设计,24,4.2.3VHDL语言的结构体,结构体内部构造的描述层次和描述内容:,第4章VHDL硬件描述语言,结构体,结构体说明,结构体功能描述,常数说明,数据类型说明,信号说明,例化元件说明,子程序说明,块语句,进程语句,信号赋值语句,子程序调用语句,元件例化语句,EDA技术与数字系统设计,25,4.2.3VHDL语言的结构体,第4章VHDL硬件描述语言,结构体由两个基本部分组成:结构体说明,用来对数据类型、常数、信号、子程序和元件等进行说明。结构体功能描述,用来描述设计实体的逻辑行为,可以用不同的描述风格来表达设计实体的逻辑功能。,EDA技术与数字系统设计,26,第4章VHDL硬件描述语言,结构体的格式:,1.结构体的基本格式,ARCHITECTURE结构体名OF实体名IS结构体说明语句;BEGIN功能描述语句;ENDARCHITECTURE结构体名;,EDA技术与数字系统设计,27,第4章VHDL硬件描述语言,结构体引导语句用来引导结构体的开始,并定义结构体的名称。,2.结构体引导语句,关键字:ARCHITECTURE格式:ARCHITECTURE结构体名OF实体名IS,结构体名是给予结构体的名称,是该结构体唯一的名字,用来表明该结构体所隶属于哪个实体。,EDA技术与数字系统设计,28,第4章VHDL硬件描述语言,用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,如:,3.结构体说明语句,信号(SIGNAL)类型(TYPE)常数(CONSTANT)元件(COMPONENT)函数(FUNCTION)过程(PROCEDURE),EDA技术与数字系统设计,29,第4章VHDL硬件描述语言,4.功能描述语句,用于描述实体的逻辑功能。,功能描述语句结构可以含有五种不同类型。,EDA技术与数字系统设计,30,第4章VHDL硬件描述语言,4.功能描述语句,块语句(BLOCK)块语句结构是由若干个并行执行语句构成的组合体,其功能是将结构体中的并行语句包装在一起,组成一个或多个模块(即子模块)。,进程语句(PROCESS)定义顺序语句模块,其内部为顺序语句,将从外部获得的信号值,或内部的运算数据向其他信号进行赋值。,信号赋值语句(SIGNAL)用来将设计实体内的处理结果向所定义的信号或界面端口进行赋值。,EDA技术与数字系统设计,31,第4章VHDL硬件描述语言,4.功能描述语句,子程序调用语句由过程(PROCEDURE)和函数(FUNCTION)组成,其内部是顺序语句。用来调用过程和函数,并将结果赋值给信号。,元件例化语句(COMPONENT)元件例化语句用来调用另一个设计实体所描述的电路。调用时,元件例化语句对其他的设计实体做元件调用说明,并将元件的端口与其他元件、信号或高层设计实体的界面端口进行连接。,EDA技术与数字系统设计,32,第4章VHDL硬件描述语言,【例4.2.3】编写一个四位二进制加法计数器的结构体。,计数器共有三个输入和五个输出。输入:时钟输入端CLK、使能控制端EN和异步清零端Rd。输出:四位状态输出Q3Q0和进位输出CO。,设计程序的结构体如下:,ARCHITECTUREbehaviorOFcounter16ISBEGINCO=1WHEN(Q=“1111”ANDEN=1ANDRd=1)ELSE0;-条件赋值语句PROCESS(CLK,Rd)-进程语句BEGINIF(Rd=0)THENQ=“0000”;-IF语句ELSIF(CLKEVENTANDCLK=1)THEN-CLK上升沿计数IF(EN=1)THENQ=Q+1;ENDIF;ENDIF;ENDPROCESS;ENDbehavior;,EDA技术与数字系统设计,33,4.3VHDL语言结构体的描述方式,VHDL语言的结构体可以用不同的语句类型和描述方式来表达电路所期望的逻辑行为,而对于相同的逻辑行为,可以有不同的语句表达方式。,第4章VHDL硬件描述语言,在VHDL语言中,这些描述方式或建模方式称为VHDL语言的描述风格。,常用的描述方式主要有:行为描述数据流描述结构描述混合描述,EDA技术与数字系统设计,34,行为描述依据设计实体的功能或算法对结构体进行描述,不需要给出实现这些行为的硬件结构,只强调电路的行为和功能。在结构体中,行为描述主要用函数、过程和进程语句,以功能或算法的形式来描述数据的转换和传送。,第4章VHDL硬件描述语言,4.3.1结构体的行为描述,EDA技术与数字系统设计,35,【例4.3.1】试用行为描述完成二选一数据选择器的设计。,第4章VHDL硬件描述语言,设数据输入为d0和d1、选择输入为s,输出为y。,程序清单:ENTITYmux21ISPORT(d1,d0:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREbehaviorOFmux21ISBEGINy=d1WHENs=1ELSEd0;ENDbehavior;,EDA技术与数字系统设计,36,行为描述类似于高级编程语言,主要是对设计实体的功能或数学模型进行描述,其抽象程度远高于数据流描述和结构描述,其特点如下:,第4章VHDL硬件描述语言,行为描述具有很高的抽象程度,远高于数据流描述和结构描述;行为描述只需描述清楚输入与输出的行为,而与它们的结构无关;描述程序大多采用算术运算、关系运算、惯性延时、传输延时等语句;结构体中的过程语句属于典型的行为描述。,EDA技术与数字系统设计,37,即逻辑描述,它利用VHDL语言中的赋值符和逻辑运算符进行描述,既包含逻辑单元的结构信息,又隐含地表示某种行为。,第4章VHDL硬件描述语言,4.3.2结构体的数据流描述,例如:y=aNORb;z=NOT(aXORb);,/y等于a与b的或非运算/z等于a与b的同或运算,这种方式主要采用非结构化的并行语句描述。,EDA技术与数字系统设计,38,【例4.3.2】将例4.3.1中的数据选择器采用数据流描述。,第4章VHDL硬件描述语言,逻辑表达式:,程序清单:ENTITYmux21ISPORT(d1,d0:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREdataflowOFmux21ISSIGNALtmp1,tmp2,tmp3:STD_LOGIC;BEGINtmp1=d1ANDs;tmp2=d0AND(NOTs);tmp3=tmp1ORtmp2;y=tmp3;ENDdataflow;,EDA技术与数字系统设计,39,结构描述是从设计实体的内部结构对结构体进行描述的,并给出该实体所包含的模块或元件的相互连接关系。这种方式主要采用元件例化(COMPONENT)的形式对设计实体进行描述。可以用不同类型的结构来实现多层次的工程设计,从简单的门电路到复杂的元件来描述整个系统,元件之间的连接通过定义的端口界面来实现。,第4章VHDL硬件描述语言,4.3.3结构体的结构描述,EDA技术与数字系统设计,40,结构描述建模的步骤如下:,第4章VHDL硬件描述语言,4.3.3结构体的结构描述,元件说明:描述局部接口。元件例化:相对于其他元件放置元件。元件配置:指定元件所有的设计实体。,结构描述用于层次化设计,高层次的设计模块调用低层次的设计模块,或直接用门电路来构成一个复杂的逻辑电路。,EDA技术与数字系统设计,41,【例4.3.3】将例4.3.1中的数据选择器采用结构描述。,第4章VHDL硬件描述语言,程序清单:ENTITYmux21ISPORT(d1,d0:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREstructureOFmux21ISCOMPONENTand2PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTor2PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;,EDA技术与数字系统设计,42,【例4.3.3】将例4.3.1中的数据选择器采用结构描述。,第4章VHDL硬件描述语言,程序清单:,COMPONENTnot1PORT(a:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALaa,ab,ns:STD_LOGIC;BEGINU1:not1PORTMAP(s,ns);U2:and2PORTMAP(d1,s,aa);U3:and2PORTMAP(ns,d0,ab);U4:or2PORTMAP(aa,ab,y);ENDstructure;,EDA技术与数字系统设计,43,混合描述就是在结构体中同时使用多种不同的描述方式,它可以使描述简单灵活。例如,在同一结构体中,分别使用元件例化语句和并行语句,就可以构成由两种描述方式的混合描述。,第4章VHDL硬件描述语言,4.3.4结构体的混合描述,EDA技术与数字系统设计,44,【例4.3.4】用混合描述完成半加器的设计。,第4章VHDL硬件描述语言,表达式:sn=anbncn=anbn,数据流描述结构描述,程序清单:ENTITYhalf_adderISPORT(an,bn:INSTD_LOGIC;sn,cn:OUTSTD_LOGIC);ENDhalf_adder;ARCHITECTUREmix_haOFhalf_adderISCOMPONENTand2PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;BEGINsn=anXORbn;U1:and2PORTMAP(an,bn,cn);ENDmix_ha;,EDA技术与数字系统设计,45,第4章VHDL硬件描述语言,4.4VHDL语言的库、程序包及配置,在VHDL设计实体中,除了实体说明和结构体外,还有库、程序包和配置三个各自独立的组成部分。依据VHDL语言的规则,VHDL程序所使用的文字、数据对象、数据类型都需要预先定义。将预先定义好的数据类型、元件调用声明及一些常用子程序收集在一起,形成程序包,供VHDL设计实体共享和调用。若干个程序包则形成库。,EDA技术与数字系统设计,46,库(Library)是用于存放预先设计好的程序包和数据的集合体。,第4章VHDL硬件描述语言,4.4.1VHDL库,1.常用的库,VHDL语言中常用的五种库:,IEEE库STD库WORK库VITAL库用户自定义库,VHDL语言设计中最常见的库。,VHDL语言的标准库。,用户的VHDL语言工作库。,VHDL语言的时序仿真库。,用户自定义的资源库。,EDA技术与数字系统设计,47,第4章VHDL硬件描述语言,EDA技术与数字系统设计,48,第4章VHDL硬件描述语言,2.资源库和设计库,VHDL语言所使用的库可以分成两类:,资源库设计库,用于存放常规元件、标准模块、预定义数据类型等,如:IEEE库。,是一种符合VHDL标准的预定义库。如:STD库定义了一些基本的数据类型、子类型和函数等;WORK库存放用户设计和定义的设计单元及程序包等。,EDA技术与数字系统设计,49,第4章VHDL硬件描述语言,3.库的使用,关键字:LIBRARY格式:LIBRARY库名称,库说明语句:,说明:用来指明所使用的库,库名称为一系列由逗号分隔的库名。库说明语句总是位于设计实体的最前面,通常与USE语句一起使用。,EDA技术与数字系统设计,50,第4章VHDL硬件描述语言,3.库的使用,格式1:USE库名.程序包名.项目名;,USE语句用来指明库中的程序包,有两种格式:,作用:为本设计实体开放指定库中的特定程序包内所选定的项目。,例如:,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.STD_ULOGIC;USEIEEE.STD_LOGIC_1164.RISING_EDGE;,EDA技术与数字系统设计,51,第4章VHDL硬件描述语言,3.库的使用,格式2:USE库名.程序包名.ALL;,作用:为本设计实体开放指定库中的特定程序包内所有的内容。,例如:,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;,EDA技术与数字系统设计,52,在VHDL语言中,用户可以将已定义的常数、信号、函数、数据类型、元件和子程序等收集在一起形成一个程序包,以便更多的设计实体利用和共享。,第4章VHDL硬件描述语言,4.4.2VHDL程序包,定义程序包的一般语句格式:,PACKAGE程序包IS程序包首说明END程序包名;PACKAGEBODY程序包IS程序包体说明END程序包名;,程序包首,程序包体,EDA技术与数字系统设计,53,程序包首收集了VHDL设计所需的公共信息,用来定义数据类型、元件和子程序等。,第4章VHDL硬件描述语言,1.程序包首,一般格式:,PACKAGE程序包ISTYPE语句;SUBTYPE语句;CONSTANT语句;SIGNAL语句;COMPONENT语句;FUNCTION语句;SUBPROGRAM语句;END程序包名;,用来定义数据类型用来定义子类型用来定义常数用来定义信号用来定义元件用来定义函数用来定义子程序,EDA技术与数字系统设计,54,第4章VHDL硬件描述语言,【例4.4.1】定义程序包。,PACKAGEmy_pkgISTYPEbyteISRANGE0TO255;SUBTYPEnibyteISbyteRANGE0TO15;CONSTANTbyte_ff:bcd:=255;SIGNALaddend:nibabc;COMPONENTbyte_adderPORT(a,b:INbyte;c:OUTbyte;overflow:OUTBOOLEAN);ENDCOMPONENT;FUNCTIONmy_fun(a:INbyte)RETURNbyte;ENDmy_pkg;,程序清单:,-程序包首,程序包名为my_pkg,-定义数据类型,byte的范围0255,-定义子类型nibyte,-定义常数byte_ff,-定义信号addend,-定义元件byte_adder,-定义函数my_fun,EDA技术与数字系统设计,55,用来描述已在程序包首中定义过的元件和子程序的内容。,第4章VHDL硬件描述语言,2.程序包体,一般格式:,PACKAGEBODY程序包IS程序包体说明END程序包名;,程序包体说明可以是USE语句、子程序定义、子程序体、数据类型说明、子类型说明和常数说明等。,EDA技术与数字系统设计,56,常用的预定义的程序包有:,第4章VHDL硬件描述语言,3.VHDL常用的程序包,STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNED和STD_LOGIC_SIGNEDSTANDARD和TEXTIO,EDA技术与数字系统设计,57,配置是将特定的结构体与一个确定的实体相关联,为大型系统的设计提供管理和工程组织。配置是设计实体VHDL语言描述的组成部分之一,但不是必不可少的。常用来描述层与层之间、实体与结构体之间的连接关系。,第4章VHDL硬件描述语言,4.4.3配置,配置可分为三种类型:,默认配置元件配置结构体配置,EDA技术与数字系统设计,58,默认配置是一种最为简单的配置,当设计实体中不含有任何其他元件和块语句时,可以使用默认配置。,第4章VHDL硬件描述语言,1.默认配置,基本格式:,CONFIGURATION配置名OF实体名ISFOR选配结构体名;ENDFOR;END配置名;,EDA技术与数字系统设计,59,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCOUNTERISPORT(CLK,CLR:INSTD_LOGIC;Q:OUTINTEGER);ENDCOUNTER;,第4章VHDL硬件描述语言,【例4.4.2】设计两个计数位宽分别为4位和8位的计数器。,设两个计数器具有相同的功能和外部结构,只是计数位宽不同。用一个计数器实体来实现两个不同结构体的配置。,程序清单:,计数器的实体,EDA技术与数字系统设计,60,第4章VHDL硬件描述语言,【例4.4.2】设计两个计数位宽分别为4位和8位的计数器。,程序清单:,ARCHITECTURECOUNT4OFCOUNTERISBEGINPROCESS(CLK)VARIABLEQQ:INTEGER:=0;BEGINIFCLR=0THENQQ:=0;ELSIF(CLKEVENTANDCLK=1)THENIFQQ=15THENQQ:=0;ELSEQQ:=QQ+1;ENDIF;ENDIF;QB成立,则布尔数据量为TRUE,否则布尔数据量为FALSE。,定义格式:,TYPEBOOLEANIS(FALSE,TRUE);,若某个信号或变量被定义为布尔数据,则在仿真中将自动对其赋值进行核查。布尔数据没有数值的含义,不能进行算术运算,只能用于关系运算和逻辑判断。,EDA技术与数字系统设计,99,第4章VHDL硬件描述语言,(2)位(BIT)数据类型,位数据类型也属于二值枚举型,通常用来表示信号的取值。,它的取值只有“0”和“1”。,定义格式:,TYPEBITIS(0,1);,位数据类型的数据对象为信号和变量,可以进行逻辑运算,其结果仍为位数据类型。,EDA技术与数字系统设计,100,第4章VHDL硬件描述语言,(3)位矢量(BIT_VECTOR)数据类型,定义格式:,TYPEBITVECTORISARRAY(NATURALRANGE)OFBIT;,位矢量是基于位数据类型的数组,常用来表示总线的状态。位矢量是用双引号括起来的数字序列,如“1011”,X“00EA”。,其中,“”表示数据范围未定界。,规则:使用位矢量必须注明位宽,即数组中的元素个数和排列。,例如:SIGNALb:BITVECTOR(0TO7);定义b由b(0)b(7)构成的矢量,左为b(0),右为b(7);,EDA技术与数字系统设计,101,第4章VHDL硬件描述语言,(4)字符(CHARACTER)数据类型,定义格式:,TYPECHARACTERIS(ASCII码字符表中的全部字符);,字符数据类型是用单引号括起来的ASCII码字符,如X、y、6、3等。,规则:字符型数据用单引号括起来;字符型数据的字母有大小写之分;字符型数据仅包括ASCII码字符表中的全部字符。,EDA技术与数字系统设计,102,第4章VHDL硬件描述语言,(5)字符串(STRING)数据类型,定义格式:,TYPESTRINGISARRAY(POSITIVERANGE)OFCHARACTER;,字符串数据类型是用双引号括起来的字符序列,是由字符型数据组成的数组,也称字符矢量或字符串数组。常用于程序的提示和说明。,例如:“ABOY.”,“10101011”。,EDA技术与数字系统设计,103,第4章VHDL硬件描述语言,(6)整数(INTEGER)数据类型,定义格式:,TYPEINTEGERISRANGE-2147483647TO+2147483647;,整数数据类型与数学中的整数定义相同。包括:正整数、负整数和零。取值范围:32位带符号数原码,-(231-1)+(231-1)即-2147483647+2147483647。,规则:整数不能作为矢量,不能单独对某一位进行操作;整数不能用于逻辑运算,只能用于算术运算。,如:15,10E3,16#D5#,2#11011010#,8#653#。,整数可以用进制来表示。整数可以用来抽象地表达总线的状态。,EDA技术与数字系统设计,104,第4章VHDL硬件描述语言,(7)正整数(POSITIVE)数据类型,定义格式:,SUBTYPEPOSITIVEISINTEGERRANGE1TOINTEGERHIGH;,正整数数据类型是整数数据类型的子类型,是不包括0的正整数。取值范围:32位带符号数原码,1(231-1),即12147483647,其中,INTEGERHIGH是数值类属性,表示整数的上限值231-1。,EDA技术与数字系统设计,105,第4章VHDL硬件描述语言,(8)自然数(NATURAL)数据类型,定义格式:,SUBTYPENATURALISINTEGERRANGE0TOINTEGERHIGH;,是整数数据类型的子类型,即非负的整数。包括:0和正整数。,EDA技术与数字系统设计,106,第4章VHDL硬件描述语言,(9)实数(REAL)数据类型,定义格式:,TYPEREALISRANGE-1.0E38TO+1.0E38;,实数数据类型类似于数学中的实数,也称为浮点数数据类型,只能在仿真中使用。取值范围:-1.0E+38+1.0E+38由正号、负号、小数点和数字组成。例如:-2.5、-1.0E8。,EDA技术与数字系统设计,107,第4章VHDL硬件描述语言,(10)时间(TIME)数据类型,定义格式:,TYPETIMEISRANGE2147483647TO2147483647,用来表示时间的数据类型,由整数数据和单位两部分组成,取值范围是整数所定义的范围,仅在系统仿真时,用来表示信号延时的时间,不能用于逻辑综合。,例如:55ms,20ns。,EDA技术与数字系统设计,108,第4章VHDL硬件描述语言,(10)时间(TIME)数据类型,unitsfs;-飞秒(10-15S)ps=1000fs;-皮秒ns=1000ps;-纳秒us=1000ns;-微秒ms=1000us;-毫秒sec=1000ms;-秒min=60sec;-分hr=60min;-时ENDunits;,EDA技术与数字系统设计,109,第4章VHDL硬件描述语言,(11)错误等级(SEVERITY_LEVEL),定义格式:,TYPEseverity_levelIS(note,warning,error,failure);,错误等级数据用于表征系统的工作状态。包括:NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败)。在仿真过程中,可输出这4种值来提示被仿真系统当前的工作状态。,EDA技术与数字系统设计,110,第4章VHDL硬件描述语言,3.IEEE预定义的标准逻辑位和标准逻辑矢量,在IEEE库的程序包STD_LOGIC_1164中,定义了两个非常重要的数据类型:标准逻辑位STD_LOGIC标准逻辑矢量STD_LOGIC_VECTOR,使用时可打开IEEE库,调用STD_LOGIC_1164程序包。如:,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;,EDA技术与数字系统设计,111,第4章VHDL硬件描述语言,(1)STD_LOGIC(标准逻辑位)数据类型,是用IEEE1164标准定义的一种常用的9值逻辑位数据类型,是位(BIT)数据类型的扩展。,STD_LOGIC的9种逻辑值:,U-未初始化的;X-强未知的;0-强0;1-强1;Z-高阻态;W-弱未知的;L-弱0;H-弱1;-忽略,定义格式:,TYPESTDLOGICIS(U,X,0,1,Z,W,L,H,-);,注意:逻辑值的字母必须用大写。,EDA技术与数字系统设计,112,第4章VHDL硬件描述语言,(2)STD_LOGIC_VECTOR(标准逻辑矢量)数据类型,是基于STD_LOGIC数据类型的一维标准逻辑数组,常用于描述数字系统中的总线。数组中每一个元素的数据类型都应是STD_LOGIC中定义的逻辑值。,定义格式:,TYPESTDLOGICVECTORISARRAY(NATURALRANGE)OFSTDLOGIC;,赋值原则:同位宽、同类型矢量间才能进行赋值。,EDA技术与数字系统设计,113,第4章VHDL硬件描述语言,4.其他预定义的标准数据类型,在IEEE库的STD_LOGIC_ARITH程序包中,包含有两个符合IEEE标准的数据类型,分别为:无符号型(UNSIGNED)有符号型(SIGNED),这两种数据类型主要用于算术运算,使用时可打开IEEE库,调用STD_LOGIC_ARITH程序包。如:,LIBRARYIEEE;USEIEEE.STD_LOGIC_ARITH.ALL;,定义格式:,TYPEUNSIGNEDISARRAY(NATURALRANGE)OFSTDLOGIC;TYPESIGNEDISARRAY(NATURALRANGE)OFSTDLOGIC;,EDA技术与数字系统设计,114,第4章VHDL硬件描述语言,用于程序中无符号数的运算,是由STD_LOGIC数据类型构成的一维数组,代表一个无符号的数值,即一个二进制数。,当一个数据除了执行算术运算外,还要执行逻辑运算时,就必须将该数据定义为无符号数据类型,而不是SIGNED或INTEGER类型。例如:,SIGNALDATA:UNSIGNED(3DOWNTO0);DATA=“1000”;,如十进制数的9,可以表示为UNSIGNED(“1001”)。,(1)无符号(UNSIGNED)数据类型,定义信号DATA是无符号数据,其数值为8。,EDA技术与数字系统设计,115,第4章VHDL硬件描述语言,用于程序中有符号数的运算,表示一个有符号二进制整数。,例如:VARIABLEDATA1,DATA2:SIGNED(3DOWNTO0);DATA1=“1001”;DATA2=“0111”;定义变量DATA1和DATA2分别为-7和7。,有符号数的最高位为符号位,其余位代表数值大小,并用补码表示。,(2)有符号(SIGNED)数据类型,EDA技术与数字系统设计,116,第4章VHDL硬件描述语言,5.用户自定义的数据类型,除了一些标准的预定义数据类型外,用户还可以根据设计需要,自己定义新的数据类型,称为用户自定义的数据类型。,用户自定义数据有多种类型:枚举型(ENUMERATION)整数型(INTEGER)数组型(ARRAY)记录型(RECORD)时间型(TIME)实数型(REAL),EDA技术与数字系统设计,117,第4章VHDL硬件描述语言,是用文字、符号表示的一组实际的二进制数。,例如:TYPEBITIS(0,1);,定义BIT数据类型为枚举型,取值为0和1。,(1)枚举型,定义格式:,TYPE数据类型名IS(取值1,取值2,);,又如:TYPESIS(S0,S1,S2,S3);定义S数据类型为状态变量S0,S1,S2,S3。这四个状态变量分别代表四种不同的状态取值,即00,01,10,11。,EDA技术与数字系统设计,118,第4章VHDL硬件描述语言,数组是一组具有相同数据类型的元素组合。数组型属于复合类型,是将相同类型的单个数据组合在一起而形成的数据类型。可以是一维数组(一个下标)和多维数组(多个下标)。,根据数组元素下标的范围是否被指定,可分为限定性数组和非限定性数组。,限定性数组下标的取值范围在数组定义时就已确定,并用整数指定,排列顺序可以由低到高(如:0TO7),也可以由高到低(如:7DOWNTO0)。,(2)数组型,非限定性数组不具体指明下标的取值范围,当用到该数组时,再进行定义。,EDA技术与数字系统设计,119,第4章VHDL硬件描述语言,限定性数组定义格式:,例如:TYPEDATA_BUSISARRAY(7DOWNTO0)OFSTD_LOGIC;定义八位数据总线DATA_BUS,下标由高到低排列。,(2)数组型,非限定性数组定义格式:,TYPE数组名ISARRAY(数组范围)OF基本数据类型;,TYPE数组名ISARRAY(数组下标名RANGE)OF基本数据类型;,例如:TYPEBIT_VECTORISARRAY(NATURALRANGE)OFBIT;VARABLEDATA:BIT_VECTOR(1TO6);数组DATA是BIT_VECTOR的子集,其下标取值按自然数16排列。,EDA技术与数字系统设计,120,第4章VHDL硬件描述语言,记录型是一个数组,由已定义的、不同的数据类型元素构成。,(3)记录型,定义格式:,记录型也是一种多值的数据类型。但是记录型是由多个不同类型的元素集合而成的。,TYPE记录类型名ISRECORD元素名:元素数据类型;元素名:元素数据类型;ENDRECORD记录类型名;,EDA技术与数字系统设计,121,第4章VHDL硬件描述语言,(3)记录型,例如:将DATA定义为四元素的记录类型。TYPEDATAISRECORDD0:TIME;D1:TIME;D2:STD_LOGIC;D3:STD_LOGIC;ENDRECORDDATA;,-定义DATA为四元素的记录类型-定义D0为时间类型-定义D1为时间类型-定义D2为标准位类型-定义D3为标准位类型,EDA技术与数字系统设计,122,第4章VHDL硬件描述语言,6.数据类型的转换,在IEEE库中,有三个程序包为VHDL语言提供了多条数据类型转换函数,用户使用这些函数,可以完成数据类型的转换。,EDA技术与数字系统设计,123,第4章VHDL硬件描述语言,6.数据类型的转换,例如:将INTEGER类型转换为STD_LOGIC_VECTOR类型。SIGNALA:INTEGERRANGER0TO15;SIGNALB:STD_LOGIC_VECTOR(3DOWNTO0);B=CONV_STD_LOGIC_VECTOR(A);,第1条语句,将信号A定义为INTEGER类型。第2条语句,将信号B定义为STD_LOGIC_VECTOR类型。第3条语句,将信号A的数据类型转换为STD_LOGIC_VECTOR类型,并赋值给B。,EDA技术与数字系统设计,124,第4章VHDL硬件描述语言,VHDL语言中的各种表达式都是由运算符和操作数组成的,操作数是表达式中各种运算的对象,而运算符(又称操作符)则规定操作数的运算方式。VHDL语言预定义了五种运算符:逻辑运算符算术运算符关系运算符符号运算符移位运算符,4.5.4VHDL语言的运算符,EDA技术与数字系统设计,125,第4章VHDL硬件描述语言,1.逻辑运算符,用于完成逻辑运算,包括逻辑与、逻辑或、逻辑非、逻辑与非、逻辑或非、运算逻辑异或、逻辑异或非(同或)等运算。,EDA技术与数字系统设计,126,第4章VHDL硬件描述语言,1.逻辑运算符,逻辑运算的操作数可以是BIT、BOOLEAN和STD_LOGIC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 11999-3:2025 EN PPE for firefighters - Test methods and requirements for PPE used by firefighters who are at risk of exposure to high levels of heat and/or flame while f
- 【正版授权】 IEC TS 61340-5-6:2025 EN Electrostatics - Part 5-6: Protection of electronic devices from electrostatic phenomena - Process assessment techniques
- 【正版授权】 IEC 60335-2-106:2021+AMD1:2025 CSV EN Household and similar electrical appliances - Safety - Part 2-106: Particular requirements for heated carpets and for heating units for
- 校园用电安全知识培训
- 农药经营考试题及答案
- 人才引进线上面试题及答案
- 放射作业考试题及答案
- 类风湿考试题及答案
- 2025年合肥肥西经济开发区石门路幼儿园招聘考试笔试试题(含答案)
- 济南单招试题及答案
- 机动车环检试题及答案
- 钉钉操作培训
- TCAPC 016-2024 院外呼吸慢病健康管理规范
- 露天矿山安全知识培训课件
- 《中小企业员工激励机制存在的问题及完善对策研究》4000字
- 第1章 汽车4S店概述
- 呼兰河传完整版课件
- 医疗器械监管实务
- 旅游景区反恐防爆应急预案
- 浪潮iqt在线测评题及答案
- 中外运社招在线测评题
评论
0/150
提交评论