vhdl语言的基本语法

上传人:第*** 文档编号:54475059 上传时间:2018-09-13 格式:PPT 页数:53 大小:239.50KB
返回 下载 相关 举报
vhdl语言的基本语法_第1页
第1页 / 共53页
vhdl语言的基本语法_第2页
第2页 / 共53页
vhdl语言的基本语法_第3页
第3页 / 共53页
vhdl语言的基本语法_第4页
第4页 / 共53页
vhdl语言的基本语法_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《vhdl语言的基本语法》由会员分享,可在线阅读,更多相关《vhdl语言的基本语法(53页珍藏版)》请在金锄头文库上搜索。

1、,一、VHDL语言的基本语法,1、VHDL语言的标识符,VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下规则:,标识符由字母(AZ,az)、数字和下划线字符组成; 任何标识符必须以英文字母开头; 末字符不能为下划线; 不允许出现两个连续下划线; 标识符中不区分大小写字母; VHDL定义的保留字或称关键字,不能用作标识符; VHDL中的注释由两个连续的虚线(-)开始,直到行尾;,VHDL语言要素,例,_Decoder_1,-起始为非英文字母,3DOP,-起始为数字,Large # number,-“#”不能成为标识符的构成符号,Date_ _bus,-不能

2、有双下划线,Copper_,-最后字符不能为下划线,on,-关键字,2、VHDL语言的数字,2.1 数字型文字的值有多种表达方式,现列举如下: (1) 整数文字:整数文字都是十进制的数,如:5,678,0,156E2(=15600),45_234_287(=45234287) (2) 实数文字:实数文字也都是十进制的数,但必须带有小数点,如:188.993, 88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499),1.335,0.0,数字前可加0,数字中间不能有空格,2.2 以数制基数表示的文字:数制#基数#指数 数制和指数部分是用

3、十进制数表示的数。指数部分的数如果是0可以省去不写。现举例如下:,10#170# -(十进制数表示,等于170) 2#1111_1110# -(二进制数表示,等于254) 16#E#E1 -(十六进制数表示,等于2#11100000#,等于224) 16#F.01#E+2 -(十六进制数表示,等于3841.00) 8#377# -(与16#FF#,016#0FF#,2#11111111都为255),3、字符串型文字字符是用单引号引起来的ASCII字符,可以是数值,也可以是符号或字母,如:R,A,*,Z。而字符串则是一维的字符数组,须放在双引号中。VHDL中有两种类型的字符串:文字字符串和数位字

4、符串。,文字字符串是用双引号引起来的一串文字,如: “ERROR”,“BOTH S AND Q EQUA TO L”,“X”,“BB$CC”,进制基数符号“数位字符串”,(1)文字字符串,(2)数位字符串,也称数值字符串、位矢量,是预定义的数据类型BIT的一维数组,它们所代表的是二进制、八进制或十六进制的数组,其位矢量的长度即为等值的二进制数的位数。,例如:B“1_1101_1110” -二进制数数组,位矢数组长度是9X“AD0” -十六进制数数组,位矢数组长度是12,B:二进制基数符号,表示二进制数位0或1。 O:八进制基数符号。 X:十六进制基数符号(0F) 。,4、下标名及下标段名下标名

5、用于指示数组型变量或信号的某一元素,如:a(2) , b(n),下标段名则用于指示数组型变量或信号的某一段元素,其语句格式如下:,数组类型信号名或变量名(表达式1 TO/DOWNTO 表达式2);,SIGNAL A,B,C:BIT_VECTOR(0 TO 7); SIGNAL M:INTEGER RANGE 0 TO 3; SIGNAL Y,Z :BIT; Y=A(M); -M是不可计算型下标表示 Z=B(3); -3是可计算型下标表示 C (0 TO 3)=A (4 TO 7); -以段的方式进行赋值 C (4 TO 7)=A (0 TO 3); -以段的方式进行赋值,如下是下标名及下标段名

6、使用示例:,1、常数(Constant)常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一旦被赋值就不能再改变。一般格式:,CONSTANT 常数名:数据类型:= 表达式;,例 : CONSTANT fbus: BIT_VECTOR: = “01011001”; -总线上数据设备向量,CONSTANT dely: TIME: =25 ns; -输入/输出的延迟时间 常数所赋的值应与定义的数据类型一致。,二、VHDL语言的数据对象,常量的使用范围取决于它被定义的位置:,(1)程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;,(2)设计实体中定义

7、的常量,其有效范围为这个实体定义的所有的结构体;,(3)设计实体中某一结构体中定义的常量只能用于此结构体;,(4)结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。,2、变量( Variable )变量是一个局部变量,它只能在进程语句、函数语句和过程语句结构中使用,用作局部数据存储。变量常用在实现某种算法的赋值语句中。,VARIABLE 变量名:数据类型 约束条件:= 表达式;,例: VARIABLE x, y: INTEGER; -定义x,y为整数变量,VARIABLE count: INTEGER RANGE 0 TO 255:=10; -定义计数变量范围,一般格式:,

8、变量赋值语句的语法格式如下:,目标变量:=表达式;,(1) 赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。,(4) 若将变量用于进程之外,必须将该值赋给一个相同的类型的信号,即进程之间传递数据靠的是信号。,(2) 变量不能用于硬件连线和存储元件。,(3) 变量的适用范围仅限于定义了变量的进程或子程序中。,例 VARIABLE x, y :REAL;,VARIABLE a, b: BIT_VECTOR(0 TO 7);,x:=100.0;,-实数赋值,x是实数变量,y:=1.5+x;,-运算表达式赋值,y也是实数变量,a:=b;,a:=”1010101”;,-位矢量赋值,a的数据

9、类型是位矢量,a(3 TO 6):=(1,1,0,1);,-段赋值,a(0 TO 5):=b(2 TO 7);,a(7):=0; -位赋值,3、信号(Signal)信号是描述硬件系统的基本数据对象,它类似于连接线。它除了没有数据流动方向说明以外,其他性质与实体的端口(Port)概念一致。 信号说明格式为:,SIGNAL 信号名:数据类型 约束条件:= 初始值;,信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。,例:SIGNAL temp: STD_LOGIC:=0;,SIGNAL flaga, flagb: BIT;,SIGNAL date: STD_LOGIC_VECTO

10、R (15 DOWNTO 0);,信号的使用和定义范围是实体、结构体和程序包.,在程序中:(1) 信号值的代入采用“=”代入符,而且信号代入时可以附加延时。(2) 变量赋值时用“:=”,不可附加延时。(3) 信号的初始赋值符号仍是“:=”。,例:X=Y AFTER 10 ns;-X,Y都是信号,且Y的值经过10ns延时以后才被代入X。,信号是一个全局量,它可以用来进行进程之间的通信。,例 进程1: PROCESS(A,B,C,D) BEGIND=A;X=B+D;D=C;Y=B+D; END PROCESS;,D中最初代入的值是A,接着又代入C值。尽管D中先代入A值,后代入C值,在时间上有一个的

11、延时,但是,在代入时由于不进行处理,因此仿真时认为是时间0值延时。所以D的最终值应为C,这样执行的结果:X,Y的内容都为B+C。,进程2: PROCESS(A,B,C) VARIABLE D:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIND:=A;X=B+D;D:=C;Y=B+D; END PROCESS;,在执行“D:=A;”语句后,A的值就被赋给D,所以X为B+A。此后又执行“D:=C;”,从而使Y为B+C。由此可看出,信号的值将进程语句最后所代入的值作为最终代入值。而变量的值一经赋值就变成新的值。,在仿真过程中,信号到了规定的仿真时间才进行赋值,变量的赋值是立即生

12、效的。,信号与变量的区别,(2)赋值符不同,信号 signal count : std_logic_vector(7 downto 0); 变量 variable tema:std_logic_vector(3 downto 0); 信号在结构体中声明;变量在进程中声明,(1)声明的形式与位置不同,count=“00000000”, count=“ZZZZZZZZ” count=tema; tema:=“0000“;,(3)赋值生效的时间不同,信号:进程结束时 变量:立即生效,(4)进程对信号敏感,对变量不敏感,(5)作用域不同,信号可以是多个进程的全局信号,变量只在定义后的顺序域可见,三、V

13、HDL语言的数据类型,标量型(Scalar Type),复合类型(Composite Type),存取类型(Access Type),文件类型(Files Type),VHDL中的数据类型可以分成四大类。,标量型(SCALAR TYPE):属单元素的最基本的数据类型,通常用于描述一个单值数据对象,它包括实数类型、整数类型、枚举类型和时间类型。复合类型(COMPOSITE TYPE):可以由细小的数据类型复合而成,如可由标量复合而成。复合类型主要有数组型(ARRAY)和记录型(RECORD)。存取类型(ACCESS TYPE):为给定的数据类型的数据对象提供存取方式。文件类型(FILES TYP

14、E):用于提供多值存取类型。,1VHDL的预定义数据类型VHDL的预定义数据类型都是在VHDL标准程序包STANDARD中定义的,在实际使用中,已自动包含进VHDL的源文件中,因而不必通过USE语句以显式调用。,1). 布尔(BOOLEAN)数据类型,2). 位(BIT)数据类型,3). 位矢量(BIT_VECTOR)数据类型,4). 字符(CHARACTER)数据类型,5). 整数(INTEGER)数据类型,6). 实数(REAL)数据类型,7). 字符串(STRING)数据类型,8). 时间(TIME)数据类型,9). 错误等级(SEVERITY_LEVEL),1) 布尔(BOOLEAN)

15、数据类型,程序包STANDARD中定义布尔数据类型的源代码如下:TYPE BOOLEAN IS(FALSE,TRUE);布尔数据类型实际上是一个二值枚举型数据类型,它的取值有FALSE和TRUE两种。,位数据类型也属于枚举型,取值只能是1或0。位数据类型的数据对象,如变量、信号等,可以参与逻辑运算,运算结果仍是位的数据类型。VHDL综合器用一个二进制位表示BIT。在程序包STANDARD中定义的源代码是:TYPE BIT IS (0,1);,2) 位(BIT)数据类型,位矢量只是基于BIT数据类型的数组,在程序包STANDARD中定义的源代码是:TYPE BIT _VECTOR IS ARRAY(NATURAL RANGE)OF BIT;,3) 位矢量(BIT_VECTOR)数据类型,4) 字符(CHARACTER)数据类型,字符类型通常用单引号引起来,如A。字符类型区分大小写,如B不同于b。字符类型已在STANDARD程序包中作了定义。,整数类型的数代表正整数、负整数和零。,5) 整数(INTEGER)数据类型,常用整数常量的书写方式示例如下: 2 -十进制整数 10E4 -十进制整数 16#D2# -十六进制整数 2#11011010# -二进制整数,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号