www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Triggersignal zwischen zwei Automaten


Autor: alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe zwei Zustandsautomaten, im ersten werden bestimmte Daten 
empfangen und im zweiten die Daten verarbeitet und weitergegeben. Es 
sieht ungefähr so aus:

fsm1: process(clk_i, rst_i)
begin
    if rst_i = '1' then
    ...
    elsif clk_i = '1' and clk_i'event then
        trigger_sig <= '0';
        case fsm1_state is
            when fsm1_rx_data0 => ...
            when fsm1_rx_data1 => ...
            when fsm1_rx_data2 => ...
            when fsm1_data_ok =>
                trigger_sig <= '1';
                ...
        end case;
    end if;
end process fsm1;

fsm2: process(clk_i, rst_i)
begin
    if rst_i = '1' then
    ...
    elsif clk_i = '1' and clk_i'event then
        case fsm2_state is
            when fsm2_wait_trigg =>
                if trigger_sig = '1' then
                    fsm2_state <= fsm2_start_compute;
                end if;
            when fsm2_start_compute => ...
        end case;
    end if;
end process fsm2;

Meine Frage bezieht sich auf das Signal trigger_sig, mit dem fsm2 
sozusagen getriggert wird. In fsm1 wird dieses Signal für nur eine 
Taktperiode auf 1 gesetzt. In fsm2 wird dieses Signal abgefragt und wenn 
1, die Daten werden verarbeitet. - Es scheint zu funktionieren, nur bin 
ich unsicher, ob das wirklich gut ist, dass das Signal trigger_sig für 
nur eine Taktperiode aktiv ist. Wie findet ihr das? Ist es möglich, dass 
sich Probleme ergeben mit clock skew oder dass fsm1 ein wenig früher 
positive Flanke bekommt als fsm2, so dass trigger_sig etwas früher 
zurückgesetzt und fsm2 nichts davon mitkriegt? Falls es nicht gut ist, 
welche Möglichkeiten gibt es sonst, um zwei FSMs miteinander zu 
synchronisieren?

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das nicht möglich wäre, würde ja kein einziger Zähler 
funktionieren...

Sicher gibt es hier Laufzeiten, aber diese ergeben ja dann die maximale
Taktfrequenz, die Dir der Synthesizer ausspuckt.

Autor: Schlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
solange beide FSM mit dem gleichen Takt "versorgt" werden, ist das ein 
ganz normales synchrones Desing und eine gängige Methode sowas zu 
implementieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.