mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DDS AD9851 Synchronisierung


Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich stehe vor folgendem Problem: Zwei AD9851 (ähnlich AD9850, aber mit 
PLL) müssen synchronisiert werden. Dabei soll die Phasenverschiebung 
zwischen beiden Schaltkreisen einstellbar sein.

Die Schaltung ist entsprechend "AN-587: Synchronizing Multiple 
AD9850/AD9851 DDS-Based Synthesizers" aufgebaut, jedoch mit dem 
Unterschied dass ich die Generatoren seriell anspreche.

Beide laufen am gleichen Quarzoszillator mit 30MHz. Die Inbetriebnahme 
der Genratoren funktioniert soweit auch, ich kann die gewünschte 
Frequenz einstellen. Dabei laufen die Frequenzen (sofern gleich 
eingestellt) bei beiden DDS nicht auseinander. Es ist also davon 
auszugehen dass beide ICs wirklich synchron sind. Ok, soweit bisher kein 
Problem.

PROBLEM:
Nach jedem Reset des Controllers ist die konstante Phasenverschiebung 
zwischen beiden DDS-Chips nahezu zufällig. (Beide sind auf Phase=0 
programmiert).

Meine Fragen:
- hat jemand sowas schonmal gemacht und kann aus eigener Erfahrung 
berichten wo evtl. Stolpersteine zu finden sind?
- Ist die Synchronisation einfacher zu machen, wenn ich die ICs parallel 
ansprech?

Gruß
Christian

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe schon mal 2 AD9850 DDS Syncronisiert. Reset allein genuegt 
nicht damit wird nur der Phasenakku zurueckgesetzt. Du must nach dem 
uebertragen der Daten den PIN FQ_UD bedienen damit die Daten uebernommen 
werden . Damit solltes du eigentlich den Phasenversatz hinbekommen und 
die beiden syncron laufen. Bei mir war  das damit kein Problem.

Gruss Helmi

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also wie ich das im Moment mach:
(wie im Datenblatt zur AD9851 gezeigt ist, sind D0..D2 fest verdrahtet 
auf GND bzw. VCC)

1. Impuls Reset
2. Impuls W_CLK (um festverdrahtetes Wort zu übernehmen --> serieller 
Modus..)
3. Impuls Frequency_Update

das wäre erstmal die Initialisierung

dann werden die 40Bit vom ersten DDS reingeschoben (jeweils mit W_CLK), 
danach die zweiten 40Bit von zweiten DDS. Danach dann Impuls 
Frequency_Update. Nach meinem Verständnis sollten die Chips nach dem 
Frequency_Update dann losrennen mit der eingestellten Frequenz und 
Phasenlage.

Ein paar Fragen an Dich:
- Hast du die Chips parallel oder seriell angesteuert?
- meine zweite Frage hat sich eigentlich schon geklärt - der AD9850 hat 
ja keine PLL. Wenn ich meine AD9851 ohne PLL betreib (dann eben nur mit 
1/6 der Frequenz), ändert sich aber leider auch nix am Verhalten.

Gruß
Christian

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte die beiden parallel angesteuert. Die PLL sollte eigentlich da 
auch nichts aus machen. Der Name sagt es schon das das mit Takt 
verriegelt ist. Das mit dem FQ_UD Pin wuerde ich beim AD9851 genauso 
sehen. Beim AD9850 hat es wunderbar geklappt. Das ganze bei 90 Grad 
Phasenversatzt gab immer einen schoenen runden Kreis auf dem Scope.

Frage hast du auch das D-Flipflop eingebaut in deiner Schaltung wie in 
Figure 3 beschrieben ?

http://www.analog.com/static/imported-files/applic...

Gruss Helmi

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das FF ist drin 74HC74.
Bei der PLL wäre das einzige Problem, dass aus einem externen Takt 6 
interne werden. Da könnte es zu einem Versatz kommen ganz einfach weil 
die beiden PLLs wahrscheinlich aufgrund von Toleranzen unterschiedlich 
schnell einrasten. Allerdings funktionierts bei mir ja auch nicht wenn 
ich die PLL nicht verwende.

Ich glaub ich werds erstmal auf parallel Umlöten.

Ich danke Dir für Deine Hilfe :-)

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum FF nimm einen 74AC74. HC74 koennte zu langsam sein.

Zur PLL:

Im Datenblatt steht man soll zu erst ein Tunningword von 0 einstellen.
Das sperrt den Phaseaccu.  Dann 100uS abwarten bis die PLL 
eingeschwungen ist. Dann erst die eigentliche Frequenz und Phase 
ausgeben.

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich am seriellen Modus nicht ganz verstehe:

1. Reset (ok!)
2. W0 = xxxxx011 anlegen (um in seriellen Modus zu schalten; ist fest 
verdrahtet, ok!)
3. W_CLK um dieses Wort in Chip zu übernehmen (ok!)

4. FQ_UD (um den Wechsel in den seriellen Modus auszuführen.. aber 
startet da nicht schon der Phasen-Akku, den ich nur mittels Reset (--> 
wieder parallel!) zurücksetzen kann?)

5. warten bis PLL eingeschwungen (ok!)
6. das eigentliche Frequenzwort programmieren (mit W_CLK natürlich) 
(ok!)
7. FQ_UD (ok!)


wenn ich 4. weglass und bei 6. Frequenz=0, Phase=0 programmier, 
funktioniert es nicht, nach 7. die eigentliche Frequenz einzustellen

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann wuerde er Starten ist schon richtig.

So wenn du dann jetzt eine Frequenz von 0 HZ einstellst dann laeuft der 
Akku doch leer nach einiger Zeit ?

Dann sollten in beiden Akkus doch 0 drinstehen ?

Dann warten bis PLL eingeschwungen ist.

Dann Frequenz einstellen.

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie meinst Du das dass der Akku leer laufen würde? Ich würde mir eher 
vorstellen dass der Akku eben nicht weiterzählt, das Ausgangssignal also 
Konstant ist. Wie ich das aufgefasst hatte konnte man nur mit Reset den 
Phasenakkumulator wieder auf Null bringen.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Stimmt war ein Denkfehler von mir.

Hast du das auch schon ausprobiert was auf Seite 5 steht. Das man nach 
dem Reset erst einmal das ganze Wort von 40 Bit uebertraegt und erst 
dann FQ_UD setzt ?

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, jetzt hab ichs verstanden.

Das beschriebene - also im parallelen Modus erstmal Frequenz und Phase 
auf Null programmieren - kann ich nicht tun. Bei mir ist D0/1/2 fest 
verdrahtet per Pullup/Pulldown. Es ist also nicht möglich, nur mithilfe 
des seriellen Modes die beiden Chips definiert zu synchronisieren (sie 
laufen zwar mit der selben Frequenz, aber eben zufällig verschoben!).

Ich werd also kaum herum kommen eine neue Platine zu basteln. 
Glücklicherweise sind die Chips selbst auf einer kleinen Adapterplatine. 
Das hält den Aufwand in überschaubaren Grenzen. Evtl. könnte man darüber 
nachdenken D0 steuerbar zu machen, so dass die Initialisierung im 
parallelen Modus erfolgt (dort wird ja nur mit D0 und D7 gewackelt..) 
und damit Portpins einzusparen.

Danke für Deine Gedult, nun hab ichs endlich verstanden :-) :-)

Die Änderungen werden etwas Zeit benötigen. Danach meld ich mich nochmal 
(evtl. hat ja auch zukünftig mal wieder jemand dieses Problem).

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem.

Gruss Helmi

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, die Schaltung ist umgelötet auf parallelen Modus --- und es 
funktioniert problemlos! :-)

Auch die intere PLL macht bei der Synchronisation keine Probleme.

Jetzt muss nur noch das Programm bisschen verhübscht werden und das 
Timing von schnarch-lahm auf mittelträge umgestellt werden ;-)

Gruß
Christian

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na da sieht man das man dem Datenblatt auch nicht ganz vertrauen darf.
An für sich ist das Timing des DDS Chip schnell genug. Du must nur die 
Zeit für das Einschwingen der PLL einhalten.

Gruss Helmi

Autor: Gregor Quiring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi. Habe gerade das gleiche Problem mit dem AD9851... Hast du es 
seriel/überhaupt Syncronisiert hinbekommen?

Danke im Voraus...

Autor: Gast123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

seriell konnte ich zwar die gleiche Frequenz programmieren, aber die 
beiden Sinüse waren dabei zufällig zueinander verschoben, meist etwa im 
Bereich +-45Grad, manchmal auch mehr. Bei der seriellen Initialisierung 
kannst du die Schrittweite nicht sofort auf Null stellen. Somit beginnt 
der Phasenakku zu laufen sobald die PLL eingerastet ist. Da das 
unterschiedlich lang dauert ergibt sich eine mehr oder weniger zufällige 
Phasenverschiebung. Soweit zumindest meine Theorie. Warum das aber auch 
bei abgeschalteter PLL passiert hab ich nicht ganz verstanden.

Kurzum, ich hab einige Tage dabei verschwendet das seriell hinzukriegen. 
Paralleler Modus und es ging sofort (naja nachdem ich festgestellt hatte 
dass MSB und LSB bei mir vertauscht war g).

Falls Du das doch noch seriell irgendwie hinkriegen solltest wäre ich 
sehr an einer Rückmeldung interessiert :-)

Gruß und viel Erfolg,
Christian

Autor: Gregor Quiring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs gerade hinbekommen. Ohne umweg über Parallel mode geht es wohl 
nicht.

Ich hab statt den PullUp Widerstand eine Leitung des Kontrollers 
spendiert, so dass ich im Parallel mode nicht nur 00000011 sondern auch 
00000000 senden kann.

Die init Sequenz:
1. RESET

2. Sende 00000011
         00000000
         00000000
         00000000
         00000000 an alle DDS.

3. FQ_UD und 100us warten.

4. Ab hier geht es seriell weiter...

Herzlichen Dank an dieser Stelle. Hatte zwar schon die Vermuttung. Den 
Anstoss den Umbau zu wagen, verdanke ich deinen Ausführungen.

Gregor

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]
  • [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.