总计 std_logic_vector

cross total of a std_logic_vector

我这个代码的目的是交叉总计一个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 在这一行中两次出现以下错误

conversion not allowed between not closely related types

表达式 inputbuffer(i-1) 只是 returns 类型 std_logic 的一个位。这不能直接转换为 unsigned 因为后者是 std_logic.

的数组

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