Forum: FPGA, VHDL & Co. Frequenzverdopplung beim Virtex 5?


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.
von Yafes61 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Habe einen Virtex 5 bei dem ich mehrere Kameras anschließen will. Die 
meisten laufen mit CameraLink. Nun haben die Kameras meistens 
unterschiedliche Frequenzen auf ihre CLK Leitungen.
Es gibt welche mit 50MHz und 40MHz welche ich über eine PLL einspeisen 
kann um die 7-fache phasensynchron zu erzeugen, sodass ich dann über 
ISERDES die Daten "capturen" kann (hatte schon mal in einem Projekt 
CameraLink erfolgreich implementiert).
Das Problem ist bei zwei Kameras, welche nur 12,5MHz oder 16MHz 
Clock-Speed haben. Die PLL und DCM arbeiten beim Virtex 5 ab 19MHz, 
heißt ich kann die Clocks nicht einspeisen im Core Generator, da sie zu 
niedrig sind.

Darum hatte ich die Idee erst eine Frequenzverdopplung vorzunehmen, dann 
sie einzuspeisen in eine PLL um die 7-fache Frequenz zu erzeugen, damit 
die Datenleitungen "gesamplet" werden können.

Ein Lösungsansatz wäre beispielsweise hier:
http://www.pldworld.com/_xilinx/html/tip/sixeasypieces.htm
Unterpunkt 4.
Hier wird soweit ich es richtig verstehe die doppelte Frequenz per 
Kombinatorik erstellt.

Evtl. habt ihr ja Alternativen für mich. Bin gespannt auf eure 
Antworten.

Gruß
Yafes

von Duke Scarring (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Yafes61 schrieb:
> Evtl. habt ihr ja Alternativen für mich.
Wenn man basteln will, nimmt man die Lösung von Peter Alfke.
Oder man versucht den Coregen auszutricksen. Vermutlich läuft die PLL 
auch mit 18,5 MHz oder einem geringeren Engangstakt.

Wenn es professionell verkauft werden soll, würde ich in diesem Fall 
eine externe PLL verwenden.

Duke

P.S.: Hallo Xilinx! Ich ärgere mich auch immer über Eure PLLs. Alle 
namhaften Meßgeräte lassen sich mit 10 MHz Referenztakt synchronisieren. 
Aber für Xilinx-FPGAs muß ich mir immer eine Sonderlocke einfallen 
lassen...

von Yafes61 (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin aber auf die Synchronität dieser langsamen Clock bezogen auf die 
7-fache angewiesen. Daher suche ich nach einer sauberen Lösung.

Im Anhang ist mal der Zusammenhang zwischen Daten und der anliegenden 
Clock.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ich habe schon lange keine Virtex 5 mehr in der Hand gehabt, daher bin 
ich bei den Teilen etwas eingerostet. Anstatt einer PLL kannst du auch 
eine DCM nehmen, von denen sollte dein V5 jede Menge haben.

Im Low Frequency und DFS output only Mode darf deine Input Clock bis 1 
MHz runter gehen. Ich empfehle dazu mal in DS202 Kapitel "DCM Switching 
Characteristics" und UG190 Kapitel "Clock Management Technology" 
reinzuschauen.

Ich hoffe damit kommst du schonmal weiter.

von Yafes61 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das habe ich versucht beim Core Generator mit dem Virtex 5, aber egal 
was ich im Wizard eingestellt habe hat der Wizard für die DCM min. 19MHz 
verlangt.

Mach ich da etwas falsch?!?!?

von Sigi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Zu allererst, du gibst "dein" Clocksignal ja nicht direkt
an einem Pin aus, sonder verwendest dazu ein DDRIO (d.h.
DDR-Register). Damit bist du nicht mehr gezwungen, den
Takt auf die "niedrige" gewünschte Frequenz per PLL etc.
runterzutakten, sondern verwendest ein Vielfaches des
Taktes. Der Rest wird per ClockEnable etc. erledigt.

Dein Timingdiagramm entspricht in etwa dem einer LVDS-TFT/etc.
Ansteuerung. Bei niedriger Taktrate am Bestem per PLL einen
7-fach Höheren Takt erzeugen und die Daten z.B. per
Schieberegister einlesen. Per Schieberegister lässt sich
auch das Taktsignal ausgeben (funktioniert auch ohne DDRIOs).

von Yafes61 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jetzt habe ich gesehen wie ich den Wizard bediene.

Ich muss den FB auf None stellen und das CLK0 Häkchen entfernen.

Dann kann ich den CLKFX verwenden.

Was bedeutet das aber für die Phase. Kann ich immer noch von einer 
Phasensynchronität zwischen CLKIN und CLKFX reden?

von Sigi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Yafes61 schrieb:
> Was bedeutet das aber für die Phase.

Garnichts, du erzeugst ja einen Takt für
ein abgeschlossenes System (deine Camera),
das ja nicht auf andere Systeme einsynchr.
werden muss (=> kein FB notwendig!).

von Christoph (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Sigi: Der TO baut keine Kamera, sondern will Kameras mit CameraLink 
Anschluss an seinen FPGA anhängen:

Yafes61 schrieb:
> Habe einen Virtex 5 bei dem ich mehrere Kameras anschließen will. Die
> meisten laufen mit CameraLink.

Also keine DDR Ausgänge und kein abgeschlossenes System, sondern externe 
Daten mit dazu synchronem Clock in das eigene System einlesen.

von Sigi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph schrieb:
> @Sigi: Der TO baut keine Kamera, sondern will Kameras mit CameraLink
> Anschluss an seinen FPGA anhängen:

Wo habe ich denn so etwas angedeutet? Du solltest dir mal
das Eingangpost genauer durchlesen (und auch etwas von der
Aufgabenstellung und dem verwendeten FPGA vestehen).
Er hat mehrere Kameras (mit evtl. unterchiedlichen Takt-
Frequenzen), die jeweils mit eigener Logik angesteuert
werden (abgeschlossene Systeme oder Komponenten, die dann
z.B. per BRAM die Daten entkoppelt weiterreichen).

von Weltbester FPGA-Pongo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christoph schrieb:
> Also keine DDR Ausgänge und kein abgeschlossenes System, sondern externe
> Daten mit dazu synchronem Clock in das eigene System einlesen.

Ich würde mal sagen, das war so gemeint, dass die Takte nicht direkt zu 
beobachten sein werden, ohne eine der DDR-Zellen und bezog sich auf das 
Phasenargument.

Zu dem Problem: Das ist keines :-) Man nimmt die PLL ohne 
Phasenkompensation und schaltet das gfs hintendran, wenn nötig. Für das 
Einlesen der Daten gibt es auch noch die IO-Delay. Das sollte aber 
eigentlich klar sein.

von Jürgen S. (engineer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Yafes61 schrieb:
> Das Problem ist bei zwei Kameras, welche nur 12,5MHz oder 16MHz
> Clock-Speed haben.

SERDES wäre hier Kanonen auf Spatzen!

Beim Cameralink kommen 7-Bits und das wären gerade mal 112MHz. Das 
kriegst du direkt eingelesen und gesampelt. Selbst mit einem langsamen 
FPGA wären es nur 56 MHz über eine DDR-Zelle. Damit umgeht man auch das 
bit slip Thema wegen der 4:3 der Master Slave Zelle beim SERDES.

Das Einstimmen der PLL auf die eingehende Frequenz kriegt man einfach 
über die PLL-feedback-Schleife hin.

Ich würde allerdings auch das händisch machen, weil ich dann einen 
Ausfall des Taktes erkennen kann und mir nicht die PLL ausfällt.

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]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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