www.mikrocontroller.net

Forum: FPGA, VHDL & Co. asynchrone Kombinatorik am Ausgang


Autor: Uli W. (uliw2008)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es eine Richtlinie, bis wieviel Logik man vor einem Ausgang noch 
dulden kann, ohne ihn zu registrieren?

Ich muss eine Coprozessorfunktion realisieren und habe inzwsichen 
zuviele Stufen, dass ich nicht mehr genug pipelinen kann, daher muss ich 
aus einigen Flipflops per multiplexer direkt auf die Ausgänge, die auf 
den Bus gehen.

In einer ersten Messung sehe ich auf den Leitungen einige spikes, die 
wieder EMV-problematisch werden können. Wie kriege ich das in den Griff?

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist ein Ausgang für dich? Ausgang aus dem FPGA, Ausgang aus einer 
Entity...

Generell müssen an zeitkritischen (also keine LED o.ä.) Ausgängen des 
FPGA Flipflops liegen. Die Zeit von interner Logik bis zum pad kann ohne 
Flipflop extrem groß werden und von Anschluss zu Anschluss und 
Syntheselauf zu Syntheselauf stark variieren.

Bei internen Ports einer Entity kann im Prinzip beliebig viel 
unregistrierte Logik liegen - Man muss nur damit rechnen, dass das 
Design dadurch unter Umständen zu langsam werden kann. Darüber muss man 
sich aber in der Regel keine Gedanken machen, solange die Synthese keine 
timing-Probleme anzeigt.

Autor: Uli W. (uliw2008)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das prinzip ist mir schon klar, aber ich habe nur 3 clocks zeit, bis 
der Prozessor, den Wert abholen will und ich kann nicht 3 FFs einsetzen. 
Die Rechenpipeline ist nicht weiter balancierbar und recht symmetrisch, 
kann also nicht schneller werden.

Ich hole mir je nach pipeline Zustand ein Ergebis aus FFs und lege es 
direkt auf die Ausgänge. Die Frage ist jetzt, wie schwerwiegend noch der 
Multiplexer wiegt. Es ist ein 4 auf 1 MUX mit 32 Bit - keine Ahnung, wie 
tief der ist.

Wie kriege ich die Synthese dazu, die relevanten FFs möglichst nahe an 
den Ausgang zu bekommen?

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

Bewertung
0 lesenswert
nicht lesenswert
> Wie kriege ich die Synthese dazu,
> die relevanten FFs möglichst nahe an den Ausgang zu bekommen?
Das ist die falsche Frage  :-/
(Die Synthese legt noch gar nichts nirgendwo im FPGA ab)

Was du willst, ist doch eher:
Wie kriege ich die Tools dazu, mein Timing einzuhalten?

Und die Antwort darauf ist:
Mit Timing-Constraints.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst die Ausgänge genauso mit einem Constraint belegen wie die 
internen Pfade, suche nach OFFSET OUT (Xilinx) constraints.
Damit kann dir das Tool die Schaltung genauso erzeugen, dass die 
Durchlaufzeiten am Pin passen (falls möglich).
Bei kombinatorischen Signalen ist es natürlich deine Aufgabe dafür zu 
sorgen, dass die externe Schaltung mit den eventuellen auftretenden 
Spikes zurecht kommt.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>wie schwerwiegend noch der Multiplexer wiegt.  Es ist ein
>4 auf 1 MUX mit 32 Bit - keine Ahnung, wie tief der ist.

1 LUT tief, oder? Sind doch - je Datenbit - nur 2 Steuerbits und das 
Signal, wenn ich mich nicht täusche.

>Bei kombinatorischen Signalen
Gibt es da überhaupt spikes, bei so kurzen Schaltungen am Ausgang?

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

Bewertung
0 lesenswert
nicht lesenswert
>> 4 auf 1 MUX mit 32 Bit - keine Ahnung, wie tief der ist.
> 1 LUT tief, oder?
Ein 4:1 Mux hat 6 Eingänge: 4xDaten und 2xSelect.
Eine LUT hat 4 Eingänge und 1 Ausgang, deshalb müssen es mindestens 2 
LUTS sein (bis Spartan3 + Virtex4).
Ab Virtex5 wirds dann besser: eine LUT hat 6 Eingänge.

> Gibt es da überhaupt spikes, bei so kurzen Schaltungen am Ausgang?
Natürlich, die Frage ist nur, ob sie sich auswirken bzw. überhaupt 
messbar sind.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meiner Meinung nach soll man nicht mit LUT Tiefen rechnen, bzw. sich 
darauf verlassen. Morgen geht jemand her, erweitert den Multiplexer um 1 
Signal, und schon passt's nicht mehr, weil sich niemand darauf erinnert 
was man damals überlegt hat.
Außerdem soll man den Tools schon die Freiheit lassen, es nach ihrer 
Weise optimal zu implementieren.
Der einzig richtige Weg sind timing constraints, und KEINE 
kombinatorischen Signale wenn man am Ausgang sicher keine Glitches haben 
will.

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

Bewertung
0 lesenswert
nicht lesenswert
> Meiner Meinung nach soll man nicht mit LUT Tiefen rechnen...
Richtig, denn wer sich die statische Timinganalyse mal anschaut,
der sieht, dass die Verdrahtung ziemlich Laufzeit benötigt  :-(

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, in diese "Laufzeiten" sind aber allemöglichen Toleranzen unter 
allen Bedingungen angegeben. Praktisch werden aber Signale eines selben 
Beuteils auf derselben Temperatur nicht so stark divergieren.

Autor: Uli W. (uliw2008)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kriege die Kombinatorik nicht schneller. Ich treibe über den Bus (B) 
3 Stufen Kombinatorik (K) und kann kein FF rausnehmen, weil es sonst mit 
dem Datendurchsatz nicht hinhaut:

B - K1 - FF - KK2 - FF - KK3 - B

Ich werde meinem Chef wohl sagen müssen, dass wir mit der Frequenz 
runter müssen.

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um welchen FPGA und welchen Takt geht es denn? Dann kann man grob 
abschätzen, ob du wirklich schon an der Leistungsgrenze des Chips bist, 
oder wo man noch etwas verbessern kann.
Für genauere Tipps wirst du aber den Quellcode zeigen müssen.

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.