2013-02-06 65 views
1

我正在研究一個函數,它接收一個信號並將其添加到一個向量中。將元素從std_logic_vector轉換爲整數vhdl

一旦添加了足夠多的信號,在我的情況4中,然後我遍歷該向量並將其添加到我的過程中的整數變量。

我無法將各個元素轉換爲整數。

我試過使用to_integer(unsigned(myVector)),但是這是一個二進制到十進制的轉換。

我只是希望它這樣,當我依次通過我的載體是這樣的:

for i in 0 to myVector'length loop 
    Sum := Sum + to_integer(myVector(i)); 
end loop; 

是1或0的位值被轉換爲1或0,我可以使用添加到我的總和。

任何想法?

由於

PS - myVector是一個信號,總和在我的過程的整數變量。 如果沒有簡單的方法,我該怎麼做呢?

+2

要了解我們需要看到(一)庫和使用條款的問題,以及(b)myVector的聲明。我們知道這是一個東西的矢量...... –

回答

3

假設你要計算在numeric_std_unsigned的那些,這個問題很簡單,to_integer需要

下面創建一個位於載體上(無符號),而myVector(i)是一個位(STD_LOGIC)工作1位無符號的to_integer應該滿意。

for i in 0 to myVector'length loop 
    Sum := Sum + to_integer(myVector(i downto i)); 
end loop; 

可選地,如果綜合工具不會動態喜歡在一個循環切片myVector,

for i in 0 to myVector'length loop 
    if myVector(i) = '1' then 
     Sum := Sum + 1; 
    end if; 
end loop; 

都行。

還要注意,循環邊界可能有一個範圍錯誤... 0到長度可能是1次迭代多於你有元素 - 假設元素實際上從0開始,這是一個相當的假設。

for i in myVector'low to myVector'high loop 

最好...

+0

謝謝你的答案。你的解決方案奏效 – RXC

相關問題