您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第七章 VHDL语言
计算机学院:张彦航Zhangyanhang@hit.edu.cn第4章时序电路分析第5章时序电路设计第6章可编程逻辑器件第7章VHDL设计基础第七章VHDL设计基础VHDL的基本语句VHDL的基本知识常见组合电路的VHDL设计常见时序电路的VHDL设计起源:1985年,美国国防部提出计划;1987年成为IEEE1076标准;1993年进一步修订完善;是目前标准化程度最高,适应性最广的HDL语言;VHDLVeryhighspeedintegrationcircuitsHardwareDescriptionLanguage特点:全方位硬件描述—从系统到电路多种描述方式—适应层次化设计数据类型丰富,语法严格清晰串行和并行通用,物理过程清楚与工艺结构无关,可用于各类EDA工具VHDLVHDL从根本上是并发执行的,通常称之为代码,而不是程序。VHDL中只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。VHDL与常规计算机程序的区别几点重要提示VHDL的可综合性问题所有的VHDL描述都可用于仿真,但不是所有的VHDL描述都能用硬件实现。用硬件电路设计思想编写VHDL学好VHDL的关键是充分理解VHDL与硬件电路的关系。VHDL从根本上是并发执行的LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtestISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDtest;ARCHITECTUREbehavoftestISBEGINc=aANDb;ENDbehav;库包实体说明结构体实体说明是一个器件的外部视图,即外部引脚输入输出情况的定义构造体描述了一个器件逻辑功能的实现一个简单的VHDL程序abc§7.1VHDL的基本知识abc§7.1VHDL的基本知识一个简单的VHDL程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtestISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDtest;ARCHITECTUREbehavoftestISBEGINc=aANDb;ENDbehav;实体:VHDL的基本设计单元.一个基本设计单元,简单的可以是一个与门;复杂的可以是一个微处理器或一个系统.但二者基本构成是一致的,都是由实体说明和构造体两部分组成.一个完整的VHDL程序包括:实体构造体库包集合配置功能:类似OS中的目录,使设计者可以共享已编译的设计成果库STD库:包集合“Standard”和“Textio”WORK库:当前工作库IEEE库:标准包集合STD_LOGIC_1164ASIC库:用户自定义库:设计库(隐含打开)资源库(用LIBRARY)1.库分类2.库说明——放在设计单元的最前面LIBRARY库名;USE库名.程序包名.项目名;ALLLIBRARYieee;USEieee.Std_logic_1164.all;包集合1.可编译,是库结构中的一个层次2.单纯地罗列设计中经常用到的信号定义、数据类型、元件语句、函数定义、过程定义等3.用于封装属于多个设计单元分享的信息STD_LOGIC_1164程序包STD_LOGIC_ARITH程序包STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包STANDARD和TEXTIO程序包常用的预定义的程序包配置功能:描述实体与结构体之间的对应关系实体结构体1结构体N配置可以把特定的结构体关联到(指定给)一个确定的实体。例:2:4译码器设计方案1:反相器+3输入与门方案2:单一逻辑门与非门Configurationpg1ofdecodeisForstruc1EndFor;Endpg1;Configurationpg2ofdecodeisForstruc2EndFor;Endpg2;EntitydecodeisPort(…);Enddecode;Architecturestruc1ofdecodeisBegin….Endstruc1;Architecturestruc2ofdecodeisBegin….Endstruc2;Configuration配置名of实体名isFor选配结构体名EndFor;End配置名;配置译码器实体译码器结构体1译码器结构体2§7.1VHDL的基本知识(一)VHDL的实体(二)VHDL的结构体(三)数据对象(四)数据类型(五)VHDL操作符(六)结构体的描述方式实体三要素库声明列出了当前设计中需要用到的所有库文件实体说明(EntityDeclaration)定义了设计单元的输入输出接口信号或引脚结构体(ArchitectureBody)描述了电路要实现的功能(一)VHDL的实体:entityentity实体名isport(端口名{,端口名}:方向数据类型;……端口名{,端口名}:方向数据类型);end实体名;(一)VHDL的实体:entity实体说明的基本格式功能:描述设计单元的输入输出接口信号或引脚要点:以entity实体名is开始;以end实体名;结束实体的主要内容为端口(port)说明,其中主要包括:信号名、信号模式、信号类型libraryieee;useieee.std_logic_1164.all;entitytestisport(a,b:instd_logic;c:outstd_logic);endtest;architecturebehavoftestisbeginc=aandb;endbehav;entity实体名isport(端口名{,端口名}:方向数据类型;……端口名{,端口名}:方向数据类型);end实体名;1.端口(port)说明port(端口名{,端口名}:信号方向数据类型;);port(x,y:INBit;sum:OUTBit;input:INBit_Vector(1TOn);Output:OUTBit);端口命名:英文字母/英文字母加数字VHDL:不区分大小写!实体xyinputsumoutput信号流动的方向(信号模式)in输入out输出inout双向,可入可出buffer双向,可内反馈但该端口只能在实体内赋值,不能外部驱动Inout:既可由VHDL程序内部的信号提供输入,又可由VHDL程序外部的信号提供输入;可定义一般的双向信号,如数据总线Buffer:只能由VHDL程序内部的信号提供输入;可定义设计中的观察量,就像用示波器去观察一样,它可以采集被观察信号的任何变化,而不会在外界给它施加任何输入。Buffer与Inout的区别Buffer与Inout的区别•若构造体内部要使用该信号,则锁存器的输出端必须被说明为Buffer。•一个构造体用Buffer说明输出端口,与其连接的另一个构造体的端口也要用Buffer说明,而OUT没有此限制。2.实体声明例子§7.1VHDL的基本知识(一)VHDL的实体(二)VHDL的结构体(三)数据对象(四)数据类型(五)VHDL操作符(六)结构体的描述方式(二)VHDL的构造体:architecture一个实体可以有多个构造体,分别代表该器件的不同实现方案构造体的基本格式architecture构造体名of实体名is定义说明语句;begin并行处理语句;End构造体名;以各种不同的描述风格表达:信号赋值语句;元件例化语句;进程语句对构造体内部所用信号、常数、数据类型和函数进行定义,但不需要定义信号方向LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtestISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDtest;ARCHITECTUREbehavoftestISBEGINc=aANDb;ENDbehav;abc•构造体是对实体功能的具体描述,一定要跟在实体的后面•通常,先编译实体再编译构造体,如实体需要重新编译,则构造体也需要重新编译构造体的语法要点每个构造体必须属于一个实体除了第一句和begin句外,其余各句均以分号结束在每一部分中,各语句处于并列状态,执行时不分先后次序每条并行语句形成一个电路逻辑单元构造体构造体的三种描述方式数据流描述——信号赋值语句行为描述——进程结构描述——元件例化构造体的三种子结构BLOCK语句结构PROCESS语句结构SUBPROGRAMS语句结构(二)构造体:architecture数据流描述/RTL描述——信号赋值语句行为描述——进程/数学模型结构描述——元件例化/逻辑元件连接1.结构体的三种描述方式1)数据流描述(DataFlowDescription)•以类似于寄存器传输级的方式描述数据的传输和变换。•主要使用并行的信号赋值语句,显式表示该设计单元的行为,隐式表示该设计单元的结构.结构体的描述方式•RTL描述是用于逻辑综合的实体描述方法•与行为描述不同,RTL描述中指定了各个寄存器的时钟,确定了存储单元的复用结构及总线,指定了电路元件之间的连接关系。•RTL数据模型描述的语句与实际寄存器的结构模型之间存在直接的映射关系,程序的描述隐含了电路结构。•在RTL描述中,信号代表了硬件中数据的实际移动方向以及电路的互连关系。1)数据流描述(DataFlowDescription)1.结构体的三种描述方式•由于RTL描述用于逻辑综合,故RTL描述对语句有严格限制:一些难以综合的语句(如信号代入中的延时等)一些抽象的数据类型(如实数、记录、文件等)一些难以综合或不可综合的运算符(如除法/、乘方**等)——都不能在程序中使用1)数据流描述(DataFlowDescription)1.结构体的三种描述方式结构体的描述方式根据电子实体的逻辑表达式或逻辑真值表进行描述程序结构简单,容易进行逻辑综合,综合结果最优化;无法应用于大型设计中;利用信号的赋值方式来描述电路内信号数据的流动情形直接式的信号赋值“=”条件式的信号赋值“when…else”选择式的信号赋值“with…select…when”1)数据流描述(DataFlowDescription)3种信号赋值方式皆为并发性的赋值,没有时间的前后顺序采用寄存器传输(RTL)描述方式例1:2选1数据选择器——ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDmux21a;ARCHITECHUREdataflowOFmux21aISBEGINy=(aANDs)OR(NOTsANDb);ENDdataflow;结构体1)数据流描述(DataFlowDescription)实体back结构体的描述方式1)数据流描述(DataFlowDescription)Y=AandB;Z=(NOTA)and(NOTD)orC;两个信号赋值语句的执行没有所谓的先后顺序对于硬件电路来说,所有的逻辑门在任何时刻都处于执行状态,这是与传统计算机语言的根本不同之处!结构体的描述方式1)数据流描述(DataFlowDescription)例2:4选1多路选择器例:8位比较器的布尔方程RTL描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcomparatorISPORT(a,b:INSTD_LOGIC_VECTOR(7DOWNTO0);c:OUTSTD_LOGIC);ENDcomparator;ARCHITECTURErtlOFcomparatorISBEGINc=NOT(a(0)XORb(0))ANDNOT(a(1)XORb(1))ANDNOT(a(2)XORb(2))ANDNOT(a(3)XORb(3))ANDNOT(a(4)XORb(4))ANDNOT(a(5)XORb(5))ANDNOT(a(6)XORb(6)
本文标题:第七章 VHDL语言
链接地址:https://www.777doc.com/doc-3199608 .html