首页 文章

将元素从std_logic_vector转换为整数vhdl

提问于
浏览
1

我正在研究一个接收信号并将其添加到矢量中的函数 .

一旦添加了足够的信号,在我的情况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是我的过程中的整数变量 . 如果没有简单的方法,我怎么能这样做?

1 回答

  • 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
    

    是首选......

相关问题