www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Verzögerung durch D Flip Flop


Autor: TM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Mein Problem ist folgendes ich bekomme in den FPGA einen Datenstrom. 
Sobalt daten anliegen (wird über Flag signalisiert) läuft eine 
Statemachine an welche eine Kennung in einen Buffer füllt und 
anschließen den Datenstrom hinterher.

Jetzt hatte ich das Problem das ich um die 2 Byte kennung 
davorzuschreiben 2 Takte brauche (Es ist ein 8 Bit breiter Fifo).

Also hab ich mir gedacht das ich den Datenstrom einfach in einem zweiten 
process durch zwei Flip Flops enstprechend verzögere und nach der 
Kennung die Verzögerten Daten sende.

In der Simulation funktioniert dies. Ich kann das Design auch 
synthetisieren und auf mein FPGA Board spielen dort funktioniert diese 
Verzögerung aber nicht mehr und ich kriege das gleiche Ergebniss als 
hätte ich diese gar nicht eingebaut.

Ich benutze als Entwicklungsumgebung Quartus 2 und spiele das ganze auf 
einen Cyclone 3

Hier der für das Verzögern verantwortliche Code:
 process (CLK,RES_N)
  begin
    if(rising_edge(CLK)) then
      if RES_N='0' then
        data_reg1       <= "0000000000000000";
        data_reg2       <= "0000000000000000";
        data_valid_reg1 <= '1';
        data_valid_reg2 <= '1';
      else
        data_reg1          <= INDATA(15 downto 0);
        data_reg2          <= data_reg1;
        data_valid_reg1    <= DATA_VALID;
        data_valid_reg2    <= data_valid_reg1;
      end if;
    end if;
  end process;

Anschließend wird in einem zweiten Process das data_reg2 als Datenstrom 
für die State Machine genutzt.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>     data_reg1          <= INDATA(15 downto 0);
Das ist keine Art, asynchrone externe Busse einzusynchronisieren... 
:-o
Was passiert denn, wenn genau bei der steigenden Taktfklanke der Bus 
seine Pegel von x"0000" nach x"ffff" wechselt?
Logisch, ein paar der data_reg1 FFs kriegen noch eine 0 ab, der Rest 
schon die neue 1. In der funktionalen Simulation wirst du diesen Fehler 
nie sehen...

> Mein Problem ist folgendes ich bekomme in den FPGA einen Datenstrom.
> Sobalt daten anliegen (wird über Flag signalisiert) läuft eine
Was ist das für ein Flag? Ist das irgendwie synchron zum FPGA-Takt? Nur 
mit so einem Valid-Signal könntest du sinnvoll Daten an das FPGA 
übergeben...

Autor: TM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die änderung der Daten und das Valid Flag ist snychron zum FPGA Takt.

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zusammenfass: Synchrones Design, stabile Daten, Simulation tut -> das 
FPGA in der realen Welt tut -> Du machst einen Beobachtungsfehler. Wie 
wärs mit SignalTap?

Autor: TM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag,

Hab nochmal genau drüber nachgedacht und hab gemerkt das ich zwar mein 
verzögertes Data_valid signal auswerte aber nicht das originalsignal 
deshalb fing der FPGA immer zu spät an ins FIFO zu schreiben.

In der Simulation hat das ganze nur funktioniert weil ein Reset Signal 
vorraus kam welches die Data_valid_reg2 auf anfangswert 1 gesetzt hat.

Naja nen ziehmlich blöder Fehler aber jetzt funktionierts.

Gruß Tobias

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.