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 prépare le changement à l'aide d'un signal "next_state".
Je me rend compte que je n'ai pas codé de cette manière... J'ai tout fait en 1 morceau. Je m'explique :
Ma question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 state_transistion : process (Clk, Reset) begin if Reset= '1' then state<=St0; elsif (Clk'event and Clk='1') then case state is when St0 => if signal_a='1' then state <= St1; end if; when St1 => if signal_a='0' then state <= St2; end if; when St2 => if signal_b='0' then state <= St0; end if; end case; end if; end process ;
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 vérifié 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'intérieur 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 !
Partager