资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第三章,VHDL,语言程序设计,VHDL,语言的英文全名是,V,ery,H,igh Speed Integrated Circuit Hardware,D,escription,L,anguage,即超高速集成电路硬件描述语言。它是70年代和80年代初,由美国国防部为他们的超高速集成电路,VHSIC,计划提出的硬件描述语言,它支持硬件的设计、综合、验证和测试。1986年3月,,IEEE,开始致力于,VHDL,的标准化工作,讨论,VHDL,语言标准。,IEEE,于1987年12月公布了,VHDL,的标准版本(,IEEE STD 1076/1987);1993,年,VHDL,重新修订,形成新的标准即,IEEE STD 1076-1993)。,什么是,VHDL,语言?,从此以后,美国国防部实施新的技术标准,要求电子系统开发商的合同文件一律采用,VHDL,文档。即第一个官方,VHDL,标准得到推广、实施和普及。,VHDL,语言描述能力极强,覆盖了逻辑设计的诸多领域和层次,并支持众多的硬件模型。设计者的原始描述是非常简练的硬件描述,经过,EDA,工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。,VHDL,有过两个标准:,IEEE Std 1076-1987(called VHDL 1987),IEEE Std 1076-1993(called VHDL 1993),一个完整的,VHDL,设计实例,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY,mux21a,IS,PORT(,a,b,:IN BIT;,s,:IN BIT;,y,:OUT BIT );,END ENTITY,mux21a,;,ARCHITECTURE,one,OF,mux21a,IS,BEGIN,y=a,WHEN,s=0,ELSE,b,;,END ARCHITECTURE,one,;,实体,结构体,mux21a,实体,mux21a,结构体,2选1多路选择器的,VHDL,描述,库,程序包,一、,VHDL,程序的基本结构,一个相对完整的,VHDL,程序(或称为设计实体)具有如下图所示的比较固定的结构,即至少应包括三个基本组成部分:,VHDL,基本结构,1、库、程序包使用说明;,2、实体说明;,3、与实体对应的结构体说明;,VHDL,语言再划分详细一些,通常包含五部分:,1、库(,Library):,专门存放预编译程序包的地方,;,2、包集合(,Package):,存放各个设计模块共享的数据类型、常数和子程序等,;,3、实体(,Entity):,用于描述所设计的系统的外部接口信号或引脚,;,4、构造体(,Architecture):,用于描述系统内部的结构和行为;建立输入和输出之间的关系,;,5、配置(,Configuration):,安装具体元件到实体结构体对,可以被看作是设计的零件清单,;,二、实体语句结构,1.实体说明单元的常用语句结构如下:,ENTITY,实体名,IS,GENERIC(,类属表);,PORT(,端口表);,END ENTITY,实体名;,2类属(,GENERIC),说明语句,类属(,GENERIC),参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分,说明内部电路结构和规模。,类属说明的一般书写格式如下:,GENERIC(,常数名:数据类型:设定值,;常数名:数据类型:=设定值);,【例】,ENTITY MCK IS,GENERIC(,WIDTH,:INTEGER:=16);,PORT(ADD_BUS:OUT STD_LOGIC_VECTOR(,WIDTH,-1 DOWNTO 0);,.,在这里,,GENERIC,语句对实体,MCK,的作为地址总线的端口,ADD_BUS,的数据类型和宽度作了定义,即定义,ADD_BUS,为一个16位的位矢量。,3,PORT,端口说明,由,PORT,引导的端口说明语句是对于一个设计实体界面的说明。实体端口说明的一般书写格式如下:,PORT(,端口名:端口模式 数据类型;,端口名:端口模式 数据类型);,端口名是赋予每个系统引脚的名称,一般用几个英文字母组成,ENTITY,实体名,IS,PORT(,端口名:端口模式 数据类型名;,端口名:端口模式 数据类型名;,端口名:端口模式 数据类型名;,端口名:端口模式 数据类型名;,端口名:端口模式 数据类型名,);,END,实体名;,端口模式:,IEEE 1076,标准包中定义了四种常用的端口模式,各端口模式的功能及符号分别见表,端 口 模 式,端口模式说明(以设计实体为主体),IN,输入,只读模式,将变量或信号信息通过该端口读入,OUT,输出,单向赋值模式,将信号通过该端口输出,BUFFER,具有读功能的输出模式,可以读或写,只能有一个驱动源,INOUT,双向,可以通过该端口读入或写出信息,IN OUT,BUFFER INOUT,数据类型:,STD_LOGIC,STD_LOGIC_VECTOR(7 DOWNTO 0 ),INTEGER,REAL,BIT,BIT_VECTOR(0 TO 7,),【例】,PORT,(,n0,n1,select:IN BIT;,q:OUT BIT;,bus:OUT BIT_VECTOR(7 DOWNTO 0),);,本例中,,n0,n1,select,是输入引脚,属于,BIT,型,,q,是输出引脚,,BIT,型,,bus,是一组8位二进制总线,属于,BIT_VECTOR,LIBRARY IEEE;USE IEEE.STD_LOGIC.1164.ALL;ENTITY mm IS PORT(n0,n1,select:IN STD_LOGIC;Q :OUT STD_LOGIC;Bus :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END mm;,在此例中端口数据类型取自,IEEE,标准库(该库中有数据类型和函数的说明),其中,STD_LOGIC,取值为“0”,“1”,“,X”,和“,Z,”,等,。因为使用了库所以在实体说明前要增加库说明语句。,【例】2输入与门的实体描述。,LIBRARY IEEE;USE IEEE.STD_LOGIC.1164.ALL;ENTITY AND2 IS,GENERIC(RISEW:TIME:=1 ns;,FALLW:TIME:=1 ns);,PORT(A1:IN STD_LOGIC;,A0:IN STD_LOGIC;,Z0:OUT STD_LOGIC);,END ENTITY AND2;,LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY m60 ISPORT (clk:IN std_logic;clear:IN std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0);END m60;,【例】,EITITY,设计时注意点,实体名与文件名要一样,文件存放位置,取名要规范 (实体名、端口信号名),合理确定设计所需的端口信号,三、,ARCHITECTURE,的基本结构,构造体用于描述系统内部的结构和行为,构造体是实体的一个重要部分,每一个实体都有一个或一个以上的构造体。(,对于具有多个结构体的实体,必须用,CONFIGURATION(,配置)语句指明用于综合的结构体和用于仿真的结构体),一个完整的结构体一般由两个基本层次组成:,1、对数据类型、常数、信号、子程序和元件等元素的说明部分。,2、描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句。,1.结构体的一般语句格式,结构体的语句格式如下:,ARCHITECTURE,结构体名,OF,实体名,IS,说明语句;,BEGIN,功能描述语句;,END ARCHITECTURE,结构体名;,2结构体说明语句,结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(,SIGNAL)、,数据类型(,TYPE)、,常数(,CONSTANT)、,元件(,COMPONENT)、,函数(,FUNCTION),和过程(,PROCEDURE),等加以说明的语句。,3功能描述语句结构,功能描述语句结构可以含有五种不同类型的、以并行方式工作的语句结构,而在每一语句结构的内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句。,各语句结构的基本组成和功能分别是:,(1)块语句是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个模块。,(2)进程语句定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。,(3)信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。,(4)子程序调用语句用于调用一个已设计好的子程序。,(5)元件例化语句对其他的设计实体作元件调用说明,并将此元件的端口与其他的元件、信号或高层次实体的界面端口进行连接。,【例】,ENTITY nax IS,PORT(a,b :IN BIT;,s :IN BIT;,y :OUT BIT);,END nax;,ARCHITECTURE dataflow OF nax IS,BEGIN,yset,b=qb,c=q),U2:nand2 PORT MAP(a=reset,b=q,c=qb),END rsff1;,ARCHITECTURE rsff2 OF rs IS,BEGIN,q=NOT(qb AND set);,qb=NOT(q AND reset);,END rsff2,本次课程内容小结:,库、程序包,实体,结构体,配置语句,VHDL,程序结构,PORT,语句,功能描述语句,端口模式、数据类型、语法基本格式(;,begin end,等),
展开阅读全文