2013-02-06 123 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

相关问题