nakio
01/11/2008, 19:20
Hola a todos, me estoy volviendo loco con esta mierda de ejercicio a ver si me podéis echar una mano.
La cosa es que el programa compila con el puñetero "VeriBest" pero a la hora de ejecutar el simulador me da el siguiente error:
Error: <300c0> During elaboration.
Design unit MUXBASED from library WORK is out-of-date with respect to MUXALU from library WORK
Fatal error: <30041> During elaboration.
Failed to elaborate list of referenced design units for architecture :BITSLICE(MUXBASED)
At line 0, of file C:\PRACTICAVHDL\BITSLICE.VHD.
La cosa va de que me dan el archivo MuxALU.vhd en el que esta declarado el funcionamiento de un Multiplexor 4 a 1 y en el archivo BitSlice.vhd tengo que hacer un BitSlice formado a partir de 4 multiplexores.
Luego a parte me dan el archivo de test ya finalizado.
Resulta que si dentro del archivo BitSlice.vhd yo incorporo el funcionamiento del multiplexor el programa funciona perfectamente, pero en cuanto recurro a un archivo externo la cosa falla.
Archivo MuxALU.vhd:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY MuxALU IS
PORT(
Datos: IN std_logic_vector(3 DOWNTO 0);
Sel1: IN std_logic;
Sel0: IN std_logic;
SalMux: OUT std_logic);
END ENTITY MuxALU;
ARCHITECTURE FLujo OF MuxALU IS
SIGNAL Sal1, Sal0: std_logic;
BEGIN
Sal0 <= (Datos(0) AND (NOT Sel0)) OR (Datos(1) AND Sel0);
Sal1 <= (Datos(2) AND (NOT Sel0)) OR (Datos(3) AND Sel0);
SalMux <= (Sal0 AND (NOT Sel1)) OR (Sal1 AND Sel1);
END Flujo;
Archivo BitSlice.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY Bitslice IS
PORT(
P: IN std_logic_vector(3 DOWNTO 0);
K: IN std_logic_vector(3 DOWNTO 0);
R: IN std_logic_vector(3 DOWNTO 0);
Abit: IN std_logic;
Bbit: IN std_logic;
ACin: IN std_logic;
Sbit: OUT std_logic;
ACout: OUT std_logic);
END BitSlice;
ARCHITECTURE MuxBased OF BitSlice IS
SIGNAL PF, KF: STD_LOGIC;
SIGNAL ACaux : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
MUX0: ENTITY WORK.MuxALU(Flujo) PORT MAP(
P, Abit, Bbit, PF
);
MUX1: ENTITY WORK.MuxALU(Flujo) PORT MAP(
K, Abit, Bbit, KF
);
MUX2: ENTITY WORK.MuxALU(Flujo) PORT MAP(
ACaux, PF, KF, ACout
);
MUX3: ENTITY WORK.MuxALU(Flujo) PORT MAP(
R, PF, ACin, Sbit
);
ACaux <= '0' & ACin & '0' & '1';
END ARCHITECTURE MuxBased;
Y el archivo de test que supongo no esta mal porque nos lo ha dado ellos:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY TestBitSlice IS
END Entity;
ARCHITECTURE Test OF TestBitSlice IS
TYPE Ordenes IS (A_N_D, O_R, X_O_R, A_D_D);
SIGNAL P: std_logic_vector(3 DOWNTO 0);
SIGNAL K: std_logic_vector(3 DOWNTO 0);
SIGNAL R: std_logic_vector(3 DOWNTO 0);
SIGNAL Abit: std_logic:= '0';
SIGNAL Bbit: std_logic:= '0';
SIGNAL Sbit: std_logic;
SIGNAL ACout: std_logic;
SIGNAL orden: ordenes;
BEGIN
Instancia: ENTITY work.BitSlice(MuxBased)
PORT MAP(
P => P,
K => K,
R => R,
Abit => Abit,
Bbit => Bbit,
ACin => '0',
Sbit => Sbit,
ACout => ACout);
-- Realizamos un las cuatro operaciones AND, OR, XOR y un ADD, primero con Bbit a cero y luego a 1:
P <= "1000", "1110" AFTER 40 ns, "0110" AFTER 80 ns;
K <= "1111", "0001" AFTER 120 ns;
R <= "1100", "0110" AFTER 120 ns;
Bbit <= NOT Bbit AFTER 10 ns;
Abit <= NOT ABit AFTER 20 ns;
orden <= A_N_D, O_R AFTER 40 ns, X_O_R AFTER 80 ns, A_D_D AFTER 120ns;
END ARCHITECTURE Test;
A ver si me podéis echar una mano.
Saludos y gracias, Nakio.
La cosa es que el programa compila con el puñetero "VeriBest" pero a la hora de ejecutar el simulador me da el siguiente error:
Error: <300c0> During elaboration.
Design unit MUXBASED from library WORK is out-of-date with respect to MUXALU from library WORK
Fatal error: <30041> During elaboration.
Failed to elaborate list of referenced design units for architecture :BITSLICE(MUXBASED)
At line 0, of file C:\PRACTICAVHDL\BITSLICE.VHD.
La cosa va de que me dan el archivo MuxALU.vhd en el que esta declarado el funcionamiento de un Multiplexor 4 a 1 y en el archivo BitSlice.vhd tengo que hacer un BitSlice formado a partir de 4 multiplexores.
Luego a parte me dan el archivo de test ya finalizado.
Resulta que si dentro del archivo BitSlice.vhd yo incorporo el funcionamiento del multiplexor el programa funciona perfectamente, pero en cuanto recurro a un archivo externo la cosa falla.
Archivo MuxALU.vhd:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY MuxALU IS
PORT(
Datos: IN std_logic_vector(3 DOWNTO 0);
Sel1: IN std_logic;
Sel0: IN std_logic;
SalMux: OUT std_logic);
END ENTITY MuxALU;
ARCHITECTURE FLujo OF MuxALU IS
SIGNAL Sal1, Sal0: std_logic;
BEGIN
Sal0 <= (Datos(0) AND (NOT Sel0)) OR (Datos(1) AND Sel0);
Sal1 <= (Datos(2) AND (NOT Sel0)) OR (Datos(3) AND Sel0);
SalMux <= (Sal0 AND (NOT Sel1)) OR (Sal1 AND Sel1);
END Flujo;
Archivo BitSlice.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY Bitslice IS
PORT(
P: IN std_logic_vector(3 DOWNTO 0);
K: IN std_logic_vector(3 DOWNTO 0);
R: IN std_logic_vector(3 DOWNTO 0);
Abit: IN std_logic;
Bbit: IN std_logic;
ACin: IN std_logic;
Sbit: OUT std_logic;
ACout: OUT std_logic);
END BitSlice;
ARCHITECTURE MuxBased OF BitSlice IS
SIGNAL PF, KF: STD_LOGIC;
SIGNAL ACaux : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
MUX0: ENTITY WORK.MuxALU(Flujo) PORT MAP(
P, Abit, Bbit, PF
);
MUX1: ENTITY WORK.MuxALU(Flujo) PORT MAP(
K, Abit, Bbit, KF
);
MUX2: ENTITY WORK.MuxALU(Flujo) PORT MAP(
ACaux, PF, KF, ACout
);
MUX3: ENTITY WORK.MuxALU(Flujo) PORT MAP(
R, PF, ACin, Sbit
);
ACaux <= '0' & ACin & '0' & '1';
END ARCHITECTURE MuxBased;
Y el archivo de test que supongo no esta mal porque nos lo ha dado ellos:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY TestBitSlice IS
END Entity;
ARCHITECTURE Test OF TestBitSlice IS
TYPE Ordenes IS (A_N_D, O_R, X_O_R, A_D_D);
SIGNAL P: std_logic_vector(3 DOWNTO 0);
SIGNAL K: std_logic_vector(3 DOWNTO 0);
SIGNAL R: std_logic_vector(3 DOWNTO 0);
SIGNAL Abit: std_logic:= '0';
SIGNAL Bbit: std_logic:= '0';
SIGNAL Sbit: std_logic;
SIGNAL ACout: std_logic;
SIGNAL orden: ordenes;
BEGIN
Instancia: ENTITY work.BitSlice(MuxBased)
PORT MAP(
P => P,
K => K,
R => R,
Abit => Abit,
Bbit => Bbit,
ACin => '0',
Sbit => Sbit,
ACout => ACout);
-- Realizamos un las cuatro operaciones AND, OR, XOR y un ADD, primero con Bbit a cero y luego a 1:
P <= "1000", "1110" AFTER 40 ns, "0110" AFTER 80 ns;
K <= "1111", "0001" AFTER 120 ns;
R <= "1100", "0110" AFTER 120 ns;
Bbit <= NOT Bbit AFTER 10 ns;
Abit <= NOT ABit AFTER 20 ns;
orden <= A_N_D, O_R AFTER 40 ns, X_O_R AFTER 80 ns, A_D_D AFTER 120ns;
END ARCHITECTURE Test;
A ver si me podéis echar una mano.
Saludos y gracias, Nakio.