Problema básico VHDL

Hola:
Estoy diseñando un circuíto en VHDL y llevo dos días clavado por cual de unas señales que no se me reflejan en la salida de un comparador. Basicamente por más que busco no encuentro la solución. Lo que me ocurre es que con un código muy básico como el que os expongo a continuación la entrada del sistema se me modifica perfectamente pero la salida me sale en todo momento "undefined" (indefinida). ¿¿¿¿Alguien me puede decir a que se puede deber?.
PD. Os dejo a coninuación el código y el test bench que uso.

Código:

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;

entity comparador is
port(cmsel:in unsigned (7 downto 0);
pent2: out unsigned(15 downto 0)
);
end comparador;


architecture COMP of comparador is
begin

comparacion:process
begin
if (cmsel=X"00") then --PREGUNTAR QUE REXISTRO DE COMPARACION VAMOS A UTILIZAR
pent2<=X"AAAA";
end if;
wait;
end process comparacion;
end comp;

Test bench:

--librerias
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;

entity comparador is
end comparador;

architecture COMP of comparador is
signal cmsel: unsigned (7 downto 0);
signal pent2: unsigned(15 downto 0);

component compar is
port(cmsel:in unsigned (7 downto 0); --selecciona o cm a utilizar
pent2: out unsigned(15 downto 0)
);
end component compar;

Begin
--INSTANCIACION
t_compar: compar port map (pent2 => pent2,cmsel=>cmsel);--,pcm=>pcm, cmsel=>cmsel,ent2l=>ent2l,ent2h=>ent2h,cml=>cml,cm h=>cmh,comp=>comp);

PCMSEL:process
Begin
cmsel<=X"01" , X"00" after 100 ns;
wait;
end process PCMSEL;

end COMP;

Muchas gracias
 
¿Si dejas el process así?

comparacion:process(cmsel)
begin
if (cmsel=X"00") then --PREGUNTAR QUE REXISTRO DE COMPARACION VAMOS A UTILIZAR
pent2<=X"AAAA";
end if;
end process comparacion;

- Cambio 1: tienes que poner alguna señal en la lista de sensibilidad del process, si no no se "ejecuta"
- Cambio 2: ¿para qué pones un wait dentro de ese process?
 
El wait lo puse para evitar poner la lista de sensibilidad de todos modos estoy probando sin el wait y poniendo cmsel en la lista de sensibilidad y sigue mostrando la salida "undefined". A lo mejor digo una tontería es que aun soy un poco novato en esto del vhdl
 
Puede ser que te falte el "else" del if, ya que para todo valor distinto de x"00" es cierto que no está definida la salida... Tendrás que ponerle un valor por defecto.

if (cmsel=X"00") then --PREGUNTAR QUE REXISTRO DE COMPARACION VAMOS A UTILIZAR
pent2<=X"AAAA";
else
pent2<=X"1234"
end if;
 
Atrás
Arriba