我正在研究一个接收信号并将其添加到矢量中的函数。
一旦添加了足够的信号,在我的情况下为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是一个信号,Sum是我进程中的整数变量。 如果没有简单的方法,我还能怎么做呢?
答案 0 :(得分: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
是首选...