2015-10-22 59 views
0

當我合成我的項目時出現錯誤。我有一個錯誤在這行:錯誤:索引名稱不是整數

axi_rdata <= patternCount(axi_awaddr(ADDR_LSB+OPT_MEM_ADDR_BITS downto ADDR_LSB)); 

,我得到這個錯誤:

[Synth 8-2234] indexed name is not a integer

我將不勝感激,如果你能幫助我。

+0

您需要爲此代碼段中使用的對象添加聲明。 –

+0

最基本的問題是,你試圖通過'axi_awaddr'中的一個位域來索引'patternCount',它可能是某種數組。你只能用一個整數索引一個數組。如果你澄清問題中的對象類型,我可以回答。 –

+0

@scary_jeff感謝回答,這是'patternCount'的類型: 'type PatternCount_memory是std_logic_vector(4 downto 0)的數組(31到0); \t signal patternCount:PatternCount_memory; ' – mohi

回答

1

您已經聲明數組類型:

type PatternCount_memory is array (31 to 0) of std_logic_vector(4 downto 0); 
signal patternCount : PatternCount_memory; 

您通常會訪問元素數組像這樣:

a <= patternCount(3); 
b <= patternCount(0); 

正如你所看到的,數組索引是一個整數。如果你有一個位域:

signal bit_field : std_logic_vector(4 downto 0) := "01010"; 

然後是你的陣列直接使用該索引的錯誤:

a <= patternCount(bit_field); -- Error, indexed name is not an integer 

你可能想你的位域轉換,使得它被解釋爲一個整數:

a <= patternCount(to_integer(unsigned(bit_field))); -- OK, we have converted our bitfield 

使用numeric_std包時可以使用這些轉換函數。

+0

非常感謝你,它被解決了,它真的幫助完整 – mohi

相關問題