Forum: FPGA, VHDL & Co. Muss man die Zustände in FSM synchronisieren?


von Magnetron (Gast)


Lesenswert?

Abend
Nehmen wir an, ich habe zwei Clockdomains:
z.B.
1
process(clk1)
2
if rising_edge(clk1)then
3
   case FSM is
4
    when ST1=>
5
      a<=b;
6
      if(c=1)then
7
      FSM<=ST2
8
      end if;
9
    when ST2=>
10
      a<=d;
11
      if(c=2)then
12
       FSM<=ST3
13
      end if;
14
      ......usw
15
end if;
16
end process;
und
1
process(clk1)
2
if rising_edge(clk2)then
3
   case FSM is
4
    when ST1=>
5
      e<=g;
6
         .......
7
    when ST2=>
8
      e<=f;
9
         .......
10
      ......usw
11
end if;
12
end process;
Ich weiß, dass man die Steuersignale zwischen  den clockdomains durch 
zwei FF synchronisieren muss, aber wie sieht es mit FSM  aus?
Wie synchronisiere ich denn die Zustände?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Magnetron schrieb:
> Wie synchronisiere ich denn die Zustände?
Du bräuchtest hier ein Handshake-Verfahren zur Übergabe des aktuellen 
Zustands, weil eine FSM idR aus mehreren FF besteht und somit einen 
parallelen Bus darstellt.
Und parallele Busse werden über ein zusätzliches Steuersignal (z.B. als 
"data_valid") an eine andere Domäne übergeben.
Einfach nur "über 2 Flipflops eintakten" wird hier zwingend schiefgehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.