您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 超高速集成电路硬件描述语言VHDL
超高速集成电路硬件描述语言VHDL概述第一节VHDL语言的基本组成第二节VHDL数据类型和属性第三节VHDL的行为描述第四节VHDL的结构描述小结★设计方法◆传统的电路系统设计方法:纯硬件逻辑设计(试凑法)存在的问题:当系统规模增大,设计工作量大,设计周期长;设计电路的体积大、功耗大、可靠性较低;交流性较差。◆现代电路的设计方法:硬件设计+软件设计从上至下的设计方法出现HardwareDescriptionLanguage,HDL★硬件描述语言◆ABEL◆AHDL◆VerilogHDL◆VHDL美国国防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。1981年提出了一种新的HDL,称之为VHSICHardwareDescriptionLanguage,简称为VHDL。IEEE标准★VHDL语言的主要优点◆是一种多层次的硬件描述语言,覆盖面广,描述能力强。即设计的原始描述可以是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在VHDL的环境下进行。◆VHDL有良好的可读性,即可以被计算机接受,也容易被理解用VHDL书写的原文件,既是程序,又是文档,既是技术人员之间交换信息的文件,又可作为合同签约者之间的文件。◆VHDL本身的生命期长。因为VHDL的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。◆支持大规模设计的分解和已有设计的再利用。一个大规模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。VHDL为设计的分解和设计的再利用提供了有力的支持。◆VHDL已成为IEEE承认的一个工业标准,事实上已成为通用硬件描述语言。★VHDL语言的主要优点第一节VHDL的基本组成VHDL语言参数部分——程序包接口部分—设计实体描述部分—结构体LIBRARYieee;USEieee.std_logic_1164.all;一、参数部分——程序包程序包IEEE标准的标准程序包设计者自身设计的程序包设计中的子程序和公用数据类型的集合。调用数据类型标准程序包的VHDL语言描述放在VHDL程序的最前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。调用程序包语句标准程序包定义程序包二、接口部分—设计实体kxora1b1c1设计实体提供设计模块的公共信息,是VHDL设计电路的最基本部分。VHDL实体的描述方法:ENTITYkxorISPORT(a1,b1:INstd_logic;c1:OUTstd_logic);ENDkxor;调用程序包语句标准程序包定义程序包实体及实体声明语句一个模块中仅有一个设计实体。二、接口部分—设计实体ENTITYkxorISPORT(a1,b1:INstd_logic;ENDkxor;c1:OUTstd_logic);ENTITY、IS、PORT、IN、OUT和END为关键字;ENTITY...END之间表示实体内容;kxor表示实体的名称,即电路的符号名;PORT——端口(引脚)信息关键字,描述了信号的流向;IN——输入模式;OUT——输出模式;std_logic表示信号取值的类型为标准逻辑。ENTITYselISPORT(d0,d1,d2,d3:INBIT;s:ININTEGERRANGE0TO3;out1:OUTBIT);ENDsel;d0d1d2d3sout1sel二、接口部分—设计实体再例:三、描述部分—结构体结构体描述实体硬件的互连关系、数据的传输和变换以及动态行为。一个实体可以对应多个结构体,每个结构体可以代表该硬件的某一方面特性,例如行为特性,结构特性。ARCHITECTUREkxor_arcOFkxorISBEGINc1=(NOTa1ANDb1)OR(a1ANDNOTb1);ENDkxor_arc;调用程序包语句标准程序包定义程序包实体及实体声明语句结构体1结构体2结构体nkxora1b1c1a1b1c1kxora1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1第二节VHDL数据类型和属性VHDL硬件描述语言中涉及到了许多信号,变量和常量,它们用来保持数据。在VHDL中,保持数据的信号,变量和常量称为目标。VHDL是一种非常严格的数据类型化语言,规定每个信号,常量或变量和每个表达式有一个唯一的确定数据类型,每个目标和表达式的数据类型静态地被确定。每一个目标都有一个数据类型来确定目标保持的那一类数据。在表达式中分配数值给目标时的数据类型不可以被混用。在VHDL中目标有三种:信号、变量和常量。信号和变量可以赋予一系列的值,而常量一次仅被分配一个值。信号和变量又有不同,赋予信号的数值要到未来的某个时刻,信号才接受当前的数值;而赋予变量的数值,变量立即接受当前的数值。目标的一般形式如下:目标种类目标,目标...:目标类型:=表达式;第二节VHDL数据类型和属性目标:是一个或多个代表着目标种类的字符串,多个目标时用“,”号分开。目标种类目标,目标...:目标类型:=表达式;目标种类:信号(SIGNAL)、变量(VARIABLE)和常量(CONSTANT)。信号:它表示把元件的端口连接在一起的互连线。变量:用于对暂时数据的局部存储,变量只在进程和子程序内部定义。常量:对某些特定类型数据赋予的一次性数值。表达式:表达式是为了规定目标的初始值,这是缺省部分。目标类型:为了规定目标的特征,VHDL含有很宽范围的数据类型。VHDL除了有基本的数据类型之外,设计者还可以建立自己的数据类型,类型说明部分规定类型名和类型范围,它的一般形式是:VARIABLEa1:INTEGER:=3;TYPE类型名IS类型范围;标量类型、复合类型、子类型、文件类型和寻址类型。标量类型包括所有的简单类型:如整数、实数等;复合类型包括数组和记录;寻址类型在一般编辑语言中等价为指针;文件类型是设计者定义的文件类型为设计者提供说明的文件对象;子类型主要是对现有类型加以限制。VHDL可用数据类型有五类:一、标量数据类型标量数据类型是基本的数据类型,它包括整数类型、实数类型、物理类型和枚举类型。物理类型要提供一个基本单位,然后在这个基本单位上定义多个或零个次级单位,每个次级单位都是基本单位的整数倍。枚举类型在形式上是定义括弧括起来的字符串文字表,一个字符串文字在枚举类型定义中只能出现一次,但允许同样一个字符串文字出现在不同的枚举类型的字符串文字表中,枚举类型的字符串文字表中的文字是由设计者定义的,这些字母可以是单个字母,也可以是一个字符串,例如BREAKFAST,Lunch,a等。下面举一个VHDL程序加深理解枚举类型的使用。一个目标的数值有可能经常更换或者说是包含多个值,但一个目标一次只能被一种类型说明。PACKAGEmeals_pkgISTYPEmealIS(breakfast,lunch,dinner);ENDmeals_pkg;例1:USEwork.meals_pkg.all;ARCHITECTUREmeals_arcOFmealsISBEGINWITHprevious_mealSELECTnext_meal=breakfastWHENdinner,lunchWHENbreakfast,dinnerWHENlunch;ENDmeals_arc;自定义程序包的名字枚举数据类型的名字三个枚举数据ENTITYmealsISPORT(previous_meal:INmeal;next_meal:OUTmeal);ENDmeals;调用自定义程序包mealsnextprevious枚举型数据二、复合数据类型复合类型是由数组类型和记录类型组成,它们的元素是标量类型的元素。数组类型是由相同的标量元素组成,即同构复合类型,数组可以是一维二维或多维。例如TYPEmatrixISARRAY(row,column)OFstd_logic;TYPEr_maISARRAY(1TO10,1TO40)OFstd_logic;TYPEwordISARRAY(15DOWNTO0)OFBIT;TYPEcolumnISRANGE1TO40;TYPErowISRANGE1TO10;CONSTANTROM:BIT_VECTOR(0TO15);Word(15)…word(0)共16个同数据类型的元素。ARCHITECTURErom_arcOFromISBEGINPROCESS(cs,x1,x2,x3,x4)VARIABLEn:NATURALRANGE0TO15;CONSTANTrom0:std_logic_vector(0TO15):=“0101010101010101”;CONSTANTrom1:std_logic_vector(0TO15):=“0011001100110011”;CONSTANTrom2:std_logic_vector(0TO15):=“0000111100001111”;CONSTANTrom3:std_logic_vector(0TO15):=“0000000011111111”;下面举一个VHDL程序说明一维数组实现16×4的ROM。LIBRARYieee;USEieee.std_logic_1164.all;ENTITYromISPORT(cs,x1,x2,x3,x4:INstd_logic;d0,d1,d2,d3:OUTstd_logic);ENDrom;romcsx1x2x3x4d0d1d2d3rom0(0)=0rom0(15)=1BEGINIFcs=‘1’THENn:=0;IFx1=‘1’THENn:=n+1;ENDIF;IFx2=‘1’THENn:=n+2;ENDIF;IFx3=‘1’THENn:=n+4;ENDIF;IFx4=‘1’THENn:=n+8;ENDIF;d0=rom0(n)AFTER10ns;d1=rom1(n)AFTER10ns;d2=rom2(n)AFTER10ns;d3=rom3(n)AFTER10ns;ELSEd0=‘Z’AFTER10ns;d1=‘Z’AFTER10ns;d2=‘Z’AFTER10ns;d3=‘Z’AFTER10ns;ENDIF;ENDPROCESS;ENDrom_arc;用计算n来定位地址。将地址n中的4位数据送到输出d0~d3。如果芯片不使能,则将高阻送到输出d0~d3。在结构体说明区(ARCHITECTURE和BEGIN之间)被说明的目标,仅可以在此结构体中引用或在结构体中的任何进程语句中被引用,称此目标为局部信号。数据类型的全局化和局部化前面已经讨论VHDL描述语言的组成是由程序包、实体、结构体(结构体中有进程)、以及子程序而组成,不同的目标可以在指定的组成部分内加以说明。如果一个目标在实体说明部分被说明,那么在本实体和本实体内部的任何结构体和任何进程中都可以引用这个目标,称为全局信号。标量类型:实体、结构体、进程说明区和程序包和子程序。复合类型:实体、结构体、进程说明区和程序包和子程序。文件类型:子程序和进程说明区。寻址类型:进程语句说明区。VHDL中不同的目标和类型规定在不同的构造中可以被说明。信号:实体、结构体说明区、程序包和子程序。变量:进程说明区和子程序。常量:实体、结构体、进程说明区、程序包和子程序。VHDL的属性VHDL中的属性使得VHDL程序更加简明扼要,更加容易理解,VHDL的属性在时序程序中几乎处处可见,如值类属性的左边界、右边界、上下边界以及值类属
本文标题:超高速集成电路硬件描述语言VHDL
链接地址:https://www.777doc.com/doc-6379875 .html