目录
数据对象 :
在VHDL语言中,可以赋值的客体称为对象。包括常量 、变量和信号
常量:定义在设计中不变化的值
变量:定义在进程或子程序中的变化量
信号:对应硬件内部实实在在的连线
常量 :
指定义在设计描述中不变化的值,是一个全局量 。
使用格式:
用途:
在实体、结构体、程序包、函数、过程、进程中保持静态数据,以改善程序的可读性,使修改程序变得更容易。
Example:
变量 :
变量是定义进程或子程序(包括函数和过程)中的变化量 。
使用格式:
用途:
用于计算或暂存中间数据,是一个局部量
Example:
注意:变量的赋值是立即生效的
信号 :
信号对应着硬件内部实实在在的连线
使用格式:
用途:
在元件间起着互联作用,或作为一种数据容器 ,以保留历史值和当前值
“:= ”表示对信号的赋初值,一般不产生延时 。
“<= ” 表示信号的代入赋值, 有延时 。
使用变量和信号的比较:
信号是实体间动态交换数据的手段,用信号对象把实体连接在一起形成模块;实体说明,结构体说明都能说明信号。变量用于进程语句和子程序中中间的数据存储
信号赋值有延迟;而变量赋值没有延迟。
信号除当前值外有许多信息 信号除当前值外有许多信息 (历史信息,波形值);而变量只有当前值。
进程对信号敏感,对变量不敏感。信号可以是多个进程的全局信号;而变量只在定义它的进程中可见 。
信号是硬件中连线的抽象描述,功能是保存变化的数据值和连接子元件,信号在原件的端口连接元件;变量在硬件中没有对应关系,而是用于硬件特性的高层次建模所需要的计算中 。
在描述中,信号的赋值不会立即生效,而是要等待一个delta延迟在描述中,信号的赋值不会立即生效,而是要等待一个delta延迟
使用变量和信号的比较——六分频器
此例为 6分频器,其中time为变量,由于变量赋值是马上生效的,因此从例子中可以看出time置零是在time 为 6时发生的
此例也为 6分频器 。其中time为信号。由于信号赋值是具有 一定的延时性因此从例子中比较time 和5的大小时 ,语句time<=time+1还未生效,time的值是上次进程结束时的结果
小结:
变量常定义在进程与子程序中,用于保存运算的中间临时数据,或作为循环语句中的循环变量,其赋值立即发生。(:=)
常量用于保存静态的数据(:=) 。
信号有明显的连线或容器的对应关系,具有输出波形对其赋值需要延迟时间(<=), 在进程间或子程序间具有信息传递功能
注意对象定义的所在位置及适用区域的对应关系