asynchrone Kombinatorik am Ausgang

OP #1079267
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?
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.
OP
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?
Moderator (Firma: Titel) Persönliche Seite
> 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.
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.
Gast
>>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?
Moderator (Firma: Titel) Persönliche Seite
>> 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.
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.
Gast
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.
OP
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.