tim 发表于 2010-6-26 02:01:27

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

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]
查看完整版本: HDL没有办法如何给变量、讯号赋初值[求助〕HDL如何给变量/讯号赋初值?