【问题标题】:Can we overwrite a variable in a loop over VHL?我们可以通过 VHL 覆盖循环中的变量吗?
【发布时间】:2019-06-27 16:31:13
【问题描述】:

我必须在 VHDL 的循环中实现一个更新变量(或信号)的循环。换句话说,我必须实现这个伪代码

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

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

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

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

【问题讨论】:

    标签: loops signals vhdl increment fpga


    【解决方案1】:

    试试伪代码,其中 resVar 是一个变量,ResSig 是一个信号。

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多