我对此代码的目的是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在这一行中给了我两次以下错误
不紧密相关的类型之间不允许进行转换
答案 0 :(得分:1)
表达式inputbuffer(i-1)
只返回std_logic
类型的单个位。这不能直接投放到unsigned
,因为后者是std_logic
的数组。
您必须先将单个位扩展为所需长度的向量。长度取决于添加中可能遇到的最高数量。