Nuestra tarea es diseñar una ALU de 4 bits en VHDL con Xilinx y tengo problemas en el diseño de la ALU de 1 bit. Encontré un ejemplo en Internet que se usa con las declaraciones de selección de "Argumento", aquí está el ejemplo:
FullAdder: OneBitAdder port map (InputSignal(1),InputSignal(0),CarryIn, ArithmeticModeOutput(1),ArithmeticModeOutput(0));
with Mode select
UnitOutput <= ('0' & LogicModeOutput) when '0',
ArithmeticModeOutput when '1',
"00" when others;
with Sel select
LogicModeOutput <= (J and K) when "00",
(J or K) when "01",
( J xor K) when "10",
( J xnor K) when "11",
'0' when others;
with Sel select
InputSignal <= (J & '0') when "00",
(J ,K) when "01",
( J, not K) when "10",
( not J, K) when "11",
"00" when others;
CarryOut <= UnitOutput(1);
Foutput <= UnitOutput(0);
Este código funciona, se compila sin error y la simulación funciona, pero nuestra asignación quiere que sea una declaración en caso contrario. Intenté escribir uno pero no funcionó correctamente:
process (Mode,Sel,J,K)
begin
if(Sel(1) = '0') and (Mode ='0') then --Logic mode combinations
if(Sel(0) = '0') then
LogicModeOutput <= (J and K);
else
LogicModeOutput <= (J or K);
end if;
else
if(Sel(0) = '0') then
LogicModeOutput <= (J xor K);
else
LogicModeOutput <= (J xnor K);
end if;
end if;
end process;
process (Mode,Sel,J,K)
begin
if(Sel = "00") then --Arithmetic mode combinations
InputSignal <= (J & '0'); -- since J is 1-bit, we have to add a '0' after.
elsif(Sel = "01") then
InputSignal <= (J , K); -- J and K are 1-bit, so we concatenate them.
elsif(Sel = "10") then
InputSignal <= (J, not K);
elsif(Sel = "11") then
InputSignal <= (not J, K);
else
InputSignal <= "00";
end if;
end process;
process (Mode)
begin
if(Mode = '0') then --how to select the mode
UnitOutput <= ('0' & LogicModeOutput); -- since LogicModeOutput is 1-bit, we
have to add a '0' before.
elsif(Mode = '1') then
UnitOutput <= ArithmeticModeOutput;
else
UnitOutput <= "00";
end if;
end process;
Estoy abierto a todas las sugerencias con mi prioridad de que debería ser una declaración en caso contrario. Gracias por sus contribuciones.