Forum: HF, Funk und Felder ADF4351 PLL lockt nicht


von Björn (Gast)


Angehängte Dateien:

Lesenswert?

Moin,

ich versuche verzweifelt die PLL vom Typ ADF4351 mit integriertem VCO 
zum Einrasten zu bewegen.
Ich habe ein kleines Testboard geroutet auf dem sich die PLL, ein 12MHz 
Oszillator als Referenz und ein ATMEGA644 befindet.
Da es mein erster Kontakt mit einer PLL ist bin ich mir bei manchen 
Dingen ziemlich unsicher.

Mit ADsimPLL habe ich mir das Loopfilter und die Registerwerte für einen 
ersten Test berechnen lassen (RFout = 80MHz, Integer-N-Mode).
Festgelegt habe ich die fref von 12MHz, den Bereich von 35MHz bis 2GHz 
sowie ein Channelspacing von 40kHz (fpfd).
Ergebnis:
- Integer N Mode
- 12MHz Ref
- fpfd = 40kHz
- VCO-Divider inside Loop
- Prescaler = 4/5
- Rdivder = 150
- Doubler = 0
- Divide by 2 = 1
- VCO Divider = 32
- INT-N = 500

Die Kommunikation via SPI läuft soweit. Ich kann z.B. den R-Counter auf 
den MUXOUT Pin legen und messe dort mit dem Oszilloskop meine 40kHz 
(12MHz/150/2). Wenn ich den N-Divider Output auf MUXOUT lege erhalte ich 
Spikes.
Die Chargepump scheint auch zu arbeiten, da ich entweder mit LD polarity 
positive -> 0V an VTUNE erhalte oder mit der Einstellung LD polarity 
negative -> ca. 3V. Irgendwas scheint der PFD also zu regeln und das 
voll.
Der VCO scheint auch zu abeiten, da das Ausgangsspektrum mehrere Peaks 
enthält.
Betriebsspannungen sind alle vorhanden und einen Lötfehler würde ich 
auch ausschließen.

Meine Vermutung ist, dass ich irgendwas bei den Registerwerten 
falschgemacht habe. Ich bin mir auch total unsicher mit diesem 
Prescaler. Im Datenblatt steht RFout = [INT + 
(FRAC/MOD)]*(fpfd/RFdivider). Bloß mit den Werten von ADsim würden dann 
nicht wirklich 80MHz rauskommen... Das allgemeine Modell einer INT-PLL 
ist mir bekannt, aber ich konnte weder im Blockschaltbild noch im 
Datenblatt herausfinden wie der Prescaler in das System miteinfließt. 
Wobei 40kHz*500*4 = 80MHz (die 4 vom 4/5 Prescaler).

Es wäre toll, wenn mal jemand über die Registereinstellungen schauen 
könnte. Nicht das dort irgendwas schief gelaufen ist.
Außerdem würde ich mich über eine Prescaler-Erklärung freuen ;-) Bzw. 
wie nun genau der INT-Div.-Wert von 500 zustande kommt unter den 
gegebenen Bedingungen.
Den Schaltplan, die Registereinstellungen, sowie den Testcode 
(optimierungsbedürftig) habe ich angehängt.

Über eure Hilfe würde ich mich freuen.

Gruß
Björn

von Lattice User (Gast)


Lesenswert?

Da wurde schon einiges durchgekaut:

Beitrag "ADF 4350 Frequenz-Synthesizer"

1. vergiss den Prescaler, der wird intern berücksichtigt.
2. Der VCO muss mindestens mit 2.2 GHz laufen.

von Björn (Gast)


Lesenswert?

Es scheint nun zu laufen :-)
Ich habe mir eben die Registerwerte mit der AD Eval-Board-Software 
berechnen lassen und im Gegensatz zu ADsimPLL errechnet diese für den 
N-Divider einen Wert von 2000 im divided mode bzw. 65000 für den 
fundamental mode.
Somit ergeben sich dann folgende Werte:

0x00580005 Register R5
0x00501024 Register R4
0x00400003 Register R3
0x19259fc2 Register R2
0x00008009 Register R1
0x03e80000 Register R0

Den oben genannten Beitrag kannte ich schon. Trotzdem Danke!

von Klaus M. (nid7)


Lesenswert?

Hallo Björn,

Ich habe ein AdF4351 aufgebaut und versuche ihn per externen atmega168 
µC über SPI zu
Parametrieren.
wenn das möglich wäre, dass du mir den code zukommen läßt ? Das würde
mir wirklich sehr helfen.

Danke

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.