eda知识点梳理Word文档格式.docx
- 文档编号:18485487
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:28
- 大小:236.63KB
eda知识点梳理Word文档格式.docx
《eda知识点梳理Word文档格式.docx》由会员分享,可在线阅读,更多相关《eda知识点梳理Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
\multi_screens\。
允许包含图形符号、空格符。
\modeA\,\$100\等。
反斜杠之间的字符可用保留字。
\buffer\,\entity\等。
扩标的界定符两个斜杠之间可以用数字打头。
\100$\,\2chip\,\4screens\等。
扩标中允许多个下划线相连。
\Four__screens\,\TWO__Computer__sharptor\等。
扩展标识符中的一个反斜杠,要用两个反斜杠来代替
扩标区分大小写。
如:
\EDA\与\eda\不同。
扩标与短标不同。
\Computer\与Computer不同。
4.下标名——数组
用途:
用于指示数组型变量或信号的某一个元素
标识符(表达式)
b(3);
表示数组型变量或信号b的第3个元素
5.段名——多个下标名的组合
用于指示数组型变量或信号的某一段元素
标识符(表达式方向表达式)
方向:
TO——下标序号由低到高
DOWNTO——下标序号由高到低
D(7DOWNTO0);
表示数据总线D7~D0
D(5TO7);
表示数据总线D5~D7
6.注释
VHDL中的注释由两个连续的短线(--)开始,直到行尾。
VHDL数据对象——存放各种类型数据的容器,包括变量、常量、信号和文件
1.变量(VARIABLE)
规则:
只能在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)中说明和使用的局域量
定义格式:
VARIABLE变量名:
数据类型(范围)(:
=初始值)
如:
VARIABLEa:
INTEGER;
VARIABLEb:
INTEGER:
=2;
VARIABLEc:
INTEGERRANGE0TO7:
变量赋值语句:
目标变量名:
=表达式
VARIABLEx,y:
REAL
VARIABLEa,b:
BITVECTOR(0TO7);
x:
=100.0;
y:
=1.5+x;
a:
=“10101011”
a(3TO6):
=(‘1’,‘1’,‘0’,‘1’);
a(0TO5):
=b(2TO7);
变量使用要点:
变量是一个局部量,只能在进程和子程序中使用,不能将信息带出对它作出定义的当前设计单元。
变量赋值立即发生,无延时行为。
VHDL不支持变量附加延时语句。
变量的初值不是必需的,综合器将略去所有初值。
变量常用在实现某种算法的赋值语句中。
2.信号(SIGNAL)
规则:
信号是在结构体(ARCHITECTURE)、程序包(PACKAGE)和实体中声明的全局量。
信号定义格式:
SIGNAL信号名:
=初值)
SIGNALtemp:
STDLOGIC:
=‘0’;
SIGNALflaga,flagb:
BIT
SIGNALdata:
STDLOGICVECTOR(15DOWNTO0);
信号赋值语句:
目标信号名<=表达式
x<=9;
y<=x;
z<=xAFTER5ns;
注意信号和变量赋值方法的区别:
变量用“:
=”号赋值,而信号用“<=”赋值;
在声明中对信号和变量赋初值,两者都用“:
=”号。
信号使用要点
信号类似于连接线。
信号可以作为设计实体中并行语句模块间的信息交流通道。
信号不但可以容纳当前值,也可以保持历史值。
这一属性与触发器的记忆功能有很好的对应关系。
信号的初值不是必需的,而且仅在仿真中有效。
信号的赋值允许允许设定延时,如:
T1<
=T2AFTER20ns,但仅用于仿真。
当信号用在顺序描述语句中时,其值在相应的进程,函数或过程完成之后才更新。
实体中定义的端口默认为信号。
3.常量(CONSTANT)
常量在程序前部定义,且一旦被赋值就不能再改变。
常量定义格式:
CONSTANT常量名:
数据类型:
=初值;
CONSTANTfbus:
BITVECTOR:
=“010111”;
CONSTANTVcc:
REAL:
=5.0;
CONSTANTdely:
TIME:
=25ns;
常量使用要点:
常量设置使得设计实体中的常数易阅读和修改。
如将位矢的宽度定义为一个常量,只要修改这个常量就能改变宽度,从而改变硬件结构。
常量是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序中不能再改变,有全局意义。
常量与表达式类型必须一致,只能是标量类型或复合类型。
常量的可视性(其使用范围取决于定义的位置):
定义在程序包中的常量,具有最大全局化特征,可以用在调用此程序包的所有设计实体中;
定义在设计实体中的常量,其有效范围为这个实体定义的所有的结构体;
定义在设计实体的某一结构体中的常量,则只能用于此结构体;
定义在结构体的某一单元的常量,如一个进程中,则这个常量只能用在这一进程中。
4.文件(FILE)(VHDL1076-1993标准)
文件是传输大量数据的客体,包含一些专门数据类型的数值。
在仿真测试时,测试的输入激励数据和仿真结果的输出都可用文件来进行。
文件的声明方式为:
FILEidentifier:
file_type[OPENmode]IS“file_name”;
VHDL数据类型
VHDL是一种强类型语言,要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有数据类型相同的量才能互相传递和作用。
1.标量型(ScalarType)——单元素的最基本数据类型
(1)实数类型
(2)整数类型
(3)枚举类型
(4)时间类型
2.复合类型(CompositeType)
(1)数组型(Array)
(2)记录型(Record)
3.存取类型(AccessType)——为数据对象提供存取方式
4.文件类型(FilesType)——提供多值存取类型
3.2.4VHDL的预定义数据类型
——在STD库中的标准程序包(STANDARD)中预先定义的数据类型。
1.位(BIT)数据类型
BIT是一个二值枚举类型,包括‘0’和‘1’。
可用于表示变量、信号等数据对象的状态。
定义语句:
TYPEBITIS(‘0’,‘1’)
2.位矢量(BITVECTOR)数据类型
位矢量是由多个BIT组成的数组,BIT是其元素,形式为用双引号把多个BIT位括在一起,如“0011”。
可用于表示总线的状态。
TYPEBITVECTORISARRAY(NATURALRANGE〈〉)OFBIT;
RANGE〈〉表示宽度未定,NATURAL表示其宽度的范围和自然数的范围相同
使用位矢量必须注明位宽,例如:
SIGNALa:
BITVECTOR(7DOWNTO0);
--定义a是一个宽为8位的位矢量,左为a(7)右为a(0);
例:
SIGNALa:
BIT_VECTOR(7DOWNTO0);
SIGNALb:
BIT_VECTOR(3DOWNTO0);
SIGNALc:
BIT;
b<
=“1110”;
b(3)<
=‘1’;
=a(7DOWNTO4);
a(7DOWNTO4)<
=a(3DOWNTO0);
a(3DOWNTO0)<
=b;
a(7)<
=C;
3.布尔(BOOLEAN)数据类型
BOOLEAN也是一个二值枚举类型,一个布尔量具有两种状态:
逻辑“假”(FALSE)和逻辑“真”(TRUE)。
布尔量没有具体数值的含义,也不能进行算术运算,但是可以进行逻辑运算,并作为关系运算的结果。
TYPEBOOLEANIS(FALSE,TRUE);
--以枚举类型定义
4.字符(CHARACTER)数据类型
字符是用单引号括起来的ASCII码字符,如‘A’‘a’‘0’‘9’。
字符有大小写区分,如‘B’不同于‘b’。
TYPECHARACTERIS(ASCII码字符表中的全部字符)
5.字符串(STRING)数据类型
字符串是用双引号括起来的字符序列,也称字符矢量或字符串数组。
例如,
“ABOY.”,“10100011”
6.整数(INTEGER)数据类型
整数包括:
正整数、负整数和零
范围:
32位带符号整数,即-(231-1)~+(231-1)
即(-2147483647~+2147483647)
整数常量的书写方式示例如下:
2--十进制整数
10E4--十进制整数
16#D2#--十六进制整数
2#11011010#--二进制整数
硬件实现时,整数由不超过32位的二进制数来表示。
当端口类型设为整数型时一般应对其范围给予限定,这时端口的宽度为可以表示该整数的最小宽度;
如没有限定范围,则综合后的位宽为32位。
SIGNALs:
INTEGERRANGE0TO15;
表示信号s的取值范围是0-15,可用4位二进制数表示,因此s将被综合成由四条信号线构成的信号。
7.自然数(NATURAL)和正整数(POSITIVE)数据类型
自然数和正整数都是整数的子集
自然数——包括0和正整数
正整数——不包括0的正整数
其定义如下:
定义如下:
SUBTYPENATURALISINTEGERRANGE0TO
INTEGER’HIGH;
SUBTYPEPOSITIVEISINTEGERRANGE1TO
8.实数(REAL)数据类型
VHDL的实数类型类似于数学上的实数,或称浮点数。
由正负号、小数点和数字组成。
-1.0E+38TO+1.0E+38
实数常量的书写方式举例如下:
65971.333333--十进制浮点数
8#43.6#E+4--八进制浮点数
43.6E-4--十进制浮点数
实数类型仅能在EDA仿真器中使用,因为其实现相当复杂,EDA综合器目前尚不支持。
9.时间(TIME)数据类型
时间是物理量数据,由整数数据和单位两部分组成,整数和单位之间至少留一个空格,如55ms,20ns。
时间及其他物理量数据可以用于仿真,但不可综合。
TYPETIMEISRANGE–2147483647TO2147483647
UNITS
fs;
--飞秒(10-15S)VHDL中的最小时间单位
ps=1000fs;
--皮秒
ns=1000ps;
--纳秒
us=1000ns;
--微秒
ms=1000us;
--毫秒
sec=1000ms;
--秒
min=60sec;
--分
hr=60min;
--时
ENDUNITS;
10.错误等级(SeverityLevel)
错误等级属于枚举数据类型,用于表征系统的状态,包括:
NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败)。
在仿真过程中,可输出这4种值来提示被仿真系统当前的工作状态。
TYPESEVERITY_LEVELIS(NOTE,WARNING,ERROR,FAILURE);
3.2.5IEEE预定义的标准逻辑位和矢量
在IEEE库的程序包STD_LOGIC_1164中,定义了两个非常重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR。
1.标准逻辑位(STDLOGIC)数据类型
TYPESTDLOGICIS(‘U’,--未初始化的
‘X’,--强未知的
‘0’,--强0
‘1’,--强1
‘Z’,--高阻态
‘W’,--弱未知的
‘L’,--弱0
‘H’,--弱1
‘-’--忽略);
两个或以上数字逻辑电路的输出端连接到同一个节点时,节点的电平该如何取值?
节点的电平取值取决于:
两者或多方当前的输出电平值;
两者的驱动能力强弱。
驱动能力强的电路可以将节点电平强行拉高或拉低,因此需建立多值逻辑系统加以细分。
多个输出连接到同一个节点上时,节点的电平取值:
数值关系归纳:
X或-与其它数值连接时,最终电平取值均为X;
Z与其它数值连接时,最终电平取值均为其它数值;
强逻辑和弱逻辑连接时,取强逻辑的数值;
W与L/H数值连接时,最终电平取值均为W;
0与1、L与H连接时,最终电平取值分别为X、W;
2.标准逻辑矢量(STDLOGICVECTOR)数据类型
标准逻辑矢量在电路中用来表示总线。
TYPESTDLOGICVECTORISARRAY(NATURALRANGE〈〉)OFSTDLOGIC;
--RANGE〈〉表示宽度未定,NATURAL表示其宽度的范围和自然数的范围相同
注意:
在程序中使用上述两种数据类型前,需加入下面语句:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
对标准逻辑位及标准逻辑位矢量赋值时,‘H’‘L’‘Z’等不能用小写
在9种逻辑值中,只有‘1’‘0’和‘Z’可综合,其他仅用于仿真
STD_LOGIC_VECTOR类型数据不能直接进行算术运算
SIGNALa:
BIT;
SIGNALb:
BIT_VECTOR(7DOWNTO0);
SIGNALc:
STD_LOGIC;
SIGNALd:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALe:
INTEGERRANGE0TO255;
a<
=b(3)合法
b
(2)<
=a;
c<
=d(5);
d(0)<
=c;
a<
非法
d<
=b;
e<
=d;
1.枚举类型(Enumerated)
枚举该类型的所有可能的值。
TYPE数据类型名IS(元素,元素...,元素);
TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);
TYPEmy_logicIS(‘1’,‘0’,‘Z’);
枚举类型的编码:
综合器自动实现枚举类型元素的编码,一
般将第一个枚举量(最左边)编码为0,以后的
依次加1。
编码用位矢量表示,位矢量的长度
将取所需表达的所有枚举元素的最小值。
TYPEcolorIS(blue,green,yellow,red);
编码为:
blue=“00”;
green=“01”;
yellow=“10”;
red=“11”;
2.整数类型和实数类型
TYPE数据类型名ISRANGE范围;
TYPEnum1ISRANGE0TO100;
3.数组类型
数组是将相同数据类型的数据集合在一起形成的一种新的数据类型。
可以是1D、2D或1D*1D,更高维数的数组往往是不可综合的。
数组的结构:
VHDL中预定义的数据类型仅包括标量类型(单个位)和矢量类型(一维数组)两类,并没有预定义2D和1D*1D数组,用户可以自定义。
TYPE数组名ISARRAY(数据范围)OF数据类型;
TYPEdata_busISARRAY(7DOWNTO0)OFSTD_LOGIC;
--定义数据总线,下标由高到低,即D7位权值最高,D0位权值最低。
TYPEdata_busISARRAY(0TO7)OFSTD_LOGIC;
--定义数据总线,下标由低到高,即D0位权值最高,D7位权值最低。
一种定义1D*1D数组的方法:
TYPErowISARRAY(7DOWNTO0)OFSTD_LOGIC;
--1D数组;
TYPEmatrixISARRAY(0TO3)OFrow;
--1D*1D数组,矢量数组;
SIGNALx:
matrix;
---声明是1D*1D信号
另一种定义1D*1D数组的方法:
TYPEmatrixISARRAY(0TO3)OFSTD_LOGIC_VECTOR(7DOWNTO0);
二维数组的定义方法:
TYPEmatrix2DISARRAY(0TO3,7DOWNTO0)OFSTD_LOGIC;
数组的赋值方法:
x<
=“0001”;
—对一维数组赋值
=(‘0’,‘0’,‘0’,‘1’,);
y<
=((‘0’,‘0’,‘0’,‘1’,),(‘0’,‘0’,‘0’,‘1’,));
—对1×
1维或二维数组赋值
4.记录类型(Record)
记录——是一组不同数据类型的元素的组合。
TYPE记录类型名ISRECORD
元素名:
元素数据类型;
:
ENDRECORD[记录类型名];
访问记录体元素的方式:
记录体名.元素名
TYPEa_and_bISRECORD
a:
b:
INTEGERRANGE0to3;
ENDRECORD;
SIGNALx,y,z:
a_and_b;
SIGNALdata:
SIGNALnum:
INTEGER;
…….
x.a<
=“11110000”;
x.b<
=2;
data<
=y.a;
num<
=y.b;
z<
=x;
数据类型转换
由于VHDL是一种强类型语言,不同类型的数据对象必须经过类型转换,才能相互操作。
常见的实现数据类型转换的方法有以下两种:
写一段专用于数据类型转换的VHDL代码
调用程序包中预定义的数据类型转换函数,如程序包STD_LOGIC_1164。
IEEE库中提供了若干数据类型转换函数:
◎STD_LOGIC_1164程序包定义的转换函数:
函数TO_STDLOGICVECTOR(A)--由位矢量BIT_VECTOR转换为标准逻辑矢量STD_LOGIC_VECTOR
函数TO_BITVECTOR(A)--由标准逻辑矢量STD_LOGIC_VECTOR转换为位矢量BIT_VECTOR
函数TO_STDLOGIC(A)--由BIT转换为STD_LOGIC
函数TO_BIT(A)--由标准逻辑STD_LOGIC转换BIT
STD_LOGIC_ARITH程序包定义的转换函数:
函数CONV_STD_LOGIC_VECTOR(A,B)--由INTEGER,SINGED,UNSIGNED或STD_LOGIC转换成位宽为B的STD_LOGIC_VECTOR
函数CONV_INTEGER(A);
--由SIGNED,UNSIGNED和STD_LOGIC转换成INTEGER
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
SIGNALa:
ININTEGERRANGE0TO15;
SIGNALb:
SIGNALy:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
y<
=CONV_STD_LOGIC_VECTOR((a+b),8);
VHDL操作符
VHDL的各种表达式由操作数和操作符组成,其中,操作数是各种运算的对象,而操作符则规定运算的方式。
操作符种类及对应的操作数类型
在VHDL中,一般有四类操作符:
逻辑操作符(LogicalOperator)
关系操作符(RelationalOperator)
算术操作符(ArithmeticOperator)
符号操作符(SignOperator)
3.2.8属性(ATTRIBUTE)描述与定义语句
属性从指定的客体或对象中获取关心的数据或信息。
利用属性可以使VHDL源代码更加简明扼要,易于理解;
语法:
对象’属性
预定义的属性:
数值类属性和信号类属性
数值类属性:
获取数组或一般数据的相关信息。
VHDL预先定义的、可综合的数值类属性:
LEFT:
索引的左边界值
RIGHT:
索引的右边界值
HIGH:
索引的上限值
LOW:
索引的下限值
LENGTH:
索引的长度值
RANGE:
索引的位宽范围
REVERSE_RANGE:
索引的反向位宽范围
VARIABLEmy_vector:
BIT_VECTOR(5DOWNTO0);
各属性如下:
my_vector’LEFT5
my_vector’RIGHT0
my_vector’HIGH5
my_vector’LOW0
my_vector’LENGTH6my_vector
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 知识点 梳理