ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:237.65KB ,
资源ID:3601168      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3601168.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(eda知识点梳理教学内容.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

eda知识点梳理教学内容.docx

1、eda知识点梳理教学内容知识点:VHDL文字规则1. 数字型文字由数字、小数点和下划线组成(1)整数文字 5, 678, 156E2, 45_234_287(=45234287)(2)实数文字 188.993,88_670_551.453_909(3)以数制基数表示的文字 格式:数制#数值#(指数) 例如: 10#170# 16#FE# 2#1101_0001# 8#376# 16#E#E14)物理量文字例如:60 s,100 m2. 字符串文字字符以单引号括起来的数字、字母和符号(ASCII码)例如:0,1,A,B,a,b字符串一维的字符数组,用双引号括起来。 (1)文字字符串例如:“ABC

2、”,“A BOY.”,“A”, “1011”(2)数值字符串位矢量格式:数制基数符号“数值字符串”其中: B二进制基数符号; O八进制基数符号; X16进制基数符号;例如: B“111_011_110”;矢量数组,长度为9 O“15”;等效B“001101”,长度为6 X“AD0”;等效B“101011010000”, 长度为12 数值字符串中可添加下划线,不影响其长度3. 标识符是用户给常量、变量、信号、端口、子程序或参数定义的名字规则(87标准, 又称短标识符):标识符由字母(AZ;az)、数字和下划线字符组成任何标识符必须以英文字母开头末字符不能为下划线不允许出现两个连续下划线标识符中不

3、区分大小写字母VHDL定义的保留字或称关键字,不能用作标识符VHDL93标准支持扩展标识符,以反斜杠来定界,允许以数字开头,允许使用空格以及两个以上的下划号。扩标用反斜杠界定。如:multi_screens。允许包含图形符号、空格符。如:mode A, $100等。反斜杠之间的字符可用保留字。如:buffer, entity等。扩标的界定符两个斜杠之间可以用数字打头。如:100$,2chip,4screens等。扩标中允许多个下划线相连。如:Four_screens, TWO_Computer_sharptor等。扩展标识符中的一个反斜杠,要用两个反斜杠来代替扩标区分大小写。如: EDA 与e

4、da不同。扩标与短标不同。如:Computer 与Computer不同。 4.下标名数组用途:用于指示数组型变量或信号的某一个元素格式:标识符(表达式)例如:b(3);表示数组型变量或信号b的第3个元素5.段名多个下标名的组合用途:用于指示数组型变量或信号的某一段元素格式:标识符(表达式 方向 表达式)方向:TO下标序号由低到高 DOWNTO下标序号由高到低例如:D(7 DOWNTO 0);表示数据总线D7D0 D(5 TO 7 );表示数据总线D5D76.注释 VHDL中的注释由两个连续的短线(-)开始,直到行尾。 VHDL数据对象存放各种类型数据的容器,包括变量、常量、信号和文件 1. 变

5、量(VARIABLE) 规则:只能在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)中说明和使用的局域量定义格式:VARIABLE 变量名:数据类型(范围)(:=初始值) 如:VARIABLE a:INTEGER; VARIABLE b:INTEGER :=2; VARIABLE c:INTEGER RANGE 0 TO 7 :=2;变量赋值语句: 目标变量名:=表达式例如:VARIABLE x,y:REAL VARIABLE a,b:BIT VECTOR(0 TO 7); x:=100.0; y:=1.5+x; a:=“10101011” a(3 TO 6):=(

6、1,1,0,1); a(0 TO 5):=b(2 TO 7);变量使用要点:变量是一个局部量,只能在进程和子程序中使用,不能将信息带出对它作出定义的当前设计单元。变量赋值立即发生,无延时行为。VHDL不支持变量附加延时语句。变量的初值不是必需的,综合器将略去所有初值。变量常用在实现某种算法的赋值语句中。2. 信号(SIGNAL)规则:信号是在结构体(ARCHITECTURE)、程序包(PACKAGE)和实体中声明的全局量。 信号定义格式:SIGNAL 信号名:数据类型(范围)(:=初值) 例如:SIGNAL temp:STD LOGIC:=0; SIGNAL flaga,flagb:BIT S

7、IGNAL data:STD LOGIC VECTOR(15 DOWNTO 0); 信号赋值语句: 目标信号名=表达式 例如:x=9; y=x; z=x AFTER 5 ns; 注意信号和变量赋值方法的区别:变量用“:=”号赋值,而信号用“=”赋值;在声明中对信号和变量赋初值,两者都用“:=”号。信号使用要点信号类似于连接线。信号可以作为设计实体中并行语句模块间的信息交流通道。信号不但可以容纳当前值,也可以保持历史值。这一属性与触发器的记忆功能有很好的对应关系。信号的初值不是必需的,而且仅在仿真中有效。信号的赋值允许允许设定延时,如:T1=T2 AFTER 20 ns,但仅用于仿真。当信号用在

8、顺序描述语句中时,其值在相应的进程,函数或过程完成之后才更新。实体中定义的端口默认为信号。3. 常量(CONSTANT)规则:常量在程序前部定义,且一旦被赋值就不能再改变。常量定义格式:CONSTANT 常量名:数据类型:=初值;例如:CONSTANT fbus:BIT VECTOR:=“010111”;CONSTANT Vcc:REAL:=5.0;CONSTANT dely:TIME:=25 ns; 常量使用要点:常量设置使得设计实体中的常数易阅读和修改。如将位矢的宽度定义为一个常量,只要修改这个常量就能改变宽度,从而改变硬件结构。常量是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序

9、中不能再改变,有全局意义。常量与表达式类型必须一致,只能是标量类型或复合类型。常量的可视性(其使用范围取决于定义的位置): 定义在程序包中的常量,具有最大全局化特征,可以用在调用此程序包的所有设计实体中; 定义在设计实体中的常量,其有效范围为这个实体定义的所有的结构体; 定义在设计实体的某一结构体中的常量,则只能用于此结构体; 定义在结构体的某一单元的常量,如一个进程中,则这个常量只能用在这一进程中。4. 文件(FILE)(VHDL 1076-1993标准) 文件是传输大量数据的客体,包含一些专门数据类型的数值。在仿真测试时,测试的输入激励数据和仿真结果的输出都可用文件来进行。文件的声明方式为

10、:FILE identifier : file_type OPEN mode IS “file_name”;VHDL数据类型VHDL是一种强类型语言,要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且只有数据类型相同的量才能互相传递和作用。1. 标量型(Scalar Type)单元素的最基本数据类型 (1)实数类型 (2)整数类型 (3)枚举类型 (4)时间类型2. 复合类型(Composite Type) (1)数组型(Array) (2)记录型(Record) 3. 存取类型(Access Type)为数据对象提供存取方式 4.文件类型(Files

11、 Type)提供多值存取类型3.2.4 VHDL的预定义数据类型在STD库中的标准程序包(STANDARD)中预先定义的数据类型。 1. 位(BIT)数据类型BIT是一个二值枚举类型,包括0和1。可用于表示变量、信号等数据对象的状态。定义语句:TYPE BIT IS(0,1) 2. 位矢量(BIT VECTOR)数据类型位矢量是由多个BIT组成的数组,BIT是其元素,形式为用双引号把多个BIT位括在一起,如“0011”。可用于表示总线的状态。定义语句:TYPE BIT VECTOR IS ARRAY(NATURAL RANGE)OF BIT;RANGE表示宽度未定,NATURAL表示其宽度的范

12、围和自然数的范围相同规则:使用位矢量必须注明位宽,例如:SIGNAL a:BIT VECTOR(7 DOWNTO 0);-定义a是一个宽为8位的位矢量,左为a(7)右为a(0);例: SIGNAL a:BIT_VECTOR(7 DOWNTO 0); SIGNAL b:BIT_VECTOR(3 DOWNTO 0); SIGNAL c:BIT; b=“1110”; b(3)=1; b=a(7 DOWNTO 4); a(7 DOWNTO 4)=a(3 DOWNTO 0); a(3 DOWNTO 0)= b; a(7)=C; 3. 布尔(BOOLEAN)数据类型BOOLEAN也是一个二值枚举类型,一个

13、布尔量具有两种状态:逻辑“假”(FALSE)和逻辑“真”(TRUE)。布尔量没有具体数值的含义,也不能进行算术运算,但是可以进行逻辑运算,并作为关系运算的结果。定义语句:TYPE BOOLEAN IS(FALSE,TRUE);-以枚举类型定义 4. 字符(CHARACTER)数据类型字符是用单引号括起来的ASCII码字符,如A a 0 9。字符有大小写区分,如B不同于b。定义语句:TYPE CHARACTER IS(ASCII码字符表中的全部字符) 5. 字符串(STRING)数据类型字符串是用双引号括起来的字符序列,也称字符矢量或字符串数组。例如,“A BOY.”,“10100011” 6.

14、 整数(INTEGER)数据类型整数包括:正整数、负整数和零范围:32位带符号整数,即-(231-1)+(231-1) 即(-2147483647+2147483647) 整数常量的书写方式示例如下: 2 -十进制整数 10E4 -十进制整数 16#D2# -十六进制整数 2#11011010# -二进制整数硬件实现时,整数由不超过32位的二进制数来表示。 当端口类型设为整数型时一般应对其范围给予限定,这时端口的宽度为可以表示该整数的最小宽度;如没有限定范围,则综合后的位宽为32位。 如:SIGNAL s : INTEGER RANGE 0 TO 15; 表示信号 s 的取值范围是0-15,可

15、用4位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。7.自然数(NATURAL)和正整数(POSITIVE)数据类型自然数和正整数都是整数的子集自然数包括0和正整数正整数不包括0的正整数 其定义如下:定义如下: SUBTYPE NATURAL IS INTEGER RANGE 0 TO INTEGERHIGH; SUBTYPE POSITIVE IS INTEGER RANGE 1 TO INTEGERHIGH;8. 实数(REAL)数据类型VHDL的实数类型类似于数学上的实数,或称浮点数。由正负号、小数点和数字组成。范围:-1.0E+38 TO +1.0E+38 实数常量的书写方

16、式举例如下: 65971.333333 -十进制浮点数 8#43.6#E+4 -八进制浮点数 43.6E-4 -十进制浮点数实数类型仅能在EDA仿真器中使用,因为其实现相当复杂,EDA综合器目前尚不支持。9. 时间(TIME)数据类型时间是物理量数据,由整数数据和单位两部分组成,整数和单位之间至少留一个空格,如55 ms,20 ns。时间及其他物理量数据可以用于仿真,但不可综合。定义如下:TYPE TIME IS RANGE 2147483647 TO 2147483647UNITS fs;-飞秒(10-15S)VHDL中的最小时间单位 ps=1000fs;-皮秒 ns=1000ps;-纳秒

17、us=1000ns;-微秒 ms=1000us;-毫秒 sec=1000ms;-秒 min=60sec;-分 hr=60min;-时END UNITS; 10.错误等级(Severity Level)错误等级属于枚举数据类型,用于表征系统的状态,包括:NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败) 。在仿真过程中,可输出这4种值来提示被仿真系统当前的工作状态。其定义如下:TYPE SEVERITY_LEVEL IS(NOTE,WARNING,ERROR,FAILURE);3.2.5 IEEE预定义的标准逻辑位和矢量在IEEE库的程序包STD_LOGIC_1

18、164中,定义了两个非常重要的数据类型,即标准逻辑位STD_LOGIC 和标准逻辑矢量STD_LOGIC_VECTOR。 1. 标准逻辑位(STD LOGIC)数据类型 TYPE STD LOGIC IS(U,-未初始化的 X,-强未知的 0,-强0 1,-强1 Z,-高阻态 W,-弱未知的 L,-弱0 H,-弱1 -忽略); 两个或以上数字逻辑电路的输出端连接到同一个节点时,节点的电平该如何取值?节点的电平取值取决于:两者或多方当前的输出电平值;两者的驱动能力强弱。驱动能力强的电路可以将节点电平强行拉高或拉低,因此需建立多值逻辑系统加以细分。多个输出连接到同一个节点上时,节点的电平取值:数值

19、关系归纳:X或-与其它数值连接时,最终电平取值均为X;Z与其它数值连接时,最终电平取值均为其它数值;强逻辑和弱逻辑连接时,取强逻辑的数值;W与L/H数值连接时,最终电平取值均为W;0与1、L与H连接时,最终电平取值分别为X、W;2. 标准逻辑矢量(STD LOGIC VECTOR)数据类型标准逻辑矢量在电路中用来表示总线。其定义如下:TYPE STD LOGIC VECTOR IS ARRAY(NATURAL RANGE)OF STD LOGIC ; - RANGE表示宽度未定,NATURAL表示其宽度的范围和自然数的范围相同注意:在程序中使用上述两种数据类型前,需加入下面语句: LIBRAR

20、Y IEEE; USE IEEE.STD_LOGIC_1164.ALL;对标准逻辑位及标准逻辑位矢量赋值时,H L Z等不能用小写在9种逻辑值中,只有1 0 和Z可综合,其他仅用于仿真STD_LOGIC_VECTOR类型数据不能直接进行算术运算SIGNAL a: BIT;SIGNAL b: BIT_VECTOR(7 DOWNTO 0);SIGNAL c: STD_LOGIC;SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL e: INTEGER RANGE 0 TO 255;例:a=b(3) 合法 b(2)=a; c=d(5); d(0)=c; a=c

21、; 非法 d=b; e=b; e=d;1. 枚举类型(Enumerated)枚举该类型的所有可能的值。定义格式:TYPE 数据类型名 IS (元素,元素.,元素);例如:TYPE week IS (sun,mon,tue,wed,thu, fri,sat); TYPE my_logic IS (1,0,Z);枚举类型的编码: 综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0,以后的依次加1。编码用位矢量表示 ,位矢量的长度将取所需表达的所有枚举元素的最小值。如:TYPE color IS(blue, green, yellow, red); 编码为: blue=“00”;

22、 green=“01”; yellow=“10”; red=“11”;2. 整数类型和实数类型定义格式:TYPE 数据类型名 IS RANGE 范围;例如:TYPE num1 IS RANGE 0 TO 100; 3. 数组类型 数组是将相同数据类型的数据集合在一起形成的一种新的数据类型。可以是1D、2D或1D*1D,更高维数的数组往往是不可综合的。 数组的结构:VHDL中预定义的数据类型仅包括标量类型(单个位)和矢量类型(一维数组)两类,并没有预定义2D和1D*1D数组,用户可以自定义。定义格式:TYPE 数组名 IS ARRAY (数据范围) OF 数据类型;例如:TYPE data_bu

23、s IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;-定义数据总线,下标由高到低,即D7位权值最高,D0位权值最低。TYPE data_bus IS ARRAY (0 TO 7) OF STD_LOGIC;-定义数据总线,下标由低到高,即D0位权值最高,D7位权值最低。一种定义1D*1D数组的方法: TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;-1D数组; TYPE matrix IS ARRAY (0 TO 3) OF row; -1D*1D数组,矢量数组; SIGNAL x:matrix; -声明是1D*1D信号另一种定义1

24、D*1D数组的方法: TYPE matrix IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0);二维数组的定义方法: TYPE matrix2D IS ARRAY(0 TO 3,7 DOWNTO 0) OF STD_LOGIC; 数组的赋值方法:x=“0001”;对一维数组赋值x= (0, 0,0,1,);对一维数组赋值y=(0, 0,0,1,),(0, 0,0,1,);对11维或二维数组赋值4. 记录类型(Record)记录是一组不同数据类型的元素的组合。定义格式:TYPE 记录类型名 IS RECORD 元素名:元素数据类型; 元素名:元素

25、数据类型; : END RECORD 记录类型名 ;访问记录体元素的方式:记录体名.元素名TYPE a_and_b IS RECORD a : STD_LOGIC_VECTOR(7 DOWNTO 0); b : INTEGER RANGE 0 to 3; END RECORD ; SIGNAL x, y, z : a_and_b ; SIGNAL data : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL num : INTEGER ; . x.a = “11110000” ; x.b = 2 ; data = y.a ; num = y.b ; z = x ; 数

26、据类型转换 由于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_S

27、TDLOGIC (A) -由BIT转换为STD_LOGIC函数 TO_BIT(A) -由标准逻辑STD_LOGIC转换BITSTD_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函数 TO_STDLOGIC (A) -由BIT转换为STD_LOGIC例:数据类型转换 LIBRARY IEEE; USE IEE

28、E.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; . SIGNAL a: IN INTEGER RANGE 0 TO 15; SIGNAL b: IN INTEGER RANGE 0 TO 15; SIGNAL y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); . y=CONV_STD_LOGIC_VECTOR(a+b),8);VHDL操作符VHDL的各种表达式由操作数和操作符组成,其中,操作数是各种运算的对象,而操作符则规定运算的方式。操作符种类及对应的操作数类型在VHDL中,一般有四类操作符: 逻辑操作符(Log

29、ical Operator) 关系操作符(Relational Operator) 算术操作符(Arithmetic Operator) 符号操作符(Sign Operator)3.2.8 属性(ATTRIBUTE)描述与定义语句属性从指定的客体或对象中获取关心的数据或信息。利用属性可以使VHDL源代码更加简明扼要,易于理解;语法: 对象属性预定义的属性:数值类属性和信号类属性数值类属性:获取数组或一般数据的相关信息。VHDL预先定义的、可综合的数值类属性: LEFT:索引的左边界值 RIGHT:索引的右边界值 HIGH:索引的上限值 LOW:索引的下限值 LENGTH:索引的长度值 RANGE:索引的位宽范围 REVERSE_RANGE:索引的反向位宽范围 例: VARIABLE my_vector : BIT_VECTOR (5 DOWNTO 0);各属性如下: my_vectorLEFT 5 my_vectorRIGHT 0 my_vectorHIGH 5 my_vectorLOW 0 my_vectorLENGTH 6 my_ve

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1