Можем ли мы перезаписать переменную в цикле по VHL? - PullRequest
0 голосов
/ 27 июня 2019

Я должен реализовать цикл, который обновляет переменную (или сигнал) в цикле по VHDL . Другими словами, я должен реализовать этот псевдокод

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

Я знаю, что невозможно обновить значение сигнала в VHDL , поэтому я не знаю, как действовать.

Я, например, попытался создать массив элементов nb_iterations , где я поместил обновленное значение в соответствующий регистр массива. Но иногда число моих итераций может быть очень большим, поэтому неэффективно хранить такой большой массив в памяти.

Есть ли способ обновить или перезаписать сигнал через VHDL, который позволяет реализовать такой цикл?

1 Ответ

2 голосов
/ 27 июня 2019

Попробуйте псевдокод, где resVar - это переменная, а ResSig - это сигнал.

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

Обновление сигнала WRT, правильно, что сигналы не обновляются, пока процесс не приостанавливается - что для кода RTL обычно происходит после его выхода, но для кода тестового стенда процесс также приостанавливается при каждом операторе ожидания

...