Error de compilación VHDL que dice "El tipo de VARIABLE es incompatible con

0

Soy bastante nuevo en el mundo de la programación VHDL.

En un código simple, estoy tratando de hacer un simple sumador BCD.

Asigné / declaré la variable como sigue

Port ( dipSW : in  unsigned (7 downto 0); ......


signal n1 : unsigned(3 downto 0); 
signal n2 : unsigned(3 downto 0); 
signal sum : integer range 0 to 31; 

Dentro del Archetecutre (no en proceso), intenté compilar el siguiente código

n1 <= 9 when num1 > 9 else num1; 
n2 <= 9 when num2 > 9 else num2; 
sum <= n1 + n2;

Sin embargo, me sale el siguiente error

  1. El tipo de n1 es incompatible con el tipo de 9.
  2. El tipo de n2 es incompatible con el tipo de 9
  3. el tipo de suma es incompatible con el tipo de +

¿Puede alguien decirme qué estoy haciendo mal?

    
pregunta Steve

1 respuesta

2

Bienvenido a cómo es muy VHDL fuertemente tipado. A diferencia de Verilog, no puedes usar números juntos y hacer que funcionen. Específicamente, los tipos de VHDL UNSIGNED e INTEGER no son compatibles con las operaciones que ha especificado. Consulte este conjunto de diapositivas sobre la aritmética VHDL y busque las operaciones proporcionadas por NUMERIC_STD.

Una solución puede consistir en usar solo el tipo NO FIRMADO y ajustar las constantes en las llamadas a TO_UNSIGNED(constant, width) , asegurando los tipos coincidentes.

    
respondido por el user2943160

Lea otras preguntas en las etiquetas