externes Rechtecksignal über PLL-IP-Core

Gast #6662385
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe ein Analogsystem, wo ich ein Rechtecksignal mit einer Frequenz 
zwischen 3-5 MHz (je nach Anwendungsfall) erhalte. Dieses Signal wird in 
einem Max10 FPGA analysiert und verarbeitet. Systemtakt sind 200MHz.

Nun habe ich eine selbst geschriebene "PLL" im FPGA, die mir das 
Rechtecksignal nach dem eintakten etwas in der Frequenz "glättet", bevor 
es analysiert wird. Leider kommt es hierbei immer wieder zu 
Timing-Problemen im PLL-Modul.
Jetzt wäre die Frage, ob man das eingetaktete Signal nicht durch einen 
professionellen IP-Core (ALTPLL von Altera/Intel) schickt, um die 
Glättung der Frequenz zu realisieren. Macht man sowas üblicherweise oder 
verwendet man die PLL-Cores nur für "saubere" Quarz-Signale? Meine 
Hoffnung wäre eben, dass die Funktion der IP-Cores sauberer und 
schneller ist, und ich somit keine Timing-Probleme mehr erhalte.
Ein erster Versuch scheitert allerdings schon daran, dass  wenn ich im 
MegaWizard beispielsweise 4MHz als inclk0 vorgebe, der Fehler "VCO or 
PFD frequency range exceeded" erscheint. Leider finde ich hierzu nicht 
das passende Datenblatt (im UG-M10CLKPL find ichs nicht), wo diese 
grenzen angegeben sind....

Beste Grüße,
Fabian
Gast #6662429
Lesenswert?
• ▲
▼
PLL schrieb:
> Macht man sowas üblicherweise oder
> verwendet man die PLL-Cores nur für "saubere" Quarz-Signale?
Kann man schon machen. Mit 4 MHz dürftest Du unter dem zulässigen 
Minimum liegen.

Wie machst Du die Glättung und wie generierst Du Dein Ausgangssignal?

> Leider kommt es hierbei immer wieder zu
> Timing-Problemen im PLL-Modul.
Wo und wie genau äußert sich das Problem?

Duke
Gast #6663718
Lesenswert?
• ▲
▼
Dies hier

PLL schrieb:
> Nun habe ich eine selbst geschriebene "PLL" im FPGA, die mir das etwas glättet

widerspricht dem hier:

PLL schrieb:
> durch einen
> professionellen IP-Core (ALTPLL von Altera/Intel) schickt, um die
> Glättung der Frequenz zu realisieren.

denn:

Du möchtest zwischen 3 und 5 MHz verwenden, daher kannst du keine PLL 
nehmen. Diese unterstellen eine weitgehend konstante Frequenz und locken 
sich nur auf die Phase. Daher heisst es ja PLL. Bei derartigen 
Schwankungen würde die Varianz mehrere Phasen ausmachen.

Was du brauchst, ist ein Frequenzsynthesizer, der ausgehend von einer 
runtergeteilten Frequenz, z.B. einem 10tel des Eingangs das 10fache 
macht.

Also:

Die letzten 10 Takte am Eingang messen
Periode träge (=gefiltert) aktualisieren
Ein 10tel der Periode ausrechnen
Impuls erzeugen
Aktualisierung mit jeder Eingangsflanke
daher 10 Schaltungszustände / -Teile nötig.
Impulse verodern
Gesamtimpuls auf PLL geben.
PLL -Setting permanent aktualisieren, damit sie "weiss" was reinkommt.

Eine normale PLL im FPGA kann das alleine nicht. Der machbare Jitter 
beträgt so rund 1/4 Taktperioden für hohe Frequenzen.

Antwort schreiben

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.

Formatierung
  • [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 einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.