EDA技术与VHDL设计 第四章 VHDL语言要素 (一)
17
第4章 VHDL语言要素
需要注意的是,赋值语句中的表达式必须与目标变量具有 相同的数据类型。变量在使用时还需注意以下几个要点: (1)变量是一个局部量,只用于进程和子程序。变量不能将 信息带出对它作定义的设计单元。 (2)变量的赋值是立即发生的,不存在任何延时的行为。
(3)VHDL语言规则不支持变量附加延时语句。
2
第4章 VHDL语言要素
(2) 实数(Real)。实数也是十进制的数,但必须带有小数点。 它类似于数学上的实数,或称浮点数,表示范围是-1.0E38~ 1.0E38。实数的表达方式举例: 0.0,123.45,6.0,78.99E-2(=0.7899), (=12345.678999) 12_345.678_999
16
第4章 VHDL语言要素
虽然变量可以在声明时赋予初始值,但综合器并不支持初 始值的设置,使用时将忽略。初始值仅对仿真器有效。当变量 在声明语句中没有赋予初值时,可以通过变量赋值语句在使用 时对其赋值。变量赋值语句的格式如下: 目标变量名 := 表达式;
【例 4-3】
VARIABLE x,y,z : STD_LOGIC_VECTOR(7 DOWNTO 0); --声明变量 x、y、z x := "01001010"; y := "00010001"; z := x(0 TO 3) & y(4 TO 7);
【例 4-5】
SIGNAL sys_clk :BIT := '0'; SIGNAL temp --声明位型的信号 sys_clk,初始值为低电平 量,没有设置初始值 SIGNAL s1,s2 :STD_LOGIC; --声明了两个 STD_LOGIC 类型的信号 s1 和 s2 :STD_LOGIC_VECTOR(7 DOWNTO 0); --信号 temp,数据类型为标准逻辑矢
14
第4章 VHDL语言要素
【例 4-1】
CONSTANT width_s : INTEGER := 8; CONSTANT delay CONSTANT fbus : TIME := 25ns; --声明常量 width_s,数据类型为整型,值为 8 --声明常量 dealy 作为延时时间 25 ns
序或参数的名称。使用标识符要遵守一定的法则,这不仅是对
电子系统设计工程师的一个约束,同时也为各种EDA工具提供 标准的书写规范,使之在综合仿真过程中不产生歧义,易于仿 真。VHDL中的标识符分为基本标识符和扩展标识符两种。
9
第4章 VHDL语言要素
基本标识符的规则如下: (1) 标识符由字母(A~Z,a~z)、数字(0~9)和下划线( _ ) 组成。 (2) 任何标识符必须以英文字母开头。 (3) 不允许出现多个连续的下划线,只能是单一下划线,
括正整数、负整数和零,表示范围是-(231-1)~(231-1),即 -2 147 483 647~2 147 483 647。整数的表达方式举例:
1,234,567E2(= 56700),12_345_678(=12 345 678)
其中,数字间的下划线仅仅是为了提高文字的可读性,相当于 一个空的间隔符,没有其他意义,也不影响文字本身的数值。
22
第4章 VHDL语言要素
信号的使用需要注意以下几个要点: (1) 信号的声明范围是程序包、实体和结构体。信号不能 在进程和子程序中声明,但可以使用。 (2) 与常量相似,信号也具有可视性规则。在程序包中声 明的信号,对于所有调用此程序包的设计实体都可见;在实体
3
第4章 VHDL语言要素
(3) 以数制基数表示的格式。用这种方式表示的数由五部 分组成:第一部分,基数,用十进制数表明所用数制;第二部 分,数制隔离符号“#”;第三部分,所要表达的数;第四部 分,指数隔离符号“#”;第五部分,用十进制数表示的指数, 如果这一部分为0可以省去不写。以数制基数表示的文字表达 方式举例:
: BIT_VECTOR := "010100"; --声明常量 fbus 为位矢量类型
15
第4章 VHDL语言要素
4.2.2 在 进程和子程序中使用。变量声明的格式如下: VARIABLE 变量名 :数据类型 [:=初始值];
【例 4-2】
VARIABLE count: INTEGER RANGE 0 TO 99 := 0; --声明变量 count,数据类型为整型,初值为 0 VARIABLE result : STD_LOGIC := '1'; --变量 result 为标准逻辑位数据类型,初值为‘1’ 类型,没有定义初值 VARIABLE x,y,z : STD_LOGIC_VECTOR(7 DOWNTO 0); --声明变量 x、y、z 为标准逻辑矢量数据
(4)变量常用在实现某种运算的赋值语句中。变量赋值和初 始化赋值都使用符号“:=”。 (5)变量不能用于硬件连线。
18
第4章 VHDL语言要素
在VHDL 93标准中对变量的类型作了增加,引入了全程变 量,可以把值传送到进程外部,参见例4-4。从分析可知,定 义了一个全程变量v,用于在进程P0和P1间传递信息。需要注 意的是,全程变量也不能作为进程的敏感参数,并且可能导致 一些不确定性,使用全程变量必须小心。
第4章 VHDL语言要素
第 4 章 VHDL语言要素
4.1 VHDL文字规则
4.2 数据对象
4.3 VHDL的数据类型 4.4 VHDL操作符 4.5 属性 习题
1
第4章 VHDL语言要素
4.1 VHDL文字规则
4.1.1 数值型文字
1.数字型 数字型文字有多种表达方式,列举如下:
(1) 整数(Integer)。整数是十进制数,与算数整数相似,包
4
第4章 VHDL语言要素
(4) 物理文字量。物理文字量包括时间、电阻、电流等, 但此类文字综合器不能接受,多用于仿真。物理文字量的表达
方式举例:
55 ns,177 Ω,23 m 它一般由整数和单位两部分组成,整数与单位间至少留一 个空格。
5
第4章 VHDL语言要素
2. 字符串型 字符是用单引号引起来的ASCII字符,可以是数值,也可 以是符号或字母,如 ‘A’、 ‘8’、 ‘a’、 ‘-’。字符 串是字符的一维数组,必须使用双引号引起来。VHDL中有两 种字符串:文字字符串和数位字符串。
且不能以下划线结束。
(4) 标识符不区分英文字母大小写。 (5) VHDL定义的保留字或关键词,不能用作标识符。 (6) VHDL中的注释文字一律由两个连续的连接线“--”开 始,可以出现在任一语句后面,也可以出现在独立行。
10
第4章 VHDL语言要素
分析下面标识符的合法性:
_decoder 3dop large#number sig_N state0 NOT-ACK Data_ _bus Copper_ _ Return tx_clk --非法标识符,起始不能是非英文字母 --非法标识符,起始不能是非英文字母 –非法标识符, “#”不能成为标识符的构成 --合法标识符 --合法标识符 --非法标识符, “-”不能成为标识符的构成 --非法标识符,不能含有多个下划线 --非法标识符,不能以下划线结束 --非法标识符,关键字不能用作标识符 --合法标识符
(1) 文字字符串。文字字符串即用双引号引起来的一串文
字,举例: "STRING","Both A and B equal to 0"
6
第4章 VHDL语言要素
(2) 数位字符串。数位字符串即位矢量,用双引号引起来 的一维位(BIT,VHDL预定义数据类型)数据,采用基数符加字 符串的表达形式,举例: B“1_1101_0010” (二进制数组,位矢量长度是9) O“34”(八进制数组,位矢量长度是6,相当于 B“011100”) X"1AB" (十六进制数组,位矢量长度是12) 其中,B代表二进制基数符号,表示二进制数位0或者1,字符
串中的每一位表示一个BIT;O代表八进制基数符号,字符串
中的每一位代表一个八进制数,即3位BIT的二进制数;X代表 十六进制基数符号,字符串中的每一位代表一个十六进制数,
即一个4位的二进制数。
7
第4章 VHDL语言要素
分析下面表达方式的正确性: B“1000_1110” --二进制数组,数组长度8,表达正确
21
第4章 VHDL语言要素
与变量相同,对信号初始值的设置也不是必须的,并且仅 在仿真中有效。一般在设计中对信号进行赋值,信号赋值语句 的格式如下: 目标信号名<=表达式;
【例 4-6】
SIGNAL a,b,c,d : STD_LOGIC_VECTOR(7 DOWNTO 0); a <= "10101010"; b <= X"AA"; c(7 DOWNTO 4) <= "1100"; d(7) <= '1'; --以二进制形式将 8 个比特一次赋值完毕 --以十六进制形式赋值,在 VHDL 97 标准中定义 --比特分割,信号 c 的高 4 位被赋值“1100” --单比特赋值
19
第4章 VHDL语言要素
【例 4-4】
L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 ------------------------------------------------------------------------------------------------------------------------ARCHITECTURE bhv OF example IS SHARED VARIABLE v : STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN P0 : PROCESS(a,b) BEGIN v := a & b; END PROCESS p0; p1 : PROCESS(c) BEGIN IF v = "11" THEN y <= c; ELSE y <= "0000"; END IF; END PROCESS p1;
VHDL语言的基本要素(大全)
VHDL语言的基本要素一、数据对象VHDL语言的主要数据对象有信号,变量,常量。
信号—信号是电路中的物理量,对应于电路的连线、节点;信号说明全局量,用于描述中的构造体(Architecture), 实体(Intity),程序包(package)。
变量—变量是程序运算中的中间量,并不对应电路中的物理量。
变量说明局部量,用于进程语句(process), 函数(Function), 过程(procedure)。
常量—常数也不对应电路中的物理量,当常量说明全局量,在构造体(Architecture), 实体(Intity),程序包(package),进程语句(process), 函数(Function), 过程(procedure)中均可使用。
数据对象的定义格式:signal 信号名:数据类型,约束条件,表达式Variable 变量名:数据类型,约束条件:=表达式Constant 常量名:数据类型,约束条件:=表达式例如:Variable count:INTEGER RANGE 0 TO 255:=10Constant Daly:Time:=100ns信号代入和变量赋值的区别:两者形式不同,操作过程也不相同。
变量赋值符“:=”,信号的代入符“<=”。
在变量的赋值语句中,该语句一当执行,其值立即将赋予变量;而信号的代入,其语句执行后不会立即使信号发生代入,在下条语句执行时,仍使用原来的信号值,如进程语句中的敏感表的信号代入就是如此。
二、数据类型VHDL语言中的数据类型,一般而言可分为:标量类型和组合类型。
在实际使用中,也可分成予定义类型和用户定义类型。
VHDL语言是强类型的语言,主要可按如下分类和变换处理。
①标准数据类型⑴整数⑵实数(浮点数)-1.0E+38~+1.0E38 ⑶位bit(0,1)⑷位矢量⑸布尔量,“假”,“真”⑹字符(ASCⅡ)字符⑺时间⑻错误等级⑼自然数(大于等于0的整数)⑽字符串(字符矢量)②用户定义的数据类型TYPE 数据类型名{数据类型名} 数据类型定义⑴枚举类型⑵整数类型⑶实数类型⑷数组类型⑸存取类型⑹文件类型⑺记录类型⑻时间类型③用户定义子类型SUBTUPE 子类型名IS 数据类型名[范围]例:SUBTYPE digit is INTEGER RANGE 0 TO 9④数据类型转换数据类型的变换函数通常由“STD_LOGIC_1164”,“STD_LOGIC_ARITH”,“STD_LOGIC_UNSIGNED”的程序包提供例如,在STD_LOGIC_1164程序包中,TO_STD LOGIC VECTOR(A) 由BIT_VECTOR转换为STD_LOGIC_VECTORTO_BITVECTOR(A) 由STO_LOGIC_VECTOR转为BIT_VECTORTO_STDLOGIC(A) 由BIT转换为STD_LOGICTO_BIT(A) 由STD_LOGIC转换成BIT signal a: BIT_VECTOR(11 DOWNTO 0)signal b: STD_LOGIC_VECTOR(11 DOWNTO 0)a<=X”A8” 十六进制值可赋予位矢量b<=X”A8” 语法错,十六进制不能赋予.STD 矢量b<=TO_STDLOGICVECTOR(X“AF7”)b<=TO_STDLOGICVECTOR(O“5177”)八进制变换b<=TO_STDLOGICVECTCR(B“1010_1111_0111”)下表中也给出一些典型的类型变换函数三、运算符运算符的优先级如下表所示:运算符的优先级例如,并置运算符的使用:tmp_b<=b AND (en&en&en&en) y <= a & tmp_b第一个语句表示b 的4位位矢量由en 进行选择 得到一个4位位矢量输出第二个语句表示4位位矢量a 和4位位矢量b 再 次连接(并置)构成8位的位矢量y 输出 右图所示为并置运算符操作的电路示意。
3、VHDL语言要素
entity(实体)
architecture (结构体)
process(进程)
subprograms(子程序)
block(块)
二、变量(variable)
1、作用:存储临时数据。 2、声明格式: variable 变量名:数据类型; 3、赋值语句:变量名:=表达式; 4、注意: ★定义变量的位置:进程、子程序。 使用变量的位置:进程、子程序。 ★变量不能将值带出当前结构。 变量的赋值是立即发生的。
九、unsigned
定义前需打开ieee库和std_logic_arith程序包 定义时必须注明宽度(与矢量类似) 不能用integer的写法,应使用数位字符串 不能按位操作,必要时需进行类型转换
十、signed
注意事项同上
十一、类型转换函数
函数名
STD_LOGIC_1164程序包:
2、关系操作符
Байду номын сангаас
关系运算的结果是布尔类型:true或false。 不同长度的数组也可进行关系运算,规则是从左至 右逐一比较(与定义顺序to或downto无关),若发 现有一位不同即可确定结果。如:“101” <“110”。
举例:
entity relation_ops is port ( a,b : in bit_vector (0 to 3) ; c,d : in integer; m,n : out boolean) ; end relational_ops ; architecture example of relation_ops is begin
a<=b and c; --(1) d<=e or f or g ; --(2) h<=i nand j nand k ; --(3) l<=(m xor n) and (o xor p); --(4) h<=i and j and k ; --(5) h<=i and j or k ; --(6) a<=b and e ; --(7) h<=i or l ; --(8)
第四章 VHDL的语言要素
第四章VHDL的语言要素4.1 VHDL的数据对象与其他高级语言一样,VHDL中把用来承载数据的容器叫做VHDL的数据对象,VHDL的数据对象主要有信号、常量和变量三类。
1 常量在VHDL中,常量是一种不变的量,它只能在对它定义时进行赋值,并在整个程序中保持该值不变。
常量的功能一方面可以在电路中代表电源、地线等,另一方面可提高程序的可读性,也便于修改程序。
常量定义的格式为:CONSTANT 常量名:数据类型:=表达式;[例3.4] 常量定义举例CONSTANT V: INTEGER:=8;2 变量变量是临时数据的容器,它没有物理意义,并且只能在进程和子程序中定义,也只能在进程和子程序中使用。
变量一旦赋值立即生效。
变量定义的描述格式为:VARIABLE 变量名:数据类型[:=表达式];[例3.5]变量定义举例VARIABLE y: INTEGER;3 信号信号是VHDL的一种重要数据对象,它定义了电路中的连线和元件的端口。
其中端口和内部信号定义的差别是在端口定义中多了一个端口模式的定义。
信号是一个全局量,可以用来进行各模块之间的通信。
信号定义的格式为:SIGNAL 信号名:数据类型;[例3.6]信号定义举例SIGNAL A: STD_LOGIC;4.2 VHDL的数据类型VHDL是一种强类型的语言,每一个数据对象都必须具有确定的数据类型定义,并且只有在相同数据类型的数据对象之间,才能进行数据交换。
VHDL预定义了大量的数据类型,下面介绍几种最常用的数据类型。
1 整数数据类型(INTEGER)整数类型的数有正整数负整数和零,在VHDL中其取值范围是:-2147483547---2147483646 。
2 实数数据类型(REAL)VHDL的实数与数学中的实数或浮点数相似,只是范围被限定为:-1.0E38---1.0E38,并且在书写时一定要有小数。
3 位数据类型(BIT)在数字系统中,信号经常用位数据类型表示,位数据类型属于枚举类型,其值是用带单引号的‘1’和‘0’表示。
VHDL and PLD 第04章 VHDL语言要素(2013年10月)
常数(CONSTANT) 常数的定义和设置主要是为了使设计实体中的常数更容易阅读 和修改。 在程序中,常量是一个恒定不变的值。一旦作了数据类型和赋 值定义后 在程序中不能再改变 ,因而具有全局性意义。 其形式如下: CONSTANT 常数名:数据类型 := 表达式; 例如 CONSTANT fbus : BIT_VECTOR := "010115" ;--位矢数据类型 CONSTANT Vcc : REAL := 5.0 ; --实数数据类型 CONSTANT dely : TIME := 25ns ; --时间数据类型
第4章 VHDL语言要素
信号(SIGNAL) 信号是描述硬件系统的基本数据对象,它类似于连接 线。信号可以作为设计实体中并行语句模块间的信息 交流通道(交流来自顺序语句结构中的信息)。在 VHDL 中,信号及其相关的信号赋值语句、决断函数、延时 语句等很好地描述了硬件系统的许多基本特征。如硬 件系统运行的并行性、信号传输过程中的惯性延迟特 性、多驱动源的总线行为等。 信号定义格式: SIGNAL 信号名:数据类型 := 初始值;
变量(VARIABLE) 在 VHDL 语法规则中,变量是一个局部量,只能在进 程和子程序中使用。变量不能将信息带出对它作出定 义的当前设计单元,变量的赋值是一种理想化的数据 传输 是立即发生,不存在任何延时的行为。 定义变量的语法格式如下 VARIABLE 变量名 数据类型 := 初始值 ; 例如变量定义语句 VARIABLE a : INTEGER ; VARIABLE b, c : INTEGER := 2 ; VARIABLE d : STD_LOGIC ;
第4章 VHDL语言要素
EDA技术及应用 第四章 VHDL设计初步PPT课件
4.1 多路选择器的VHDL描述
1. 2选1多路选择器的示意图和真值表
a 0y b1
s
当s=0时,y=a 当s=1时,y=b
absy ax0a xb1b
4
4.1 多路选择器的VHDL描述
2. 2选1多路选择器实现-原理图形输入法
01
10
a0
yy==ab
01
0b
5
4.1 多路选择器的VHDL描述
yasbs
19
4.1 多路选择器的VHDL描述
6. 各种表达式的比较---条件赋值表达式
y <= a WHEN s1=‘0’ ELSE b;
赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE 表达式 ;
20
4.1 多路选择器的VHDL描述
14
_ 4.1 多路选择器的VHDL描述 4. 思考 y = ab + c
思考1:画出真值表
abcy
xx11
0 x 0 _0
1b0b 15
_ 4.1 多路选择器的VHDL描述 4. 思考 y = ab + c
思考2:使用原理图方式实现上式功能
16
_ 4.1 多路选择器的VHDL描述 4. 思考 y = ab + c
描述结构体的关键词。
功能描述语句:并行语句,顺序语句
并行语句:WHEN_ELSE,逻辑操作赋值
顺序语句:IF_THEN_ELSE
13
4.1 多路选择器的VHDL描述
3. 相关语句结构和语法-文件名称 文件名称建议和实体名称相同 使用VHDL语句编写:后缀是.vhd 使用Verilog HDL语句编写:后缀是.v 使用原理图输入设计:后缀是.gdf
vhdl语言要素
SIGNAL x:STD_LOGIC; --x is declared as a one-digit (scalar) signal of type STD_LOGIC. SIGNAL y: STD_LOGIC_VECTOR (3 DOWNTO 0):= "0001"; --y is declared as a 4-bit vector, with the left most bit being the MSB. The initial value (optional)of y is "0001".Notice that the ":=“ operator is used to establish the initial value.
1、 CONSTANT 2、 SIGNAL 3、 VARIABLE
Object’ active zone
1、Global in object
Object is declared in package or entity。 2、Partial in object Object is declared in architecture 。
20 μs,100 ns,3 sec。
9、SEVERITY LEVEL: note,warning,error,failure
10、NATURAL
Non-negative integers (from 0 to +2,147,483,647).
11、 STD_LOGIC STD_LOGIC_VECTOR :
CHAPTER 2
vhdl language element
(Ⅰ)Object in VHDL (Ⅱ)Data type in VHDL (Ⅲ)Operation actor in VHDL
第4章VHDL语言基础
END 结构体名;
4.1.3 结构体部分
结构体组成
结
构 体
说
明 结
构
体 结 构 体
功 能 描 述
常数说明 数据类型说明
信号说明 例化元件说明 子程序说明
块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句
结构体描述风格
行为描述 描述该设计单元的功能,主要使用函数、过程和进程语 句,以算法形式描述数据的变换和传送
例4-4
Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all;
行为描述
Entity eqcomp4 is Port (a,b: in std_logic_vector (3 downto 0); equals: out std_logic);
4.1.2 实体部分
实体(ENTITY)
实体是一个设计实体的表层设计单元,其功能是 对这个设计实体与外部电路进行接口描述。它规定了 设计单元的输入/输出接口信号或引脚,是设计实体 经封装后对外的一个通信界面。类似于原理图中的一 个部件符号。
4.1.2 实体部分
实体格式
ENTITY 实体名 IS
书写格式: GENERIC([常数名:数据类型[:设定值]
{;常数名:数据类型[:=设定值 ]}); 例4-1
GENERIC (cntwidth : integer:=4);
4.1.2 实体部分
PORT端口
用于定义模块所有的输入/输出信号,相当于定义一个 模块符号
EDA课件4
信号与变量的区别(1)
architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clk'event and clk='1') then count <= count + 1; if(count=0) then carryout <= '1'; else carryout <= '0'; end if; end if; end process; end rtl; architecture rtl of start is begin process(clk) variable count : integer range 0 to 7; begin if (clk'event and clk='1') then count := count + 1; if(count=0) then carryout <= '1'; else carryout <= '0'; end if; end if; end process; end rtl;
该语句定义了一个名为“data”的整数常数,并且赋来自初值50。2.变量 .
只能在Process、Function和Procedure中定义,并只在其内部 有效。它是一个局部量,在仿真过程中执行到变量赋值语句后, 变量被即时赋值。临时数据,没有物理意义。 变量说明语句的一般格式如下: VARIABLE变量名:数据类型:=初值表达式; 如:“VARIABLE t,m:INTEGER ; ”语句表示定义了两个名为t和
EDA技术和VHDL设计第4章 VHDL语言要素.ppt
10#235#
(十进制数表示,等于235)
2#1110_1011#
(二进制数表示,等于235)
8#353#
(八进制数表示,等于235)
16#EB#
(十六进制数表示,等于235)
16#E#E1
(十六进制数表示,等于16#E0#,等于
2#11100000#,等于224)
16#F.01#E2
(十六进制数表示,等于16#F01#,等于3841.00)
Data_ _bus Copper_ _ Return tx_clk
--非法标识符,不能含有多个下划线 --非法标识符,不能以下划线结束 --非法标识符,关键字不能用作标识符 --合法标识符
11
第4章 VHDL语言要素 VHDL93标准还支持扩展标识符,以反斜杠来界定,免
去了87标准中基本标识符的一些限制,如:可以以数字打头, 允许包含图形符号,允许使用VHDL保留字,区分字母大小 写等。扩展标识符举例:\entity\、\2chip\、\EDA\、\eda\、 \aa\\bb\。但目前仍有较多VHDL工具不支持扩展标识符,所 以本书仍以87标准为准。由于VHDL语言不区分大小写,在 书写时一定要养成良好的书写习惯。一般而言,应用关键词 时应大写,自行定义的标识符应小写。
2
第4章 VHDL语言要素 其中,数字间的下划线仅仅是为了提高文字的可读性,相当 于一个空的间隔符,没有其他意义,也不影响文字本身的数 值。 (2) 实数(Real)。实数也是十进制的数,但必须带有小数 点。它类似于数学上的实数,或称浮点数,表示范围是 1.0E38~1.0E38。实数的表达方式举例: 0.0,123.45,6.0,78.99E - 2( = 0.7899), 12_345.678_999(=12345.678999)
EDA技术与数字系统设计第4章 VHDL语言基础
第4章 VHDL语言基础
端口模式用来说明数据、信号通过该端口的方向。 VHDL提供了以下四种端口模式:
(1) IN:输入,只读模式。该模式主要用于输入控制 信号、地址、数据和时钟等。
(2) OUT:输出,单向赋值模式。该模式主要用于输 出控制信号、地址和数据等。
图4.1 VHDL程序的基本结构示意图
第4章 VHDL语言基础
从例4.1的描述可以看出,一个最基本的VHDL程序 由三部分组成:库说明(LIBRARY)、实体说明 (ENTITY)和结构体说明(ARCHITECTURE),其它的结 构层次可根据需要选用。一个程序只能有一个实体, 但可以有多个结构体。
库名是一系列标识符,这一语句表示打开了以此库 名命名的库,以便后面的设计实体可以利用其中的程 序包。如例4.1中的“LIBRARY IEEE; ”表示打开 IEEE库。
第4章 VHDL语言基础
1. 库的种类 VHDL语言中的库分为设计库和资源库两类。设计 库不需要使用LIBRARY和USE子句声明;资源库是标 准模块和常规元件存放的库,使用之前要声明。程序 设计中常用的库有以下四种。
第4章 VHDL语言基础
4.2.2 结构体(ARCHITECTURE) 结构体是设计实体中的一个组成单元,用于描述
设计实体的内部结构和实体端口间的逻辑关系。结构 体对基本设计单元的输入输出关系可以用行为 (behavior)描述、数据流(dataflow)描述、结构(structure) 描述和混合(mixture)描述四种方式进行描述。
实体语句部分;] END [ENTITY] 实体名;
第4章 VHDL语言基础
2. 类属(GENERIC)说明 类属参量常以一种说明的形式放在实体或块结构体前 的说明部分。类属为实体和外部环境通信提供一种静态 信息通道,尤其是用来规定实体端口的大小、设计实体 的物理特性和结构体中的总线宽度等等。类属与常数不 同,常数只能从设计实体内部得到赋值,并且不能再改 变,而类属的值可以由设计实体外部提供。
