华北电力大学科技学院电子设计自动化课件6vhdl词法.ppt
《华北电力大学科技学院电子设计自动化课件6vhdl词法.ppt》由会员分享,可在线阅读,更多相关《华北电力大学科技学院电子设计自动化课件6vhdl词法.ppt(121页珍藏版)》请在三一办公上搜索。
1、第6章VHDL词法,6.1 VHDL 基本常识6.2 VHDL标示符6.3 VHDL 数据类型6.4 VHDL 数据对象6.5 VHDL运算符,6.1 VHDL 的基本常识,1.VHDL中的英文字母不区分大小写。2.VHDL中区分大小写的场合有:用单引号括起来的字符 用双引号括起来的字符串 扩展标示符3.VHDL 中的注释符号为2个连续的-,即-。,6.2 VHDL 标示符,标示符用来定义一个事物的名称以便同其他事物区分开来。VHDL 定义了两种标示符:1)基本标示符 2)扩展标示符。,6.2 VHDL 标示符,1)基本标示符,基本标示符的命名规则有:合法字符有3类:英文字母、数字和下划线 最
2、前面应该是英文字母 不能连续使用下划线 不能用下划线结束 不能使用VHDL的关键字/保留字,6.2 VHDL 标示符,1)基本标示符,基本标示符使用错误情况举例:SIGNAL a_bus:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL 302_bus:-数字开头的名字是错误的SIGNAL b_bus:-符号不能作为名称的字母,是错误的SIGNAL a_bus:.-_符号在名称中不能连着使用,故是错误的SIGNAL b_bu8_:-_符号不能在名称最后使用,故是错误的,2)扩展标示符,扩展标示符的命名规则有:标示符的首尾要加反斜杠“”来限定。比如VHDL 允许使用ASCI
3、I码中的任意字符和图形符号。比如%、对字符的顺序没有限制,允许使用保留字。比如234abc、library 用双反斜杠“”表示标示符中的反斜杆字符“”。比如1005=20 区分大小写。比如ABC与Abc代表不同的扩展标示符 扩展标示符和基本标示符不同。比如ABC与ABC不同,6.2 VHDL 标示符,6.3 VHDL数据类型,VHDL提供了多种标准的数据类型用户可以自定义数据类型VHDL是强类型语言不同类型之间的数据不能直接代入同类型但不同位长不能直接代入,6.3 VHDL数据类型,VHDL语言的数据类型主要有4类:(1)标量类型(Scalar Type)(2)复合类型(Composite T
4、ype)(3)存取类型(Access Type)(4)文件类型(File Type),6.3 VHDL数据类型,(1)标量类型(Scalar Type),标量类型,枚举类型(Enumeration Type),整数类型(Integer Type),浮点类型(Floating Point Type),物理类型(Physical Type),离散类型(Discrete Type),数值类型(Numeric Type),6.3 VHDL数据类型,(2)复合类型(Composite Type),复合类型,数组类型(Array Type),记录类型(Record Type),6.3 VHDL数据类型,V
5、HDL在包集合STANDARD中预订义了一些数据类型,主要有11种:枚举类型:CHARACTER BIT BOOLEAN SEVERITY LEVEL 整数类型:INTEGER NATURAL POSITIVE,6.3 VHDL数据类型,物理类型:TIME 浮点类型:REAL 数组类型:STRING BIT_VECTOR,6.3.1 预定义数据类型,VHDL预定义数据类型包含在STD库的STANDARD包集合中,不需要声明库和包集合可以直接使用这些数据类型。STD库是VHDL的标准库。STD库中还有另一个包集合TEXTIO,使用TEXTIO包集合时,需要首先声明STD库和TEXTIO包集合,才
6、能使用该包集合中预定义的数据。,6.3.1 预定义数据类型,1、整数(Integer),占32位,数值在-2147483647到2147483647之间整数不能看作位矢量,也不能按位来进行访问对整数一般不能用逻辑操作符,可以使用转换函数将整数转换成位矢量,再进行逻辑操作。例如:0,1,217,512,2、实数(Real)实数的范围-1.0E+38+1.0E+38实数在书写时必须有小数点例如:5.0,1.25,3.14,3、位(BIT)注意位值表示 0,1位值可以显式说明:BIT(1)、BIT(0),4、位矢量(BIT_VECTOR)位矢量是用双引号括起来的一组位数据 一般用位矢量数据表示总线状
7、态 例如:001100 B 001_101_010 9位二进制位串 X A_F0_FC 20位十六进制位串 O 3701 12位八进制位串 B:二进制 X:十六进制 O:八进制,5、布尔量(BOOLEAN)有两种状态:“真”(TRUE)“假”(FLASE)它没有数值的含义,不能进行逻辑运算状态可以由关系运算产生,6、字符(Character)字符量通常用单引号括起来 字符中的大、小写认为是不一样的字符可以是az的任一字母,09中任何一个数以及空白或者特殊字符¥,$,%等等可以显式声明 如:CHARACTER(1),7、字符串(String)字符串是由双引号括起来的一个字符序列,也称为字符矢量或
8、字符串数组 例如:“integer range”字符串常用于程序的提示和说明,8、时间(Time)时间是一个物理量数据 完整的时间量数据应包含整数和单位两个部分,而且整数和单位之间至少应留一个空格 在系统仿真时,用它表示信号延时,从而使模型系统更能逼近实际系统的运行环境 时间预定义包含在包集合STANDARD中,单位为fs,ps,ns,us,ms,sec,min,hr 例:20 ns,40 us,TYPE time is RANGE-1E18 to 1E18 UNITS fs;ps=1000 fs;ns=1000 ps;us=1000 ns;ms=1000 us;sec=1000 ms;min
9、=60 sec;hr=60 min;END UNITS;,9、错误等级(Severity level)错误等级数据类型一般用来表征系统的状态共有4种状态:注意(Note)、警告(warning)、错误(Error)、失败(Failure)在系统仿真过程中来提示系统当前的工作情况与assertion语句和report语句结合使用,10、自然数(Natural)NATURAL是整数的子类 NATURAL类数据只能取0和正整数。在STANDARD包集合中对NATURAL做了如下定义:SUBTYPE NATURAL IS INTEGER RANGE 0 TO INTEGERHIGH;,11、正整数(P
10、ositive)POSITIVE是整数的子类 POSITIVE 类数据只能取大于0的整数。在STANDARD包集合中对POSITIVE做了如下定义:SUBTYPE NATURAL IS INTEGER RANGE 1 TO INTEGERHIGH;,约束区间 在VHDL仿真过程中,首先要检查赋值语句中的类型和区间,任何一个信号和变量的赋值均须落入给定的约束空间中,也就是说要落入有效数值的范围内。约束区间的说明通常跟在数据类型说明的后面。例:INTEGER RANGE 100 DOWNTO 1;BIT_VECTOR(3 DOWNTO 0);REAL RANGE 2.0 TO 30.0;,可由用户
11、定义的数据类型:1)枚举(Enumerated)类型;2)整数(Integer)类型;3)浮点(Floating)数类型;4)数组(Array)类型;5)存取(Access)类型;6)文件(File)类型;7)记录(Recode)类型;8)物理(Physical)类型;,6.3.2 用户定义的数据类型,定义的语法格式:,TYPE 数据类型名,数据类型名 数据类型定义;,6.3.2 用户定义的数据类型,SUBTYPE 子类型名 IS 数据类型名 范围;,TYPE 数据类型名 IS(元素,元素,);,例:TYPE week IS(sun,mon,tue,wed,thu,fri,sat);,1)枚举
12、类型,定义格式:,TYPE 数据类型名 IS ARRAY 范围 OF 数组元素数据类型名;,(1)数组类型如果没有指定范围的数据类型,则默认为INTEGER类型的。例如:TYPE byte_8 IS ARRAY(0 TO 7)OF STD_LOGIC;TYPE byte_8 IS ARRAY(INTEGER 0 TO 7)OF STD_LOGIC;以上两行代码是等价的。(2)除整数类型外,范围的数据类型也可以使用其它数据类型。使用时需要显式的声明范围的数据类型。例如:自定义枚举类型TYPE week IS(mon,tue,wed,thr,fri,sat,sun);TYPE lesson_lis
13、t IS(chinese,english,math,physic,chemical,music);TYPE lesson_chart IS ARRAY(week mon TO fri)OF lesson_list;,2)数组类型,定义格式:,(3)如果没有指定范围时,需要在定义该数据类型的信号、变量等时指定范围。例如:STD_LOGIC_VECTOR在包集合STD_LOGIC_1164中的有如下定义:TYPE STD_LOGIC_VECTOR IS ARRAY(NATURAL RANGE)OF STD_LOGIC;RANGE 表示没有范围限制。因此,在定义STD_LOGIC_VECTOR类型的
14、信号、变量时需要指定具体的范围。SIGNAL temp:STD_LOGIC_VECTOR(7 DOWNTO 0);-8位STD_LOGIC_VECTOR类型,2)数组类型,(4)多维数组范围的声明方法 N维数组需要N个范围来声明。二维数组一般用来描述存储器。一个范围表示字数,一个范围表示字长。大于二维的数组不能综合,只能用于仿真建模。例如:TYPE ram IS ARRAY(0 TO 127,7 DOWNTO 0)OF STD_LOGIC;,2)数组类型,例:TYPE word IS ARRAY(INTEGER 1 TO 8)OF STD_LOGIC;TYPE memarray IS ARRA
15、Y(0 TO 5,7 DOWNTO 0)OF STD_LOGIC;CONSTANT romdata:memarray:=(0,0,0,0,0,0,0,0),(0,1,1,1,0,0,0,1),(0,0,0,0,0,1,0,1),(1,0,1,0,1,0,1,0),(1,1,0,1,1,1,1,0),(1,1,1,1,1,1,1,1);SIGNAL data_bit:STD_LOGIC;data_bit=romdata(3,7);,2)数组类型,TYPE 数据类型名 IS RECODE 元素名:数据类型名;元素名:数据类型名;.END RECODE;,数组是同一类型数据集合起来的形成的,而记录则
16、是将不同类型的数据和数据名组织在一起形成的新客体。,3)记录类型,定义格式:,TYPE bank IS RECORD addr0:STD_LOGIC_VECTOR(7 DOWNTO 0);addr1:STD_LOGIC_VECTOR(7 DOWNTO 0);r0:INTEGER;inst:instruction;END RECORD;,3)记录类型,SUBTYPE 数据类型名 IS INTEGER RANGE 取值范围;,例:SUBTYPE digit IS INTEGER RANGE 0 TO 9;,4)整数类型,定义格式:,SUBTYPE 数据类型名 IS REAL RANGE 取值范围;
17、,例:SUBTYPE current IS REAL RANGE-1.0 E4 TO 1.0 E4;,5)实数类型,定义格式:,6.3.3 IEEE 预定义数据类型,当使用这两种数据类型时,在程序中必须写出库说明语句和使用包集合说明语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;,IEEE 标准定义了两种数据类型:“STD_LOGIC”“STD_LOGIC_VECTOR”,1)STD_LOGIC数据类型,STD_LOGIC数据类型有9种不同取值:U初始值;X不定;00;11;Z高阻;W弱信号不定;L弱信号0;H弱信号1;_不可能情况;,TYPE STD_
18、LOGIC_VECTOR IS ARRAY(NATURAL RANGE)OF STD_LOGIC;RANGE表示没有范围限制,该种情况下,范围由信号说明等语句指定;例如:SIGNAL aaa:STD_LOGIC_VECTOR(3 DOWNTO 0);在函数和过程语句中,若使用无限制范围的数组时,其范围一般由调用者所传递的参数来确定。,2)STD_LOGIC_VECTOR数据类型,STD_LOGIC_VECTOR是一个数组类型。,NATURAL RANGE有2种定义方法:STD_LOGIC_VECTOR(初始值TO 结束值);-升区间 STD_LOGIC_VECTOR(初始值DOWNTO 结束值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北 电力大学 科技学院 电子设计 自动化 课件 vhdl 词法
链接地址:https://www.31ppt.com/p-5096503.html