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
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.
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
schau dir mal folgendes paper an http://www.hp.com/rnd/pdfs/RGMIIv1_3.pdf bzgl. der ff ein wenig wissen nachholen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.