2011-03-11 112 views
-2

我的VHDL代碼非常簡單的問題。我已經定義了下面的代碼:VHDL中的陣列類型不匹配

type irf_array is array(0 to 1) of integer; 
signal index : std_logic; 
.... 
index := input(5); 
out := irf_array(index); 

當試圖編譯這個簡單的代碼fragement我收到以下錯誤:

Error: array index type mismatch [6.4] 

所以我想知道如果任何人有一個想法,我怎麼可以使用STD_LOGIC值作爲我的數組的輸入。

非常感謝!

+0

爲了尊重那些誰可能需要花時間來解決,你無法自己解決問題,我想建議,以避免其描述預先稱爲「非常簡單」。 – 2011-03-11 14:46:21

回答

3

您的數組索引需要是一個整數。如果你想使用STD_LOGIC基於類型,你應該使用符號或無符號類型(包括數值的概念,不同於普通的STD_LOGIC信號)和適當的類型轉換:

type irf_array is array(0 to 1) of integer; 
signal index : unsigned(0 downto 0); 
.... 
index(0) := input(5); 
out := irf_array(to_integer(index)); 

您可以使用一個std_logic_vector,而不是無符號的類型,有一個額外的轉換:

signal index : std_logic_vector(0 downto 0); 
... 
out := irf_array(to_integer(unsigned(index))); 
+4

爲什麼不直接聲明一個整數的索引?這樣你以後不必轉換數據類型。信號索引:整數範圍0到1; – Philippe 2011-03-11 16:09:06

+0

+1使用正確的'無符號'類型。但我會從一開始就使用一個整數 – 2011-03-14 16:26:12