Когда я пытаюсь запустить симуляцию in vivado, используя следующий код, я получаю несколько ошибок, связанных с неопределенными переменными. что я должен делать?
Я получаю неопределенные значения для a, b, cOut, control, overflow, result и result_sig
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Alu4 IS
GENERIC( CONSTANT N: INTEGER := 4; -- 4 bits ALU
CONSTANT Z: STD_LOGIC_VECTOR(3 DOWNTO 1) := "000" -- 3 Zeros
);
PORT(
a, b: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
control: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
overflow: OUT STD_LOGIC;
zero: OUT STD_LOGIC;
cOut: OUT STD_LOGIC;
result: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)
);
END Alu4;
ARCHITECTURE behavioral OF Alu4 IS
COMPONENT Alu1
PORT(
a: IN STD_LOGIC;
b: IN STD_LOGIC;
cIn: IN STD_LOGIC;
control: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
cOut: OUT STD_LOGIC;
result: OUT STD_LOGIC
);
END COMPONENT;
SIGNAL carry_sig: STD_LOGIC_VECTOR(N DOWNTO 0); -- carry_sig(N) = MSB cOut
SIGNAL result_sig: STD_LOGIC_VECTOR(N-1 DOWNTO 0);
BEGIN
carry_sig(0) <= '1' WHEN control = "11" ELSE
'0';
co1: Alu1 PORT MAP(a(0),b(0), carry_sig(0), control,
carry_sig(1),result_sig(0));
co2: Alu1 PORT MAP(a(1),b(1), carry_sig(1), control,
carry_sig(2),result_sig(1));
co3: Alu1 PORT MAP(a(2),b(2), carry_sig(2), control,
carry_sig(3),result_sig(2));
co4: Alu1 PORT MAP(a(3),b(3), carry_sig(3), control,
carry_sig(4),result_sig(3));
overflow <= carry_sig(3) XOR carry_sig(4);
zero <= '1' WHEN result_sig = "0000" ELSE
'0';
END behavioral;