




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子设计自动化edavhdl基本结构1.1 实体实体1.2 结构体结构体1.3 块、子程序和进程块、子程序和进程 1.4 库和程序包库和程序包 1.5 配置配置 第一章第一章 VHDLVHDL基本结构基本结构 电子设计自动化edavhdl基本结构 一个完整的一个完整的VHDL程序或设计实体,要求能为程序或设计实体,要求能为VHDL综合器所支持,并能作为一个独立的设计单元,综合器所支持,并能作为一个独立的设计单元,即元件的形式而存在的即元件的形式而存在的VHDL程序。程序。 实体实体和和结构体结构体是必需的是必需的可构成最简单可构成最简单VHDL程序。程序。 通常通常VHDL程序包含五个部分:程
2、序包含五个部分:(1)实体()实体(ENTITY)(2)结构体()结构体(ARCHITECTURE)(3)包集合()包集合(PACKAGE)(4)库()库(LIBRARY)(5)配置()配置(CONFIGURATION)电子设计自动化edavhdl基本结构 实体实体是是VHDL语言设计的基本单元。语言设计的基本单元。1.1 实体实体 实体说明实体说明是对设计实体与外部电路的是对设计实体与外部电路的接口描述接口描述,它规定了设计单元的它规定了设计单元的输入输出接口信号或引脚输入输出接口信号或引脚,是设计实体对外的一个通信界面。是设计实体对外的一个通信界面。 结构体结构体用于描述此设计实体的用于描
3、述此设计实体的逻辑结构逻辑结构和和逻辑功能逻辑功能。电子设计自动化edavhdl基本结构【例1】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 ;实体说明结构体1.1 设计实体设计实体图图1-1 mux21a实体实体图图1-2 mux21a结构体结构体设计实体总由设计实体总由和和两部分构成两部分构成2选选1多路选
4、择器的多路选择器的VHDL描述描述电子设计自动化edavhdl基本结构实体语句结构如下:实体语句结构如下:例:例:ENTITY or2 IS PORT(a,b:IN STD_LOGIC; C: OUT STD_LOGIC); END ENTITY or2; ENTITY 实体名实体名 IS GENERIC(类属表);(类属表); PORT(端口表);(端口表);END ENTITY 实体名;实体名;电子设计自动化edavhdl基本结构 在层次化系统中,实体说明是整个模块在层次化系统中,实体说明是整个模块或整个系统的输入输出(或整个系统的输入输出(I/O)接口)接口 在器件级设计中实体说明是芯片
5、的输入在器件级设计中实体说明是芯片的输入输出(输出(I/O)电子设计自动化edavhdl基本结构 1.1.1 1.1.1类属参量类属参量(GENERIC) 类属参量是实体说明组织中的可选项,类属参量是实体说明组织中的可选项,放在端口说明之前,其一般格式为:放在端口说明之前,其一般格式为:GENERIC CONSTANT 名字表:名字表:IN 子类型标识子类型标识 := 静态表达式静态表达式, 电子设计自动化edavhdl基本结构 1.1.1 1.1.1类属参量类属参量(GENERIC)w类属参量类属参量是实体说明组织中的是实体说明组织中的可选项可选项,放在端口说明之前,其一般格式为:放在端口说
6、明之前,其一般格式为:wGENERIC CONSTANT 名字表:名字表:IN 子类型标识子类型标识 := 静态表达式静态表达式, 电子设计自动化edavhdl基本结构 类属参量类属参量用来规定用来规定端口的大小端口的大小、实体、实体中中子元件数目子元件数目及实体的及实体的定时特性定时特性等。等。 它和常数不同,它和常数不同,常数常数只能从设计实体的只能从设计实体的内部内部得到赋值且不能改变得到赋值且不能改变;而类属参量的值可由设计;而类属参量的值可由设计实体的外部提供。实体的外部提供。 电子设计自动化edavhdl基本结构 这里类属参量中参数这里类属参量中参数trise为上升沿宽度,为上升沿
7、宽度,tfall为下为下降沿宽度,用于仿真模块的设计;降沿宽度,用于仿真模块的设计; 定义地址总线的宽度为定义地址总线的宽度为Addrwidth位,类属值位,类属值Addrwidth的改变将使结构体中所有相关的总线定义同的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。时改变,由此使整个设计实体的硬件结构发生变化。 例:例:GENERIC (trise,tfall:TIME:=1ns; Addrwidth:INTEGER:=16);PORT(a0, a1 : IN STD_LOGIC; Add_bus:OUT STD_LOGIC_VECTOR(addrwidt
8、h-1 DOWNTO 0); 电子设计自动化edavhdl基本结构1.1.2 端口说明端口说明(PORT) 端口端口是是对基本设计单元与外部接口的对基本设计单元与外部接口的描述描述。 其功能其功能相当电路图相当电路图符号的符号的外部引脚外部引脚。 端口可以被赋值,也可以当做逻辑端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。变量用在逻辑表达式中。电子设计自动化edavhdl基本结构 其中端口名是设计者为实体的每一个对外通道其中端口名是设计者为实体的每一个对外通道所取的名字,通常为英文字母加数字,名字的定义有所取的名字,通常为英文字母加数字,名字的定义有一定的惯例,如一定的惯例,如clk 表
9、示时钟,表示时钟,D开头的端口名表示开头的端口名表示数据,数据,A开头的端口名表示地址。端口模式是指这些开头的端口名表示地址。端口模式是指这些通道上的数据流动的方式,如输入或输出等。通道上的数据流动的方式,如输入或输出等。 端口模式有以下几种类型:端口模式有以下几种类型:1输入(输入(IN) 允许信号进入实体,主要用于时钟输入、控制输入允许信号进入实体,主要用于时钟输入、控制输入(如(如load、reset、enable、clk)和单向的数据输入)和单向的数据输入(如地址数据信号(如地址数据信号address)等。)等。 电子设计自动化edavhdl基本结构2输出(输出(OUT) 输出模式只允
10、许信号离开实体,常用于计数输出、单输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信号等。向数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体的内部反馈,因为输注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。出端口在实体内不能看做是可读的。 3双向模式(双向模式(INOUT) 双向模式允许信号双向传输(既可以进入实体,也可双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。以离开实体),双向模式端口允许引入内部反馈。 电子设计自动化edavhdl基本结构
11、4缓冲(缓冲(BUFFER) 缓冲模式允许信号输出到实体外部,但同时也可以缓冲模式允许信号输出到实体外部,但同时也可以在实体内部引用该端口的信号。缓冲端口既能用于输在实体内部引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲模式用于在实体内部建立一个出也能用于反馈。缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出、计数器的现态用可读的输出端口,例如计数器输出、计数器的现态用来决定计数器的次态。来决定计数器的次态。 端口模式可用下图说明,图中方框代表一个设计实体或端口模式可用下图说明,图中方框代表一个设计实体或模块。模块。 电子设计自动化edavhdl基本结构 在在VHDL设计
12、中,通常将输入信号端口指定为输入设计中,通常将输入信号端口指定为输入模式,输出信号端口指定为输出模式,而双向数据通模式,输出信号端口指定为输出模式,而双向数据通信信号,如计算机信信号,如计算机PCI总线的地址总线的地址/数据复用总线,数据复用总线,DMA控制器数据总线等纯双向的信号采用双向端口模控制器数据总线等纯双向的信号采用双向端口模式。从端口的名称、模式就能一目了然地指导信号的式。从端口的名称、模式就能一目了然地指导信号的用途、性质、来源和去向。用途、性质、来源和去向。 电子设计自动化edavhdl基本结构 结构体是对实体功能的具体描述,因此它一定要跟结构体是对实体功能的具体描述,因此它一
13、定要跟在实体的后面在实体的后面 。 行为描述(基本设计单元的数学模型描述)、寄存器传行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)输描述(数据流描述)和结构描述(逻辑元件连接描述) 1.2 结构体结构体 结构体也叫构造体,结构体描述了基本设计单元结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。结构体对据流程,制定了实体内部元件的连
14、接关系。结构体对其基本设计单元的输入和输出关系可用以下三种方式其基本设计单元的输入和输出关系可用以下三种方式进行描述,即进行描述,即:电子设计自动化edavhdl基本结构图 VHDL程序设计基本结构 库、程序包使用说明配置(CONFIGURATION)结构体(ARCHITECTURE)实体(ENTITY)PORT 端口说明结构体说明GENERIC 类属说明体实计设结构体功能描述电子设计自动化edavhdl基本结构图 结构体构造图进程语句块语句体结构明说体构结述能描功体构结元件例化语句子程序调用语句信号赋值语句常数说明数据类型说明信号说明例化元件说明子程序说明电子设计自动化edavhdl基本结构
15、 结构体一般由两大部分组成:结构体一般由两大部分组成: ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句 BEGIN 功能描述语句功能描述语句 END 结构体名;结构体名; (1)对数据类型、常数、信号、子程序和元件等因素对数据类型、常数、信号、子程序和元件等因素进行说明的部分;进行说明的部分;(2)描述实体的逻辑行为、以各种不同的描述风格表达描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种顺序语句和并行语句。的功能描述语句,包括各种顺序语句和并行语句。结构体的语句格式为:结构体的语句格式为:电子设计自动化edavhdl基本结构1.2.
16、1 结构体名结构体名 结构体名由设计者自行定义,结构体名由设计者自行定义,OF后面的实体名指后面的实体名指明了该结构体所对应的是哪个实体。明了该结构体所对应的是哪个实体。 有些设计实体有多个结构体,这些结构体的结构体有些设计实体有多个结构体,这些结构体的结构体名不可相同,通常用名不可相同,通常用dataflow(数据流)、(数据流)、behavior(行为)、(行为)、structural(结构)命名。(结构)命名。 这这3个名称体现了个名称体现了3种不同结构体的描述方式,使得种不同结构体的描述方式,使得阅读阅读VHDL语言程序时,能直接了解设计者采用的描语言程序时,能直接了解设计者采用的描述
17、方式。述方式。电子设计自动化edavhdl基本结构 结构体信号定义语句必须放在关键词结构体信号定义语句必须放在关键词ARCHITECTURE和和BEGIN之间,用于对结构体内部将之间,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加要使用的信号、常数、数据类型、元件、函数和过程加以说明。以说明。 结构体中的信号定义和端口说明一样,应有信号名称结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此不和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。需要方向说明。 1.2.2 结构体信号定义语句结构体信号定义语句 需要注意的是:实
18、体说明中定义的信号是外部信需要注意的是:实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。只能用于这个结构体中。电子设计自动化edavhdl基本结构ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3); BEGIN END rtl; 例:结构体的信号定义实例。例:结构体的信号定义实例。结构体名结构体名实体名实体名结构体信号定义语句结构体信号定义语句功能描述语句功能描述语句电子设计自动化edavhdl基本
19、结构1.2.3 结构体功能描述语句结构体功能描述语句 结构体功能描述语句位于结构体功能描述语句位于BEGIN和和END之间,具之间,具体地描述了构造体的行为及其连接关系。体地描述了构造体的行为及其连接关系。 结构体的功能描述语句可以含有结构体的功能描述语句可以含有5种不同类型的并行种不同类型的并行语句,如图所示。每一语句结构内部可以使用并行语语句,如图所示。每一语句结构内部可以使用并行语句,也可以是顺序语句。句,也可以是顺序语句。电子设计自动化edavhdl基本结构结构体构造图结构体构造图: 结构体(ARCHITECTURE) 说明语句 功能描述语句 块语句(BLOCK)进程语句(PROCES
20、S) 信号赋值语句 子程序调用语句 元件例化语句 由一系列并行语句构由一系列并行语句构 成的组合体,它的功能是成的组合体,它的功能是将结构体中的并行语句组将结构体中的并行语句组成一个或多个子模块成一个或多个子模块 定义顺序语句模块,用定义顺序语句模块,用以将从外部获得的信号值以将从外部获得的信号值或内部运算数据向其他的或内部运算数据向其他的信号进行赋值信号进行赋值 将设计实体内的处理将设计实体内的处理结果向定义的信号或界结果向定义的信号或界面端口进行赋值面端口进行赋值 可以调用进程或参可以调用进程或参数,并将获得的结果数,并将获得的结果赋值于信号赋值于信号 对其他的设计实体做对其他的设计实体做
21、元件调用说明,并将此元件调用说明,并将此元件的端口与其他元件、元件的端口与其他元件、信号或高层实体的界面信号或高层实体的界面端口进行连接端口进行连接(Flash演示)演示)电子设计自动化edavhdl基本结构ENTTITY mux2 ISPORT (d0,d1:IN BIT; sel:IN BIT; s:OUT BIT);); END mux2; ARCHITECTURE dataflow OF mux2 IS SIGNAL sig:BIT; BEGINSig = (d0 AND sel) OR (NOT sel AND d1);S=sig; END dataflow; 例例: 2选选1数据选
22、择器数据选择器 信号定义语句(内部信号,无方向)信号定义语句(内部信号,无方向)功能描述语句功能描述语句电子设计自动化edavhdl基本结构 1.3.1块语句(块语句(BLOCK) 在较大规模的电子系统设计中,传统的硬件电路设在较大规模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子原理图。计通常包括一张系统总电路原理图和若干张子原理图。在在VHDL程序设计中,结构体是由多个程序设计中,结构体是由多个BLOCK块构成块构成的,如果将结构体比做总电路原理图,那么,每个的,如果将结构体比做总电路原理图,那么,每个BLOCK块则相当于一张子原理图。块则相当于一张子原理图。
23、1.3 块、子程序和进程块、子程序和进程 电子设计自动化edavhdl基本结构BLOCK块语句的结构:块语句的结构: 块标号:块标号:BLOCK 接口说明接口说明 类属说明类属说明 BEGIN 并行块语句并行块语句 END BLOCK(块标号);(块标号); 电子设计自动化edavhdl基本结构例:例:B1: BLOCK SIGNAL s1:BIT; BEGIN s1 = a AND b; B2: BLOCK SIGNAL s2:BIT; BEGIN s2= c AND d; B3: BLOCK BEGIN Z = s2; END BLOCK B3; END BLOCK B2; y= s1;
24、END BLOCK B1; 电子设计自动化edavhdl基本结构 PROCESS结构是最能体现结构是最能体现VHDL语言特色的语句。语言特色的语句。与与BLOCK语句一样,利用语句一样,利用PROCESS语句结构可以描述语句结构可以描述一个功能独立的电路。一个功能独立的电路。 与与BLOCK语句不同之处是,在系统仿真时,语句不同之处是,在系统仿真时,PROCESS结构中的语句是按顺序逐条向下执行的,而不结构中的语句是按顺序逐条向下执行的,而不像像BLOCK语句那样并发执行。语句那样并发执行。 一个结构体中可以有多个并行运行的进程结构,每一一个结构体中可以有多个并行运行的进程结构,每一个进程内部
25、是由一系列顺序语句来构成的。个进程内部是由一系列顺序语句来构成的。1.3.2 进程(进程(PROCESS) 电子设计自动化edavhdl基本结构PROCESS语句的结构:语句的结构: 注意:注意:(1)在多个进程的结构体描述中,进程标号是区分各个)在多个进程的结构体描述中,进程标号是区分各个进程的标志。但是进程标号并不是必需的。进程的标志。但是进程标号并不是必需的。(2)单进程以)单进程以PROCESS开始,以开始,以END PROCESS结束。结束。 进程标号进程标号 PROCESS (敏感信号表)(敏感信号表) IS进程说明语句进程说明语句BEGIN 顺序描述语句顺序描述语句 END PR
26、OCESS 进程标号进程标号;电子设计自动化edavhdl基本结构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 nor2_v2 ISBEGIN PROCESS (a,b) VARIABLE comb : STD_LOGIC_VECTOR(1 DOWNTO 0);例:两输入或非门例:两输入或非门 y y y y y y =X; END CASE; END PROCESS;E
27、ND behave; X: 不定不定电子设计自动化edavhdl基本结构D触发器的触发器的VHDL描述描述D触发器【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF1; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定类似于在芯片内部定义一个数据的暂存节点义一个数据的暂存节点 BEGIN PROCES
28、S (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出将内部的暂存数据向端口输出 END PROCESS ; END bhv;电子设计自动化edavhdl基本结构VHDL描述的语言现象说明描述的语言现象说明1. 1. 标准逻辑位数据类型标准逻辑位数据类型STD_LOGICSTD_LOGICBIT数据类型定义: TYPE BIT IS(0,1);TYPE BIT IS(0,1);STD_LOGIC数据类型定义:TYPE STD_LOGIC IS TYPE STD_LOGIC IS (U
29、,X,0,1,Z,W,L,H,-);(U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的9种数据的含义是:UU表示未初始化的;表示未初始化的; XX表示强未知的;表示强未知的; 00表示强逻辑表示强逻辑0 0; 11表示强逻辑表示强逻辑1 1; ZZ表示表示高阻态;高阻态; W W 表示弱未知的;表示弱未知的; LL表示弱逻辑表示弱逻辑0 0; HH表示弱逻辑表示弱逻辑1 1; -表示忽略。表示忽略。电子设计自动化edavhdl基本结构VHDL描述的语言现象说明描述的语言现象说明2. 2. 设计库和标准程序包设计库和标准程序包3. SIGNAL3. SIGNAL信号定义和数据对象
30、信号定义和数据对象【例】 ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END bhv;使用库和程序包的一般定义表式是: LIBRARY LIBRARY ; USE USE .ALL ; .ALL ; 三种类型数据对象:三种类型数据对象: 信号信号 signal 变量变量 variable 常数常数 constant电子设计自动化edavhdl基本结
31、构VHDL描述的语言现象说明描述的语言现象说明4. 4. 上升沿检测表达式上升沿检测表达式关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿跳变边沿:信号名信号名 EVENT AND (信号名信号名 =1) AND (信号名信号名 LAST_VALUE=0)信号名信号名 =1 AND 信号名信号名LAST_VALUE=0rising_edge(信号名信号名) - 信号的数据类型必须是信号的数据类型必须是STD_LOGIC信号名信号名EVENT - EVENT - 如如CLKEVENTCLKEVENTwait until 信号名信号名 = 1; -利用利用wait语句语句电子
32、设计自动化edavhdl基本结构实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例】【例】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ;【例】【例】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同上例同上例 THEN Q = D ; END IF; END PROCESS ;电子设计自动化edavhdl基本结构
33、实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例】【例】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ENTITY DFF3 ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是的数据类型必须是STD
34、_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ARCHITECTURE bhv ;电子设计自动化edavhdl基本结构 在在VHDL中,数据对象中,数据对象(Data Objects)类似于一种容类似于一种容器,它接受不同数据类型的赋值。数据对象有三种,即器,它接受不同数据类型的赋值。数据对象有三种,即常量常量(CONSTANT)、变量、变量(VARIABLE)和信号和信号(SIGNAL)。前两种可以从传统的计算机高级语言中找。前两种可以从传统的计算机高级语言中找到对应的数据类型,其语言行为与高级语言中的变量和到对应的数据类型,
35、其语言行为与高级语言中的变量和常量十分相似。但信号是具有更多的硬件特征的特殊数常量十分相似。但信号是具有更多的硬件特征的特殊数据对象,是据对象,是VHDL中最有特色的语言要素之一。中最有特色的语言要素之一。VHDL数据对象(Data Objects)电子设计自动化edavhdl基本结构 1常量常量(CONSTANT) 常量的定义和设置主要是为了使设计实体中的常数更常量的定义和设置主要是为了使设计实体中的常数更容易阅读和修改。例如,将位矢的宽度定义为一个常量,容易阅读和修改。例如,将位矢的宽度定义为一个常量,只要修改这个常量就能很容易地改变宽度,从而改变硬件只要修改这个常量就能很容易地改变宽度,
36、从而改变硬件结构。在程序中,常量是一个恒定不变的值,一旦作了数结构。在程序中,常量是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序中不能再改变,因而具有全据类型的赋值定义后,在程序中不能再改变,因而具有全局意义。常量的定义形式如下:局意义。常量的定义形式如下:CONSTANT 常量名:数据类型常量名:数据类型=表达式;表达式;例如:例如:CONSTANT FBUSBIT_VECTOR=“01011”;CONSTANT VCCREAL=5.0;CONSTANT DELYTIME=25ns;电子设计自动化edavhdl基本结构 VHDL要求所定义的常量数据类型必须与表达式的数要求所定义的常
37、量数据类型必须与表达式的数据类型一致。常量的数据类型可以是标量类型或复合类据类型一致。常量的数据类型可以是标量类型或复合类型,但不能是文件类型型,但不能是文件类型(File)或存取类型或存取类型(Access)。 常量定义语句所允许的设计单元有实体、结构体、程常量定义语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。在程序包中定义的常量可以序包、块、进程和子程序。在程序包中定义的常量可以暂不设具体数值,它可以在程序包体中设定。暂不设具体数值,它可以在程序包体中设定。电子设计自动化edavhdl基本结构 常量的可视性,即常量的使用范围取决于它被定义常量的可视性,即常量的使用范围取决于
38、它被定义的位置。在程序包中定义的常量具有最大全局化特征,的位置。在程序包中定义的常量具有最大全局化特征,可以用在调用此程序包的所有设计实体中;定义在设计可以用在调用此程序包的所有设计实体中;定义在设计实体中的常量,其有效范围为这个实体定义的所有的结实体中的常量,其有效范围为这个实体定义的所有的结构体;定义在设计实体的某一结构体中的常量,则只能构体;定义在设计实体的某一结构体中的常量,则只能用于此结构体;定义在结构体的某一单元的常量,如一用于此结构体;定义在结构体的某一单元的常量,如一个进程中,则这个常量只能用在这一进程中。个进程中,则这个常量只能用在这一进程中。电子设计自动化edavhdl基本
39、结构VHDL数据对象(Data Objects) 常量(常量(Constant) 固定值,不能在程序中被改变固定值,不能在程序中被改变 增强程序的可读性,便于修改程序增强程序的可读性,便于修改程序 可在可在Package、Entity、Architecture、Process、Function、Procedure中进行定义,其有效范围也相中进行定义,其有效范围也相应限定应限定 书写格式:书写格式: Constant 常量名常量名,常量名,常量名:数据类型:数据类型:=表达式表达式; 例:例:Constant data_bus_width: integer := 8;电子设计自动化edavhdl
40、基本结构 2变量变量(VARIABLE) 在在VHDL语法规则中,变量是一个局部量,只能在进语法规则中,变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它作出定义程和子程序中使用。变量不能将信息带出对它作出定义的当前设计单元。变量的赋值是一种理想化的数据传输,的当前设计单元。变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为。是立即发生,不存在任何延时的行为。VHDL语言规则语言规则不支持变量附加延时语句。变量常用在实现某种算法的不支持变量附加延时语句。变量常用在实现某种算法的赋值语句中。赋值语句中。电子设计自动化edavhdl基本结构定义变量的语法格式如下:定
41、义变量的语法格式如下:VARIABLE 变量名:数据类型:变量名:数据类型:=初始值;初始值;例如:例如:VARIABLE A:INTEGER; -定义定义A为整数型为整数型变量变量VARIABLE B,C:INTEGER:=2; -定义定义B和和C为整为整型变量,初始值为型变量,初始值为2电子设计自动化edavhdl基本结构 变量作为局部量,其适用范围仅限于定义了变量的变量作为局部量,其适用范围仅限于定义了变量的进程或子程序中。仿真过程中惟一的例外是共享变量。进程或子程序中。仿真过程中惟一的例外是共享变量。变量的值将随变量赋值语句的运算而改变。变量定义语变量的值将随变量赋值语句的运算而改变。
42、变量定义语句中的初始值可以是一个与变量具有相同数据类型的常句中的初始值可以是一个与变量具有相同数据类型的常数值,也可以是一个全局静态表达式,这个表达式的数数值,也可以是一个全局静态表达式,这个表达式的数据类型必须与所赋值变量一致。此初始值不是必需的,据类型必须与所赋值变量一致。此初始值不是必需的,综合过程中综合器将略去所有的初始值。综合过程中综合器将略去所有的初始值。 变量数值的改变是通过变量赋值来实现的,其赋值变量数值的改变是通过变量赋值来实现的,其赋值语句的语法格式如下:语句的语法格式如下: 目标变量名目标变量名:=表达式;表达式;电子设计自动化edavhdl基本结构VHDL数据对象(Da
43、ta Objects) 变量(变量(Variable) 临时数据,没有物理意义临时数据,没有物理意义 只能在只能在Process、Function、 Procedure中定义,并只中定义,并只在其内部有效,在其内部有效, 要使其全局有效,先转换为要使其全局有效,先转换为Signal。 用用 := 进行赋值进行赋值 用用 := 进行初始化进行初始化 variable result : std_logic := 0;电子设计自动化edavhdl基本结构 3. 信号信号(SIGNAL) 信号是描述硬件系统的基本数据对象,它类似于连信号是描述硬件系统的基本数据对象,它类似于连接线。信号可以作为设计实体
44、中并行语句模块间的信息接线。信号可以作为设计实体中并行语句模块间的信息交流通道。在交流通道。在VHDL中,信号及其相关的信号赋值语句、中,信号及其相关的信号赋值语句、决断函数、延时语句等很好地描述了硬件系统的许多基决断函数、延时语句等很好地描述了硬件系统的许多基本特征。如硬件系统运行的并行性;信号传输过程中的本特征。如硬件系统运行的并行性;信号传输过程中的惯性延时特性;多驱动源的总线行为等。惯性延时特性;多驱动源的总线行为等。 信号作为一种数值容器,不但可以容纳当前值,也信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值。这一属性与触发器的记忆功能有很好可以保持历史值。这一属性与触发器
45、的记忆功能有很好的对应关系。信号的定义格式如下:的对应关系。信号的定义格式如下: SIGNAL 信号名:信号名: 数据类型数据类型=初始值;初始值;电子设计自动化edavhdl基本结构 信号初始值的设置不是必需的,而且初始值仅在信号初始值的设置不是必需的,而且初始值仅在VHDL的行为的行为仿真中有效。与变量相比,信号的硬件特征更为明显,它具有全局仿真中有效。与变量相比,信号的硬件特征更为明显,它具有全局性特性。例如,在程序包中定义的信号,对于所有调用此程序包的性特性。例如,在程序包中定义的信号,对于所有调用此程序包的设计实体都是可见的;在实体中定义的信号,在其对应的结构体中设计实体都是可见的;
46、在实体中定义的信号,在其对应的结构体中都是可见的。都是可见的。 事实上,除了没有方向说明以外,信号与实体的端口事实上,除了没有方向说明以外,信号与实体的端口(PORT)概概念是一致的。相对于端口来说,其区别只是输出端口不能读入数据,念是一致的。相对于端口来说,其区别只是输出端口不能读入数据,输入端口不能被赋值。信号可以看成是实体内部的端口。反之,实输入端口不能被赋值。信号可以看成是实体内部的端口。反之,实体的端口只是一种隐形的信号,端口的定义实际上是作了隐式的信体的端口只是一种隐形的信号,端口的定义实际上是作了隐式的信号定义,并附加了数据流动的方向。信号本身的定义是一种显式的号定义,并附加了数
47、据流动的方向。信号本身的定义是一种显式的定义,因此,在实体中定义的端口,在其结构体中都可以看成一个定义,因此,在实体中定义的端口,在其结构体中都可以看成一个信号,并加以使用而不必另作定义。以下是信号的定义示例:信号,并加以使用而不必另作定义。以下是信号的定义示例:电子设计自动化edavhdl基本结构SIGNAL S1:STD_LOGIG=0;-定义了一个标准位的单值信号定义了一个标准位的单值信号S1,初始值为低电平,初始值为低电平SIGNAL S2,S3:BIT; -定义了两个位定义了两个位BIT的信号的信号S2和和S3SIGNAL S4: STD_LOGIC_VECTOR(15 DOWNTO
48、 0);-定义了定义了一个标准位矢的位矢量一个标准位矢的位矢量-(数组、总线数组、总线)信号,共有信号,共有16个信号元素个信号元素 以下示例定义的信号数据类型是设计者自行定义的,这是以下示例定义的信号数据类型是设计者自行定义的,这是VHDL所允许的:所允许的:TYPE FOUR IS(X,0,I,Z);SIGNAL S1FOUR;SIGNAL S2FOUR=X;SIGNAL S3FOUR=L;电子设计自动化edavhdl基本结构 其中,信号其中,信号S1的初始值取为默认值,的初始值取为默认值,VHDL规定初规定初始值取值以取始值取值以取LEFTMOST项项(即数组中的最左项即数组中的最左项)
49、为默认为默认值。在此例中是值。在此例中是X(任意状态任意状态)。 信号的使用和定义范围是实体、结构体和程序包。信号的使用和定义范围是实体、结构体和程序包。在进程和子程序中不允许定义信号。信号可以有多个驱在进程和子程序中不允许定义信号。信号可以有多个驱动源,或者说赋值信号源,但必须将此信号的数据类型动源,或者说赋值信号源,但必须将此信号的数据类型定义为决断性数据类型。定义为决断性数据类型。 在进程中,只能将信号列入敏感表,而不能将变量在进程中,只能将信号列入敏感表,而不能将变量列入敏感表。可见进程只对信号敏感,而对变量不敏感。列入敏感表。可见进程只对信号敏感,而对变量不敏感。电子设计自动化eda
50、vhdl基本结构VHDL数据对象(Data Objects) 信号(信号(Signals) 代表连线,代表连线,Port也是一种信号也是一种信号 没有方向性,可给它赋值,也可当作输入没有方向性,可给它赋值,也可当作输入 在在Package、Entity、Architecture中定义中定义 设定的初始值在综合时没有用,只是在仿真时在开始设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。设定一个起始值。 用用 = 进行赋值进行赋值 用用 : = 进行初始化进行初始化 signal count:bit_vector(3 downto 0):=“0011”;电子设计自动化edavhdl基
51、本结构 4三者的使用比较三者的使用比较 (1) 从硬件电路系统来看,常量相当于电路中的恒定从硬件电路系统来看,常量相当于电路中的恒定电平,如电平,如GND或或VCC接口,而变量和信号则相当于组合接口,而变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。电路系统中门与门间的连接及其连线上的信号值。 (2) 从行为仿真和从行为仿真和VHDL语句功能上看,二者的区别语句功能上看,二者的区别主要表现在接受和保持信号的方式、信息保持与传递的主要表现在接受和保持信号的方式、信息保持与传递的区域大小上。例如信号可以设置延时量,而变量则不能;区域大小上。例如信号可以设置延时量,而变量则不能;变
52、量只能作为局部的信息载体,而信号则可作为模块间变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。变量的设置有时只是一种过渡,最后的信的信息载体。变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。息传输和界面间的通信都靠信号来完成。电子设计自动化edavhdl基本结构 (3) 从综合后所对应的硬件电路结构来看,信号一般将对应更多从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如在满足一定条件的进程中,综合后它们都能引入寄存器。这时它们在满足一定条件
53、的进程中,综合后它们都能引入寄存器。这时它们都具有能够接受赋值这一重要的共性,而都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它综合器并不理会它们在接受赋值时存在的延时特性。们在接受赋值时存在的延时特性。 (4) 虽然虽然VHDL仿真器允许变量和信号设置初始值,但在实际应仿真器允许变量和信号设置初始值,但在实际应用中,用中,VHDL综合器并不会把这些信息综合进去。这是因为实际的综合器并不会把这些信息综合进去。这是因为实际的FPGA/CPLD芯片在上电后,并不能确保其初始状态的取向。因此,芯片在上电后,并不能确保其初始状态的取向。因此,对于时序仿真来说,设置的初始值在综合时是没有实际
54、意义的。对于时序仿真来说,设置的初始值在综合时是没有实际意义的。电子设计自动化edavhdl基本结构信号与变量的区别信号与变量的区别architecture rtl of start is signal count : integer range 0 to 7; begin process(clk,count) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;ar
55、chitecture rtl of start is begin process(clk)variable count : integer range 0 to 7;begin if (clkevent and clk=1) then count := count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;电子设计自动化edavhdl基本结构信号与变量的区别信号与变量的区别architecture a of start is signal tmp : s
56、td_logic;begin process(a_bus)begin tmp = 1; for i in 3 downto 0 loop tmp = a_bus(i) and tmp; end loop; carryout = tmp; end process;end a; architecture a of start is begin process(a_bus) variable tmp:std_logic; begin tmp := 1; for i in 3 downto 0 loop tmp := a_bus(i) and tmp; end loop; carryout = tmp
57、; end process;end a; 电子设计自动化edavhdl基本结构 子程序被调用时,首先要初始化,执行处理功能后,子程序被调用时,首先要初始化,执行处理功能后,将处理结果传递给主程序。子程序内部的值不能保持,将处理结果传递给主程序。子程序内部的值不能保持,子程序返回后才能被再次调用并初始化。子程序返回后才能被再次调用并初始化。1.3.3子程序(子程序(SUBPROGRAM) VHDL程序与其他软件语言程序中应用子程序的目程序与其他软件语言程序中应用子程序的目的是相似的,即能够更有效地完成重复性的工作。的是相似的,即能够更有效地完成重复性的工作。 子程序模块是利用顺序语句定义和完成算
58、法的,但子程序模块是利用顺序语句定义和完成算法的,但子程序不能像进程那样可以从本结构体的其他块或进子程序不能像进程那样可以从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序的界面端口进行通信。调用与子程序的界面端口进行通信。 电子设计自动化edavhdl基本结构 子程序有两种类型:子程序有两种类型:1过程(过程(PROCEDURE)过程(过程(PROCEDURE)和函数()和函数(FUNCTION)过程语句的书写格式为:过程语句的书写格式为:PROCEDURE 过程名(参数表)过程名(参数表)IS 说明部分说明部分 B
59、EGIN 过程语句部分过程语句部分 END PROCEDURE 过程名过程名 ;电子设计自动化edavhdl基本结构2、过程过程设计实例设计实例Procedure example ( signal d : in std_logic; signal clk : in std_logic; signal reset : in std_logic; signal q,qb : out std_logic ) isBegin if (reset=0) then q=0; qb=1; elsif (clkevent and clk=1) then q= d; qbb) THEN tmp := a; EL
60、SE tmp := b; END IF; RETURN tmp; END; END bpac;电子设计自动化edavhdl基本结构 VHDL语言在进行任何操作的过程中,对数据的类型都有严格的要语言在进行任何操作的过程中,对数据的类型都有严格的要求,但是,对名称的要求并不严格,求,但是,对名称的要求并不严格,同一名称可以定义成使用不同类同一名称可以定义成使用不同类型数据参数的子程序或类型。这样就可以对型数据参数的子程序或类型。这样就可以对VHDL的子程序进行重载的子程序进行重载。子程序的重载子程序的重载 所谓重载所谓重载就是允许设计人员编写更加可读的就是允许设计人员编写更加可读的VHDL源代码,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空中货运的服务质量与运输效率考核试卷
- 五金批发市场行业市场消费者行为分析优化实践与总结考核试卷
- 电动葫芦租赁考核试卷
- 2025豪华别墅精装修工程合同
- 2025企业物业保安服务合同
- 2025年上海市绿色建筑认证合同范本
- 2025网络平台交易合同协议书样本
- 2025届湖南省常德市鼎城区阳明中学高三下学期3月月考历史试题(含答案)
- 全自动智能自适应服装生产控制系统
- 煤矿采煤队承包协议范例二零二五年
- GB/Z 27021.13-2025合格评定管理体系审核认证机构要求第13部分:合规管理体系审核与认证能力要求
- 湖南省长沙市四大名校2024-2025学年高三2月月考语文试题(原卷版+解析版)
- 中华民族节日文化知到课后答案智慧树章节测试答案2025年春云南大学
- 《政府采购管理研究的国内外文献综述》5500字
- 糖尿病护理查房提出问题
- 回收设施布局与优化-深度研究
- 2024年国网浙江省电力有限公司招聘考试真题
- 微专题2 质量守恒定律的应用(解析版)
- 分析化学考试题(附参考答案)
- 广东省广州市越秀区2025年中考一模历史模拟试题(含答案)
- 森林无人机灭火技术集成-深度研究
评论
0/150
提交评论