Vhdl 未定义的输出

Vhdl 未定义的输出,vhdl,exponent,Vhdl,Exponent,每次我模拟下面的代码时,我的输出都是未定义的,我不知道为什么。我在代码和模拟中都有数字库。如果有人能帮忙,请告诉我。模拟中的输入也变成00000..000,而不是15和3的输入 模块代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; USE ieee.numeric_std.ALL; entity EXPONENT_FUNCTION is Port ( A : in STD_LOGIC_VECTOR (23 downto 0);

每次我模拟下面的代码时,我的输出都是未定义的,我不知道为什么。我在代码和模拟中都有数字库。如果有人能帮忙,请告诉我。模拟中的输入也变成00000..000,而不是15和3的输入

模块代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

USE ieee.numeric_std.ALL;

entity EXPONENT_FUNCTION is
    Port ( A : in  STD_LOGIC_VECTOR (23 downto 0);
       B : in  STD_LOGIC_VECTOR (23 downto 0);
       O : out STD_LOGIC_VECTOR (47 downto 0));
end EXPONENT_FUNCTION;

architecture Behavioral of EXPONENT_FUNCTION is


signal AIN, BIN, F : integer;
signal u : std_logic_vector (47 downto 0);

begin

AIN <= to_integer(signed (A));

BIN <= to_integer(signed (B));

F <= ((AIN)**(BIN));
u <= std_logic_vector(to_signed(F, 48));
O <= u;


end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用ieee.numeric_std.ALL;
实体指数函数为
端口(A:STD_逻辑_向量中(23向下至0);
B:标准逻辑向量(23到0);
O:输出标准逻辑向量(47到0);
端指数函数;
指数函数的结构是
信号AIN,BIN,F:整数;
信号u:标准逻辑向量(47至0);
开始
艾诺
);
刺激程序:过程
开始

A未定义输出的原因是运行时错误。这是因为指数运算符不能与负整数一起使用。如果将类型更改为
natural
unsigned
,它将编译并运行:

architecture Behavioral of EXPONENT_FUNCTION is

  signal AIN, BIN, F : natural;
  signal u : std_logic_vector (47 downto 0);

begin

  AIN <= to_integer(unsigned (A));
  BIN <= to_integer(unsigned (B));

  F <= ((AIN)**(BIN));
  u <= std_logic_vector(to_unsigned(F, 48));
  O <= u;

end Behavioral;
指数函数的结构是
信号AIN、BIN、F:自然;
信号u:标准逻辑向量(47至0);
开始

AIN输出未定义的原因是运行时错误。这是因为指数运算符不能与负整数一起使用。如果将类型更改为
natural
unsigned
,它将编译并运行:

architecture Behavioral of EXPONENT_FUNCTION is

  signal AIN, BIN, F : natural;
  signal u : std_logic_vector (47 downto 0);

begin

  AIN <= to_integer(unsigned (A));
  BIN <= to_integer(unsigned (B));

  F <= ((AIN)**(BIN));
  u <= std_logic_vector(to_unsigned(F, 48));
  O <= u;

end Behavioral;
指数函数的结构是
信号AIN、BIN、F:自然;
信号u:标准逻辑向量(47至0);
开始

AIN如果您单独模拟上述代码,其输出将是未定义的,因为没有任何东西驱动输入。您需要在问题中包含测试台的代码。(请参阅)。我已使用模拟代码对其进行了更新。如果您单独模拟上述代码,其输出将是未定义的,因为没有任何东西驱动输入。您需要在问题中包含测试台的代码。(请参阅)。我已使用模拟代码对其进行了更新谢谢,但我所做的是将整数值设置为初始状态“0”,这似乎也解决了问题。实际上,您所要做的就是将BIN声明为自然值以停止运行时错误(或如OP所示,提供安全的初始值)。谢谢,但我所做的是将整数值设置为初始状态“0”,这似乎也解决了问题。实际上,您所要做的就是将BIN声明为自然值以停止运行时错误(或者如OP所示,提供一个安全的初始值)。