描述: 我想編寫vhdl代碼,它發現數組A中包含20個整數的最大整數。vhdl代碼(for循環)
問題:
我的算法應該是什麼樣子,輸入順序語句的位置?
我的VHDL代碼:
highnum: for i in 0 to 19 loop
i = 0;
i < 20;
i<= i + 1;
end loop highnum;
這並不需要是綜合的,但我不知道如何形成這個for循環一個詳細的例子,說明如何將不勝感激。
描述: 我想編寫vhdl代碼,它發現數組A中包含20個整數的最大整數。vhdl代碼(for循環)
問題:
我的算法應該是什麼樣子,輸入順序語句的位置?
我的VHDL代碼:
highnum: for i in 0 to 19 loop
i = 0;
i < 20;
i<= i + 1;
end loop highnum;
這並不需要是綜合的,但我不知道如何形成這個for循環一個詳細的例子,說明如何將不勝感激。
首先你應該知道你是如何在vhdl中定義數組的。 讓我爲你定義一個數組。
type array_of_integer array(19 downto 0) of integer;
signal A : array_of_integer :=(others => 0);
signal max : integer;
-- Now above is the array in vhdl of integers all are initialized to value 0.
A(0) <= 1;
A(1) <= 2;
--
--
A(19)<= 19;
-- Now the for loop for calculating maximum
max <= A(0);
for i in 0 to 19 loop
if (A(i) > max) then
max <= A(i);
end if;
end loop;
- 現在,如果你有低估該往哪裏放哪部分代碼。在一個---- VHDL實體格式..即過程,港口等..你可以回答的問題!
簡單地將C環轉換爲VHDL,在VHDL時鐘進程內部,可以工作並且是可合成的。它會產生大量的硬件,因爲它必須在一個時鐘週期內產生輸出,但如果你只是模擬它,這並不重要。
如果硬件太多,則必須將它作爲一個至少具有兩個狀態Idle和Calculating的狀態機來實現,以便在計算時每個時鐘週期只執行一次循環迭代,並返回到Idle狀態完成後。
(這個答案在問題中的C代碼被刪除之前更有意義!) –
我可以理解這一點。感謝您的幫助。 – user2444074