总计 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
.
的数组
您必须首先将单个位扩展为所需长度的向量。长度取决于加法中可能遇到的最大数。
我这个代码的目的是交叉总计一个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
.
您必须首先将单个位扩展为所需长度的向量。长度取决于加法中可能遇到的最大数。