




已阅读5页,还剩189页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/12/5,南京理工大学机械工程学院,1,第四章VHDL硬件描述语言,张志安南京理工大学,2019/12/5,南京理工大学机械工程学院,2,主要内容4.1VHDL语言概述4.2VHDL语言程序的基本结构4.3VHDL语言的数据类型及运算操作符4.4VHDL语言的顺序描述语句4.5VHDL语言的并发描述语句4.6VHDL语言在数字电路中的应用,2019/12/5,南京理工大学机械工程学院,3,4.1VHDL语言概述,VHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。1987年由IEEE协会批准为IEEE工业标准,称为IEEE1076-1987。各EDA公司相继推出支持VHDL的设计环境。1993年被更新为93标准,即IEEE1076-1993。进一步提高抽象描述层次,扩展系统描述能力。,数字电子技术的基本知识回顾,组合逻辑电路编码器、译码器、数据选择器、加法器、数值比较器等时序逻辑电路同步时序逻辑电路异步时序逻辑电路寄存器、移位寄存器、计数器、序列信号发生器,一、传统设计方法,(1)首先确定可用的元器件;(2)根据这些器件进行逻辑设计,完成各模块;(3)将各模块进行连接,最后形成系统;(4)而后经调试、测量观察整个系统是否达到规定的性能指标。,传统的设计方法是基于中小规模集成电路器件进行设计(如74系列及其改进系列、74HC系列等都属于通用型数字集成电路),而且是采用自底向上进行设计:,EDA(ElectronicsDesignAutomation)即电子设计自动化技术,是利用计算机工作平台,从事电子系统和电路设计的一项技术。EDA技术为电子系统设计带来了这样的变化:(1)设计效率提高,设计周期缩短;(2)设计质量提高;(3)设计成本降低;(4)能更充分地发挥设计人员的创造性;(5)设计成果的重用性大大提高,省去了不必要的重复劳动。,二、EDA设计方法,自顶向下的设计方法,数字电路的EDA设计是基于PLD进行设计的,支持自顶向下的设计方法:(1)首先从系统设计入手,在顶层进行功能划分和结构设计;(2)然后再逐级设计底层的结构;(3)并在系统级采用仿真手段验证设计的正确性;(4)最后完成整个系统的设计,实现从设计、仿真、测试一体化。,传统设计方法vsEDA设计方法,三、PLD器件,如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量、功耗,而且会使电路的可靠性大为提高。为某种专门用途而设计的集成电路叫做专用集成电路,即所谓的ASIC(ApplicationSpecificIntegratedCircuit的缩写)。在用量不大的情况下,设计和制造这样的专用集成电路成本很高,而且设计、制造的周期也较长。可编程逻辑器件的研制成功为解决上述问题提供了比较理想的途径。,(一)出现的背景,(二)PLD概述,PLD:可编程逻辑器件(ProgrammableLogicDevice)可编程逻辑器件是一种数字集成电路的半成品,在其芯片上按一定排列方式集成了大量的逻辑门和触发器等基本逻辑元件。通过编程可以设置其逻辑功能。PLD编程:利用开发工具对PLD进行加工,即按设计要求将这些片内的元件连接起来,使之完成某个逻辑电路或系统的功能,成为一个专用集成电路(ASICApplicationSpecificIntegratedCircuit)。,PLD开发系统,PLD开发系统包括硬件和软件两部分。硬件部分:计算机、下载电缆或编程器;软件部分:集成开发系统。Altera公司:Maxplus、QuartusXilinx公司:Foundation、ISELattice公司:SynarioSystem、ispEXPERTSystem,2019/12/5,南京理工大学机械工程学院,12,四、PLD设计流程,1、PLD设计准备,在设计之前,首先要进行方案论证和器件选择等设计准备工作。设计者首先要根据任务要求,判断系统的可行性。系统的可行性要受到逻辑要求合理性、成本、开发条件、器件供应等方面的约束。若系统可行,则根据系统所完成的功能及复杂程度,对器件本身的资源和成本、工作速度及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。,2、设计输入,将所设计的电路的逻辑功能按照开发系统要求的形式表达出来的过程称为设计输入。通常,设计输入有如下三种方式:(1)原理图输入方式适用于对系统及各部分电路很熟悉的场合。(2)硬件描述语言输入方式硬件描述语言是用文本方式描述设计,硬件描述语言有ABEL、AHDL、VHDL、Verilog等,其中VHDL和Verilog已成为IEEE标准。(3)波形输入方式,3、设计处理,逻辑优化把逻辑描述转变为最适合在器件中实现的形式,优化使设计所占用的资源最少。逻辑综合根据设计描述,对给定的硬件结构组件,最终获得门级电路甚至更底层的电路描述文件,即将多个模块化设计文件合并为一个网表文件。适配确定优化后的逻辑能否与器件中的宏单元和I/O单元适配。分割将大的设计分割为多个便于器件内部资源实现的逻辑小块的形式。,2019/12/5,南京理工大学机械工程学院,16,4、设计校验,设计校验过程包括功能仿真和时序仿真。功能仿真时序仿真,5、器件编程,器件编程就是将开发系统生成的目标文件下载到可编程逻辑器件中,来定义内部模块的逻辑功能以及它们的相互连接关系。两种编程方式:编程器下载电缆,返回,2019/12/5,南京理工大学机械工程学院,17,4.2VHDL语言程序的基本结构,Librarystd;Usestd.standard.all;Entityand2isPort(a,b:inbit;c:outbit);Endand2;Architecturea1ofand2isBeginc=aandb;Enda1;,VHDL程序,2019/12/5,南京理工大学机械工程学院,18,库(Library)是经编译后的数据的集合,它用于存放包集合定义、实体定义、构造体定义和配置定义。声明格式:Library库名;,(1)库(Library),4.2VHDL语言程序的基本结构,VHDL库可分为5种:,1)IEEE库,2)STD库(标准库),3)面向ASIC的库,4)WORK库(默认库),5)用户定义库,2019/12/5,南京理工大学机械工程学院,19,4.2VHDL语言程序的基本结构,(2)包集合(Package),包集合(Package)中定义了基本的常数、信号、数据类型、元件语句、函数定义及过程定义等。是库结构中的一个层次。声明格式:use库名包集合名项目名;use库名.PACKAGE名.All;,包集合的结构包括:包集合标题(包首)包集合主体(包体),2019/12/5,南京理工大学机械工程学院,20,package包集合名is包说明项end包集合名;,4.2VHDL语言程序的基本结构,(2)包集合(Package),packagebody包集合名is包体说明项end包集合名;,包集合标题,包集合主体,包集合体并非必须,只有在包集合中要说明子程序时,包集合体才是必须的。,2019/12/5,南京理工大学机械工程学院,21,作用:ENTITY(实体)用于定义电路的外观,即I/O端口的类型和数量。定义格式:Entity实体名isPort(a:inbit;b:inbit;c:outbit);End实体名;,(3)实体(ENTITY)定义区,端口名,数据类型,端口模式,4.2VHDL语言程序的基本结构,:,;,2019/12/5,南京理工大学机械工程学院,22,端口说明(PORT)端口为设计实体和其外部环境提供动态通信的通道,是对基本设计单元与外部接口的描述,其功能相当电路图符号的外部引脚。端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。其一般书写格式为:PORT(端口名:端口模式数据类型;端口名:端口模式数据类型;);,(3)实体(ENTITY)定义区,4.2VHDL语言程序的基本结构,2019/12/5,南京理工大学机械工程学院,23,标识符的定义原则:(1)标识符由字母、数字和下划线组成,a_7;(2)标识符不区分大小写,ab和AB是一样的;(3)第一个字符必须是字母,即a666;(4)不允许有两个连续的下划线,a_b错误;(5)末尾不能是下划线,mname_错误;(6)标识符不能和关键字相同,如Entity,is等。,(3)实体(ENTITY)定义区,4.2VHDL语言程序的基本结构,2019/12/5,南京理工大学机械工程学院,24,端口模式(MODE)有以下几种类型:IN;OUT;INOUT;BUFFER端口模式可用下图说明:(黑框代表一个设计或模块)INOUTBUFFERINOUT,(3)实体(ENTITY)定义区,4.2VHDL语言程序的基本结构,2019/12/5,南京理工大学机械工程学院,25,(3)实体(ENTITY)定义区,4.2VHDL语言程序的基本结构,输入(IN)允许信号进入实体,主要用于时钟输入、控制输入(如load、reset、enable、clk)和单向的数据输入(如地址数据信号address)等。,输出(OUT)输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。,2019/12/5,南京理工大学机械工程学院,26,(3)实体(ENTITY)定义区,4.2VHDL语言程序的基本结构,双向模式(INOUT)双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。,缓冲(BUFFER)缓冲模式允许信号输出到实体外部,但同时也可以在实体内部引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出、计数器的现态用来决定计数器的次态。,2019/12/5,南京理工大学机械工程学院,27,(3)实体(ENTITY)定义区,4.2VHDL语言程序的基本结构,out和buffer的区别:,2019/12/5,南京理工大学机械工程学院,28,结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。结构体是对实体功能的具体描述,因此它一定要跟在实体的后面。,(4)结构体(ARCHITECTURE)定义区,4.2VHDL语言程序的基本结构,2019/12/5,南京理工大学机械工程学院,29,(4)结构体(ARCHITECTURE)定义区,定义格式:Architecture结构体名of实体名is声明语句;(内部信号、变量、常数,元件,子程序声明)Begin并行描述语句;End结构体名;,4.2VHDL语言程序的基本结构,2019/12/5,南京理工大学机械工程学院,30,结构体(ARCHITECTURE)构造图,2019/12/5,南京理工大学机械工程学院,31,图中5种功能描述语句的基本组成和功能分别是:块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。子程序调用语句可以调用进程或参数,并将获得的结果赋值于信号。元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。,(4)结构体(ARCHITECTURE)定义区,4.2VHDL语言程序的基本结构,2019/12/5,南京理工大学机械工程学院,32,4.2VHDL语言程序的基本结构,实体与结构体的关系:,一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。,2019/12/5,南京理工大学机械工程学院,33,4.2VHDL语言程序的基本结构,(5)配置(CONFIGURATION),配置:从某个实体的多种结构体描述方式中选择特定的一个。,2019/12/5,南京理工大学机械工程学院,34,configuration配置名of实体名isfor选配结构体名endfor;end配置名;,4.2VHDL语言程序的基本结构,(5)配置(CONFIGURATION),在用VHDL描述硬件电路时,常常采用结构描述方式和混合描述方式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要将不同元件通过配置安装到不同的设计实体中。VHDL提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。,2019/12/5,南京理工大学机械工程学院,35,libraryieee;useieee.std_logic_1164.all;entitynandisport(a:instd_logic;b:instd_logic;c:outstd_logic);endentitynand;architectureart1ofnandisbeginc=not(aandb);endarchitectureart1;,例:一个与非门不同实现方式的配置如下:,2019/12/5,南京理工大学机械工程学院,36,architectureart2ofnandisbeginc=1when(a=0)and(b=0)else1when(a=0)and(b=1)else1when(a=1)and(b=0)else0when(a=1)and(b=1)else0;endarchitectureart2;,例:一个与非门不同实现方式的配置如下:,2019/12/5,南京理工大学机械工程学院,37,configurationfirstofnandisforart1;endfor;endfirst;configurationsecondofnandisforart2endfor;endsecond;,例:一个与非门不同实现方式的配置如下:,2019/12/5,南京理工大学机械工程学院,38,二输入与门电路设计范例,电路真值表,2019/12/5,南京理工大学机械工程学院,39,Librarystd;Usestd.standard.all;Entityand2isPort(a:inbit;b:inbit;c:outbit);Endand2;-实体定义结束。,双减号-为VHDL程序的注释符,类似C语言中的/注释符。,二输入与门电路设计范例,2019/12/5,南京理工大学机械工程学院,40,二输入与门电路设计范例,ArchitectureNaofand1isBeginc=0whena=0andb=0else0whena=1andb=0else0whena=0andb=1else1;-符号=为信号直接赋值符。EndNa;-结构体NaArchitectureNbofand2isBeginc=aandb;-and为逻辑与操作EndNb;-结构体Nb,2019/12/5,南京理工大学机械工程学院,41,二输入与门电路设计范例,Configurations1ofand1isforNaendfor;endconfigurations1;Configurations2ofand2isforNbendfor;endconfigurations2;-结构体配置结束。,2019/12/5,南京理工大学机械工程学院,42,2选1多路选择器的VHDL描述,2019/12/5,南京理工大学机械工程学院,43,2选1多路选择器的VHDL描述,ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs=0ELSEb;ENDARCHITECTUREone;,实体,结构体,2019/12/5,南京理工大学机械工程学院,44,2选1多路选择器的VHDL描述,ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;,2019/12/5,南京理工大学机械工程学院,45,2选1多路选择器的VHDL描述,ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs=0THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;,2019/12/5,南京理工大学机械工程学院,46,mux21a功能时序波形,2选1多路选择器的VHDL描述,返回,2019/12/5,南京理工大学机械工程学院,47,4.3VHDL语言的数据类型及运算操作符,1、数据对象2、数据类型3、运算操作符4、数据对象属性5、VHDL语言词法规则,2019/12/5,南京理工大学机械工程学院,48,1、数据对象,三种对象:常量(Constant)变量(Variable)信号(Signal)三种对象的物理含义:常量代表数字电路中的电源、地、恒定逻辑值等常数;变量代表暂存某些值的载体,常用于描述算法;信号代表物理设计中的某一条硬件连接线,包括输入、输出端口。,2019/12/5,南京理工大学机械工程学院,49,1、数据对象,三种对象的特点及说明场合:信号:全局量,用于architecture、package、entitiy。变量:局部量,用于process、function、procedure。常量:全局量,可用于上面两种场合。,2019/12/5,南京理工大学机械工程学院,50,1、数据对象,常量说明常量说明:对某一个常量名赋予一个固定的值。格式:例:constantdata:bit_vector(3downto0):=“1010”constantwidth:integer:=8;constantx:new_bit:=x;常量数据类型必须与表达式的数据类型一致。,constant常数名:数据类型:=表达式;,2019/12/5,南京理工大学机械工程学院,51,常量的可视性(作用范围):,常量是全局量,其作用范围取决于常量被定义的位置。,2019/12/5,南京理工大学机械工程学院,52,1、数据对象,变量说明变量是一个局部量,只能在进程和子程序中定义、使用。其作用范围仅限于定义了变量的进程和子程序中。格式:例:variablea,b:bit;variablecount:integerrange0to255:=10;变量的初值可用于仿真,但综合时被忽略。,variable变量名:数据类型约束条件:=表达式;,2019/12/5,南京理工大学机械工程学院,53,1、数据对象,信号说明电子硬件系统运行的基本特性:各部分电路工作的并行特性;信号传输过程中的延时特性;多驱动源的总线特性;时序电路中触发器的记忆特性等。信号是电子系统内部硬件连接和硬件特性的抽象表示。用来描述硬件系统的基本特性。格式:,signal信号名:数据类型约束条件:表达式;,2019/12/5,南京理工大学机械工程学院,54,1、数据对象,例:signala,b:bit;signalinit:integer:=-1;signals1:std_logic:=0;signals2:std_logic_vector(15downto0);注:a.综合时初值被忽略。b.信号是全局量。可在结构体、实体、块中说明和使用信号。c.在进程和子程序中只能使用信号,不能说明信号。,2019/12/5,南京理工大学机械工程学院,55,例:进程中信号与变量的使用,entityexisport(.);endex;architecturearch_exofexissignala,b:std_logic;beginprocess(a,b)variablec,d:std_logic;beginc:=a+b;d:=a-b;endprocess;endarch_ex;,2019/12/5,南京理工大学机械工程学院,56,1、数据对象,信号与端口的区别:除没有方向说明外,信号与实体的“端口(PORT)”概念相似。端口是一种隐形的信号。entityexamisport(signala,b:instd_logic;signalc:outstd_logic);endexam;端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。信号本身无方向,可读可写。,2019/12/5,南京理工大学机械工程学院,57,信号与变量的区别:信号和变量是VHDL中重要的客体,他们之间的主要区别有:信号赋值至少要有延时;而变量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。,2019/12/5,南京理工大学机械工程学院,58,process(a,b,c,d)begind=a;x=b+d;d=c;y=b+d;endprocess;,process(a,b,c)Variabled:std_logic_vector(0to3)begind:=a;x=b+d;d:=c;y=b+d;endprocess;,结果:x=b+c;x=b+c;,结果:x=b+a;x=b+c;,信号量的值将进程语句最后所带入的值作为最终代入值;而变量的值一经赋值就变成新的值。,2019/12/5,南京理工大学机械工程学院,59,2、数据类型,在VHDL程序中,经常会遇到这样的语句:SignalA:std_logic;VariableB:std_logic_vector(7downto0);ConstantC:integer;,数据对象类型,数据类型,数据对象名,VHDL是一种强数据类型语言。要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。,2019/12/5,南京理工大学机械工程学院,60,2、数据类型,标准数据类型IEEE预定义标准用户自定义数据类型VHDL的标准数据类型十种1)布尔量(boolean)布尔量具有两种状态:false和true常用于逻辑函数,如相等(=)、比较()等中作逻辑比较。如,bit值转化成boolean值:boolean_var:=(bit_var=1);,2019/12/5,南京理工大学机械工程学院,61,2、数据类型,2)位(bit)bit表示一位的信号值。放在单引号中,如0或1。3)位矢量(bit_vector)bit_vector是用双引号括起来的一组位数据。如:“001100”X“00B10B”4)字符(character)用单引号将字符括起来。variablecharacter_var:character;.Character_var:=A;,2019/12/5,南京理工大学机械工程学院,62,2、数据类型,5)整数(integer)integer表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为:-(231-1)to(231-1)VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。如:signals:integerrange0to15;信号s的取值范围是0-15,可用4位二进制数表示,因此s将被综合成由四条信号线构成的信号。,2019/12/5,南京理工大学机械工程学院,63,2、数据类型,6)自然数(natural)和正整数(positive)natural是integer的子类型,表示非负整数。positive是integer的子类型,表示正整数。定义如下:subtypenaturalisintegerrange0tointegerhigh;subtypepositiveisintegerrange1tointegerhigh;,2019/12/5,南京理工大学机械工程学院,64,2、数据类型,7)实数(REAL)或称浮点数取值范围:-1.0E38-+1.0E38实数类型仅能用于VHDL仿真器,一般综合器不支持。8)字符串(string)string是character类型的一个非限定数组。用双引号将一串字符括起来。如:variablestring_var:string(1to7);string_var:=“Rosebud”;,2019/12/5,南京理工大学机械工程学院,65,9)时间(TIME)由整数和物理单位组成如:55ms,20nsTYPETIMEISRANGE2147483647TO2147483647UNITEfs;-飞秒(10-15S)VHDL中的最小时间单位ps=1000fs;-皮秒ns=1000ps;-纳秒us=1000ns;-微秒ms=1000us;-毫秒sec=1000ms;-秒min=60sec;-分hr=60min;-时ENDunits;,2、数据类型,2019/12/5,南京理工大学机械工程学院,66,2、数据类型,10)错误等级(SEVERITY_LEVEL)仿真中用来指示系统的工作状态,共有四种:NOTE(注意)WARNING(警告)ERROR(出错)FAILURE(失败),其定义如下:TYPEseverity_levelIS(note,warning,error,failure);,2019/12/5,南京理工大学机械工程学院,67,2、数据类型,IEEE预定义标准逻辑位与矢量1)std_logic类型由ieee库中的std_logic_1164程序包定义,为九值逻辑系统,如下:(U,X,0,1,Z,W,L,H,-)U:初始值,X:不定,0:0,1:1,Z:高阻,W:弱信号不定,L:弱信号0,H:弱信号1,-:不可能情况,2019/12/5,南京理工大学机械工程学院,68,2、数据类型,IEEE预定义标准逻辑位与矢量由std_logic类型代替bit类型可以完成电子系统的精确模拟,并可实现常见的三态总线电路。2)std_logic_vector类型由std_logic构成的数组。定义如下:typestd_logic_vectorisarray(naturalrange)ofstd_logic;赋值的原则:相同位宽,相同数据类型。,2019/12/5,南京理工大学机械工程学院,69,2、数据类型,用户自定义数据类型用户自定义类型是VHDL语言的一大特色。可由用户定义的数据类型有:枚举类型整数和实数类型数组类型记录类型子类型,2019/12/5,南京理工大学机械工程学院,70,2、数据类型,2019/12/5,南京理工大学机械工程学院,71,SUBTYPE语句格式:例:subtypedigitsisintegerrange0to9;由subtype语句定义的数据类型称为子类型。,2、数据类型,subtype子类型名is基本数据类型约束范围;,2019/12/5,南京理工大学机械工程学院,72,2、数据类型,自定义整数类型用户定义的整数类型是标准包中整数类型的子范围。格式:例:typemy_integerisintegerrange0to15;自定义数组类型数组:同类型元素的集合。VHDL支持多维数组。多维数组的声明:typebyteisarray(7downto0)ofbit;1维8位数组typevectorisarray(3downto0)ofbyte;2维4X8数组,type类型名称isinteger整数范围;,2019/12/5,南京理工大学机械工程学院,73,3、运算操作符,VHDL运算操作符的分类:逻辑运算符(LogicalOperator)关系运算符(RelationalOperator)算术运算符(ArithmeticOperator)并置运算符(OverloadingOperator),2019/12/5,南京理工大学机械工程学院,74,1)逻辑运算符6种:and、or、nand、nor、xor、not要求:操作数类型必须相同。可为如下类型:bit、bit_vector、std_logic、std_logic_vector、boolean数组操作数的维数、大小必须相同。注:当有两个以上的逻辑表达式时,左右没有优先级差别,必须使用括号,如:x=(aandb)or(notcandd),2019/12/5,南京理工大学机械工程学院,75,例外:当逻辑表达式中只有“and”、“or”、“xor”运算符时,可以省略括号。如:a=bandcanddande;a=borcordore;a=bxorcxordxore;,上述逻辑运算在库ieee的程序包std_logic_1164中定义。,2019/12/5,南京理工大学机械工程学院,76,LibraryIEEE,USEIEEE.STD_LOGIC_1164.ALL;,ENTITYlitiIS;,PORT(a,b,c,d:INSTD_LOGIC;,e:outSTD_LOGIC);,ENDliti;,ACHITECTUREAA1OFlitiIS,BEGIN,e=(aandb)ortmp;,Signaltmp:std_logic;,tmp=用于比较相同父类的两个操作数,返回boolean值。在关系运算符中小于等于符“=”和代入符“=”是相同的,在读VHDL语言的语句时,应按照上下文关系来判断此符号到底是关系符还是代入符。,上述运算在库ieee的程序包std_logic_arith中定义。,2019/12/5,南京理工大学机械工程学院,78,ENTITYmy1is,PORT(a,b:inbit_vector(0to3),m:outboolean);,ENDmy1;,ARCHITECTUREa1ofmy1,BEGIN,m=(a=b);,ENDa1;,ENTITYmy1is,PORT(a,b:inbit_vector(0to3),m:outboolean);,ARCHITECTUREa1ofmy1,BEGIN,m=b);,ENDa1;,ENDmy1;,LibraryIEEE,USEIEEE.STD_LOGIC_ARITH.ALL;,2019/12/5,南京理工大学机械工程学院,79,3)算术运算符,VHDL语言中有5类算术运算符,他们分别是:求和操作符:(加)、(减)求积操作符:*(乘)、/(除)、MOD(求模)、REM(取余)符号操作符:(正)、(负)混合操作符:*(指数)、ABS(取绝对值)移位操作符:SLL(逻辑左移)、SRL(逻辑右移)、SLA(算术左移)、SRA(算术右移)、ROL(逻辑循环左移)、ROR逻辑循环右移)只能是bit_vetor类型,上述运算在库ieee的程序包std_logic_arith中定义。,2019/12/5,南京理工大学机械工程学院,80,移位操作语法结构:左操作数必须是bit_vetor类型右操作数必须是integer类型。,SLL逻辑左移:右端空出来的位置填0;SRL逻辑右移:左端空出来的位置填0;SLA算术左移:复制右端位,填充右端空出位置上;SRA算术右移:复制左端位,填充左端空出位置上;,2019/12/5,南京理工大学机械工程学院,81,4)并置运算符SignalB:std_logic_vector(0to3);则这两个信号的属性值分别为:Aleft=7;Aright=0;Alow=0;Ahigh=7;Alength=8;Bleft=0;Bright=3;Blow=0;Bhigh=3;Blength=4;,left表示数组的左边界;right表示数组的右边界;low表示数组的下边界;high表示数组的上边界;length表示数组的长度。,2019/12/5,南京理工大学机械工程学院,85,(2)event属性:event属性,它的值为布尔型,如果刚好有事件发生在该属性所附着的信号上(即信号有变化),则其取值为Ture,否则为False。利用此属性可决定时钟信号的变化情况,即时钟是否发生。,4、数据对象属性,2019/12/5,南京理工大学机械工程学院,86,(2)event属性:例如:时钟边沿表示signalclk:instd_logic;则clkeventandclk=1表示时钟的上升沿。即时钟变化了,且其值为1。clkeventandclk=0表示时钟的下降沿。即时钟变化了,且其值为0。此外,还可利用两个函数来表示时钟的边沿。rising_edge(clk)表示时钟的上升沿falling_edge(clk)表示时钟的下降沿这两个函数分别在库ieee的程序包Std_logic_1164中定义。,4、数据对象属性,2019/12/5,南京理工大学机械工程学院,87,5、VHDL语言词法规则,1)注释为了提高VHDL源程序的可读性,在VHDL中可以写入注释。注释以-开头直到本行末尾的一段文字。在软件中可以看见,敲入-之后,后面字体的颜色就发生改变。注释不是VHDL设计描述的一部分,编译后存入数据库中的信息不包含注释。,注释举例:Q:OUTSTD_LOGIC_VECTOR(11DOWNTO0);-A/D转换数据输出显示(行注释)-SRAM数据写入控制状态机(段注释)WRIT_STATE:PROCESS(clk,rst)-SRAM写入控制状态机时序电路进程,2019/12/5,南京理工大学机械工程学院,88,2)数字数字型文字可以有多种表达方式:可以是十进制数,也可以表示为二进制、八进制或十六进制等为基的数,可以是整数,也可以是含有小数点的浮点数。现举例如下。十进制整数表示法:如012578_456(=78456)2E6在相邻数字之间插入下划线,对十进制数值不产生影响,仅仅是为了提高文字的可读性。允许在数字之前冠以若干个0,但不允许在数字之间存在空格。以基表示的数:用这种方式表示的数由五个部分组成。第一部分,用十进制数标明数值进位的基数;第二部分,数值隔离符号“#”;第三部分,表达的文字;第四部分,指数隔离符号“#”;第五部分,用十进制表示的指数部分,这一部分的数如果为0可以省去不写。如2#111_1011#8#1473#16#A8对以基表示的数而言,相邻数字间插入下划线不影响数值。基的最小数为2,最大数为16,以基表示的数中允许出现A至F的字母,大小写字母意义无区别。,2019/12/5,南京理工大学机械工程学院,89,实数:实数必须带有小数点。如12.00.03.146_741_113.66652.6E2物理量文字:综合器不支持物理量文字的综合。如60s(秒)100m(米)177A(安培),3)字符和字符串字符是用单引号引起来的ASC字符,可以是数值,也可以是符号或字母,如E,e,$,23,A字符串是一维的字符数组,需放在双引号中。有两种类型的字符串:文字字符串和位矢量字符串。文字字符串是用双引号引起来的一串文字。如“FALSE”,“X”,“THISISEND”,2019/12/5,南京理工大学机械工程学院,90,位矢量字符串是被双引号引起来的扩展的数字序列,数字序列前冠以基数说明符。基数符有“B”、“O”、“X”,他们的含义如下。B:二进制基数符号,表示二进制位0或1,在字符串中每一个位表示一个BIT。O:八进制基数符号,在字符串中每一个数代表一个八进制数,即代表一个3位(BIT)的二进制数。X:十六进制基数符号,代表一个十六进制数,即代表一个4位二进制数。例如:B“1011_1111”,O“152”,X“F821”,2019/12/5,南京理工大学机械工程学院,91,4.下标名下标名用于指示数组型变量或信号的某一元素。SIGNALa,b:BIT_VECTOR(0TO3);SIGNALs:INTEGERRANGE0TO2;SIGNALx,y:BIT;x=a(s);y=b(3);上例中,a(s)为一下标语句,s是不可计算的下标名,只能在特定情况下进行综合;b(3)的下标为3,可以进行综合。,返回,2019/12/5,南京理工大学机械工程学院,92,4.4VHDL语言的顺序描述语句,(1)顺序语句每一条语句的执行都是顺序进行的。如同高级编程语言中的命令执行方式,一次一条命令,按书写顺序由上而下执行。(2)顺序语句只能出现在进程和子程序内部。(3)由于顺序语句的次序很重要,因此,顺序语句要与并行语句分割开,这可以通过Process语句来实现。Process语句出现在结构体中,它将其内部的语句进行封装。,顺序语句有三个特点:a.所有语句的执行是顺序进行的;b.每条语句的执行和其所在的位置有关;c.顺序语句的输出不仅依赖于输入,而且还受位置的影响。,2019/12/5,南京理工大学机械工程学院,93,4.4VHDL语言的顺序描述语句,(1)代入语句和延时语句(2)If语句(3)Case语句(4)Null语句(5)Loop语句(6)NEXT和EXIT语句(7)Wait语句(8)Procedure(过程)调用语句,2019/12/5,南京理工大学机械工程学院,94,(1)代入语句和延时语句,代入语句是VHDL语言中进行行为描述的最基本的语句。例如:a=b该语句的功能是a得到b的值。当该语句有效时,现行信号b的值将代入信号a。只要b的值有一个新的变化,那么该语句将被执行。所以,b是该代入语句的一个敏感量。代入语句最普遍的格式为:信号量=敏感信号量表达式例如:z=aNOR(bNANDc);,2019/12/5,南京理工大学机械工程学院,95,(1)代入语句和延时语句,延时语句有两种:惯性延时和传输延时惯性延时:在VHDL语言中,惯性延时是缺省的,即在语句中如果不作特别说明,产生的延时一定是惯性延时。几乎所有器件都存在惯性延时,因此,硬件电路的设计人员为了逼真地仿真硬件电路的实际工作情况,在代入语句中总要加上惯性延时时间的说明。例如:b=aAFTER10ns;惯性延时说明只在行为仿真时有意义,逻辑综合时将被忽略,或者在逻辑综合前必须去掉延时说明。,2019/12/5,南京理工大学机械工程学院,96,(1)代入语句和延时语句,惯性延时:在惯性模型中,系统或器件输出信号要发生变化必须有一段时间的延时,这段延时时间称为系统或器件的惯性或称惯性延时。惯性延时有一个重要特点,即当一个系统或器件,它的输入信号变化周期小于系统或器件的惯性延时时,其输出将保持不变。,2019/12/5,南京理工大学机械工程学院,97,(1)代入语句和延时语句,惯性延时:如有一个门电路,其惯性延时时间为20ns,当该门电路的输入端a输入一个10ns的脉冲信号时,其输出端b的输出仍维持低电平,没有发生变化。对于惯性时间等于20ns的门电路,为使其实现正常的功能,输入信号的变化周期一定要大于20ns。,2019/12/5,南京理工大学机械工程学院,98,(1)代入语句和延时语句,传输延时:在VHDL语言中,传输延时不是缺省的,必须在语句中明确说明。传输延时常用于描述总线延时、连接线的延时及ASIC芯片中的路径延时。对于相同的门电路,用传输延时来代替惯性延时,就可以得到正确的输出结果。也就是说,输出端的信号除延时规定时间外,将完全复现输入端的输入波形,而不管输入波形的形状和宽窄如何。,2019/12/5,南京理工大学机械工程学院,99,(1)代入语句和延时语句,传输延时:具有传输延时的代入语句如下所示:b=TRANSPORTaAFTER20ns语句中“TRANSPORT”是专门用于说明传输延时的前置词,2019/12/5,南京理工大学机械工程学院,100,(2)IF语句,IF语句是根据所指定的条件来确定执行那些语句的,其书写格式通常有3种类型。,第一种:格式IF条件THEN顺序处理语句;ENDIF;,2019/12/5,南京理工大学机械工程学院,101,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdffISPORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff;ARCHITECTUREaOFdffISBEGINprocess(clk)beginif(clkeventandclk=1)thenq=d;endif;endprocess;ENDa;,D触发器,2019/12/5,南京理工大学机械工程学院,102,(2)IF语句,第二种:格式IF条件THEN顺序处理语句;ELSE顺序处理语句;ENDIF;,ENTITYmux21ISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21;ARCHITECTUREoneOFmux21ISBEGINPROCESS(a,b,s)BEGINIF(s=0)THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;,2选1电路,2019/12/5,南京理工大学机械工程学院,103,(2)IF语句,第三种:格式IF条件THEN顺序处理语句;ELSIF条件THEN顺序处理语句;ELSE顺序处理语句;ENDIF;,自上而下逐一判断条件是否成立。若条件成立,则执行相应的顺序语句,并不再判断其它表达式,直接结束IF语句的执行。这种语法格式能够进行优先级的判断,因此各条件表达式中的条件可以重叠。,2019/12/5,南京理工大学机械工程学院,104,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX4ISPORT(input:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025银行挂职面试题目及答案
- 基于PLC的智能交通信号控制设计
- 小学语文三年级教学课程标准细则
- 成都七年级数学期末线段与角专题练习
- 消防安全隐患排查标准及整改报告
- 中学语文月考试题及详细解析
- 制造业数字化质量监控体系
- 物流运输合同模板及合作注意事项
- 音乐学习现状调研及数据分析报告
- 企业薪酬绩效管理规范文档
- 《学困生的转化》主题课件
- 手印鉴定书模板
- DB11T 065-2022 电气防火检测技术规范
- 人教版八年级历史上册第一次月考试题(附答案)第一单元
- 基本不等式课件-高三数学一轮复习
- DL∕T 2568-2022 电力行业数字化审计平台功能构件与技术要求
- 部编人教版《道德与法治》六年级上册第9课《知法守法 依法维权》精美课件(第1课时)
- 消防喷淋系统设计合同范本
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 2024年四川省广安市中考数学试题(含答案逐题解析)
- 山西省太原三十七中2023-2024学年九年级上学期月考物理试卷(10月份)
评论
0/150
提交评论