VHDL基本结构_第1页
VHDL基本结构_第2页
VHDL基本结构_第3页
VHDL基本结构_第4页
VHDL基本结构_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、YANGTZE NORMAL UNIVERSITY第一章第一章 VHDLVHDL基本结构基本结构 1.1 实体实体1.2 结构体结构体1.3 块、子程序和进程块、子程序和进程 1.4 库和程序包库和程序包 1.5 配置配置 YANGTZE NORMAL UNIVERSITY 一个完整的一个完整的VHDL程序,或者说设计实体,通程序,或者说设计实体,通常要求最低能为常要求最低能为VHDL综合器所支持,并能作为综合器所支持,并能作为一个独立的设计单元,即元件的形式而存在的一个独立的设计单元,即元件的形式而存在的VHDL程序。在程序。在VHDL程序中,通常包含实体程序中,通常包含实体(ENTITY)

2、、结构体()、结构体(ARCHITECTURE)、)、配置(配置(CONFIGURATION)、包集合)、包集合(PACKAGE)和库()和库(LIBRARY)5个部分。其个部分。其中中实体和结构体这两个基本结构是必需的实体和结构体这两个基本结构是必需的,他们,他们可以构成最简单的可以构成最简单的VHDL程序。程序。 YANGTZE NORMAL UNIVERSITY 1.1 实体实体 设计实体设计实体是是VHDL语言设计的基本单元,简单语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或的可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的,都是一个数字

3、系统,其结构基本是一致的,都是由由实体实体说明和结构体两部分组成说明和结构体两部分组成。实体说明是对这个设计实体说明是对这个设计实体与外部电路进行接口的描述实体与外部电路进行接口的描述,它规定了设计单,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。一个通信界面。结构体用于描述此设计实体的逻辑结构体用于描述此设计实体的逻辑结构和逻辑功能。结构和逻辑功能。 YANGTZE NORMAL UNIVERSITY实体语句结构如下:实体语句结构如下:ENTITY 实体名实体名 IS GENERIC(类属表);(类属表); PORT(端口

4、表);(端口表);END ENTITY 实体名;实体名; 例:例:ENTITY or2 IS PORT(a,b:IN STD_LOGIC; C: OUT STD_LOGIC); END ENTITY or2; YANGTZE NORMAL UNIVERSITY 注意:注意:实体应以语句实体应以语句“ENTITY 实体名实体名 IS”开始,语开始,语句句“END ENTITY 实体名;实体名;”结束。结束。 在层次化系统设计中,实体说明是整个模块或整个系在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(统的输入输出(I/O)接口;在一个器件级的设计中,实)接口;在一个器件级的设计中,实

5、体说明是一个芯片的输入输出(体说明是一个芯片的输入输出(I/O)。)。1.1.11.1.1类属参量类属参量(GENERIC)类属参量是实体说明组织中的可选项,放在端口说明之前,类属参量是实体说明组织中的可选项,放在端口说明之前,其一般格式为:其一般格式为:GENERIC CONSTANT 名字表:名字表:IN 子类型标识子类型标识 := 静静态表达式态表达式, YANGTZE NORMAL UNIVERSITY 类属参量是一种端口界面常数,常用来规定端口类属参量是一种端口界面常数,常用来规定端口的大小、实体中子元件的数目及实体的定时特性等。的大小、实体中子元件的数目及实体的定时特性等。它和常数

6、不同,常数只能从设计实体的内部得到赋值它和常数不同,常数只能从设计实体的内部得到赋值且不能改变,而类属参量的值可由设计实体的外部提且不能改变,而类属参量的值可由设计实体的外部提供。因此设计者可以从外面通过类属参量的重新设定供。因此设计者可以从外面通过类属参量的重新设定而容易的改变一个设计实体或一个元件的内部电路结而容易的改变一个设计实体或一个元件的内部电路结构和规模。构和规模。YANGTZE NORMAL UNIVERSITY例:例:GENERIC (trise,tfall:TIME:=1ns; Addrwidth:INTEGER:=16);PORT(a0, a1 : IN STD_LOGIC

7、; Add_bus:OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0); 这里类属参量中参数这里类属参量中参数trise为上升沿宽度,为上升沿宽度,tfall为下为下降沿宽度,用于仿真模块的设计;定义地址总线的宽降沿宽度,用于仿真模块的设计;定义地址总线的宽度为度为Addrwidth位,类属值位,类属值Addrwidth的改变将使结构的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计体中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。实体的硬件结构发生变化。 YANGTZE NORMAL UNIVERSITY1.1.2 端口说明端口

8、说明(PORT) 端口为设计实体和其外部环境提供动态通信的通道,端口为设计实体和其外部环境提供动态通信的通道,是对基本设计单元与外部接口的描述,其功能相当电路图是对基本设计单元与外部接口的描述,其功能相当电路图符号的外部引脚。端口可以被赋值,也可以当做逻辑变量符号的外部引脚。端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。用在逻辑表达式中。其一般书写格式为:其一般书写格式为:PORT (端口名(端口名 :端口模式:端口模式 数据类型;数据类型; 端口名端口名 :端口模式:端口模式 数据类型;数据类型; );); YANGTZE NORMAL UNIVERSITY 其中端口名是设计者为实体的

9、每一个对外通道所取的其中端口名是设计者为实体的每一个对外通道所取的名字,通常为名字,通常为英文字母加数字英文字母加数字,名字的定义有一定的,名字的定义有一定的惯例,惯例,如如clk 表示时钟,表示时钟,D开头的端口名表示数据,开头的端口名表示数据,A开头的端口开头的端口名表示地址。端口模式名表示地址。端口模式是指这些通道上的数据流动的方式,是指这些通道上的数据流动的方式,如如输入或输出输入或输出等。等。 端口模式有以下几种类型:端口模式有以下几种类型: 1输入(输入(IN) 允许信号进入实体,主要用于时钟输入、控制输入(如允许信号进入实体,主要用于时钟输入、控制输入(如load、reset、e

10、nable、clk)和单向的数据输入(如地址数)和单向的数据输入(如地址数据信号据信号address)等。)等。 YANGTZE NORMAL UNIVERSITY2输出(输出(OUT) 输出模式只允许信号离开实体,常用于计数输出、单向输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信号等。注意:数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。实体内不能看做是可读的。 3双向模式(双向模式(INOUT)双向模式允许信号双向

11、传输(既可以进入实体,也可以离开双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。实体),双向模式端口允许引入内部反馈。 YANGTZE NORMAL UNIVERSITY4缓冲(缓冲(BUFFER) 缓冲模式允许信号输出到实体外部,但同时也可以在实体内部缓冲模式允许信号输出到实体外部,但同时也可以在实体内部引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出、模式用于在实体内部建立一个可读的输出端口,例如计数器输出、计数器的现态用来决定计

12、数器的次态。计数器的现态用来决定计数器的次态。 端口模式可用图下说明,图中方框代表一个设计实体或模块。端口模式可用图下说明,图中方框代表一个设计实体或模块。 INOUTINOUTBUFFERYANGTZE NORMAL UNIVERSITY 在在VHDL设计中,通常将设计中,通常将输入信号输入信号端口指定为端口指定为输输入模式入模式,输出信号输出信号端口指定为端口指定为输出模式输出模式,而双向数,而双向数据通信信号,如计算机据通信信号,如计算机PCI总线的总线的地址地址/数据复用总数据复用总线线,DMA控制器控制器数据总线数据总线等纯双向的信号采用等纯双向的信号采用双向双向端口模式端口模式。从

13、端口的名称、模式就能一目了然地指。从端口的名称、模式就能一目了然地指导信号的用途、性质、来源和去向。导信号的用途、性质、来源和去向。 YANGTZE NORMAL UNIVERSITY 1.2 结构体结构体 结构体也叫构造体,结构体描述了基本设计单元(实体)结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它的结构、行为、元件及内部连接关系,也就是说它定义了设定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系部元件的连接关系。结构体对其基本设计单元的输入和输出。结构体对其基本

14、设计单元的输入和输出关系可用以下关系可用以下三种方式进行描述三种方式进行描述,即,即行为描述行为描述(基本设计单(基本设计单元的数学模型描述)、寄存器传输描述(元的数学模型描述)、寄存器传输描述(数据流描述数据流描述)和)和结结构描述构描述(逻辑元件连接描述)。(逻辑元件连接描述)。 结构体结构体是对实体功能的具体描述,因此它一定要跟在实是对实体功能的具体描述,因此它一定要跟在实体的后面体的后面 。YANGTZE NORMAL UNIVERSITY结构体一般由两大部分组成:结构体一般由两大部分组成:1对数据类型、常数、信号、子程序和元件等因素进行说对数据类型、常数、信号、子程序和元件等因素进行

15、说明的部分;明的部分;2描述实体的逻辑行为、以各种不同的描述风格表达的功描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种能描述语句,包括各种顺序语句顺序语句和和并行语句并行语句。结构体的语句格式为:结构体的语句格式为: ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句 BEGIN 功能描述语句功能描述语句 END 结构体名结构体名; YANGTZE NORMAL UNIVERSITY 1.2.1 结构体名结构体名 结构体名由设计者自行定义,结构体名由设计者自行定义,OF后面的实体名后面的实体名指明了该结构体所对应的是哪个实体。有些设计实

16、指明了该结构体所对应的是哪个实体。有些设计实体有多个结构体,这些结构体的结构体名不可相同,体有多个结构体,这些结构体的结构体名不可相同,通常用通常用dataflow(数据流)、(数据流)、behavior(行为)、(行为)、structural(结构)(结构)命名。这命名。这3个名称体现了个名称体现了3种不同种不同结构体的描述方式,使得阅读结构体的描述方式,使得阅读VHDL语言程序时,语言程序时,能直接了解设计者采用的描述方式。能直接了解设计者采用的描述方式。 YANGTZE NORMAL UNIVERSITY 1.2.2 结构体信号定义语句结构体信号定义语句 结构体信号定义语句必须放在关键词

17、结构体信号定义语句必须放在关键词ARCHITECTURE和和BEGIN之间之间,用于对结构体内部将要使用的信号、常数、数,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。需要注意的是实体说明据类型、元件、函数和过程加以说明。需要注意的是实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。内部信号,它只能用于这个结构体中。 结构体中的信号定义和端口说明一样,应有信号名称和数结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是据类型定义。因为它是内部连接用的

18、信号,因此内部连接用的信号,因此不需要方向不需要方向说说明明。 YANGTZE NORMAL UNIVERSITY例:结构体的信号定义实例。例:结构体的信号定义实例。ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3); BEGIN END rtl; 实体名实体名结构体名结构体名功能描述语句功能描述语句结构体信号定义语句结构体信号定义语句YANGTZE NORMAL UNIVERSITY1.2.3 结构体功能描述语句结构体功能描述语句 结构体功能描述语句位于结构体功能描述语句位于BEGIN和和

19、END之间之间,具体地描述了构造体的行为及其连接关系。结构具体地描述了构造体的行为及其连接关系。结构体的功能描述语句可以含有体的功能描述语句可以含有5种不同类型的并行种不同类型的并行语句,如图所示。每一语句结构内部可以使用并语句,如图所示。每一语句结构内部可以使用并行语句,也可以是顺序语句。行语句,也可以是顺序语句。 YANGTZE NORMAL UNIVERSITY结构体( ARCHITECTURE)说明语句功能描述语句块语句(BLOCK)进程语句(PROCESS)信号赋值语句子程序调用语句元件例化语句结构体构造图结构体构造图: YANGTZE NORMAL UNIVERSITY图中图中5种

20、功能描述语句的基本组成和功能分别是:种功能描述语句的基本组成和功能分别是:块语句块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。行语句组成一个或多个子模块。进程语句进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。据向其他的信号进行赋值。信号赋值语句信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋将设计实体内的处理结果向定义的信号或界面端口进行赋值。值。子程序调用语句子程序调用语句可以调用进程或

21、参数,并将获得的结果赋值于信号。可以调用进程或参数,并将获得的结果赋值于信号。 元件例化语句元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。其他元件、信号或高层实体的界面端口进行连接。 各语句后面将介绍各语句后面将介绍 YANGTZE NORMAL UNIVERSITY例例: 2选选1数据选择器数据选择器ENTTITY mux2 ISPORT (d0,d1:IN BIT; sel:IN BIT; s:OUT BIT);); END mux2; ARCHITECTURE dataflow

22、OF mux2 IS SIGNAL sig:BIT; BEGINSig = (d0 AND sel) OR (NOT sel AND d1);S=sig; END dataflow; 功能描述语句功能描述语句信号定义语句(信号定义语句(内部信号,无方向内部信号,无方向)YANGTZE NORMAL UNIVERSITY 1.3 块、子程序和进程块、子程序和进程 1.3.1块语句(块语句(BLOCK) 在较大规模的电子系统设计中,传统的硬件电路设计通在较大规模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子原理图。在常包括一张系统总电路原理图和若干张子原理图。在VHDL

23、程序设计中,结构体是由多个程序设计中,结构体是由多个BLOCK块构成的,如果将结块构成的,如果将结构体比做总电路原理图,那么,每个构体比做总电路原理图,那么,每个BLOCK块则相当于一块则相当于一张子原理图。张子原理图。 YANGTZE NORMAL UNIVERSITYBLOCK块语句的结构:块语句的结构: 块标号:块标号:BLOCK 接口说明接口说明 类属说明类属说明 BEGIN 并行块语句并行块语句 END BLOCK(块标号);(块标号); YANGTZE NORMAL UNIVERSITY例:例: B1: BLOCK SIGNAL s1:BIT; BEGIN s1 = a AND b

24、; B2: BLOCK SIGNAL s2:BIT; BEGIN s2= c AND d; B3: BLOCK BEGIN Z = s2; END BLOCK B3; END BLOCK B2; y= s1; END BLOCK B1; YANGTZE NORMAL UNIVERSITY1.3.2 进程进程(PROCESS) PROCESS结构是最能体现结构是最能体现VHDL语言特色的语句。语言特色的语句。与与BLOCK语句一样,利用语句一样,利用PROCESS语句结构可以语句结构可以描述一个功能独立的电路。与描述一个功能独立的电路。与BLOCK语句不同之处语句不同之处是,在系统仿真时,是,在

25、系统仿真时,PROCESS结构中的语句是按顺结构中的语句是按顺序逐条向下执行的,而不像序逐条向下执行的,而不像BLOCK语句那样并发执语句那样并发执行。一个结构体中可以有多个并行运行的进程结构,行。一个结构体中可以有多个并行运行的进程结构,每一个进程内部是由一系列顺序语句来构成的。每一个进程内部是由一系列顺序语句来构成的。 YANGTZE NORMAL UNIVERSITYPROCESS语句的结构语句的结构进程标号进程标号 PROCESS (敏感信号表)(敏感信号表) IS进程说明语句进程说明语句BEGIN 顺序描述语句顺序描述语句 END PROCESS 进程标号进程标号; 注意:注意:在多

26、个进程的结构体描述中,进程标号是区分在多个进程的结构体描述中,进程标号是区分各个进程的标志。但是进程标号并不是必需的。单进程各个进程的标志。但是进程标号并不是必需的。单进程以以PROCESS开始开始,以,以END PROCESS结束。结束。 YANGTZE NORMAL UNIVERSITY例:例:两输入或非门两输入或非门LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nor2_v2 IS PORT(a,b: IN STD_LOGIC; y: OUT STD_LOGIC);END nor2_v2;ARCHITECTURE behave OF no

27、r2_v2 ISBEGIN PROCESS (a,b) VARIABLE comb : STD_LOGIC_VECTOR(1 DOWNTO 0); - y y y y y y b) THEN tmp := a; ELSE tmp := b; END IF; RETURN tmp; END; END bpac;YANGTZE NORMAL UNIVERSITY1.4 库和程序包库和程序包 库和程序包用来描述和保留元件、类型说明函数、子程序库和程序包用来描述和保留元件、类型说明函数、子程序等,以便在其它设计中可以随时引用这些信息,提高设计效率。等,以便在其它设计中可以随时引用这些信息,提高设计效率

28、。 1.4.1 库(库(LIBRARY) 库是经编译后的数据的集合,它存放包集合定义、实体定库是经编译后的数据的集合,它存放包集合定义、实体定义、结构定义和配置定义。义、结构定义和配置定义。 库语句的格式为:库语句的格式为: LIBRARY 库名;库名; YANGTZE NORMAL UNIVERSITY USE语句语句指明库中的程序包。一旦说明了库和程序包,整个指明库中的程序包。一旦说明了库和程序包,整个设计实体都可以进入访问或调用,但其设计实体都可以进入访问或调用,但其作用范围仅限于所说明作用范围仅限于所说明的设计实体的设计实体。USE语句的使用将使所说明的程序包对本设计实语句的使用将使所

29、说明的程序包对本设计实体部分或全部开放。体部分或全部开放。 USE语句有以下两种常用的格式:语句有以下两种常用的格式:USE 库名库名.程序包名程序包名.项目名项目名;USE 库名库名.程序包名程序包名.ALL; 第一种语句格式的作用是向本设计实体开放指定库中的特定第一种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所选定的项目。程序包内的所选定的项目。 第二种语句格式的作用是向本设计实体开放指定库中的特第二种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所有内容。定程序包内的所有内容。 YANGTZE NORMAL UNIVERSITY例如:例如: LIBRARY IEE

30、E; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.STD_ULOGIC; 此例中,第一个此例中,第一个USE语句表明打开语句表明打开IEEE库中的库中的STD_LOGIC_1164程序包,并使程序包中的所有公共资源对本程序包,并使程序包中的所有公共资源对本语句后面的语句后面的VHDL设计实体程序全部开放,关键词设计实体程序全部开放,关键词ALL代表程代表程序包中的所有资源。第二个序包中的所有资源。第二个USE语句开放了程序包语句开放了程序包STD_LOGIC_1164中的中的STD_ULOGIC数据类型。数据类型。 STD_ULOG

31、IC :可枚举数据类型:可枚举数据类型YANGTZE NORMAL UNIVERSITY 注意:注意:库说明语句的作用范围从一个实体说明开始到它所属的结构体、库说明语句的作用范围从一个实体说明开始到它所属的结构体、配置为止,配置为止,当一个源程序中当一个源程序中出现两个以上实体时,两条作为使用库的说出现两个以上实体时,两条作为使用库的说明语句应在每个设计实体说明语句前重复书写。明语句应在每个设计实体说明语句前重复书写。 例:例:LIBRARY IEEE; -库使用说明库使用说明USE IEEE.STD_LOGIC_1164.ALL;ENTITY and IS END and;ARCHITECT

32、URE dataflow OF and IS END dataflow;YANGTZE NORMAL UNIVERSITYCONFIGURATION c1 OF and IS - CONFIGURATION(配置)(配置) AND c1;LIBRARY IEEE; -库使用说明库使用说明 USE IEEE.STD_LOGIC_1164.ALL;ENTITY or ISCONFIGURATION c2 OF and IS AND c2;YANGTZE NORMAL UNIVERSITY1.4.2 程序包程序包 程序包程序包也叫包集合,主要用来存放各个设计都能共享的数据类型、子程序也叫包集合,主要

33、用来存放各个设计都能共享的数据类型、子程序说明、属性说明和元件说明等部分。说明、属性说明和元件说明等部分。设计者使用时只要用设计者使用时只要用USE子句子句进行说明进行说明即可。即可。 程序包由两部分组成:程序包由两部分组成:程序包首和程序包体。程序包首和程序包体。 程序包的一般书写格式如下:程序包的一般书写格式如下:PACKAGE 程序包名程序包名 ISEND PACKAGE 程序包名;程序包名; -程序包首程序包首PACKAGE BODY 程序包名程序包名 IS -程序包体程序包体 END PACKAGE BODY 程序包名程序包名; YANGTZE NORMAL UNIVERSITY例例

34、:USE STD.STD_LOGIC.ALL;PACKAGE math IS TYPE tw16 IS ARRAY(0 TO 15)OF T_WLOGIC; FUNCTION add (a,b:IN tw16)RETURN tw16; FUNCTION sub (a,b:IN tw16)RETURN tw16;END math;PACKAGE BODY math ISFUNCTION vect_to_int(s:tw16);); RETURN INTEGER IS VARIBLE result:INTEGER :=0; YANGTZE NORMAL UNIVERSITYBEGIN FOR i

35、IN 0 TO 7 LOOP result := result*2; IF s(i)=1THEN result := result+1 END IF; END LOOP;RETURN result;END vect_to_int;FUNCTION int_to_tw16(s:INTEGER); RETURN tw16 IS VARIBLE result: tw16; VARIBLE digit: INTEGER:=2*15; VARIBLE local: INTEGER; YANGTZE NORMAL UNIVERSITYBEGIN local := s; FOR i IN 15 DOWNTO

36、 0 LOOP IF local/ digit=1 THEN Local := local- digit; ELSE result (i) :=0; END IF; digit := digit/2; END LOOP;RETURN result;END int_to_tw16;FUNCTION add(a,b:IN tw16);RETURN tw16 IS VARIBLE result: INTEGER;YANGTZE NORMAL UNIVERSITYBEGIN result := vect_to_int (a)+ vect_to_int (b); RETURN int_to_tw16(r

37、esult);END add;FUNCTION sub(a,b:IN tw16);RETURN tw16 IS VARIBLE result: INTEGER;BEGIN result := vect_to_int (a)+ vect_to_int (b); RETURN int_to_tw16(result);END sub;END math;YANGTZE NORMAL UNIVERSITY 此例的程序包是由程序包首和程序包体两部分组此例的程序包是由程序包首和程序包体两部分组成。程序包首定义了数据类型和函数的调用说明,程成。程序包首定义了数据类型和函数的调用说明,程序包体中才具体描述实现该

38、函数功能的语句和数据的序包体中才具体描述实现该函数功能的语句和数据的赋值。这种分开描述的好处是,当函数的功能需要做赋值。这种分开描述的好处是,当函数的功能需要做某些调整或数据赋值需要变化时,只要改变程序包体某些调整或数据赋值需要变化时,只要改变程序包体的相关语句就可以了,而无需改变程序包首的说明,的相关语句就可以了,而无需改变程序包首的说明,这样就使得需要重新编译的单元数目尽可能的减少了。这样就使得需要重新编译的单元数目尽可能的减少了。 YANGTZE NORMAL UNIVERSITY 1.5 配置配置 在用在用VHDL描述硬件电路时,常常采用结构描述方式和描述硬件电路时,常常采用结构描述方

39、式和混合描述方式。在这两种描述方式中,常常需要将其他设计混合描述方式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要实体作为元件进行引用,这时就需要将不同元件通过配置安将不同元件通过配置安装到不同的设计实体中。装到不同的设计实体中。VHDL提供了配置语句用于描述各提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。的连接关系。1.5.1 默认配置默认配置默认配置语句的基本格式为:默认配置语句的基本格式为:CONFIGURATION 配置名配置名 OF 实体名实体名 IS FOR 选配

40、结构体名选配结构体名 END FOREND 配置名;配置名;YANGTZE NORMAL UNIVERSITYLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY example_v IS PORT (a : IN STD_LOGIC; b : IN STD_LOGIC; y : OUT STD_LOGIC);END example_v;ARCHITECTURE and2_arc OF example_v IS BEGIN y = a AND b; END and2_arc;例:例:与、或、与非、或非、异或,与、或、与非、或非、异或,5个结构体共用一个

41、实体。个结构体共用一个实体。YANGTZE NORMAL UNIVERSITYARCHITECTURE or2_arc OF example_v IS BEGIN y = a OR b; END or2_arc;ARCHITECTURE nand2_arc OF example_v IS BEGIN y = NOT(a AND b); END nand2_arc;ARCHITECTURE nor2_arc OF example_v IS BEGIN y = NOT(a OR b); END nor2_arc;YANGTZE NORMAL UNIVERSITYARCHITECTURE xor2_

42、arc OF example_v IS BEGIN y = a XOR b; END xor2_arc;CONFIGURATION cfg1 OF example_v IS FOR and2_arc END FOR;END cfg1;CONFIGURATION cfg2 OF example_v IS FOR or2_arc END FOR;END cfg2;YANGTZE NORMAL UNIVERSITYCONFIGURATION cfg3 OF example_v IS FOR nand2_arc END FOR;END cfg3;CONFIGURATION cfg4 OF exampl

43、e_v IS FOR nor2_arc END FOR;END cfg4;CONFIGURATION cfg5 OF example_v IS FOR xor2_arc END FOR;END cfg5;YANGTZE NORMAL UNIVERSITY 在上例(在上例( example_v)中,有)中,有5个不同的结构体,分别用来个不同的结构体,分别用来完成二输入的逻辑完成二输入的逻辑与、或、与非、或非与、或、与非、或非和逻辑和逻辑异或异或的运算操作。的运算操作。在程序中使用了在程序中使用了5个默认配置语句来指明设计实体个默认配置语句来指明设计实体example_v和和哪个结构体一起组成一个

44、完整的设计:配置语句哪个结构体一起组成一个完整的设计:配置语句cfg1将将与逻辑与逻辑结构体配置给实体;结构体配置给实体;cfg2将将或逻辑或逻辑结构体配置给实体;结构体配置给实体;cfg3将将与非逻辑与非逻辑结构体配置给实体;结构体配置给实体;cfg4将将或非逻辑或非逻辑结构体配置给实结构体配置给实体;体;cfg5将将异或逻辑异或逻辑结构体配置给实体。在进行模拟的时候,结构体配置给实体。在进行模拟的时候,将根据所编译的是上面的哪个配置来决定要进行模拟的结构体,将根据所编译的是上面的哪个配置来决定要进行模拟的结构体,也就是说最后一个被编译的结构体(也就是说最后一个被编译的结构体(异或逻辑异或逻

45、辑)将被模拟,下)将被模拟,下图就是异或逻辑的仿真波形。图就是异或逻辑的仿真波形。YANGTZE NORMAL UNIVERSITY 异或门仿真波形异或门仿真波形YANGTZE NORMAL UNIVERSITY1.5.2 结构体的配置结构体的配置 结构体的配置主要是用来对结构体中引用的元件进行配置。结构体的配置主要是用来对结构体中引用的元件进行配置。结构体的配置的书写格式:结构体的配置的书写格式:FOR :USE ENTITY .;以以1位全加器的构成为例说明结构体的配置的用法位全加器的构成为例说明结构体的配置的用法:将两输入与门、或门、异或门设置成通用例化元件由结构体引用。将两输入与门、或

46、门、异或门设置成通用例化元件由结构体引用。YANGTZE NORMAL UNIVERSITY LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and2_v IS PORT(a: IN STD_LOGIC; b: IN STD_LOGIC; y: OUT STD_LOGIC);END and2_v;ARCHITECTURE and2_arc OF and2_v ISBEGIN y = a AND b;END and2_arc;CONFIGURATION and2_cfg OF and2_v IS FOR and2_arc END for;END a

47、nd2_cfg;二输入与门二输入与门源代码:源代码:YANGTZE NORMAL UNIVERSITY 与门与门and2_v仿真波形仿真波形YANGTZE NORMAL UNIVERSITYLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2_v IS PORT(a: IN STD_LOGIC; b: IN STD_LOGIC; y: OUT STD_LOGIC);END or2_v;ARCHITECTURE or2_arc OF or2_v ISBEGIN y = a OR b;END or2_arc;CONFIGURATION or2_cfg OF or2_v IS FOR or2_arc END for;END or2_cfg;二输入或门二输入或门源代码:源代码:YANGTZE NORMAL UNIVERSITY 或门或门or2_v仿真波形仿真波形YANGTZE NORMAL UNIVERSITYLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xor2_v IS PORT(a: IN STD_LOGIC; b: IN STD_LOGIC; y: OUT STD_LOGIC);END xor2_v;ARCHITECTURE xor2_arc OF xor2_v ISBEGIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论