Hallo, ich habe folgendes Problem. ich habe einen IP Core der mir einen differentiellen Ausgans-Clock für eine Datenleitung liefert. Ich habe mir mal das example design angeschaut und sehe das dafür ein ODDR verwendet wurde. Im Anhang ist ein Ausschnitt der Example Design Simulation mit dazugehöriger Schematic. Ich brauche diesen Clock der aus dem ODDR kommt für meine interne logic. Das problem ist nur, dass das nicht geht. Ich muss anscheinend einen ODDR Ausgang an einen Ausgangsbuffer anschließen. Weiss jemand wie ich das intern lösen kann? Gibt es da einen eleganten Trick? Danke vielmals für die Hilfe Felix
Felix schrieb: > Weiss jemand wie ich das intern lösen kann? Gibt es da einen eleganten > Trick? Verstehe ich nicht. Du scheinst mir nach einem Multiplexer zu suchen?
Meines Wissens ist das nicht vorgesehen. Die ODDR Ausgänge gehen direkt nach außen. (Zum Glück sonst könnte man kein Clock forwarding so machen). Kannst du das Clock Forwarding im Core nicht deaktivieren?
Felix schrieb: > Ich brauche diesen Clock der aus dem ODDR kommt für meine interne logic. Ganz sicher nicht. Die Taktleitung ist im VHDL immer unipolar. Dass sie in vielen schnellen FPGAs heute bipolar ist, hat dich nicht zu interessieren. Die FFs, die intern getaktet werden, haben nur einen logischen Eingang.
Felix schrieb: > Weiss jemand wie ich das intern lösen kann? Gibt es da einen eleganten > Trick? Mal abgesehen internen Komponenten, die dein Problem bestimmt besser lössen können sollten, kannst du den zugehörigen Port einfach als IO-Port (statt nur Output) definieren und das Signal am zugehörigen Eingang abgreifen (das Signal läuft dann über den OutBuffer direkt zum InBuffer, zwischendrin greift das Pad drauf zu). Je nach Familie kann das Signal dann direkt ins Clock-Netz eingespeisst werden, idR kann dazu jeder Pin verwendet werden. Es sollter aber für die Signalqualität ein dedizierter Clock-Pin sein (entweder Global oder Regional, je nach Familie mit Lokal sogar 3 Typen). Die Schwierigkeit sehe ich aber in der Definition der Constraints, abgesehen erhöht sich auch das Jittern.
Danke für die Antworten. Ich habe euch mal angehängt wie der IP aussieht. Ich brauche das GMII interface und in der doku steht das der dazugehörige clock für TX, der SGMII_clk_r und SGMII_clk_f sind. https://www.xilinx.com/support/documentation/ip_documentation/gig_ethernet_pcs_pma/v16_0/pg047-gig-eth-pcs-pma.pdf Seite 35 Und im Example Design wird dafür ein ODDR verwendet. Nur geht dort das GMII Interface nach außen... Ich sehe keine Möglichkeit Clock forwarding im Core einzustellen. Danke sehr
Im Bild sieht das so aus als wäre das ODDR Register außerhalb vom Core. Da musst du doch nix weiter tun, der Takt ist dann an CLK verfügbar. Im Standardfall liegen an sgmii_clk_r und sgmii_clk_f statische Signale an, einmal L einmal H. Siehe auch Fig. 3-49 im User Guide des Core. Also kannst du den takt vorher abgreifen. Bei niedrigeren Datenraten scheint das über diese Signale den 12.5MHz oder 1.25MHz Takt zu generieren. Du könntest also eins der Signale als Clock Enable für deine Logik nehmen.
:
Bearbeitet durch User
Hi Christian. Danke für deine Hilfe. Der IP Core bietet mir ja eigentlich nur sgmii_clk_r und sgmii_clk_f als clocks an. Heisst das ich kann sgmii_clk_r als clock für die gmii Daten benutzen? Ich möchte dieses Interface an einen anderen IP anschließen. Dieser benötigt für GMII RX einen clock. Ich hab jetzt mal ein Bild vom anderen IP angehängt und dazu noch die schematic wie ich es jetzt beschaltet habe. Ist das so richtig? Denn es scheint noch nicht zu funktionieren... Danke sehr
Felix schrieb: > Der IP Core bietet mir ja eigentlich nur sgmii_clk_r und sgmii_clk_f als > clocks an. Heisst das ich kann sgmii_clk_r als clock für die gmii Daten > benutzen? Nee, das klappt nicht. Die beiden Signale sind nur dafür da um festzulegen, was das ODDR bei der fallenden (_f) und bei der steigenden Flanke (-r) des Taktes machen soll. Im einfachsten Fall kannst du den 125MHZ(?) Takt, der eigentlich an den C-Eingang des ODDR geht, direkt auf den Takt-Eingang deines anderen IP legen. ABER: Dann geht nur 125MHz als Takt. Die 12,5MHz oder 1.25MHz die das irgendwo im UG stehen, klappen damit nicht. Wenn das dynamisch umgeschaltet wird, wird das so erst mal nix, dann müsstest du höchstens die Funktion des ODDR mit internen Sachen nachbilden (2 Flipflops und ein Multiplexer) und das enstehende Signal dann wieder mit einem BUFG zu einem Takt machen. Aber das wird nicht schön, was Jitter usw. angeht.
Ok Danke Christian, du hast mir schon mal gut geholfen. Gruß Felix
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.