0
我有一個關於在if語句中使用for循環的問題。 if語句在進程聲明中。問題是,當我執行for循環的代碼部分時,只執行一次,而不考慮B的值。我甚至嘗試輸入顯式值並忽略B,但循環只執行一次。我錯過了什麼嗎?for循環只執行1次
該代碼是應用邏輯左移而不使用sll的ALU行爲模型的一部分。
elsif ALU_Control = "100" then
-- implement shift logic left by B units
if (B > X"00000000") then
-- Use value of B input as the shift position
shift_value := TO_INTEGER(UNSIGNED(B));
-- concatenate a 0 to end of A
for index in 0 to shift_value loop
temp_A := (A(30 downto 0) & '0');
end loop;
ALU_out <= temp_A(31 downto 0) after 100 ps;
else
ALU_out <= A after 100 ps;
end if;
指數沒有在循環使用:?是被optmised遠離你可以添加一些日誌記錄,以證明temp_A被改變了?只有一次? –
你有沒有結束'elsif'? –
我不知道如何。不幸的是,我剛開始學習VHDL。當我在Isim(Xilinx)上運行測試平臺時,無論在索引範圍中使用什麼值,此ALU控制輸入的輸出僅「移位」1位。 – user1452627