# Autres langages > Autres langages > VHDL >  Synchronisation entre deux process

## seni404

Bonsoir  tous,

je suis dbutante en VHDL, je veux crire un simple programme qui fait la synchronisation entre 2 process, lorsque l'un fonctionne l'autre non. Pour cela j'ai utilis une variable im qui va prendre la valeur 1 pour que le 2me process puisse fonctionner, et puis pour que le 1er re-fonctionne elle doit changer de valeur  0. Le programme n'accepte pas cette 2me attribution de valeur  la mme variable, il m'affiche _"im has multiple source"_.
Voil le code


```

```

----------


## mith06

Salut,

Tu ne peux pas accder en criture  la mme variable depuis deux process diffrents. Si tu raisonne en terme de synthse cela correspond  un court-circuit sur ton signal im...

----------


## titiri

Bonsoir,

   mith06 : OK avec vous sur le principe, pas d'accord sur la terminologie. Un signal n'est pas une variable, c'est un objet. Liste des objets VHDL:
signal : objet dot d'un historique de valeurconstant : objet dont la valeur ne peut tre changevariable (ou shared variable): objet avec son unique valeur courante

   L'norme diffrence entre un signal et une variable est qu'un signal gnre un "vnement" (le fameux 'event que l'on peut utiliser sur une horloge) alors qu'une variable non : lorsqu'une variable change de valeur, elle ne gnre PAS d'vnement. Donc par exemple pas de "wait until now=5 us" (attente infinie).
Fin de la prcision  ::D: 

   Quelques conseils  :8-):  :
pour la synthse, n'utilisez pas les "integer" mais plutt les "std_logic_vector". Un integer (surtout tel que vous l'avez crit, non contraint en "range" est toujours synthtis sur 32bits). Les types std_logic, std_logic_vector, numrs sont toujours OK. Les integers & drivs, les rels, les boolean, les string & char ne sont pas conseills voire non/mal supports par les outilsn'utilisez qu'un unique process avec une criture conventionnelle. N'oubliez pas que vous visez une cible matrielle et que votre CPLD / FPGA possde une architecture physique prdtermine. Chaque bascule doit avoir un reset asynchrone (partie "if rst='1' then ...") et une entre synchrone (partie "elsif rising_edge(clk) then ..."). Ces deux parties sont les deux seules  ::mrgreen:: 


```

```



Au niveau scolaire, beaucoup d'enseignants "poussent" les tudiants  crire un process par signal  ::aie:: . Ils feraient mieux de vous pousser comme suit : "un signal par boucle et une boucle pour chaque signal"  ::ccool:: . Car en faisant cela, ils laissent sous-entendre que la liste de sensibilit et/ou la structure du process est "bidouillable"  souhait... ::oops::  C'est une hrsie totale  ::cry::  !! La preuve, sans le faire exprs, votre 2me process a une dtection du front montant pour le moins exotique...  ::aie:: 

Aller, courage, le VHDL c'est comme le vlo. C'est trs dur au dbut, aprs a va beaucoup mieux...  ::ccool::

----------

