为什么我不能将此整数转换为 logic_vector?

Why couldn't I convert this integer into a logic_vector?

我一直在尝试将此整数类型的信号转换为 std_logic 向量,并将转换后的值分配给另一个与 VHDL 整数具有相同宽度的信号

signal temp : std_LOGIC_VECTOR(31 downto 0) := (others => '0'); 
signal FrameCumulative : integer :=0;

temp <= to_stdlogicvector(to_unsigned(FrameCumulative));

但是我得到这个错误:

Error (10346): VHDL error at vga.vhd(107): formal port or parameter "SIZE" must have actual or default value

我正在使用 use IEEE.NUMERIC_STD.ALL;use IEEE.STD_LOGIC_1164.ALL;

首先,我犯了一个错误,没有检查 VHDL 中的整数大小,并试图将一个整数分配给一个 14 位向量,但在我考虑了一下之后,我改正了我的错误。

现在根据许多在线资源,我正在做的应该可以工作,但我的合成器抱怨它。

如果您确实知道造成这种情况的原因,您介意详细说明您的答案而不是仅仅发布正确的代码,谢谢!

必须为函数 to_unsigned 提供一个参数,该参数指定您希望它生成的矢量的宽度。函数 to_stdlogicvector 也不正确。您的行应如下所示:

temp <= std_logic_vector(to_unsigned(FrameCumulative, temp'length));

函数to_unsigned为转换函数,必须提供目标宽度。在这里,正如@BrianDrummond 所建议的那样,宽度是通过从目标向量本身 (temp) 中获取 length 属性来指定的。 std_logic_vector 是类型转换,其中 unsigned 值被简单地直接解释为 std_logic_vector.