TODOPIC
Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: robertobaenagalle 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;
-
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
-
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.