我有这段代码
function func (k1, k2 : in bit_vector) return bit_vector is
variable result : bit_vector(1 to 32);
begin
for i in 0 to 31 loop
result(i) <= k1(i);
end loop;
return result;
end func;
我收到此错误:
target(变量“result”)不是信号
我知道我需要改变结果的类型,但我不知道应该是什么。 感谢。
答案 0 :(得分:3)
分配给变量时,请使用:=
:
result(i) := k1(i);
分配<=
用于分配信号。
result
(1 to 32
)的范围与循环中的范围(0 to 31
)不匹配,因此首先在循环中分配(result(0) := k1(0)
)将导致范围错误。通过更改result
或循环范围来解决此问题。