EDA第五章复习总结Word格式文档下载.docx
《EDA第五章复习总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA第五章复习总结Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
![EDA第五章复习总结Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/24/2d9185b0-b831-4710-8d5c-289427bc2780/2d9185b0-b831-4710-8d5c-289427bc27801.gif)
类别信号类型);
END实体名;
同样类别和类型的信号可以用逗号分隔,在一个语句行中说明。
信号的类别主要有以下4种:
IN:
此信号是输入信号;
OUT:
此信号是输出信号,提供给其他的实体;
BUFFER:
缓冲信号,也是实体的输出信号,但是可以被实体本身的结构体读入;
INOUT:
双向信号,既可以输入,也可以输出。
系统预定义的信号类型有:
BIT:
二进位型,信号的值只能是‘0’或‘1’。
BIT_VECTOR:
二进位向量,实际对应的是二进位数组;
BOOLEAN:
布尔型,取值只能是true或者false;
INTEGER:
整型,一般都用32位二进制数表示整型数;
CHARACTER:
字符型,使用8位编码的ASCII字符。
三、结构体描述
ARCHITECTURE结构体名OF实体名IS
<
声明部分>
BEGIN
描述部分>
END结构体名;
对于一个实体来说,可以有几种不同的结构体描述。
5.3VHDL程序的元素
一、关键字85页
二、标识符的命名85页
三、数据类型91页
预定义:
◆整数Integer:
-(2的31次方-1)—2的31次方-1
◆实数Real:
-1.0E+38--+1.0E+38
◆位Bit:
’0’或’1’
◆位矢量Bit_Vector:
”001100”
◆布尔量Boolean:
真或假
◆字符Character:
’A’,’C’
◆物理Time:
预定义为时间,其他如电压、电流等也为物理型
◆错误等级:
NOTE、WARNING、ERROR、FAILURE
◆自然数(Natural)、正整数(Positive)
◆字符串(String),如”morning”
用户自定义类型:
96页
◆枚举型可以通过枚举类型来定义信号的取值。
除了最常用的二值逻辑(已经预定义为BIT型),还可以有三值逻辑(信号有三种取值:
‘0’、‘1’和‘z’),九值逻辑等
TYPE枚举类型名IS(枚举型值表);
如TYPEqit_logicIS('
0'
'
1'
Z'
X'
)
◆STD_ULOGIC
在IEEE1164标准逻辑包中所定义的std_ulogic类型是一种九值逻辑,也是一种枚举型的数据类型:
TYPEstd_ulogicIS('
U'
--Uninitialized
'
--ForcingUnknown
--Forcing0
--Forcing1
--HighImpedance
W'
--WeakUnknown
L'
--Weak0
H'
--Weak1
-'
--Don'
tCare);
◆数组类型
TYPE数组名ISARRAY(范围)OF基类型
1,其中的“基类型”是已经定义过的类型,甚至可以是已经定义过的数组类型。
2,定义中的“范围”,既表示数组的大小,也说明用什么方式表示数组元素的下标。
通常,“范围”是用整数表示,也可以用枚举值表示
3,“范围”用整数表示时,整数范围可以是递增表示,也可以是递减表示:
TYPEregisterISARRAY(0TO7)OFBIT;
TYPEregist_1ISARRAY(7DOWNTO1)OFBIT;
TYPEromISARRAY(0TO7)OFregister;
rom类型实际上是用register基类型定义的二维数组,即
TYPEromISARRAY(0TO7,0TO7)OFBIT;
数组的范围还可以用已经定义过的枚举型来表示,如:
TYPElight_delayISARRAY(traffic_light)OFINTEGER;
这里的traffic-light是已经定义的枚举类型,有三个取值(“red、yellow、green”)。
将来定义的类型为light-delay的数组,也只会有三个元素。
在VHDL中,可以对数组的整体赋值:
如定义了regist_1类型的数组信号:
TYPEregist_1ISARRAY(7DOWNTO0)OFBIT;
SIGNALarr_1,arr_2:
regist_1;
以下的赋值操作在VHDL中都是允许的:
arr_1<
="
10110110"
;
arr_2<
=arr_1;
◆子类型97页
希望对某种类型数据的范围加以限制
四、对象
VHDL把信号、变量、常量和文件统称为对象。
89页
1.常量的定义
CONSTANT常量名:
类型名:
=常量值;
例如:
CONSTANTarray_size:
INTEGER:
=16;
CONSTANTgate_delay:
TIME:
=50ns;
2.变量的定义
变量的定义采用如下的方式:
VARIABLE变量名:
类型名[:
=初值];
变量的赋值用“:
=”来表示。
变量的赋值没有延迟。
3.信号的定义
信号定义的方式:
SIGNAL信号名:
信号的赋值用“<
=”表示,有延迟,初始化不同于赋值
信号的传送可以规定延迟,也可以不规定延迟。
但是VHDL规定,如果没有指定信号传送的延迟,信号的传送也会有一个最小延迟Δ。
信号可以是全局定义的,PORT中定义的信号就是对所有的结构体都有效。
但是,信号也可以是局部定义的,在结构体内部定义的信号只对这个结构体有效。
五、词法单元87页
1.注释
◆以双连符(--)开始直到行末
2.VHDL中的数字
◆八进制:
以O开头,如O”340”
◆二进制:
以B开头,如B”11100000”
◆十六进制:
以X开头,如X”E0”
3.字符
◆文字字符表示形式为:
单引号括起来的ASCII字符,如’A’,’*’
4.字符串
文字字符串表示形式为:
双引号括起来的图形字符序列。
如”howareyou”,””等
5.位串
◆位串表示形式为:
双引号括起来的扩展的数字序列,数字序列前冠以基数说明符。
如:
B”11110101”--长度为八的二进制数,等效245
6.VHDL语句中使用的标点符号
分号(;
)是一条语句结束的标志
逗号(,)是对象的分隔符
冒号(:
)和原点(.)的用法在每条语句中给出
六、表达式与运算符102页具体的运算符
和其他程序设计语言中的表达式很相似,一个表达式是由运算符把对象名、文字、函数调用及括起来的表达式连接起来的式子。
在一个VHDL表达式中,数据的类型应该相同。
如果不同的数据类型出现在同一个表达式,VHDL不会进行自动类型的转换,而只会给出错误信息。
VHDL支持运算符的重载。
例如可以对不同类型的信号各自进行AND运算。
七、VHDL的库和包
1.VHDL库的种类和使用
VHDL的库可以分为三种类型:
系统库,IEEE库、用户库。
系统库是VHDL语言本身预定义的库,包括STD库和WORK库。
STD库是系统的标准库,所有系统本身预定义的类型和有关的操作都包含在这个库中。
WORK库是用户的工作库。
对用户都是透明的,也就是随时都可以使用的,不需要在描述中专门说明。
IEEE库是IEEE认可的标准库,其中包括对于STD_LOGIC类型以及有关函数的定义。
用户库就是VHDL软件提供厂商开发的库,应该查询相应软件的说明。
2.程序包
一个VHDL库可以包含许多内容,并且往往以程序包(Package)的形式组织在一起。
一个程序包由两个部分构成:
包的说明部分(PackageDeclaration)和包的主体部分(PackageBody)。
基本的结构如下:
PACKAGE程序包名IS
程序包说明部分
END程序包名;
PACKAGEBODY程序包名IS
程序包主体描述
说明部分可以包括:
常量说明;
信号说明,这里说明的信号可以被所有的结构体使用;
类型说明;
函数或过程说明;
部件(Component)说明,
程序包的主体部分则是对所包含的函数、过程、结构体进行具体的描述。
程序包示例
PACKAGEqit_utilitiesIS
TYPEqitIS('
0’,‘1’,‘Z’,‘X’);
FUNCTION"
AND"
(a,b:
qit)RETURNqit;
只是声明,有这个函数
OR"
ENDqit_utilities;
PACKAGEBODYqit_utilitiesIS
qit)RETURNqitIS对函数的具体过程描述
CONSTANTqit_and_table:
qit_2d:
=(
('
'
),
));
BEGIN
RETURNqit_and_table(a,b);
END"
qit)RETURNqitIS函数的定义方法71页例3-3比较
CONSTANTqit_or_table:
RETURNqit_or_table(a,b);
以上的程序包中定义了一种4值逻辑及其操作。
在说明部分定义了一种新的信号类型qit,也就是一种4值逻辑,还说明了两个函数AND和OR,用来对4值逻辑进行“与”“或”运算。
在BODY部分实现了这两个函数。
3.库和程序包的引用77页
在所有的VHDL源程序都要首先声明使用什么VHDL库。
声明要使用关键字LIBRARY,例如,要使用IEEE库,使用这个库中的哪个程序包就应该作以下的声明:
LIB