# Autres langages > Autres langages > VHDL >  Changement d'tats avec case - State machine VHDL

## Azerty32

Bonjour,

J'ai une question assez simple.
Pour faire une machine d'tat, j'ai souvent vu des exemples en 2 morceaux avec une state machine qui prpare le changement  l'aide d'un signal "next_state".

Je me rend compte que je n'ai pas cod de cette manire... J'ai tout fait en 1 morceau. Je m'explique :



```

```

Ma question :

Si je n'avais pas de condition pour le changement d'tats (en gros je change  chaque coup de clock, sans le if) : est-ce que  chaque coup de clock le case ne serait vrifi qu'une seule fois ??
C'est  dire :

1/ state = St0
2/ Coup de clock : case passe dans "when St0" donc state devient St1. Estce que en sortant de mon "when St0" je ne vais pas passer tout de suite dans "when St1" (avant le prochain coup de clock) ?

-> A l'intrieur du process j'ai un begin donc les changements de valeurs des signaux seront concurrents ? state ne changera qu'une fois par coup de clock ?


Merci d'avance pour votre aide !

----------


## titiri

Bonjour,

  Personnellement je vous dconseille la mthode "next_state" et "state" car elle est gnralement peu lisible et souvent issue d'outil genre "Visual HDL" qui transforme des diagrammes en VHDL. D'o un code VHDL mdiocre.
  Cette mthode n'utilisant qu'un unique signal "state" est mieux. Donc enjoy  ::lol:: 
   Il n'y pas de risque car :
un signal n'est affect qu' la fin d'un process ayant une liste de sensibilit ( c'est d'ailleurs pour cela que l'on dit souvent "seule la dernire affectation d'un signal compte"). La nouvelle valeur affecte  "state" ne pourra donc tre observe qu'au prochain front montant de l'horlogemme si vous remplacez le signal par une variable (auquel cas l'affectation a lieu immdiatement), en fait le test est effectu au niveau du "case xxx is". Donc a fonctionnerait aussi

Cdlt

----------


## Azerty32

Ah ok parfait alors !
Merci beaucoup pour ces explications !!  ::):

----------

