微机原理与接口技术第三章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章硬件描述语言VHDL的基本框架介绍3.1概述3.1.1硬件描述语言的简介3.1.2VHDL与高级语言的联系与区别3.2VHDL的基本结构3.2.1实体说明3.2.2结构体(构造体)3.2.3库、程序包及配置3.3VHDL语言要素3.3.1数据对象3.3.2数据类型3.3.3基本运算符3.3.4属性3.4VHDL语言的结构体描述方式3.4.1行为(BEHAVIOR)描述方式3.4.2数据流(DATAFLOW)描述方式3.4.3结构化描述方式3.1概述3.1.1硬件描述语言的简介硬件描述语言(HardwareDescriptionLanguage,HDL)是利用计算机工具,利用数学模型来描述硬件电路的功能、信号连接关系及信号时序关系的语言,以达到设计硬件电路的目的。属于EDA的范畴。常用硬件描述语言:•VHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage(超高速集成电路硬件描述语言)•VerilogHDL•ABEL-HDLVHDL发展过程1982年美国国防部提出;1987年底被IEEE和美国国防部确认为标准硬件描述语言,各EDA公司相继推出支持VHDL的设计环境;1993年,IEEE对VHDL进行了修订,进一步提高抽象描述层次,扩展系统描述能力;1995年,我国国家技术监督局制定的《CAD通用技术规范》推荐VHDL作为我国电子设计自动化硬件描述语言的国家规范。3.1.2VHDL与高级语言的联系与区别1.VHDL语言的特点1)具有强大的电路描述能力和综合功能2)具有设计仿真与验证功能3)具有层次结构性4)设计具有共享和复用的能力5)具有独立于器件的能力6)VHDL与数字逻辑电路、微机原理、信号处理等课程具有密切的关系1)电路描述能力——综合功能既可以描述组合逻辑电路和时序逻辑电路等门级的电路,也可用来描述如计算机系统等系统级电路。在描述方式上,既可以寄存器传输描述或者结构描述,也采用行为描述,其中行为描述从逻辑行为上描述和设计电子系统,可以极大地提高电路设计的效率。VHDL代码经过一种称之为综合器的EDA(电子设计自动化)软件工具转换后可以生成数字系统中的电路模型,这个转化过程也就是综合的过程。2)具有设计仿真与验证功能VHDL还含有丰富的仿真语句。利用仿真功能,设计者可以在系统设计的早期进行系统功能特性的仿真模拟,对整个工程设计的结构和功能可行性做出决策,还可以对生成的电路模型做仿真模拟,以检查设计的正确性。功能仿真(functionsimulate);时序仿真(timersimulate)。有些语句既可以用于仿真模拟,也可以被综合成电路模型。也有些只用于仿真模拟3)具有层次结构性VHDL程序在结构的一个特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部和内部两部分。对一个设计实体定义后,其他的工程设计中就可以直接调用这个实体。4)设计具有共享和复用的能力VHDL采用基于库的设计方法。库中可以存放大量预先设计或者以前设计项目中曾经设计的模块,在新项目设计中复用这些功能模块。与C语言一样,VHDL提供了大量的标准库函数可供使用。一些组织、公司提供各种称之为IP核(知识产权内核)的商业电路模块可供开发者使用。利用这些IP核,可提高设计效率。由于VHDL是一种语言,设计成果在各个设计人员之间进行交流和共享。5)具有独立于器件的能力VHDL设计的描述具有相对独立性,与硬件的结构无关,也不必关心最终设计的目标器件工艺是什么。VHDL设计程序的硬件实现目标有广泛的选择范围,其中包括各系列的CPLD、FPGA及各种门阵列实现目标。该特点有利于把设计的电路移植在不同的器件上。虽然综合器具有强大的电路优化功能,还可以支持对行为描述的综合,这些功能都极大地简化了设计,提高了设计效率。但并没有降低对设计者对电路基础的专业知识要求。正好相反,由于设计效率的提高,设计电路规模也随之增大,这要求设计者具有更高的电路专业知识。6)VHDL与数字逻辑电路、微机原理、信号处理等课程具有密切的关系2.VHDL语言与高级语言的联系与区别相似点:1)VHDL语句与C中的语句类似2)VHDL结构上也与C语言类似3)VHDL在诸多语言要素上也与C语言类似4)VHDL中的实体(ENTITY)与C++中的类(CLASS)概念类似5)VHDL中的进程(PROCESS)也是派生类6)VHDL中的端口概念可以映射为C++中的函数参量,类属则可以映射为函数的默认参量7)VHDL的层次设计与C++中的成员类对象对应2.VHDL语言与高级语言的联系与区别1)VHDL和C语言在语句方面的差异说明语句执行语句运行时间2)二者本质不同VHDL:描述电路功能C:描述数据处理流程3)VHDL语言中具有许多与数字电路的结构直接相关的概念数据对象:信号:信号属性(上升沿和下降沿)数据类型:表示时间信息的物理类型表示电路逻辑状态的数据类型元件:实现电路系统的层次设计3.2VHDL的基本结构图3-1VHDL的基本结构图库、程序包使用说明配置(CONFIGURATION)结构体(ARCHITECTURE)实体(ENTITY)PORT端口说明结构体说明GENERIC类属说明体实计设结构体功能描述【例】用VHDL语言描述16进制计数器。1LIBRARYIEEE;2USEIEEE.STD_LOGIC_1164.ALL;3USEIEEE.STD_LOGIC_UNSIGNED.ALL;4ENTITYcounter16is5GENERIC(n:INTEGER:=4);6PORT(clk:INSTD_LOGIC;--时钟输入端7co:OUTSTD_LOGIC;--进位输出端8q:OUTSTD_LOGIC_VECTOR(n-1DOWNTO0));9ENDcounter16;库和包说明部分实体说明部分对于VHDL,不区分大小写字母结构体部分10ARCHITECTUREbehOFcounter16IS11CONSTANTt:STD_LOGIC_VECTOR(n-1DOWNTO0):=(OTHERS='1');12SIGNALq_temp:STD_LOGIC_VECTOR(n-1DOWNTO0);BEGINPROCESS(clk,q_temp)--进程语句BEGINIF(clk'EVENTANDclk='1')THENIFq_temp=tTHENq_temp=(OTHERS='0');co='1';ELSEq_temp=q_temp+1;co='0';ENDIF;ENDIF;ENDPROCESS;q=q_temp;ENDbeh;一个设计实体,有可能对应多个结构体说明部分3.2.1实体说明实体是VHDL程序设计中必要的组成部分,也称为实体说明。主要用来描述实体的外部特性和外部接口信号,定义设计文件的输入/输出信号,是设计实体对外的一个通信界面,但它并不描述设计的具体功能。实体说明的语法结构为:ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]END实体名;实体说明及其外部接口信号关系3.2.1实体说明1.实体名实体具体取名由设计者自定,但由于实体名实际上表达的是该设计电路的器件名,所以最好根据相应电路的功能来取定。例:counter16实体名的命名要满足VHDL语言定义标识符的规则。①第一个字符必须是字母;②字母不区分大小写;③下划线不能连用;④最后一个字符不能是下划线。VHDL的保留字不能用作标识符使用。在程序设计过程中,要求实体名与存储的文件名一致。3.2.1实体说明2.类属参数说明语句(GENERIC)类属参数说明语句必须放在端口说明语句之前,是可选项,用于指定如数据总线宽度、器件延时时间等参数。类属参数与C语言中的宏定义参数相似,类属参数的使用对代码移植和IP(知识产权)核的设计具有重要意义。类属参数说明语句的语法结构为:GENERIC(常数名:数据类型[:=设定值];…常数名:数据类型[:=设定值]);3.2.1实体说明GENERIC(trise,tfall:TIME:=1ns;Addwidth:INTEGER:=16);这里类属参数说明中参数为trise上升沿宽度、tfall为下降沿宽度,用于仿真模块的设计;定义地址总线的宽度Addwidth为16位。类属值Addwidth的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。3.2.1实体说明3.端口(PORT)说明语句端口说明语句指明实体的输入/输出信号及其模式。端口说明语句的语法结构为:PORT(端口名:端口模式数据类型;…端口名:端口模式数据类型);1)端口名端口名对应于元件符号的每个外部引脚的名称,一般由英文字母组成。名字的定义有一定的惯例,如clk表示时钟,d开头的端口名表示数据,a开头的端口名表示地址等。2)端口模式端口模式也称端口方向,用来定义外部引脚上的数据的流动方向和方式,即定义外部引脚是输入还是输出。表3-14种常用端口模式的功能端口模式端口模式说明IN输入模式,仅允许信号经端口从实体外部输入到实体内部。OUT输出模式,仅允许信号从实体内部输出。INOUT输入/输出双向模式,信号即可以进入实体内部,也可以从实体内部输出。该模式的输出缓冲器是三态控制的,输入输出分时使用的。BUFFER缓冲模式,与OUT类似可作为输出使用,但也可把输出的信号作为输入使用。比如计数器和累加器电路INOUTINOUTBUFFER2)端口模式inout的典型结构:多用于数据总线的设计,节省引脚数目!EN1ENG1EN1ENG2BA1工作B=A传输结果ENG1G20A=B高阻态工作高阻态工作原理2)端口模式BUFEER与OUT的区别:如果构造体内部要使用某端口信号,那么该端口的模式必须说明为BUFFER,而不能说明为OUT。另外,当一个构造体用BUFFER说明输出端口时,与其连接的另一个构造体的端口也要用BUFFER说明,而对OUT则没有这样的要求。dclkqOUTdclkqBUFFER&ININININ3)端口数据类型常见的数据类型有多种,如BIT、BIT_VECTOR、BOOLEAN、INTEGER、STD_LOGIC、STD_LOGIC_VECTOR等。建议:端口数据类型只使用BIT、BIT_VECTOR、STD_LOGIC、STD_LOGIC_VECTOR等具有电路特性的类型,而不使用BOOLEAN、INTEGER等数学意义明显的类型。VHDL是一种强类型语言,因此,只有同类型的数据才能进行通信。3.2.2结构体(构造体)结构体的作用是描述设计实体的逻辑功能或内部电路结构,从而建立设计实体输出与输入之间的关系。一个设计实体可以有多个结构体,但每个结构体的取名不能重复。构造体的语法结构为:ARCHITECTURE结构体名OF实体名IS[说明语句;]BEGIN[并行语句;]END结构体名;3.2.2结构体(构造体)1.结构体的命名结构体名称是对本结构体的命名,它是该结构体的唯一名称。(beh,rtl或dataf,str)2.结构体中的说明语句定义该结构体内部用到的信号、常数、元件、函数和过程;对信号的定义和实体的端口说明一样,有名称和数据类型,不用说明信号方向。注意说明语句的位置应该放在构造体的BEGIN…END之前。ARCHITECTURErtlofex2is--ai,bi为结构体内的连接信号BEGINai=a;bi=b;y=(aiANDbi);z=(aiORbi);x=‘1’;ENDrtl;【例】结构体说明语句的举例注:同一实体的结构体不能同名。定义语句中的常数、信号不能与实体中的端口同名。3.2.2结构体(构造体)3.结构体中的功能描述语句——并行语句结构体的主体是放在结构体的BEGIN和END之间的若干并行语句,这些语句共同描述了一个完整的电路功能。对于简单的电

1 / 70
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功