久久建筑网(m.kkreddy.com)致力打造一个专业的建筑学习分享平台! | 用户登录 免费注册 | 投诉举报 | 会员中心 | 上传资料 |
VHDL语言中的信号与变量辨别使用.doc
资料评价:
暂无
生成时间:
2021-06-16
下载权限:
免费会员
文件大小:
104KB
文件类型:
.doc
浏览次数:
2
建筑论坛:
上传会员:
qohnr
所属栏目:
网络技术
下载地址:
资料是由会员“qohnr”上传到本平台,如有不妥请联系客服。违规侵权投诉
VHDL语言中的信号与变量辨别使用,vhdl中信号与变量的区别。
语言中的信号、变量与常量异同比较表格
变量与信号的差异
,赋值方式的不同
变量表达式
信号表达式
,硬件实现的功能不同
信号代表电路单元,功能模块间的互联,代表实际的硬件连线
变量代表电路单元内部的操作,代表暂存的临时数据
,有效范围不同
信号全局量:程序包,实体,结构体
变量局部量:进程,子程序
注:在进程和子程序中,信号只能被使用,不能被定义说明
,赋值行为的不同
信号赋值延时更新数值,一般生成时序电路
变量赋值立即更新数值,一般生成组合电路
,信号的多次赋值
一个进程中:仅最后一次赋值有效
多个进程中:称为多源驱动如总线结构
能综合成硬件电路的多源驱动有三种:线与,线或,三态
例子
定义信号
由于信号赋值的延时性赋新值发生在进程结束时,所以结果是的值互换
定义变量
由于变量赋值的立即更新,所以结果是和的值均为
变量信号区别
关于变量和信号,很多书都有介绍,基本上都是说信号会有延时,而变量是立即赋值的,但是对于两者到底有什么区别,说的不是很透彻。以至于我对两者的理解也一直很模糊,只能在实践中慢慢体会。下面介绍个例子,希望可以给朋友们一点启发:
信号
这段程序的本意是。事实上,在利用综合以后得到的结果如下图:
中变量与信号的区别转帖中变量与信号的区别转帖
等效的逻辑图是这样的:
中变量与信号的区别转帖中变量与信号的区别转帖
显然,综合器将信号给忽略了,这跟我们希望的是不一致的。仔细观察综合过程发现,在综合时会产生一条
大意是说输入从未使用,如果是顶层程序或者属于一个子模块并且该子模块有这个端口时,会被保留,其余情况下端口会被忽略掉。
变量
这段程序的本意与上面是一样的。在利用综合以后得到的结果如下图:
中变量与信号的区别转帖中变量与信号的区别转帖
等效的逻辑图是这样的:
中变量与信号的区别转帖中变量与信号的区别转帖
可以看出,采用变量时,程序综合的结果与我们希望的是一致的。
总结
在一个进程中,如果对一个信号多次赋值,那么,只有最后一个值才是有效的。如果对变量多次赋值,那么每次赋值都是有效的,并且,变量的值在再次赋值之前一直保持不变。
信号跟硬件有点类似,并且是在进程结束的时候才更新;
语言中的信号、变量与常量异同比较表格
变量与信号的差异
,赋值方式的不同
变量表达式
信号表达式
,硬件实现的功能不同
信号代表电路单元,功能模块间的互联,代表实际的硬件连线
变量代表电路单元内部的操作,代表暂存的临时数据
,有效范围不同
信号全局量:程序包,实体,结构体
变量局部量:进程,子程序
注:在进程和子程序中,信号只能被使用,不能被定义说明
,赋值行为的不同
信号赋值延时更新数值,一般生成时序电路
变量赋值立即更新数值,一般生成组合电路
,信号的多次赋值
一个进程中:仅最后一次赋值有效
多个进程中:称为多源驱动如总线结构
能综合成硬件电路的多源驱动有三种:线与,线或,三态
例子
定义信号
由于信号赋值的延时性赋新值发生在进程结束时,所以结果是的值互换
定义变量
由于变量赋值的立即更新,所以结果是和的值均为
变量信号区别
关于变量和信号,很多书都有介绍,基本上都是说信号会有延时,而变量是立即赋值的,但是对于两者到底有什么区别,说的不是很透彻。以至于我对两者的理解也一直很模糊,只能在实践中慢慢体会。下面介绍个例子,希望可以给朋友们一点启发:
信号
这段程序的本意是。事实上,在利用综合以后得到的结果如下图:
中变量与信号的区别转帖中变量与信号的区别转帖
等效的逻辑图是这样的:
中变量与信号的区别转帖中变量与信号的区别转帖
显然,综合器将信号给忽略了,这跟我们希望的是不一致的。仔细观察综合过程发现,在综合时会产生一条
大意是说输入从未使用,如果是顶层程序或者属于一个子模块并且该子模块有这个端口时,会被保留,其余情况下端口会被忽略掉。
变量
这段程序的本意与上面是一样的。在利用综合以后得到的结果如下图:
中变量与信号的区别转帖中变量与信号的区别转帖
等效的逻辑图是这样的:
中变量与信号的区别转帖中变量与信号的区别转帖
可以看出,采用变量时,程序综合的结果与我们希望的是一致的。
总结
在一个进程中,如果对一个信号多次赋值,那么,只有最后一个值才是有效的。如果对变量多次赋值,那么每次赋值都是有效的,并且,变量的值在再次赋值之前一直保持不变。
信号跟硬件有点类似,并且是在进程结束的时候才更新;