华北电力大学科技学院电子设计自动化课件6VHDL词法.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《华北电力大学科技学院电子设计自动化课件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 标示符 标示符用来定义一个事物的名称以便同其他标示符用来定义一个事物
2、的名称以便同其他事物区分开来。事物区分开来。VHDL 定定义义了两种了两种标标示符:示符:1)基本基本标标示符示符 2)扩扩展展标标示符示符。6.2 VHDL 标示符1)基本标示符)基本标示符基本基本标标示符的命名示符的命名规则规则有:有:合法字符有合法字符有3类类:英文字母、数字和下划:英文字母、数字和下划线线 最前面最前面应该应该是英文字母是英文字母 不能不能连续连续使用下划使用下划线线 不能用下划不能用下划线结线结束束 不能使用不能使用VHDL的关的关键键字字/保留字保留字6.2 VHDL 标示符1)基本标示符)基本标示符基本标示符使用错误情况举例:基本标示符使用错误情况举例:SIGNA
3、L a_bus:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL 302_bus:-数字开头的名字是错误的数字开头的名字是错误的SIGNAL b_bus:-符号不能作为名称的字母符号不能作为名称的字母,是错误的是错误的SIGNAL a_bus:.-_符号在名称中不能连着使用符号在名称中不能连着使用,故是错误的故是错误的SIGNAL b_bu8_:-_符号不能在名称最后使用符号不能在名称最后使用,故是错误的故是错误的2)扩展标示符)扩展标示符扩展标示符的命名规则有:扩展标示符的命名规则有:标标示符的首尾要加反斜杠示符的首尾要加反斜杠“”来限定。来限定。比如比如VHDL 允允
4、许许使用使用ASCII码码中的任意字符和中的任意字符和图图形符号。形符号。比如比如%、对对字符的字符的顺顺序没有限制,允序没有限制,允许许使用保留字。使用保留字。比如比如234abc、library 用双反斜杠用双反斜杠“”表示表示标标示符中的反斜杆字符示符中的反斜杆字符“”。比如比如1005=20 区分大小写。区分大小写。比如比如ABC与与Abc代表不同的代表不同的扩扩展展标标示符示符 扩扩展展标标示符和基本示符和基本标标示符不同。示符不同。比如比如ABC与与ABC不同不同6.2 VHDL 标示符标示符6.3 VHDL数据类型数据类型VHDL提供了多种标准的数据类型提供了多种标准的数据类型用
5、户可以自定义数据类型用户可以自定义数据类型VHDL是强类型语言是强类型语言不同类型之间的数据不能直接代入不同类型之间的数据不能直接代入同类型但不同位长不能直接代入同类型但不同位长不能直接代入6.3 VHDL数据类型数据类型VHDL语语言的数据言的数据类类型主要有型主要有4类类:(1)标标量量类类型(型(Scalar Type)(2)复合复合类类型(型(Composite Type)(3)存取存取类类型(型(Access Type)(4)文件文件类类型(型(File Type)6.3 VHDL数据类型数据类型(1)标标量量类类型(型(Scalar Type)标量类型标量类型枚枚举类举类型(型(E
6、numeration 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数据类型数据类型 VHDL在包集合在包集合STANDARD中中预订义预订义了一些数据了一些数据类类型,主要有型,主要有
7、11种:种:F 枚枚举类举类型:型:CHARACTER BIT BOOLEAN SEVERITY LEVEL F 整数整数类类型:型:INTEGER NATURAL POSITIVE6.3 VHDL数据类型数据类型F物理物理类类型:型:TIMEF 浮点浮点类类型:型:REALF 数数组类组类型:型:STRING BIT_VECTOR 6.3.1 6.3.1 预定义数据类型预定义数据类型 VHDL预预定定义义数据数据类类型包含在型包含在STD库库的的STANDARD包包集合中,不需要声明集合中,不需要声明库库和包集合可以直接使用和包集合可以直接使用这这些数些数据据类类型。型。STD库库是是VHD
8、L的的标标准准库库。STD库库中中还还有另一个包集合有另一个包集合TEXTIO,使用,使用TEXTIO包包集合集合时时,需要首先声明,需要首先声明STD库库和和TEXTIO包集合,才包集合,才能使用能使用该该包集合中包集合中预预定定义义的数据。的数据。6.3.1 6.3.1 预定义数据类型预定义数据类型 1、整数(、整数(Integer)占占32位,数值在位,数值在-2147483647到到2147483647之间之间整数不能看作位矢量,也不能按位来进行访问整数不能看作位矢量,也不能按位来进行访问对整数一般不能用逻辑操作符,可以使用转换对整数一般不能用逻辑操作符,可以使用转换函数将整数转换成位
9、矢量,再进行逻辑操作。函数将整数转换成位矢量,再进行逻辑操作。例如:例如:0,1,217,5122、实数(、实数(Real)实数的范围实数的范围-1.0E+38+1.0E+38实数在书写时必须有小数点实数在书写时必须有小数点例如:例如:5.0,1.25,3.143、位(、位(BIT)注意位注意位值值表示表示 0,1位值可以显式说明:位值可以显式说明:BIT(1)、BIT(0)4、位矢量、位矢量(BIT_VECTOR)位矢量是用双引号括起来的一组位数据位矢量是用双引号括起来的一组位数据 一般用位矢量数据表示总线状态一般用位矢量数据表示总线状态 例如:例如:001100 B 001_101_010
10、 9位二进制位串位二进制位串 X A_F0_FC 20位十六进制位串位十六进制位串 O 3701 12位八进制位串位八进制位串 B:二进制:二进制 X:十六进制:十六进制 O:八进制:八进制5、布尔量(、布尔量(BOOLEAN)有两种状有两种状态态:“真真”(TRUE)“假假”(FLASE)它没有数值的含义,不能进行逻辑运算它没有数值的含义,不能进行逻辑运算状态可以由关系运算产生状态可以由关系运算产生6、字符(、字符(Character)字符量通常用单引号括起来字符量通常用单引号括起来 字符中的大、小写认为是不一样的字符中的大、小写认为是不一样的字符可以是字符可以是az的任一字母,的任一字母,
11、09中任何一个数中任何一个数以及空白或者特殊字符¥以及空白或者特殊字符¥,$,%等等等等可以显式声明可以显式声明 如:如:CHARACTER(1)7、字符串(、字符串(String)字符串是由双引号括起来的一个字符序列,也字符串是由双引号括起来的一个字符序列,也称为字符矢量或字符串数组称为字符矢量或字符串数组 例如:例如:“integer range”字符串常用于程序的提示和说明字符串常用于程序的提示和说明 8、时间(、时间(Time)时间是一个物理量数据时间是一个物理量数据 完整的时间量数据应包含整数和单位两个部分,完整的时间量数据应包含整数和单位两个部分,而且整数和单位之间至少而且整数和单
12、位之间至少应留一个空格应留一个空格 在系统仿真时,用它表示信号延时,从而使模在系统仿真时,用它表示信号延时,从而使模型系统更能逼近实际系统的运行环境型系统更能逼近实际系统的运行环境 时间预定义包含在包集合时间预定义包含在包集合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=60 sec;hr=60 min;END UNITS
13、;9、错误等级(、错误等级(Severity level)错误等级数据类型一般用来表征系统的状态错误等级数据类型一般用来表征系统的状态共有共有4种状态:种状态:注意(注意(Note)、警告)、警告(warning)、错误错误(Error)、失败、失败(Failure)在系统仿真过程中来提示系统当前的工作情况在系统仿真过程中来提示系统当前的工作情况与与assertion语句和语句和report语句结合使用语句结合使用10、自然数(、自然数(Natural)NATURAL是整数的子是整数的子类类 NATURAL类类数据只能取数据只能取0和正整数。和正整数。在在STANDARD包集合中包集合中对对N
14、ATURAL做了如下定做了如下定义义:SUBTYPE NATURAL IS INTEGER RANGE 0 TO INTEGERHIGH;11、正整数(、正整数(Positive)POSITIVE是整数的子是整数的子类类 POSITIVE 类类数据只能取大于数据只能取大于0的整数。的整数。在在STANDARD包集合中包集合中对对POSITIVE做了如下定做了如下定义义:SUBTYPE NATURAL IS INTEGER RANGE 1 TO INTEGERHIGH;约束区间约束区间 在在VHDL仿真过程中,首先要检查赋值语句仿真过程中,首先要检查赋值语句中的类型和区间,任何一个信号和变量的赋
15、值均中的类型和区间,任何一个信号和变量的赋值均须落入给定的约束空间中,也就是说要落入有效须落入给定的约束空间中,也就是说要落入有效数值的范围内。数值的范围内。约束区间的说明通常跟在数据类型说明的后面。约束区间的说明通常跟在数据类型说明的后面。例:例:INTEGER RANGE 100 DOWNTO 1;BIT_VECTOR(3 DOWNTO 0);REAL RANGE 2.0 TO 30.0;可由用户定义的数据类型:可由用户定义的数据类型:1)枚举()枚举(Enumerated)类型;)类型;2)整数()整数(Integer)类型;)类型;3)浮点()浮点(Floating)数类型;)数类型;
16、4)数组()数组(Array)类型;)类型;5)存取()存取(Access)类型;)类型;6)文件()文件(File)类型;)类型;7)记录()记录(Recode)类型;)类型;8)物理()物理(Physical)类型;)类型;6.3.2 用户定义的数据类型用户定义的数据类型定义的语法格式:定义的语法格式:TYPE 数据类型名数据类型名,数据类型名数据类型名 数据类型定义数据类型定义;6.3.2 用户定义的数据类型用户定义的数据类型SUBTYPE 子类型名子类型名 IS 数据类型名数据类型名 范围范围;TYPE 数据类型名数据类型名 IS(元素,元素,(元素,元素,););例:例:TYPE w
17、eek IS(sun,mon,tue,wed,thu,fri,sat););1)枚举类型)枚举类型定义格式:定义格式: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)除整数)除
18、整数类类型外,范型外,范围围的数据的数据类类型也可以使用其它数据型也可以使用其它数据类类型。型。使用使用时时需要需要显显式的声明范式的声明范围围的数据的数据类类型。型。例如:自定例如:自定义义枚枚举类举类型型TYPE week IS(mon,tue,wed,thr,fri,sat,sun);TYPE lesson_list IS(chinese,english,math,physic,chemical,music);TYPE lesson_chart IS ARRAY(week mon TO fri)OF lesson_list;2)数组类型)数组类型定义格式:定义格式:(3)如果没有指定范)
19、如果没有指定范围时围时,需要在定,需要在定义该义该数据数据类类型的信号、型的信号、变变量等量等时时指定范指定范围围。例如:例如:STD_LOGIC_VECTOR在包集合在包集合STD_LOGIC_1164中的中的有如下定有如下定义义:TYPE STD_LOGIC_VECTOR IS ARRAY(NATURAL RANGE)OF STD_LOGIC;RANGE 表示没有范表示没有范围围限制。限制。因此,在定因此,在定义义STD_LOGIC_VECTOR类类型的信号、型的信号、变变量量时时需要需要指定具体的范指定具体的范围围。SIGNAL temp:STD_LOGIC_VECTOR(7 DOWNT
20、O 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
21、TO 8)OF STD_LOGIC;TYPE memarray IS ARRAY(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 REC
22、ODE 元素名:数据类型名;元素名:数据类型名;元素名:数据类型名;元素名:数据类型名;.END RECODE;数组是同一类型数据集合起来的形成的,而记录则是将数组是同一类型数据集合起来的形成的,而记录则是将不同类型的数据和数据名组织在一起形成的新客体。不同类型的数据和数据名组织在一起形成的新客体。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;
23、3)记录类型)记录类型SUBTYPE 数据类型名数据类型名 IS INTEGER RANGE 取值范围取值范围;例:例:SUBTYPE digit IS INTEGER RANGE 0 TO 9;4)整数类型)整数类型定义格式:定义格式:SUBTYPE 数据类型名数据类型名 IS REAL RANGE 取值范围取值范围;例:例:SUBTYPE current IS REAL RANGE-1.0 E4 TO 1.0 E4;5)实数类型)实数类型定义格式:定义格式:6.3.3 IEEE 预定义数据类型预定义数据类型 当使用这两种数据类型时,在程序中必须写出库说当使用这两种数据类型时,在程序中必须写
24、出库说明语句和使用包集合说明语句:明语句和使用包集合说明语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;IEEE 标准定义了两种数据类型:标准定义了两种数据类型:“STD_LOGIC”“STD_LOGIC_VECTOR”1)STD_LOGIC数据类型数据类型STD_LOGIC数据类型有数据类型有9种不同取值:种不同取值:U 初始初始值值;X 不定;不定;0 0;1 1;Z 高阻;高阻;W 弱信号不定;弱信号不定;L 弱信号弱信号0;H 弱信号弱信号1;_ 不可能情况;不可能情况;TYPE STD_LOGIC_VECTOR IS ARRAY(NATURAL
25、 RANGE)OF STD_LOGIC;RANGE表示没有范围限制,该种情况下,范围由信表示没有范围限制,该种情况下,范围由信号说明等语句指定;号说明等语句指定;例如:例如:SIGNAL aaa:STD_LOGIC_VECTOR(3 DOWNTO 0);在函数和过程语句中,若使用无限制范围的数组时,其在函数和过程语句中,若使用无限制范围的数组时,其范围一般由调用者所传递的参数来确定。范围一般由调用者所传递的参数来确定。2)STD_LOGIC_VECTOR数据类型数据类型 STD_LOGIC_VECTOR是一个数组类型。是一个数组类型。NATURAL RANGE有有2种定种定义义方法:方法:ST
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北 电力大学 科技学院 电子设计 自动化 课件 VHDL 词法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内