Forum: FPGA, VHDL & Co. externes Rechtecksignal über PLL-IP-Core


von PLL (Gast)


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

von Duke Scarring (Gast)


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

von Kommentator (Gast)


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.

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
Noch kein Account? Hier anmelden.