我正在使用一些VHDL代碼(在FPGA上)讀取16位數字信號,做一些處理,然後寫出16位處理後的信號。目前它的設置應該是每10個時鐘週期讀一次輸入,在下一個時鐘週期進行一些處理(目前它什麼都不做,只是輸出輸入),然後在剩下的8個時鐘週期內遞增計數器。使用If條件每10個時鐘週期執行一次「某事」。如果「某事」需要超過1個時鐘週期,該怎麼辦?
如果處理需要超過一個時鐘週期才能完成(會如何),它會一直持續到完成並停止計數器遞增直到它結束爲止?或者計數器在處理信號時保持並行遞增?
我將它設置爲在8個時鐘週期結束之前完成該過程(及時寫入輸出)。
的僞代碼看起來是這樣的:
Do (on rising clock edge):
if (n = 10) then
n <= 1;
Output <= ProcessedSignal;
InputSignal <= Input;
elsif (n = 1) then
n <= n + 1
Output <= Output;
-- do some signal processing here (e.g. a filter)
ProcessedSignal <= InputSignal;
else
n <= n + 1;
Output <= Output;
ProcessedSignal <= ProcessedSignal;
end if;
你的問題似乎爲時過早。請參見[我如何提出一個好問題?](http://stackoverflow.com/help/how-to-ask)您可以編寫一些實際的VHDL代碼並進行模擬,以便您可以針對可複製的問題提出具體問題通過一個[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)。 – user1155120