我必须实现一个循环,该循环可以通过 VHDL 在一个循环中更新变量(或信号)。换句话说,我必须实现此伪代码
res = 1
while condition:
res = res * val #for example, but it could be another operation
return res
我知道不可能在 VHDL 中更新信号的值,所以我不知道如何进行。
例如,我尝试创建一个 nb_iterations 元素数组,并将更新后的值放在该数组的相应情况下。但是有时我的迭代次数可能会非常多,因此在内存中保留如此大的数组效率不高。
是否有任何方法可以通过VHDL更新或覆盖信号,从而实现这样的循环?
答案 0 :(得分:1)
尝试使用伪代码,其中resVar是变量,而ResSig是信号。
resVar = 1
while condition:
resVar = resVar * val
end loop
ResSig = resVar
WRT信号更新,正确的是,信号不会在进程挂起之前进行更新-对于RTL代码,通常是在退出后,信号才会更新,但是对于testbench代码,进程也会在每个等待语句处挂起