eda知识点梳理Word格式文档下载.docx

上传人:b****6 文档编号:8407389 上传时间:2023-05-11 格式:DOCX 页数:28 大小:236.63KB
下载 相关 举报
eda知识点梳理Word格式文档下载.docx_第1页
第1页 / 共28页
eda知识点梳理Word格式文档下载.docx_第2页
第2页 / 共28页
eda知识点梳理Word格式文档下载.docx_第3页
第3页 / 共28页
eda知识点梳理Word格式文档下载.docx_第4页
第4页 / 共28页
eda知识点梳理Word格式文档下载.docx_第5页
第5页 / 共28页
eda知识点梳理Word格式文档下载.docx_第6页
第6页 / 共28页
eda知识点梳理Word格式文档下载.docx_第7页
第7页 / 共28页
eda知识点梳理Word格式文档下载.docx_第8页
第8页 / 共28页
eda知识点梳理Word格式文档下载.docx_第9页
第9页 / 共28页
eda知识点梳理Word格式文档下载.docx_第10页
第10页 / 共28页
eda知识点梳理Word格式文档下载.docx_第11页
第11页 / 共28页
eda知识点梳理Word格式文档下载.docx_第12页
第12页 / 共28页
eda知识点梳理Word格式文档下载.docx_第13页
第13页 / 共28页
eda知识点梳理Word格式文档下载.docx_第14页
第14页 / 共28页
eda知识点梳理Word格式文档下载.docx_第15页
第15页 / 共28页
eda知识点梳理Word格式文档下载.docx_第16页
第16页 / 共28页
eda知识点梳理Word格式文档下载.docx_第17页
第17页 / 共28页
eda知识点梳理Word格式文档下载.docx_第18页
第18页 / 共28页
eda知识点梳理Word格式文档下载.docx_第19页
第19页 / 共28页
eda知识点梳理Word格式文档下载.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

eda知识点梳理Word格式文档下载.docx

《eda知识点梳理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《eda知识点梳理Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。

eda知识点梳理Word格式文档下载.docx

\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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2