|
VHDL 信号
信号是指在设计实体之间动态交换数据的一种手段 , 采用信号对象可以把设计实体连接在一起形成模块。在 VHDL 中 , 信号的应用十分广泛 , 它可以在程序的很多区域进行说明 , 并且可以具有任何数据类型的值。同样 , 作为一种硬件描述语言中的对象 , 信号在硬件电路 设计中具有一定的物理意义 , 它通常用来代表硬件电路中的一条硬件连接线。
在 VHDL 程序中 , 信号能够实现各个模块之间的通信 , 因此使用信号能够使设计人员容易地编写出模块化的 VHDL 程序 , 也因此能够实现 VHDL 所提倡的模块化设计思想。例如 , 前面提到变量只能在其所定义的进程语句、过程语句以及函数语句中使用 , 而设计中常常需要在它们之间进行通信 , 这时候只能采用信号来完成。
在 VHDL 中 , 信号说明的语法结构为 :
SIGNAL 信号名 [ , 信号名… ] : 数据类型 [ : = 表达式 ];
下面是几个信号说明的小例子。
SIGNAL clk: bit: = '0';
SIGNAL reset: bit: = '1';
SIGNAL data_ bus: bit_ vector (7 DOWN TO 0) : ="00000000";
SIGNAL addr bus: bit _ vector (7 DOWNTO 0);
同样 , 在信号说明中 , 可以对它赋予初始值 , 也可以不赋初始值。如果在信号说明中没 有指定初始值 , 那么认为它取默认值 , 即该数据类型的最左值或者是最小值。
通常 , 如果信号说明中对信号赋了初始值 , 那么这个初始值对于仿真来说是有用的 , 但是它对于综合来说意义不大 , 其原因是信号说明中设定的初始值与实际器件加电时的初始状态并不一定能够保持一致。至于实际器件加电时的初始状态 , 设计人员要参考与该器件有关 的手册。这里可以给出这样一个原则 ; 如果需要对 VHDL 程序进行仿真操作 , 那么可以给信号赋予初始值 ; 如果不需要对 VHDL 程序进行仿真操作 , 那么就不要给信号赋予初始值了 , 这样上电时器件会自动将上电初始值赋给该信号。
与变量一样 , 信号的值也是能够被改变的 , 它可以在 VHDL 程序中被连续地赋值。
VHDL 中信号值的改变是通过信号赋值语句来完成的。信号赋值语句的语法结构为:
目标信号 <= 表达式 ;
不难看出 , 信号赋值语句使用的符号与信号初始化的符号是完全不同的 : 前者采用符号 ":=" 来进行信号赋值操作 ; 而后者则采用符号 "<= " 来进行信号的初始化操作。对于信 号赋值语句来说 , 赋值符号两边的目标信号和表达式的数据类型和长度必须保持一致 , 否则编译将会出现错误。
|