Hola mr_rubrik!
Tal y como has planteado el comparador, definiendo la entidad con las cuatro entradas, no estás implementando un comparador de 4 bits a partir de cuatro comparadores de 1 bit.
Con el código que has propuesto (que tiene muy buena pinta), podrías construir un comparador de 4 bits muy fácilmente; pero yo haría esto:
Bloque de entidad:
Codigo:
entity Compara4 is
port(A:in std_logic_vector(3 downto 0);
B:in std_logic_vector(3 downto 0);
menor:out std_logic;
igual:out std_logic;
mayor:out std_logic
);
end Compara4;
Bloque de arquitectura, incluyendo un proceso:
---------------------------------------------------
Codigo:
architecture comp of Compara4 is
begin
process(A,B)
begin
if (A<B) then
menor <= "1";
igual <= "0";
mayor <= "0";
elsif (A=B) then
menor <= "0";
igual <= "1";
mayor <= "0";
else
menor <= "0";
igual <= "0";
mayor <= "1";
end if;
end process;
end comp;
Si quieres construir un comparador de n bits en lugar de cuatro, en la definición del puerto de entrada tendrías que poner un vector de n posiciones, en lugar de 4 como el ejemplo que te he puesto.
Otra cosa, si quieres utilizar 4 comparadores de 1 bit para hacer el comparador de 4 bits, te doy una pista: necesitas definir la entidad con COMPONENT, componentes que serán precisamente los comparadores de 1 bits, y que tendrás que configurarlos como entradas y salidas en los puertos. A ver si lo pillas, vale? y me cuentas.