是否有任何可能的方式在表單創建一個for循環:在VHDL使用FOR循環具有可變
for i in 0 to some_var loop
// blah,blah
end loop;
如果沒有,有沒有創造同樣的循環任何其他方式?由於While循環允許使用變量作爲限制,但它們在我的項目中不可合成。
由於事先
博揚Matovski
是否有任何可能的方式在表單創建一個for循環:在VHDL使用FOR循環具有可變
for i in 0 to some_var loop
// blah,blah
end loop;
如果沒有,有沒有創造同樣的循環任何其他方式?由於While循環允許使用變量作爲限制,但它們在我的項目中不可合成。
由於事先
博揚Matovski
該變量對測試平臺應用程序來說工作得很好。
綜合你可以通過使用靜態範圍和退出條件獲得相同的效果。將範圍設置爲您需要的最大值。
for i in 0 to MAX_VALUE loop
exit when i = some_var ;
// blah,blah
end loop;
如果你的綜合工具扼殺了這個,請提交一個錯誤報告。 1076.6-1999和1076.6-2004(VHDL RTL綜合標準)都指出退出條件支持具有靜態範圍的「for」循環。您可能會發現有關使用循環標籤(1076.6-1999)的支持問題表明它不受支持。
如果您發現缺陷(或缺乏支持)並且不報告,您的供應商會認爲這是您不關心的功能,因此不會投資更改其工具。
只有循環參數與靜態範圍是合成的。
如果some_var具有離散範圍,則可以實現FSM(有限狀態機)。然後爲每個狀態編寫一個特定的循環。
帶'exit'的解決方案在Altera Quartus II中編譯,其中'for ... loop'中的可變長度範圍失敗。如果'退出'不適用於某個工具,那麼按照Jim的說法報告它,但是一個解決方法可能是在'some_var'有條件的情況下進行更新,如果我<= some_var then'。 –