Autor Tema: Mensaje de Error al compilar VHDL  (Leído 4085 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado robertobaenagalle

  • PIC10
  • *
  • Mensajes: 1
Mensaje de Error al compilar VHDL
« en: 15 de Febrero de 2006, 08:09:00 »
Hola,

tengo un diseño en VHDL que me da el siguiente error en la compilación y no soy capaz de averiguar el motivo:

Error: Can"t resolve multiple constant drivers for net sensor_sigte[1] at Simulacion_SSI.vhd(104)

Más abajo escribo el código, el programa completo es más amplio. Si lo necesitan o desean verlo gustosamente se lo envío por mail o lo reescribo entero en otro mensaje.

Gracias por su ayuda!!
Roberto.

La parte de código a la que se refiere dicho error es:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ETAPA_ENVIO: process                  -- LÍNEA 104
begin
   wait until (step=2);

   case (sensor) is
      when 1 =>
         control <= "01";
         sensor_sigte <= 2;
      when 2 =>
         control <= "10";
         sensor_sigte <= 3;
      when 3 =>
         control <= "11";
         sensor_sigte <= 1;
   end case;

   irq_aux <= "1";
   step_sigte <= 3;
   data_paralelo_out <= data_paralelo_aux;
end process;   

SINCRO: process (CLK_48M, RESET)
begin
   
if (RESET="1") then
   step <= 1;
   step_sigte <= 1;
   sensor <= 1;
   sensor_sigte <= 1;
   
elsif ((CLK_48M"EVENT) AND (CLK_48M="1")) then
   control_ssi <= control;                   -- dato de sensor
   data_paralelo <= data_paralelo_out;   -- dato de posición
   time_ssi <= contador_out;      -- diferencia de tiempo
   irq <= irq_aux;      -- señal de interrupción para la CPU
   
   sensor <= sensor_sigte;
   step <= step_sigte;
end if;         
end process;

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Mensaje de Error al compilar VHDL
« Respuesta #1 en: 15 de Febrero de 2006, 12:00:00 »
Al no ver las declaraciones de señales y tal no lo veo demasiado claro el por qué te da ese error.De todas formas parece ser que sensor_sigte es un bit_vector,y si no recuerdo mal,no se le pueden asignar de forma directa valores numéricos.Deberías hacerlo de la siguiente forma:

-- Suponiendo que sensor_sigte es un vector de longitud [7 downto 0]...

sensor_sigte <= "00000011"  -- Valor 3

sensor_sigte <= "00000010" -- Valor 2

-- etc...

Sería bueno que pastearas la entidad y la parte de declaraciones de tu arquitectura para poder ver mejor por donde van los tiros.
Un saludo


Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Mensaje de Error al compilar VHDL
« Respuesta #2 en: 16 de Febrero de 2006, 02:00:00 »
El problema esta en que modificas la señal "sensor_sigte" en dos procesos diferentes. Esto proboca un fallo de cuando debe ser modificado el valor de esta señal: cuando cambie "sensor" o cuando se produzca un flanco ascendente de la señal de reloj del segundo proceso?.

Lo que debes hacer es unir ambos procesos en uno solo. Siempre es preferible hacer procesos sensibles con la señal de reloj y el reset, en vez de con señales particulares.