mikrocontroller.net

Forum: FPGA, VHDL & Co. unterschiedlicher Takt NIOS <-AVALON-> Logik


Autor: AL_JA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich steuere über den Avalon-Bus vom NIOS aus meine VHDL-Logik an und 
lese darüber auch wieder Werte über den Avalon-Bus in den NIOS zurück 
(Studienarbeit). Die selbstgeschriebene Logik läuft mit einem Takt von 
25MHz, der NIOS hingegen mit 100MHz, die Taktsignale werden innerhalb 
einer PLL generiert (fester Bezug zueinander).

Die Werte an meine Logik zu senden stellt kein Problem dar, da über 
einen Dual-Clock-Speicher verbunden. Meine Frage betrifft allerdings, ob 
ich problemlos einen 32-Bit-Wert wieder zurücklesen kann, d.h. prüft 
Quartus automatisch, ob es zu einer Timing-Verletzung kommen würde oder 
sollte ich durch Oversampling noch vor der Übergabe an den Bus mich 
selbst darum kümmern?

Eine Warnmeldung erhalte ich nicht und leider habe ich bei den 
Altera-Dokumenten keine ähnliche Problemstellung gefunden.

Würde mich freuen, wenn mir jemand mit mehr Erfahrung eine Tipp geben 
könnte.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Q prüft das, aber genau das ist das Problem - er wird meckern. Die PLL 
behebt das Problem 25:100 nicht, sondern erzeugt es, da die beiden Takte 
nicht in Phase sind. Du solltest einen asynchronen-FIFO zum 
Streaming-Interface nutzen - in beide Richtungen.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fügt die AVALON-Switch-Matrix nicht automatisch eine Synchronisation 
zwischen verschieden getakteten Busteilnehmern ein?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Frage, nicht, dass ich wüsste.

Autor: AL_JA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mich nun für die Variante der Überabtastung entschieden, das 
Signal wird dazu mit dem 4x schnelleren Takt in zwei hintereinander 
geschaltene D-FFs eingelesen. Liegt an den Ausgängen beider FFs das 
gleiche Ergebnis, so wird es als gültig gewertet (Enable an einem 3 FF, 
Dateneingang mit Datenausgang des zweiten FFs).

Der SOPC-Builder in Quartus bietet allerdings auch eine FIFO-basierte 
Lösung als Clock-Crossing-Bridge an.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der SOPC-Builder in Quartus bietet allerdings auch eine FIFO-basierte
> Lösung als Clock-Crossing-Bridge an.
Dann würde ich diese nehmen. Es gibt ungefähr 100 Möglichkeiten beim 
Clock-Domain-Crossing was falsch zu machen.

Und eine es richtig zu machen: ein asychrones FIFO mit Gray-Countern für 
die Schreib- und Leseposition.

Duke

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht auch ohne Gray-Counter, allerdings sind die in den 
standardmässigen FIFOs vom Megawizzard so fertig drin, meine ich.

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.