交叉总计std_logic_vector

时间:2015-12-11 17:56:59

标签: vhdl

我对此代码的目的是std_logic_vector的交叉总和。 我有以下代码:

generic(
        lowPass_len : integer := 4;

...

signal inputbuffer : std_logic_vector(lowPass_len-1 downto 0);
signal sum: integer range 0 to lowPass_len;
signal lowpass_alarm_tog : std_logic;

...

inputbuffer <= inputbuffer(lowPass_len-1 downto 1) & alarm_tog_d2_meta;
for i in (lowPass_len-1) downto 1 loop
            sum <= to_integer(unsigned(inputbuffer(i-1)) + unsigned(inputbuffer(i)));
        end loop;

因为inputbuffer是一个std_logic_vector,我想把它转换为unsigned以进行添加。然后将其转换为整数,因为sum具有这种类型。

ghdl在这一行中给了我两次以下错误

  不紧密相关的类型

之间不允许进行转换

1 个答案:

答案 0 :(得分:1)

表达式inputbuffer(i-1)只返回std_logic类型的单个位。这不能直接投放到unsigned,因为后者是std_logic的数组。

您必须先将单个位扩展为所需长度的向量。长度取决于添加中可能遇到的最高数量。