adibe的笔记 https://bbs.21ic.com/?477891 [收藏] [复制] [RSS]

日志

VHDL语言中的信号、变量与常量异同比较

已有 948 次阅读2007-9-25 13:16 |系统分类:EDA/PLD

在VHDL中,对象是指用来保持数据的一些客体单元。VHDL中的对象主要有4种:常量(CONSTANT)、变量(VARIABLE)、信号(SIGNAL)和文件(FILE)。本文主要讨论前面三种在实际应用中的异同点.传统的计算机高级语言(如C语言)也有常量与变量.在语法上它们有相似的地方.而对于信号却是硬件描述语言(本文指的是VHDL)中特有的元素.


 


1. 信号、变量与常量的意义


1.1信号是指在设计实体中数据交换的一种手段,采用信号对象可以把设计实体连接在一起形成模块。在硬件电路中代表一条硬件连线,有时信号会被综合成一个寄存器。


1.2变量主要是对暂时数据进行局部存储,它是一个局部量。


1.3 常量就是一个定值,对某些特定类型数据赋予的数值。定义一个常数主要是为了使设计实体中的某些量易于阅读和修改

 

2. 信号、变量与常量的声明信号、变量与常量三者在使用前都必需先声明后使用,否则会产生编译错误。

 2.1信号的声明:SIGNAL 信号名 [,信号名……]:数据类型[:=表达式];如: SIGNAL clk:bit1; SIGNAL reset:bit; SIGNAL data_bus:bit_vector(7 DOWNTO 0); 在信号声明中可以同时进行赋初值,其赋值语法结构为 SIGNAL clk:bit:=‘0’; SIGNAL reset:bit=‘1’; SIGNAL data_bus:bit_vector(7 DOWNTO 0):=‘01000101”;

2.2变量的声明:VARIABLE 变量名 [,变量名……]:数据类型[:=表达式];如: VARIABLE i: interger RANGAE 0 TO 15:=0; VARIABLE enable:bit; 在变量说明中可以同时进行赋初值,其赋值语法结构为: 如: VARIABLE flag:bit:=‘1’; VARIABLE data_buffer:bit_vector(7 DOWNTO 0):=‘01000101”;


2.3常量的声明: CONSTANT 常量名[,常量名……]:数据类型:=表达式;如: CONSTATNT VCC:real:=5.0; CONSTANT delay_time:time:=10 ns;

 

3. 信号、变量与常量的使用范围


3.1信号的使用范围信号可以在architecture、package、entitiy中声明,是全局量可以在全局使用。


3.2变量的使用范围变量可以在process、function、procedure中声明,也只能在process、function、procedur中使用不是全局变量。


3.3常量的使用范围常量可以用于上面两种场合。

 

4.信号、变量与常量的使用差别


4.1从硬件电路系统来看,常量相当于电路中的恒定电平,如GND或VCC接口,而变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。


4.2从行为仿真和VHDL语句功能上看,二者的区别主要表现在接受和保持信号的方式、信息保持与传递的区域大小上。例如信号可以设置延时量,而变量则不能;变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。


4.3从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如在满足一定条件的进程中,综合后它们都能引入寄存器。这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接受赋值时存在的延时特性。


 4.4虽然VHDL仿真器允许变量和信号设置初始值,但在实际运用中,VHDL综合器并不会把这些信息综合进去。这是因为实际的FPGA/CPLD芯片在上电后,并不能确保其初始状态的取向。因此,对于时序仿真来说,设置的初始值在综合时是没有实际意义的


4.5信号和变量是VHDL中重要的客体,他们之间的主要区别有: ·信号赋值至少要有δ延时;而变量赋值没有。 ·信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。 ·进程对信号敏感而不对变量敏感。 ·信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。 ·信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。 通过前面的讨论,在使用VHDL设计FPGA/CPLD芯片时要灵活运用信号、变量与常量对象提高设计效率。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)