我们可以在 VHL 循环中覆盖变量吗?
Can we overwrite a variable in a loop over VHL?
我必须实现一个循环,在 VHDL 的循环中更新变量(或信号)。换句话说,我必须实现这个伪代码
res = 1
while condition:
res = res * val #for example, but it could be another operation
return res
我知道无法在 VHDL 中更新信号值,所以我不知道如何进行。
例如,我尝试创建一个 nb_iterations 元素的数组,我将更新后的值放在数组的相应大小写中。但是我的迭代次数有时会非常大,所以在内存中保留这么大的数组效率不高。
是否有任何方法可以通过 VHDL 更新或覆盖信号,从而实现这样的循环?
试试伪代码,其中resVar是一个变量,ResSig是一个信号。
resVar = 1
while condition:
resVar = resVar * val
end loop
ResSig = resVar
WRT 信号更新,信号在进程挂起之前不会更新是正确的——对于 RTL 代码,这通常是在它退出之后,但对于测试平台代码,进程也会在每个等待语句处挂起
我必须实现一个循环,在 VHDL 的循环中更新变量(或信号)。换句话说,我必须实现这个伪代码
res = 1
while condition:
res = res * val #for example, but it could be another operation
return res
我知道无法在 VHDL 中更新信号值,所以我不知道如何进行。
例如,我尝试创建一个 nb_iterations 元素的数组,我将更新后的值放在数组的相应大小写中。但是我的迭代次数有时会非常大,所以在内存中保留这么大的数组效率不高。
是否有任何方法可以通过 VHDL 更新或覆盖信号,从而实现这样的循环?
试试伪代码,其中resVar是一个变量,ResSig是一个信号。
resVar = 1
while condition:
resVar = resVar * val
end loop
ResSig = resVar
WRT 信号更新,信号在进程挂起之前不会更新是正确的——对于 RTL 代码,这通常是在它退出之后,但对于测试平台代码,进程也会在每个等待语句处挂起