新浪博客

VHDL语言元素

2012-03-12 09:18阅读:
http://blog.csdn.net/skyyunmi/archive/2007/04/20/1572343.aspx
VHDL语言元素
2.1 VHDL
语言的客体
2.2 VHDL
语言的数据类型
2.3 VHDL
数据类型转换
2.4 VHDL
词法规则与标识符
2.1 VHDL
语言的客体
VHDL
语言中,可以赋予一个质的对象就称为客体。客体主要包括以下三种:变量(VARIABLE)、常量(CONSTANT)、信号(SIGNAL)。

2.1.1 常量(CONSTANT(常数)
定义一个常数主要是为了使设计实体中的某些量易于阅读和修改。常数说明就是对某一常数名赋予一个固定的值。通常在程序开始前进行赋值,该值的数据类型在说明语句中说明。
常数说明语句格式为:
CONSTANT
常数名:数据类型 := 表达式;
例如:
CONSTANT Vcc : REAL := 5.0;
CONSTANT Fbus : BIT_VECTOR := “1011”

CONSTANT Delay : TIME := 10ns

:常量是一个恒定不变的值,一旦做了数据类型和赋值定义,它在程序中就不能再改变。
2.1.2
变量(VARIABLE
变量只能在进程和子程序中用,是一个局部量,不能将信息带出对它做出定义的当前设计单元。与信号不同,变量的赋值是理想化数据传输,其赋值是立即生效的,不存在任何的延时行为。变量定义语句的格式为:
VARIABLE
变量名 : 数据类型 : 约束条件 := 初始值;
例如:
VARIABLE n: INTEGER RANGE0 TO 15 := 2;
VARIABLE a: INTEGER;
变量赋值语句的格式为:
目标变量名 := 表达式;
赋值语句 “:=” 右边的表达式必须与目标变量具有相同的数据类型,这个表达式可以是一个运算表达式也可以是一个数值。变量赋值语句左边的目标变量可以是单值变量,也可以是变量的集合。
例如定义变量:
VARIABLE a
b := REALVARIABLE xy := BIT_VECTOR0 TO 7);
2.1.3
信号(SIGNAL
信号是电子电路内部硬件连接的抽象。它可以作为设计实体中的并行语句模块间交流信息的通道。信号及其相关的延时语句明显地体现了硬件系统的特征。
信号定义语句的格式为:
SIGNAL
信号名:数据类型:约束条件 := 表达式;--定义时候使用
例如:SIGNAL gnd BIT := ‘0’
SIGNAL data
STD_LOGIC_VECTOR (7 DOWNTO 0);
信号赋值语句表达式为:
目标信号名 <= 表达式; --赋值时候使用
符号 “<=” 表示赋值操作,即将数据信息传入。数据信息传入时可以设置延时过程,这与器件的实际传播延时十分接近。因此信号值的代入采用“<=”代入符,而不是像变量赋值时那样用“:。但信号定义时初始赋值符号“:,即仿真的时间坐标是从赋初始值开始的。
信号赋值语句举例:X<= y;
a <= ‘1’

s1 <= s2 AFTER 10 ns

--
注意:变量和信号都必须先定义,后赋值。注意赋值符“<=” “:的差别。
信号与变量的区别:
信号和变量是VHDL中重要的客体,他们之间的主要区别有:
·
信号赋值至少要有δ延时;而变量赋值没有。
·
信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。
·
进程对信号敏感而不对变量敏感。
·
信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。
·
信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。
2.2 VHDL
语言的数据类型
在对VHDL的客体进行定义时,都要指定其数据类型。VHDL有多种标准的数据类型,并且允许用户自定义数据类型。在VHDL语言语义约束中,对类型的要求反映在赋值语句的目标与源的一致,表达式中操作的一致,子类型中约束与类型的一致等许多方面。
2.2.1 VHDL
中预定义的数据类型(编程者可直接使用)
预定义类型在VHDL标准程序包STANDARD中定义,在应用中自动包含进VHDL的源文件,不需要USE语句显示调用。数据类型说明如下。
1.
整数(INTEGER
整数与数学中整数的定义相似,可以使用预定义运算操作符,如加、减、乘“×”、除“÷”进行算术运算。在VHDL语言中,整数的表示范围为-21474836472147483647,即从-(2311)(2311)2.实数(REAL
在进行算法研究或实验时,作为对硬件方案的抽象手段,常常采用实数四则运算。实数的定义值范围为-1.0E+38+1.0E+38。实数有正负数,书写时一定要有小数点。例如:-1.0+2.5,-1.0E+38
3.
位(BIT
用来表示数字系统中的信号值。位值用字符‘0’或者‘1’(将值放在引号中)表示。与整数中的10不同,‘1’‘0’仅仅表示一个位的两种取值。
位数据可以用来描述数字系统中总线的值。位数据不同于布尔数据,可以用转换函数进行转换。
4.
位矢量(BIT_VECTOR
位矢量是用双引号括起来的一组数据。例如:“001100”X“00bb”。在这里位矢量前面的X表示是十六进制。用位矢量数据表示总线状态最形象也最方便,在VHDL程序中将会经常遇到。使用位矢量时必须注明位宽,即数组中元素个数和排列,例如:
SIGNAL s1
BIT_VECTOR15 DOWNTO 0);
5.
布尔量(

我的更多文章

下载客户端阅读体验更佳

APP专享