我们可以在 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 代码,这通常是在它退出之后,但对于测试平台代码,进程也会在每个等待语句处挂起