Hola Damago!
he visto una cosa, en la solución del multiplexor usando la sentencia CASE para describir la arquitectura dinámica (process), creo que es más correcto que no definas un estado NULL, que puede resultar inestable. Me refiero a :
Codigo:
process(c,a,Enable)
begin
if(Enable = "1") then
case c is
when "00" => salida <= a(0);
when "01" => salida <= a(1);
when "10" => salida <= a(2);
when "11" => salida <= a(3);
when others => NULL;
end case;
end if;
end process;
Yo haría mejor esto:
Codigo:
process(c,a,Enable)
begin
if(Enable = "1") then
case c is
when "00" => salida <= a(0);
when "01" => salida <= a(1);
when "10" => salida <= a(2);
when others => salida <= a(3);
end case;
end if;
end process;
Lo ves?