ImageVerifierCode 换一换
格式:PPT , 页数:55 ,大小:308.50KB ,
文档编号:8243155      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-8243155.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

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

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(kld)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《EDA技术及应用》课件_第4章.ppt)为本站会员(kld)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《EDA技术及应用》课件_第4章.ppt

1、第 4 章描 述 语 言4.1 VHDL标识符标识符4.2 VHDL数据对象数据对象4.3 VHDL数据类型数据类型 4.4 VHDL运算符运算符 4.1 VHDL标识符标识符1.短标识符VHDL 87版中的短标识符遵循以下命名规则:有效字符包括英文字母(az,AZ)、数字(09)和下划线(_);必须以英文字母打头;下划线的前后都必须有英文字母或数字;EDA工具综合、仿真时,短标识符不区分大小写。2.扩展标识符VHDL 93版中的扩展标识符遵循以下命名规则:用反斜杠来界定,如abc等;允许包含图形符号、空格符、多个下划线相连,可以用数字打头,可以用保留字,如AB#CD、x*y、2M_N_P、E

2、ND等;扩展标识符区分大小写,如abc与ABC不同;同名的扩展标识符与短标识符不表示同一名称,如adder与adder不同。扩展标识符命名规则使得VHDL中的标识符的定义更加灵活。4.2 VHDL数据对象数据对象4.2.1 常量常量常量的语句格式为CONSTANT 常数名,常数名:数据类型:=表达式;例如:CONSTANT DELAY:REAL:=10.0;CONSTANT FBUS:BIT_VECTOR:=“0101”;常量的特点如下:常量一旦被赋值,在仿真和综合过程中就不能再改变;常量所赋的值应和定义的数据类型一致;常量的作用范围取决于它被定义的位置。4.2.2 变量变量变量的语句格式为

3、VARIABLE 变量名,变量名:数据类型 约束条件:=表达式;例如:VARIABLE counter:INTEGER RANGE 0 TO 255:=100;VARIABLE a,b,c:INTEGER;变量的特点如下:变量是一个局部量,只能在进程和子程序中使用;变量的赋值是一种理想化的数据传输,是立即发生的,不存在任何时延。4.2.3 信号信号信号的语句格式为 SIGNAL 信号名:数据类型 约束条件:=表达式;例如:SIGNAL dbus:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL sys_clk:BIT:=0;信号的特点如下:信号是描述硬件系统的基本数据对

4、象,类似于内部硬件连线;信号是一个全局量,可以用于进程之间的通信;信号可以看成是实体内部的端口(但没有方向说明);信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值(与触发器的记忆功能有很好的对应关系)。4.2.4 三种数据对象的比较三种数据对象的比较从硬件电路系统来看,常量相当于电路中的恒电平(VCC或GND),变量和信号相当于组合电路系统中门与门间的连线及其连线上的信号值。变量与信号之间,从综合以后对应的硬件结构看,在许多情况下并没有多少区别,它们都具有能够接受赋值这一重要共性(而VHDL综合器不理会延时)。变量与信号之间的主要区别(从VHDL语句功能和行为仿真上看)包括:信号可以

5、设置延时量,而变量则不能;信号可以作为模块间的信息载体,而变量只能作为局部的信息载体。4.3 VHDL数据类型数据类型VHDL语言的数据类型一般可分为标准的数据类型和用户定义的数据类型。4.3.1 标准的数据类型标准的数据类型VHDL定义了10种标准的数据类型,如表4-1所示。1.整数(Interger)VHDL语言中的整数与数学中的整数的定义相同,其表示范围为(231 1)+(231 1),即 2 147 483 6472 147 483 647。例如:+473,86。在电子系统的开发过程中,整数也可以作为对信号总线状态的一种抽象手段,用来准确地表示总线的某一种状态。2.实数(Real)实数

6、的定义范围为1.0E38+1.0E38,实数有正负号,书写时一定要有小数点。例如:+3.1415,1.0,1.0E38。在电子系统的开发过程中,实数主要用于硬件方案的研究和实验。3.位(Bit)位用来表示一个信号的状态,它有两种取值0和1。例如:BIT(1)。在数字系统中,位数据可以用来描述总线的值。4.位矢量(Bit_Vector)位矢量是用双引号括起来的一组位数据,每位有两种取值0和1。在其前面可加数值标记,如:X(十六进制)、O(八进制)、B(二进制)等。例如:“11001”,X“07AB”。5.布尔量(Boolean)布尔量是二值枚举量,它有两种状态:“TRUE”或者“FALSE”。在

7、数字系统中,常用布尔量表示信号的状态或者总线上的情况。6.字符(Character)字符是用单引号括起来的一个字母、数字、空格或一些特殊字符。字符区分大、小写。例如:A,CHARACTER(1)。7.字符串(String)字符串是用双引号括起来的一个字符序列。字符串区分大小写,常用于程序的提示和结果的说明。例如:“integer range”。8.时间(Time)完整的时间量数据应包含整数和单位两部分,整数和单位之间至少应留出一个空格的位置。例如:50 ns,100 ps。9.错误等级(Severity Level)错误等级类型数据用来表征系统的状态,它共有4种:NOTE(注意),WARNIN

8、G(警告),ERROR(出错),FAILURE(失败)。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况,以便操作人员根据系统的不同状态采取相应的对策。10.自然数(Natural)和正整数(Positive)Natural只能取0和0以上的正整数,而Positive只能为正整数。此外,对应位(Bit)和位矢量(Bit_Vector),在IEEE库STD_LOGIC_1164程序包中有两类常用的数据类型,它们是STD_LOGIC类型和STD_LOGIC_VECTOR类型,其取值有以下九种:U初始值;0逻辑0;1逻辑1;W弱信号不定,未知;L弱信号0;H弱信号1;_不可能情况;X不定,未

9、知;Z高阻。4.3.2 用户定义的数据类型用户定义的数据类型在VHDL语言中,允许用户自己定义数据类型。自定义数据类型的语句格式为TYPE 数据类型名,数据类型名 IS 数据类型定义;下面介绍6种常用的自定义数据类型。1.数组(Array)(1)限定性数组:下标的取值范围在数组定义时就被确定,其语句格式为 TYPE 数组名 IS ARRAY(数组范围)OF 数据类型;例如:TYPE STB IS ARRAY(7 DOWNTO 0)OF STD_LOGIC;其含义是:数组类型名为STB,共有8个元素,下标取值范围70,各元素排序为STB(7),STB(6),STB(0),每个元素的数据类型都是S

10、TD_LOGIC。(2)非限定性数组:下标的取值范围待随后根据具体数据对象确定,其语句格式为TYPE 数组名 IS ARRAY(数组下标名 RANGE)OF 数据类型;例如:TYPE BIT_VECTOR IS ARRAY(NATURAL RANGE)OF BIT;VARABLE VA:BIT_VECTOR(1 TO 6);其含义是:数组类型名为BIT_VECTOR,是一个没有范围限制的数组,它的取值范围由第二条信号说明语句给出。2.整数和实数类型(Integer,Real)整数和实数数据的语句格式为TYPE 数据类型名 IS 数据类型定义 约束范围;例如:TYPE counter IS IN

11、TEGER RANGE 0 TO 100;其含义是:counter是整数类型,其取值范围在0到100之间。3.记录类型(Record)记录类型是由已定义的、数据类型不同的对象元素构成的集合,其语句格式为TYPE 记录类型名 IS RECORD 元素名:元素数据类型;元素名:元素数据类型;END RECORD;记录类型适用于描述系统总线和系统仿真。对记录类型的数据对象进行单个元素赋值时,可在记录类型对象名后加点“.”,然后再加赋值元素的元素名。例如:TYPE bank IS RECORDaddr0:STD_LOGIC_VECTOR(7 DOWNTO 0);0:INTEGER;inst:instr

12、uction;END RECORD;SIGNAL addbus:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL alu_code:instruction;SIGNAL r_bank:bank:=(“00000000”,“0”,“add”);addbus=r_bank.addr0;r_bank.inst=alu_code;4.枚举类型(Enumerated)枚举类型是指在VHDL语言中,用文字符号来表示一组实际的二进制数的类型。例如,在表示一周每一天状态的逻辑电路中,可以假设“000”为星期天,“001”为星期一等,这对阅读程序非常方便,为此,可以定义一个“week”枚举

13、数据类型。枚举类型数据的语句格式为 TYPE 数据类型名 IS(元素,元素,);例如:TYPE week IS(sun,mon,tue,wed,thu,fri,sat)对应关系:000 001 010 011 100 110 1115.时间类型(Time)时间类型数据用于表示时间,在仿真时使用。其语句格式为 TYPE 数据类型名 IS 范围 UNITS 基本单位;单位 END UNITS例如:TYPE time IS RANGE -1E18 TO +1E18;UNITS fs;-VHDL中最小时间单位 ps=1000fs;ns=1000ps;s=1000ns;ms=1000s;sec=1000

14、ms;min=60sec hr=60min;END UNITS;6.用户定义子类型用户对已定义的数据类型作一些范围上的限制而形成的一种新的数据类型,称为用户定义子类型。其语句格式为 SUBTYPE 子类型名 IS 数据类型名 范围;例如:SUBTYPE databus IS STD_LOGIC_VECTOR(7 DOWNTO 0);这是在“STD_LOGIC_VECTOR”基础上形成的子类型。另外,在存储器阵列等的数组描述场合,也经常用到子类型。例如,用位矢量表示元素的数组描述存储器的结构:SUBTYPE word IS STD_LOGIC_VECTOR(k-1 DOWNTO 0);TYPE

15、memory IS ARRAY(0 TO 2*w-1)OF WORD;其中:k表示存储单元的数据宽度;2*w表示数组的元素个数。4.3.3 数据类型的转换数据类型的转换1类型标记法类型标记法利用类型名称来实现某些关系较为密切的标量类型之间的转换。例如:VARIABLE x:INTEGER;VARIABLE y:REAL;x:=INTEGER(y);y:=REAL(x);2函数转换法函数转换法利用VHDL语言程序包中提供的转换函数进行数据类型的相互转换。转换函数的作用是将一种属于某种数据类型的数据对象转换成属于另一种数据类型的数据对象。在“STD_LOGIC_1164”、“STD_LOGIC_A

16、RITH”、“STD_LOGIC_UNSIGNED”的包集合中提供了如表4-2所示的数据类型转换函数。【例4.1】数据类型转换举例。LIBRARY IEEE;USE IEEE STD_LOGIC_1164.ALL;USE IEEE STD_LOGIC_ UNSIGNED.ALL;ENTITY abc IS PORT(num:IN STD_LOGIC_VECTOR(3 DOWNTO 0);END abc;ARCHITECTURE rtl OF abc IS SIGNAL in_num:INTEGER RANGE 0 TO 5;BEGIN in_num=CONV_INTEGER(num);END

17、rtl;4.4 VHDL运算符运算符VHDL中,操作符与操作数间的运算要严格遵循以下规则:在基本操作符间操作数是同数据类型的;操作数的数据类型必须与操作符所要求的数据类型完全一致;遵守运算符的优先次序,VHDL语言运算符的优先级如表4-3所示。4.4.1 逻辑运算符逻辑运算符【例4.2】逻辑运算操作示例。SIGNAL a,b,c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d,e,f,g:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL h,i,j,k:STD_LOGIC;SIGNAL l,m,n,o,p:BOOLEAN;a=b AND c;d

18、=e OR f OR g;-操作符相同,不需括号h=(i NAND j)NAND k;l=(m XOR n)AND(o XOR p);h=i AND j AND k;h=i AND j OR k;-操作符不同,未加括号,表达错误a=b AND e;-操作数位矢长度不同,表达错误h=i OR l;-操作数类型不同,表达错误 4.4.2 算术运算符算术运算符1.求和运算符(+,&)VHDL规定:加减运算符的运算规则与常规的加减法是一致的;数据类型均为整数;对位宽大于4的加减法器,综合器将调用库元件进行综合;并置运算符“&”用于位的连接。例如:c=a&b;a、b分别为4位位矢量,则c为8位位矢量。2

19、.求积运算符(*,/,MOD,REM)VHDL规定:乘与除的数据类型是整数和实数(包括浮点数);在一定条件下,可对物理类型对象进行运算;虽在一定条件下乘除法运算是可以综合的,但尽量用变通的方法来实现。3.符号运算符(+,)VHDL规定:操作数的类型是整数,正号对操作数不作任何改变,负号对原操作数取负;在实际使用中,取负操作数需加括号。4.混合运算符(*,ABS)VHDL规定:操作数的数据类型为整数类型;乘方运算的左边可以是整数或浮点数,右边必须是整数,而且只有在左边为浮点数时,其右边才可以为负数。5.移位运算符(SLL,SRL,SLA,SRA,ROL,ROR)VHDL规定:对于移位操作数的数据

20、类型为一维数组,数组元素必须是BIT或BOOLEAN数据类型,移位的位数则是整数。4.4.3 关系运算符关系运算符在VHDL语言中,关系运算符有等于、不等于、小于、小于等于、大于和大于等于六种。关系运算符的作用是将相同数据类型的数据对象进行数值比较或关系排序判断,并将结果以BOOLEAN类型的数据表示出来(即TRUE或FALSE)。关系运算符的操作包括:(1)比较判断(=,/=)。对象:VHDL中的任何数据类型构成的操作数。规则:对于标量,它们的数据类型相同且数值也相同,结果为“真”;而对于数组,只有当等号两边数据中的每一对应位全部相等时,才返回“真”。(2)关系排序(,=)。对象:VHDL中

21、的整数数据类型(或一维数组)、枚举数据类型。规则:对于整数值,从正无限到负无限进行排序;对枚举数据,排序方式与它们的定义方式一致,如:10,TRUEFALSE,;对于数组,从左到右按大小(不管位数多少)排序。【例4.3】4位二进制数比较示例1。ENTITY relational_ops_1 IS PORT(a,b:IN BIT_VECTOR(0 TO 3);m:OUT BOOLEAN);END relational_ops_1;ARCHITECTURE example OF relational_ops_1 ISBEGIN output=(a=b);END example;【例4.4】4位二进

22、制数比较示例2。ENTITY relational_ops_2 IS PORT(a,b:IN INTEGER RANGE 0 TO 15;m:OUT BOOLEAN);END relational_ops_2;ARCHITECTURE example OF relational_ops_2 ISBEGIN output=b);END example;4.4.4 连接运算符连接运算符【例4.5】并置运算符操作示例。SIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tmp_b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL en:STD_LOGIC;SIGNAL y:STD_LOGIC_VECTOR(7 DOWNTO 0);tmp_b=b AND(en&en&en&en);y=a&tep_b;

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|