mikrocontroller.net

Forum: FPGA, VHDL & Co. Xilinx ODDR für interne Logic verwenden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Felix (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Markus F. (mfro)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Felix (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Felix (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Danke Christian,
du hast mir schon mal gut geholfen.

Gruß

Felix

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.