Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Error in VHDL code. Can anybody help me?

Status
Not open for further replies.

robertobaenagalle

Newbie level 2
Joined
Feb 15, 2006
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,303
Hi!

I've written some VHDL code and I got the following error message:

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

Can anybody help me with this?
The code is posted below. If you need the complete program tell me and I'll send you. Of course I have posted here the part of the code I think is necessary for corrections.

Thanks!!!!!

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;
 

Hi;

you cant't assign a variable value in two different process.

You assign:

sensor_sigte ; at the ETAPA_ENVIO process

and

sensor_sigte ; at the SINCRO process.

Try in this way:

ETAPA_ENVIO: process(RESET,step,sensor) -- LÍNEA 104
begin
if (RESET='1') then
sensor_sigte <= 1;
elsif (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 if;
end process;

SINCRO: process (CLK_48M, RESET)
begin
if (RESET='1') then
step <= 1;
sensor <= 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;

regards

Daniele
 

Thank you Daniele,

You are right. I suppose I have made a typical beginner mistake... Anyway, I have now the key to go on... Thanks again

Roberto
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top