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


von Uli W. (uliw2008)


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?

von Jan M. (mueschel)


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.

von Uli W. (uliw2008)


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?

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


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.

von Klaus F. (kfalser)


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.

von Gast (Gast)


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?

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


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.

von Klaus F. (kfalser)


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.

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


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  :-(

von Gast (Gast)


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.

von Uli W. (uliw2008)


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.

von Jan M. (mueschel)


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.

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.