Forum: FPGA, VHDL & Co. [RGMII/GMII] Timing/FlipFlop Frage


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich habe zur Zeit ein paar Verständnisprobleme bei einer logischen 
Schaltung aus einem Datenblatt. Hier geht es um eine Brücke zwischen 
RGMII und GMII - darum geht es allerdings gar nicht so genau.

Ich wollte diese Brücke mit VHDL beschreiben und habe dann in einem 
Datenblatt folgendes gesehen (siehe Anhang). Mir geht es nun erstmal nur 
um die obere logische Schaltung.

Primär geht es mir um die Verzögerung zwischen den Signalen RGMI_TXD(4 
Bit breit) und GMI_TXD (8 Bit breit). Hier sollen die selben Daten 
übertragen werden, und zwar über DDR. Soweit ist es mir klar.

Nur verstehe ich die Zusammensetzung der logischen Schaltung nicht so 
recht. Die verwendeten Flip-Flops geben den Eingangswert immer auf der 
steigenden Flanke direkt aus (natürlich nur idealisiert angenommen). Und 
hier liegt auch mein Problem.

Bei einer steigenden Clk (genauer: RGMII_TX_CLK) schaltet das obere 
Flip-Flop "den Eingang durch", welcher dann beim FF FDDRSE ebenfalls auf 
den Ausgang (RGMII_TXD[3:0]) durchgeschaltet wird.

Das setzen des 1. FF-Ausgangs ist also "zeitgleich" mit dem lesen des 2. 
FF-Eingangs. Das ist doch relativ kritisch, da hier im Grunde die 
Leitungslängen entscheiden, wann wo welches Signal anliegt.

Ich komme somit irgendwie nicht auf eine Verzögerungszeit von 2 Takten, 
wie man sie im Timing-Diagramm erkennen kann (erkennbar an den Pfeilen).

Ich hoffe es ist einigermaßen klar, worum es mir geht :/

Viele Grüße,
  Thomas

PS: Die Bilder stammen aus der PDF 
http://www.xilinx.com/itp/xilinx10/books/docs/spartan3a_hdl/spartan3a_hdl.pdf 
Seite 3

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Thomas schrieb:
> Die verwendeten Flip-Flops geben den Eingangswert immer auf der
> steigenden Flanke direkt aus (natürlich nur idealisiert angenommen). Und
> hier liegt auch mein Problem.

Ein kleiner Kreis vor dem Takteingang heißt fallende Flanke.
FD_1 reagiert auf fallende Flanke.

von Thomas (Gast)


Lesenswert?

Hey,

ja das war mir soweit auch klar. Nur sind die FFs, welche quasi in 
"Serie" geschaltet sind mein Problem, da diese "ideal" zeitgleich 
schalten.

Da fällt mir auch gleich das nächste Problem auf: Die Eingangsdaten 
GMII_TXD[7:0] ändern sich immer zur steigenden Flanke. Das obere FF 
übernimmt diese Daten allerdings auch bei der steigenden Flanke - ist 
das so richtig?

Intuitiv hätte ich gedacht, die Daten GMII_TXD[7:0] müssen bei fallender 
Flanke von einem FF zwischengespeichert und dann weiter verarbeitet 
werden.

Viele Grüße,
  Thomas

von eth (Gast)


Lesenswert?

schau dir mal folgendes paper an 
http://www.hp.com/rnd/pdfs/RGMIIv1_3.pdf
bzgl. der ff ein wenig wissen nachholen.

von Thomas (Gast)


Lesenswert?

Hey,

Danke für das Paper.

Allerdings ist mir das mit dem Timing Diagramm immer noch unklar.

Ich würde es nachvollziehen können, wenn das Flipflop generell den 
Eingangswert auf einer fallenden Flanke intern speichert und dann bei 
steigender Flanke an den Ausgang weiter gibt. Das würde auch hier die 2 
Takte Verzögerung erklären.

Aber die FlipFlops geben hier den Wert am Eingang bei einer steigenden 
Flanke direkt an den Ausgang weiter. Siehe 
http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_2/spartan6_scm.pdf 
Seite 192.

Wo liegt mein Denkfehler?

Viele Grüße,
  Thomas

von Dr. Schnaggels (Gast)


Lesenswert?

Dein Denkfehler liegt darin, dass Du die Clock-To-Output eines FFs und 
die Setup/Hold-Zeit des nachgeschalteten FFs nicht bedenkst. Du solltest 
Dich zu diesen Begriffen etwas informieren.

Wenn Du eine rein funktionale Simulation durchführt, dann hast Du geanu 
diese "idealen" Verhältnisse von denen Du sprichst. Das "reale" 
Verhalten ist jedoch wie beschrieben.

Dr. Schnaggels

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.