第5章 VHDL语言基础

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

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

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

资源描述

第5章VHDL语言基础--本章概述本章详细介绍了VHDL语言的基本结构、VHDL语言要素、VHDL语言语句的原理和设计方法。VHDL语言是整个EDA设计中最核心的内容之一。读者必须熟练的掌握VHDL语言,并且通过实验掌握使用VHDL语言对可编程逻辑器件进行编程的方法和技巧。2传统的电路系统设计方法的步骤从状态图的简化,写出最简逻辑表达式,到绘出电路原理图。这在不是较大的电路系统中,工程师可以用一定的时间,了解电路的原理。若电路系统非常庞大,工程师就不容易在电路原理图上了解电路的原理,而且对绘图者也是一项非常烦琐的工作。因此众多软件公司开发研制了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,HDL),这些硬件描述语言必然有很大的差异,工程师一旦选用某种硬件描述语言作为输入工具,就被束缚在这个硬件设计环境之中,不能在众多的软件工具中选择一个最佳组合作为自己的最优设计环境。因此,硬件设计工程师需要一种强大的、标准化的硬件描述语言,作为可相互交流的设计环境。3美国国防部在20世纪80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。1981年提出了一种新的HDL,称之为VHSICHardwareDescriptionLanguage,简称为VHDL,这种语言的成就有两个方面:1.描述复杂的电路系统;2.VHDL成为硬件描述语言的标准。4VHDL的主要优点是:1.覆盖面广,描述能力强,是一个多层次的硬件描述语言。即设计的原始描述可以是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在VHDL的环境下进行。2.VHDL有良好的可读性,即可以被计算机接受,也容易被理解。用VHDL书写的原文件,即是程序,又是文档,即是技术人员之间交换信息的文件,又可作为合同签约者之间的文件。3.VHDL本身的生命期长,因为VHDL的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。54.支持大规模设计的分解和已有设计的再利用,一个大规模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。VHDL为设计的分解和设计的再利用提供了有力的支持。VHDL的主要优点是:5.VHDL已成为IEEE承认的一个工业标准,事实上已成为通用硬件描述语言。6§5.1VHDL程序结构一个完整的VHDL程序包含实体(entity)、结构体(architecture)、配置(configuration)、包集合(package)、库(library)5个部分。实体主要是用于描述和外部设备的接口信号;结构体用于描述系统的具体逻辑行为功能;包存放设计使用到的公共的数据类型、常数和子程序等;配置用来从库中选择所需单元来组成系统设计的不同版本;库存放已经编译的实体、结构体、包集合和配置等。7库、程序包实体(Entity)结构体(Architecture)进程或其它并行结构配置(Configuration)VHDL语言基础--VHDL程序结构左图表明了一个完整的VHDL程序所应该包含的部分。8VHDL的基本组成VHDL可以把任意复杂的电路系统视作一个模块,一个模块可主要分为三个组成部分:每个模块中的程序包有IEEE标准的标准程序包或设计者自身设计的程序包,而且调用的数量不限。模块中的程序包是设计中的子程序和公用数据类型的集合,是构成设计工具的工具箱,工具箱中最基本的工具是数据类型包,调用此标准程序包的VHDL语言是:一、参数部分——程序包9例1:LIBRARYieee;USEieee.std_logic_1164.all;调用程序包语句标准程序包定义程序包这两句设置在VHDL程序的前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。10模块中仅有一个设计实体,它提供该设计模块的公共信息,是VHDL设计电路的最基本部分。VHDL设计的电路系统是可以分层次的,所以设计的模块系统实体即可以是顶层实体,又可以是最底层实体。二、接口部分—设计实体:调用程序包语句标准程序包定义程序包实体及实体声明语句ENTITYkxorISkxorPORT(a1,b1:INstd_logic;a1b1c1:OUTstd_logic);c1ENDkxor;例211实体部分的大写单词ENTITY、IS、PORT、IN、OUT和END为关键字。在ENTITY...END之间表示实体内容,ENTITY后的字符串kxor表示实体的名称,即电路的符号名。端口(引脚)信息关键字PORT中的语句有三个端口,描述了信号的流向,分别是两个输入(IN)模式a1和b1,一个是输出(OUT)模式c1,端口信息除了输入输出之外,还可以是双向、缓冲器等。std_logic表示信号取值的类型为标准逻辑位,除了标准逻辑位之外,还可以是实数、整数、无符号数、物理以及以上数据类型组成的记录和数组集合,信号类型也可以是设计者定义。12三、描述部分—结构体:当异或门的符号和外部端口a1、b1和c1确定之后,就要确定实体的内部电路,使之与实体相对应。电路描述部分称之为结构体ARCHITECTURE,它描述实体硬件的互连关系、数据的传输和变换以及动态行为。一个实体可以对应多个结构体,每个结构体可以代表该硬件的某一方面特性,例如行为特性,结构特性。调用程序包语句标准程序包定义程序包实体及实体声明语句结构体1结构体2结构体nARCHITECTUREkxor_arcOFkxorIS例3BEGINc1=(NOTa1ANDb1)OR(a1ANDNOTb1);ENDkxor_arc;13kxora1b1c1a1b1c114实体由类属说明和端口说明两个部分组成。根据IEEE标准,实体组织的一般格式为:ENTITYentity_nameISGenericDeclarationsPortDeclarationsENDentity_name;(1076-1987version)ENDENTITYentity_name;(1076-1993version)VHDL语言基础—VHDL实体15类属参量是一种端口界面常数,在所定义的环境中的地位与常数相似,但却能从环境外部动态的接受赋值。模块化设计时多用于不同层次模块之间信息的传递。可从外部改变内电路结构和规模。类属说明必须放在端口说明之前。generic(generic_name:type:=valueothergenerics...);VHDL语言基础—类属说明16类属常用于定义:实体端口的大小、设计实体的物理特性、总线宽度、元件例化的数量等。例:entitymckisgeneric(width:integer:=16);port(add_bus:outstd_logic_vector(width-1downto0));…VHDL语言基础—类属说明17VHDL语言基础—端口说明定义实体的一组端口称作端口说明(portdeclaration)。端口说明是对设计实体与外部接口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路图符号的一个引脚。实体说明中的每一个I/O信号被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以当作变量用在逻辑表达式中。18语法格式:Port(端口名称{,端口名称}:端口模式数据类型;…端口名称{,端口名称}:端口模式数据类型);其中,端口模式:in:输入型,此端口为只读型。out:输出型,只能在实体内部对其赋值。inout:输入输出型,既可读也可赋值。buffer:缓冲型,与out相似,但可读。VHDL语言基础—端口说明19VHDL语言基础—端口说明(1)输入模式(in)输入模式仅允许数据流入端口。输入模式主要用于时钟输入、控制输入(如Load、Reset、Enable、CLK)和单向的数据输入,如地址信号(address)。20VHDL语言基础—端口说明(2)输出模式(out)输出仅允许数据流从实体内部输出。如图3.2左图所示。输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看作可读的。输出模式常用于计数输出、单向数据输出、设计实体产生的控制其他实体的信号等。21VHDL语言基础—端口说明(3)缓冲模式(buffer)缓冲模式的端口与输出模式的端口类似,只是缓冲模式允许内部引用该端口的信号。缓冲端口既能用于输出,也能用于反馈。缓冲端口的驱动源可以是:设计实体的内部信号源;其他实体的缓冲端口。缓冲不允许多重驱动,不与其他实体的双向端口和输出端口相连。22VHDL语言基础—端口说明……内部逻辑DQCLK内部逻辑图3.2OUT和BUFFER的区别……23VHDL语言基础—端口说明(4)双向模式(inout)双向模式可以代替输入模式、输出模式和缓冲模式。在设计实体的数据流中,有些数据是双向的,数据可以流入该设计实体,也有数据从设计实体流出,这时需要将端口模式设计为双向端口。双向模式的端口允许引入内部反馈,所以双向模式端口还可以作为缓冲模式用。由上述分析可见,双向端口是一个完备的端口模式。24VHDL语言基础—数据类型端口说明除了定义端口标识名称、端口定义外,还要标明出入端口的数据类型。由IEEEstd_logic_1164所约定的、由EDA工具支持和提供的数据类型为标准逻辑(standardlogic)类型。标准、逻辑类型也分为布尔型、位型、位矢量型和整数型。为了使EDA工具的仿真、综合软件能够处理这些逻辑类型,这些标准库必须在实体中声明或在USE语句中调用。25VHDL语言基础—实体举例【例5-1】下面给出一个关于8位计数器的实体说明entitycounterisgeneric(byte:integer:=8);port(clk:instd_logic;rst:instd_logic;counter:outstd_logic_vector(byte-1downto0));endcounter;VHDL语言基础—结构体结构体具体指明了该设计实体的行为,定义了该设计实体的逻辑功能和行为,规定了该设计实体的内部模块及其内部模块的连接关系。VHDL对构造体的描述通常有三种方式进行描述:行为描述、寄存器传输描述和结构描述,VHDL语言基础—结构体一个结构体的VHDL的描述为:architecturearch_nameofentity_nameis--declarative_items(signaldeclarations,componentdeclarations,etc.)begin--architecturebodyendarch_name;VHDL语言基础—结构体其中:arch_name为结构体的名字;entity_name为实体的名字。结构体的begin开始的前面部分为声明项(declarative_items),通常是对设计内部的信号或者元件进行声明;而begin后面一直到结构体的结束,该部分是对实体行为和功能的具体的描述。该部分的描述是由顺序语句和并发语句完成的。VHDL语言基础—结构体内信号定义由结构体的书写格式知道,在关键字ARCHITECTURE和BEGIN之间的部分,用于对结构内部使用的信号、常数、数据类型、函数进行定义。特别需要注意的是,这些声明用于结构体内部,而不能用于实体内部,因为一个实体中可能有几个结构体相对应。另外,实体说明中定义I/O信号为外部信号,而结构体定义的信号为内部信号。结构体的信号定义和实体的端口说明一样,应有信号名称和数据类型定义,但不需要定义信号模式(mode),(见书上例5-2)。不需要说明信号方向,因为这些结构体的内部信号是用来描述结构体内部的连接关系。VHDL语言基础—结构体内并行语句并行处理语句是结构体描述的主要语句,并行处理语句在be

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

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

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

×
保存成功