неопределенные переменные в естественных условиях с VHDL - PullRequest
0 голосов
/ 12 апреля 2019

Когда я пытаюсь запустить симуляцию 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;

enter image description here

...