VHDL结构及语言要素ppt课件_第1页
VHDL结构及语言要素ppt课件_第2页
VHDL结构及语言要素ppt课件_第3页
VHDL结构及语言要素ppt课件_第4页
VHDL结构及语言要素ppt课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第九讲第九讲 VHDL构造及言语要素构造及言语要素1w文字规那么文字规那么w数据对象数据对象w数据类型数据类型w操作符操作符一一. VHDL文字规那么文字规那么1、数字型文字、数字型文字1整数文字:十进制整数整数文字:十进制整数 如:如:5,678,156E2=15600, 45_234_287 =452342872实数文字:带小数的十进制数实数文字:带小数的十进制数 如:如:23.34,2.0,44.99E-2=0.4499 88_67_551.23_9098867551.23909 注:注:_用以提高数字可读性;数字间不允用以提高数字可读性;数字间不允许空格许空格3以数制基数表示的文字以数

2、制基数表示的文字 格式:格式: 基数基数#数字文字数字文字#E指数指数 5部分组成部分组成 如:如:10#170# =170 2#1111_1110# =254 16#E#E1 =2#1110_0000# =224 或:或:=1416=224 16#F.01#E+2 =15+1/16 1616 16=3841.004物理量文字物理量文字 如:如:60 s、100 m、 177 A 注:整数可综合实现;注:整数可综合实现; 实数普通不可综合实现;实数普通不可综合实现; 物理量不可综合实现;物理量不可综合实现;2、字符串型文字、字符串型文字 按字符个数多少分为:按字符个数多少分为: 字符:用单引号

3、引起来的字符:用单引号引起来的ASCII字符,可字符,可以是以是 数值,也可以是符号或字母。数值,也可以是符号或字母。 如:如:A,*,Z 字符串:用双引号引起来的一维字符数字符串:用双引号引起来的一维字符数组组字符串分为:字符串分为: 1文字字符串:文字字符串:“文字文字 如:如:“ERROR, “XXXXXXXX, “ZZZZZZZZ, “X, “BOTH S AND Q EQUAL TO L, 2数位字符串:数位字符串: 由双引号引起来的数字序列由双引号引起来的数字序列 称为位矢量,代表二进制、八进制、十六进称为位矢量,代表二进制、八进制、十六进 制的数组。其位矢量的长度为等值的二进制数

4、的制的数组。其位矢量的长度为等值的二进制数的 位数。位数。 格式:格式: 其中基数符号有三种:其中基数符号有三种: B:二进制基数符号。:二进制基数符号。 O:八进制基数符号,每一个八进制数一个:八进制基数符号,每一个八进制数一个 3位的二进制数。位的二进制数。 X:十六进制基数符号,每一个十六进制数:十六进制基数符号,每一个十六进制数 代表代表 一个一个4位的二进制数。位的二进制数。基数符号基数符号 “数值数值B“1_1101_1110 二进制数数组,长度为二进制数数组,长度为9 O“34 八进制数数组,长度为八进制数数组,长度为6 X“1AB 十六进制数数组,长度为十六进制数数组,长度为1

5、2 3、标识符、标识符 定义常数、变量、信号、端口、子定义常数、变量、信号、端口、子程序或程序或 参数的名字。参数的名字。 根本标识符的要求根本标识符的要求87规范:规范: 以英文字母开头;以英文字母开头; 不延续运用下划线不延续运用下划线“_; 不以下划线不以下划线“_结尾;结尾; 由由26个大小写英文字母、数字个大小写英文字母、数字09及及 下划线下划线“_组成的字符串。组成的字符串。 根本标识符中的英文字母不分大小写;根本标识符中的英文字母不分大小写; VHDL的保管字不能作为标识符运用。的保管字不能作为标识符运用。合法标识符如下:合法标识符如下: my_counter、 Decoder

6、_1、 FFT、 Sig_N、 Not_Ack、 State0非法标识符如下:非法标识符如下: _Decoder_1、 2FFT、 Sig_#N、 Not-Ack、 ALL_RST_、 data_BUS、 return、 entity扩展标识符扩展标识符93规范:规范: 以反斜杠来界定,免去了以反斜杠来界定,免去了87规范中根本标规范中根本标识符的一些限制。使描画更加直观、方便识符的一些限制。使描画更加直观、方便 可以以数字打头,可以以数字打头, 允许包含图形符号,允许包含图形符号, 允许运用允许运用VHDL保管字,保管字, 区分字母大小写等。区分字母大小写等。如:如:74LS163、 Sig

7、_#N、 entity、ENTITY 有些有些VHDL工工具并不支持扩具并不支持扩展标识符展标识符4、下标名及下标段名、下标名及下标段名 下标名:用于指示数组型变量或信号的某下标名:用于指示数组型变量或信号的某一个一个 元素。元素。 格式:格式: 标识符表达式标识符表达式 下标段名段名:用于指示数组型变量下标段名段名:用于指示数组型变量或信号的某一或信号的某一 段元素。段元素。 格式:标识符表达式格式:标识符表达式 to/downto 表达式表达式to:下标序列由低到高;:下标序列由低到高;downto:下标序列由:下标序列由高到低高到低如:如: a : std_logic_vector7 d

8、ownto 0 a7, a6 a0 a7 downto 0, a7 downto 4, a5 downto 3 5. 5. 注释注释用以提高程序可读性用以提高程序可读性以以- - -开头,直至本行结尾开头,直至本行结尾注释在程序段中以特征颜色标志显示,不参注释在程序段中以特征颜色标志显示,不参与程序编译与程序编译如:如: - -定义了器件的端口称号及类型定义了器件的端口称号及类型二二. 数据对象数据对象 page59 -unit4.2 三种对象:常量三种对象:常量Constant 变量变量Variable 信号信号Signal三种对象的物理含义:三种对象的物理含义: 常量代表数字电路中的电源、

9、地、恒定逻常量代表数字电路中的电源、地、恒定逻辑值等常数;辑值等常数; 变量代表暂存某些值的载体,常用于描画变量代表暂存某些值的载体,常用于描画算法;算法; 信号代表物理设计中的某一条硬件衔接线,信号代表物理设计中的某一条硬件衔接线,包括输入、输出端口。包括输入、输出端口。三种对象的特点及阐明场所:三种对象的特点及阐明场所: 信号:全局量,可设置传输延迟,作模块信号:全局量,可设置传输延迟,作模块间的信息载体。用于间的信息载体。用于architecture、package、entitiy。 变量:部分量,不可设置传输延迟,最后变量:部分量,不可设置传输延迟,最后靠信号传送信息。用于靠信号传送信

10、息。用于process、function、procedure。 常量:全局量,可用于上面两种场所。使常量:全局量,可用于上面两种场所。使实体中某些量易于修正和阅读。实体中某些量易于修正和阅读。1、常量阐明、常量阐明常量阐明:对某一个常量名赋予一个固定的常量阐明:对某一个常量名赋予一个固定的值。值。格式:格式: 例:例: constant data: bit_vector3 downto 0:=“1010 constant width: integer: = 8; constant x: new_bit: = x; 常量数据类型必需与表达式的数据类型常量数据类型必需与表达式的数据类型一致。一致。

11、 constant 常数名:数据类型:常数名:数据类型:= 表达式;表达式;常量的可视性作用范围:常量的可视性作用范围: 库、程序包 实体Entity 构造体1 进 程1 构造体2 进 程2 常量是全局常量是全局量,其作用量,其作用范围取决于范围取决于常量被定义常量被定义的位置。的位置。2、变量阐明、变量阐明 变量是一个部分量,只能在进程和子变量是一个部分量,只能在进程和子程序中程序中定义、运用。其作用范围仅限于定义了变定义、运用。其作用范围仅限于定义了变量的进量的进程和子程序中。程和子程序中。定义变量格式:定义变量格式:例:例: variable a, b : bit; variable c

12、ount : integer range 0 to 255 := 10; 变量的初值可用于仿真,但综合时被变量的初值可用于仿真,但综合时被忽略。忽略。变量赋值语句格式:变量赋值语句格式: 目的变量名:目的变量名:=表达表达式式如:如: a:=1; b:=not a;variable 变量名:数据类型变量名:数据类型 := 初始值;初始值;3、信号阐明、信号阐明 电子硬件系统运转的根本特性:电子硬件系统运转的根本特性: 各部分电路任务的并行特性;各部分电路任务的并行特性; 信号传输过程中的延时特性;信号传输过程中的延时特性; 多驱动源的总线特性;多驱动源的总线特性; 时序电路中触发器的记忆特性等

13、。时序电路中触发器的记忆特性等。 信号是电子系统内部硬件衔接和硬件特信号是电子系统内部硬件衔接和硬件特性的笼统表示。用来描画硬件系统的根本特性的笼统表示。用来描画硬件系统的根本特性。性。信号定义格式:信号定义格式:信号赋值格式:目的信号名信号赋值格式:目的信号名=表达式;表达式; signal 信号名:数据类型信号名:数据类型 约束条件:约束条件: 表达式;表达式;例:例: signal a, b : bit; signal init : integer := -1; signal s1 : std_logic := 0; signal s2 : std_logic_vector15 down

14、to 0;注:注:a. 综合时初值被忽略。综合时初值被忽略。 b. 信号是全局量。可在构造体、实体、块中阐信号是全局量。可在构造体、实体、块中阐明和运用信号。可包容当前值,也可保管历史值明和运用信号。可包容当前值,也可保管历史值对应触发器的记忆功能对应触发器的记忆功能 c. 在进程和子程序中只能运用信号,不能阐明在进程和子程序中只能运用信号,不能阐明定义信号。定义信号。例:进程中信号与变量的运用例:进程中信号与变量的运用信号与端口的区别:信号与端口的区别: 除没有方向阐明外,信号与除没有方向阐明外,信号与 实体的实体的“端口端口PORT 概念类似。端口是一种隐形的信号。概念类似。端口是一种隐形

15、的信号。 entity exam is portsignal a, b: in std_logic; signal c: out std_logic; end entity exam; 端口是一种有方向的信号。端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。输入端口不能写入数据,只能读出数据。 信号本身无方向,可读可写。信号本身无方向,可读可写。三三. VHDL数据类型数据类型 page65unit4.3 VHDL是一种强数据类型言语。是一种强数据类型言语。 要求设计实体中的每一个常数、信号、要求设计实体中

16、的每一个常数、信号、变量、变量、函数以及设定的各种参量都必需具有确定的函数以及设定的各种参量都必需具有确定的数据类数据类型,并且一样数据类型的量才干相互传送和型,并且一样数据类型的量才干相互传送和作用。作用。 VHDL数据类型分为四大类:数据类型分为四大类: 标量类型标量类型SCALAR TYPE 复合类型复合类型COMPOSITE TYPE 存取类型存取类型ACCESS TYPE 文件类型文件类型FILES TYPE数据类型又分为:数据类型又分为: 预定义数据类型预定义数据类型 用户自定义数据类型用户自定义数据类型1、VHDL的预定义数据类型的预定义数据类型1布尔量布尔量boolean 布尔

17、量具有两种形状:布尔量具有两种形状:false 和和 true 常用于逻辑函数,如相等常用于逻辑函数,如相等=、比较、比较等等中作逻辑比较。只能参与关系运算,无算术运算。中作逻辑比较。只能参与关系运算,无算术运算。如:如:bit 值转化成值转化成boolean 值:值: boolean_var := bit_var = 1;2位位bit bit 表示一位的信号值。表示一位的信号值。 放在单引号中,如放在单引号中,如 0 或或 1。3位矢量位矢量 bit_vector 运用时需注明位宽运用时需注明位宽 bit_vector 是用双引号括起来的一组位数据。是用双引号括起来的一组位数据。 如:如:

18、“001100 X“00B10B4字符字符character 用单引号将字符括起来。用单引号将字符括起来。 variable character_var : character; . Character_var : = A;5整数整数integer integer 表示一切正的和负的整数。硬件实现时,表示一切正的和负的整数。硬件实现时,利用利用32位的位矢量来表示。可实现的整数范围为:位的位矢量来表示。可实现的整数范围为: -231-1 to 231-1 VHDL综合器要求对详细的整数作出范围限定,综合器要求对详细的整数作出范围限定,否那么无法综合成硬件电路。否那么无法综合成硬件电路。 如:如

19、:signal s : integer range 0 to 15;运用运用range子句,从而确定综合后的二进制位数子句,从而确定综合后的二进制位数 信号信号 s 的取值范围是的取值范围是015,可用,可用4位二进制数表位二进制数表示,因此示,因此 s 将被综合成由四条信号线构成的信号。将被综合成由四条信号线构成的信号。6自然数自然数natural和正整数和正整数positive natural 是是 integer类型的子类型,类型的子类型,表示非负整数。表示非负整数。 positive 是是 integer 类型的子类型,表示正整数。类型的子类型,表示正整数。定义如下:定义如下: sub

20、type natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh;7实数实数REAL 或称浮点数或称浮点数 取值范围:取值范围:-1.0E38 +1.0E38 实数类型仅能用于实数类型仅能用于VHDL仿真器,普通综合器仿真器,普通综合器不支持。不支持。8字符串字符串string string 是是 character 类型的一个非限定数组。用类型的一个非限定数组。用双引号将一串字符括起来。如:双引号将一串字符括起来。如: variable string_var :

21、 string1 to 7; string_var := “Rosebud;9时间时间TIME 由整数和物理单位组成由整数和物理单位组成 如:如:55 ms,20 ns10错误等级错误等级SEVERITY_LEVEL 仿真中用来指示系统的任务形状,共有四种:仿真中用来指示系统的任务形状,共有四种: NOTE留意留意 WARNING警告警告 ERROR出错出错 FAILURE失败失败2、IEEE预定义规范逻辑位与矢量预定义规范逻辑位与矢量1std_logic 类型类型 是规范是规范bit数据类型的扩展数据类型的扩展 由由 ieee 库中的库中的std_logic_1164 程序包定义,程序包定义

22、,为为9值逻辑系统,如下:值逻辑系统,如下: U,X,0,1,Z,W,L,H,- U:未初始化的,:未初始化的, X:强未知的,:强未知的, 0:强:强0, 1:强:强1, Z:高阻态,:高阻态, W:弱未知的,:弱未知的, L:弱:弱0, H:弱:弱1, -:忽略:忽略 use ieee.std_logic_1164.all; 由 std_logic 类型替代 bit 类型可以完成电子系统的准确模拟,并可实现常见的三态总线电路。2std_logic_vector 类型 极大方便了总线描画 由 std_logic 构成的数组。定义如下: type std_logic_vector is arr

23、aynatural range of std_logic; 赋值的原那么:一样位宽,一样数据类型。Example: 程序4-53、其它预定义规范数据类型、其它预定义规范数据类型 Synopsys公司程序包 STD_LOGIC_ARITH中: 1无符号型UNSIGNED 定义如下: type unsigned is arraynatural range of std_logic; UNSIGNED“1000= 8 最左位是最高位: variable var:unsigned0 to 10; var0是最高位 signal sig:unsigned5 downto 0; sig5是最高位 Use

24、ieee.std_logic_arith.all;2有符号型有符号型SIGNED 定义如下:定义如下: type signed is array natural range of std_logic; 最高位为符号位,综合器认作补码。最高位为符号位,综合器认作补码。 SIGNED“0101= 5, SIGNED“1011= -5 variable var: signed0 to 10; var0是是符号位符号位3小整型小整型SMALL_INT:0 TO 14、 用户自定义类型用户自定义类型 用户自定义类型是用户自定义类型是VHDL言语的一大言语的一大特征。特征。 可由用户定义的数据类型有:可由

25、用户定义的数据类型有: 1枚举类型枚举类型; 2整数和实数类型整数和实数类型; 3数组类型数组类型; 4记录类型记录类型; 5子类型子类型. 用类型定义语句用类型定义语句TYPE和子类型定义语句和子类型定义语句SUBTYPE实现用户自定义数据类型。实现用户自定义数据类型。 TYPE语句格式:语句格式:type 数据类型名数据类型名 is 数据类型定义数据类型定义 of 根本数据类根本数据类型型;例:例: type byte is array7 downto 0 of bit; variable addend : byte; type week is sun, mon, tue, wed, th

26、u, fri, sat; SUBTYPE语句格式:语句格式:subtype 子类型名子类型名 is 根本数据类型根本数据类型 range 约约束范围;束范围; 例:例: subtype digits is integer range 0 to 9; 由由subtype 语句定义的数据类型称为子类语句定义的数据类型称为子类型。型。TYPE byt IS STD_LOGIC15 downto 0;SUBTYPE dig3 IS ARRAY7 downto 0 ofSTD_LOGIC;ERROR! TYPE定义的数据类型应该是全新的,即VHDL预定义库中未被定义过的数据类型,这里的STD_LOGIC

27、曾经被定义成规范位了。ERROR!子类型的定义只在根本数据类型上做一些约束,并没有定义新的数据类型,这是与TYPE最大的不同。1枚举类型枚举类型page74 枚举该类型的一切能够的值。格式:枚举该类型的一切能够的值。格式:type 类型称号类型称号 is 枚举文字枚举文字,枚举文字,枚举文字;枚举类型的编码枚举类型的编码 page74 para3 综合器自动实现枚举类型元素的编码,普通将综合器自动实现枚举类型元素的编码,普通将第一个枚举量最左边编码为第一个枚举量最左边编码为0,以后的依次加,以后的依次加1。编码用位矢量表示编码用位矢量表示 ,位矢量的长度将取所需表达的,位矢量的长度将取所需表达

28、的一切枚举元素的最小值。一切枚举元素的最小值。如:如: type color is blue, green, yellow, red;编码为:编码为: blue=“00; green=“01; yellow=“10; red=“11;2整数类型整数类型 用户定义的整数类型是规范包中整数类型的子范围。用户定义的整数类型是规范包中整数类型的子范围。格式:格式: 例:例: type my_integer is integer range 0 to 9;3数组类型数组类型 数组:同类型元素的集合。数组:同类型元素的集合。VHDL支持多维数组。支持多维数组。 多维数组的声明:多维数组的声明: type

29、byte is array7 downto 0 of bit; type vector is array3 downto 0 of byte; 限定数组、非限定数组、属性:限定数组、非限定数组、属性:type 类型称号 is range 整数范围;限定数组:限定数组: 其索引范围有一定的限制。其索引范围有一定的限制。格式:格式: 非限定数组:数组索引范围被定义成一个类型范围。非限定数组:数组索引范围被定义成一个类型范围。格式:格式:例:例:type bit_vector is arrayinteger range of bit; variable my_vector : bit_vector

30、5 downto -5;type 数组名数组名 is array数组范围数组范围 of 数据数据类型类型type 数组名数组名 is array类型称号类型称号 range of 数据类数据类型型属性属性page122 VHDL为多种类型定义了属性。为多种类型定义了属性。 语法如下:语法如下: 对象对象属性属性 VHDL为数组预先定义的属性:为数组预先定义的属性: left right high low length range reverse_range对应变量:对应变量: variable my_vector : bit_vector 5 downto -5;各属性如下:各属性如下: my

31、_vectorleft 5 my_vectorright -5 my_vectorhigh 5 my_vectorlow -5 my_vectorlength 11 my_vectorrange 5 downto -5 my_vectorreverse_range -5 to 54记录类型记录类型 记录是不同类型的称号域的集合。记录是不同类型的称号域的集合。格式如下:格式如下: 访问记录体元素的方式:访问记录体元素的方式: 记录体名记录体名 . 元素名元素名type 记录类型名记录类型名 is record 元素名:数据类型名;元素名:数据类型名; 元素名:数据类型名;元素名:数据类型名; e

32、nd record;例:例: constant len : integer:= 8 ; subtype byte_vec is bit_vector len-1 downto 0 ; type byte_and_ix is record byte : byte_vec ; ix : integer range 0 to len ; end record ; signal x, y, z : byte_and_ix ; signal data : byte_vec ; signal num : integer ; . x.byte = “11110000 ; x.ix = 2 ; data =

33、y.byte ; num = y.ix ; z = x ; 5子类型子类型 子类型是已定义的类型或子类型的一个子集。子类型是已定义的类型或子类型的一个子集。格式:格式: 例:例: bit_vector 类型定义如下:类型定义如下: type bit_vector is array natural range of bit; 如设计中只用如设计中只用16bit;可定义子类型如下:;可定义子类型如下: subtype my_vector is bit_vector0 to 15;注:子类型与基父类型具有一样的操作符和子注:子类型与基父类型具有一样的操作符和子 程序。可以直接进展赋值操作。程序。可以

34、直接进展赋值操作。subtype 子类型名 is 数据类型名范围;5、数据类型转换、数据类型转换page79 4.3.9 VHDL是一种强类型言语,不同类型的是一种强类型言语,不同类型的数据数据对象必需经过类型转换,才干相互操作。对象必需经过类型转换,才干相互操作。1类型转换函数方式类型转换函数方式 经过调用类型转换函数,使相互操作的经过调用类型转换函数,使相互操作的数据对数据对象的类型一致,从而完成相互操作。象的类型一致,从而完成相互操作。2直接类型转换方式直接类型转换方式 对相互间非常关联的数据类型如整型、浮对相互间非常关联的数据类型如整型、浮点型,可进展直接类型转换。格式:点型,可进展直

35、接类型转换。格式: 数据类型标识符表达式数据类型标识符表达式如:如:variable a, b : real; variable c, d : integer; a:= realc; d:= integerb;四. VHDL中的表达式 page83 表达式:由操作符和操作数构成,完成算术或 逻辑运算。1、操作符 VHDL操作符的分类: 逻辑操作符Logical Operator、 关系操作符Relational Operator、 算术操作符Arithmetic Operator、 符号操作符 Sign Operator 、 重载操作符Overloading Operator1 逻辑操作符逻辑

36、操作符 6种:种:and、or、nand、nor、xor、not要求:操作数类型必需一样。可为如下类型:要求:操作数类型必需一样。可为如下类型: bit、bit_vector、std_logic、std_logic_vector、 boolean 数组操作数的维数、大小必需一样。数组操作数的维数、大小必需一样。注:当有两个以上的逻辑表达式时,左右没有优先注:当有两个以上的逻辑表达式时,左右没有优先 级差别,必需运用括号,如:级差别,必需运用括号,如: x = a and b or not c and d ; 例外:当逻辑表达式中只需例外:当逻辑表达式中只需“and、“or、“xor运算符时,可

37、以省略括号。如:运算符时,可以省略括号。如: a = b and c and d and e; a = b or c or d or e; a = b xor c xor d xor e;2关系操作符 6 种:=、/=、= 用于比较一样父类的两个操作数,前往boolean值。3加减操作符加减操作符 加操作符加操作符“+、减操作符、减操作符“-、 串联并置操作符串联并置操作符“& 串联操作符串联操作符“&经过衔接操作数来建立新的数经过衔接操作数来建立新的数组。操作数可以是一个数组或数组中的一个元素。组。操作数可以是一个数组或数组中的一个元素。例:例: signal a, d : bit_vector 3 downto ; signal b, c, g : bit_vector 1 downto 0; signal e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论