集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3733|回复: 7

HDL没有办法如何给变量、讯号赋初值[求助〕HDL如何给变量/讯号赋初值?

[复制链接]
tim 发表于 2010-6-26 02:01:27 | 显示全部楼层 |阅读模式
HDL如何给变量、讯号赋初值?
我发现HDL没有办法如何给变量、讯号赋初值。举例:
要使4只LED轮流点亮,设定一个讯号值为“0001”,然后每隔一段时间左移,如0010-0100-1000等等,可是一通电,没有地方可以使这个讯号为0001,因此始终不会点亮,事实程序是进入移位循环的,可是都是0000的移位。
不像CPU,可以赋值再进入子程序(甚至声明变量时同时赋值),而HDL根本是全体一同运行,没有不参与运行的地方。如果你设了<="0001",那么它就不停地使讯号为0001。
请问,是不是这样?刚才说的0001放在哪里好呢?
请指教。
ATA 发表于 2010-6-26 02:14:40 | 显示全部楼层
你可以设置其他状态相,让它转入0001
HDL 发表于 2010-6-26 02:34:35 | 显示全部楼层
对,另加一个判断状态,在满足这个状态时,就进入0001
VVIC 发表于 2010-6-26 04:12:20 | 显示全部楼层
我也遇到这样的问题
ups 发表于 2010-6-26 05:14:08 | 显示全部楼层
触发器的输出上电后是0
VVC 发表于 2010-6-26 06:59:52 | 显示全部楼层
可以通过复位来实现,例如复位后的信号初值为0001,然后进入移位,这样就可以来实现。因为寄存器在不附值的时候,默认的初值就是0,所以你的led不会循环显示啦。
UFO 发表于 2010-6-26 08:06:45 | 显示全部楼层
好像说硬件综合的时候上电是有随机性的,综合不支持赋初值。<br>
不过你可以在结构体声明语句里面赋值试试看啊 。
Sunlife 发表于 2015-6-24 09:40:56 | 显示全部楼层

可以通过复位来实现,例如复位后的信号初值为0001,然后进入移位,这样就可以来实现。因为寄存器在不附值的时候,默认的初值就是0,所以你的led不会循环显示啦。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 17:30 , Processed in 0.065590 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表