我们可以在VHL循环中覆盖变量吗?

时间:2019-06-27 16:31:13

标签: loops signals vhdl increment fpga

我必须实现一个循环,该循环可以通过 VHDL 在一个循环中更新变量(或信号)。换句话说,我必须实现此伪代码

res = 1
while condition:
   res = res * val    #for example, but it could be another operation
return res

我知道不可能在 VHDL 中更新信号的值,所以我不知道如何进行。

例如,我尝试创建一个 nb_iterations 元素数组,并将更新后的值放在该数组的相应情况下。但是有时我的迭代次数可能会非常多,因此在内存中保留如此大的数组效率不高。

是否有任何方法可以通过VHDL更新或覆盖信号,从而实现这样的循环?

1 个答案:

答案 0 :(得分:1)

尝试使用伪代码,其中resVar是变量,而ResSig是信号。

      resVar = 1    
      while condition:    
        resVar = resVar * val     
      end loop    
      ResSig = resVar    

WRT信号更新,正确的是,信号不会在进程挂起之前进行更新-对于RTL代码,通常是在退出后,信号才会更新,但是对于testbench代码,进程也会在每个等待语句处挂起

相关问题