2014-02-25 120 views
1

描述: 我想編寫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循環一個詳細的例子,說明如何將不勝感激。

回答

1

首先你應該知道你是如何在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實體格式..即過程,港口等..你可以回答的問題!

+0

我可以理解這一點。感謝您的幫助。 – user2444074

3

簡單地將C環轉換爲VHDL,在VHDL時鐘進程內部,可以工作並且是可合成的。它會產生大量的硬件,因爲它必須在一個時鐘週期內產生輸出,但如果你只是模擬它,這並不重要。

如果硬件太多,則必須將它作爲一個至少具有兩個狀態Idle和Calculating的狀態機來實現,以便在計算時每個時鐘週期只執行一次循環迭代,並返回到Idle狀態完成後。

+0

(這個答案在問題中的C代碼被刪除之前更有意義!) –