DDS basierter Funktionsgenerator mit AD5930

Wechseln zu: Navigation, Suche

Diese Seite soll als Projektseite für einen DDS-basierten Funktionsgenerator dienen. Bekannte Funktionsgeneratoren auf Basis von DDS-ICs der Firma Analog Devices sind bekannt und im Internet einsehbar (bspw. DDS10, DDS20, DDS130). Allen Funktionsgeneratoren ist eines gemein, sie sind sehr einfach gehalten und können es mit kommerziellen Funktionsgeneratoren nicht aufnehmen. Die Rekonstruktionsfilter sind zum Teil unbefriedigend dimensioniert und erfüllen insgesamt, nach Auffassung des Projektinitiators, nicht den Anspruch an einen Funktionsgenerator für die Messtechnik.

Das Projekt nimmt bewusst Abstand von Projekten mit "großen" DDS-ICs, die beispielsweise für Eigenbau-Netzwerkanalysatoren, Signalgeneratoren, Antennenanpassgeräten oder Impedanzmessgeräten und ähnlichen Schaltungen zum Einsatz kommen. Derlei Projekte sind inspirierend, haben jedoch völlig andere Ansprüche. Daher soll das erklärte Ziel dieses Projektes ein Funktionsgenerator sein, der das Optimum aus dem AD5930 herausholen kann und als Vorlage für eigene Schaltungen mit DDS-ICs dient. Zunächst soll der Funktionsgenerator komplett via PC ansteuerbar sein, eine Erweiterung als Standalone-Gerät ist aber ebenso denkbar.

Worte vom Projektinitiator an die Gemeinde

Es wurde bewusst Mikrocontroller.net für das Projekt gewählt, da diese Plattform keinem kommerziellem Hintergedanken entspricht, für jeden auch ohne Anmeldung einsehbar ist und der Projektinitiator, nach eigener Erfahrung der Auffassung ist, dass viele sich gegenüber einer englischsprachigen Plattform mit qualifizierten Beiträgen zurückhalten. Jeder der sich inspiriert fühlt sein Wissen mit anderen zu teilen und Lust hat am Projekt teilzunehmen ist aufgerufen, diese Projektseite mit Informationen zu füllen.

Basisgerät

Das Basisgerät soll als PC-Gerät ausgeführt sein. Da alle Schnittstellen jedoch auch über Pfostensteckeranschlüsse zugänglich gemacht werden, ist es problemlos möglich, den Funktionsgenerator zu einem Standalone-Gerät auszubauen.

Spezifikationen

  • Signalarten: Sinus, Dreieck, Rampe, Rechteck, Puls
  • minimale Frequenz: 1Hz
  • maximale Frequenz: Sinus- und Rechtecksignale bis 20MHz, Dreieck und Rampe bis 2MHz
  • Modi: Kontinuierlich, Burst, Sweep, Modulation (AM/FM)
  • Signalausgang: 10Vpp
  • Offset: ±5V

Die Schaltungsbaugruppen

Der komplette Funktionsgenerator wird im Folgenden in einzelnen Baugruppen definiert und die Baugruppen kontinuierlich in ihrer Funktion erklärt. Sie stellen zugleich die einzelnen Baustellen des Projektes dar.

Das Herzstück: DDS-IC AD5930

Der AD5930 ist ein Signalgeneratorbaustein von Analog Devices, der nach dem DDS-Prinzip (Digital Direct Synthesis) arbeitet. Mit dem speziellen Exemplar lassen sich sinus- und dreieckförmige Signale erzeugen. Dazu wird ein Frequenzwort per SPI-Schnittstelle an das DDS-IC übertragen. Im Gegensatz zu anderen DDS-Bausteinen von Analog Devices ist dieses Frequenzwort beim AD5930/5932 nur 24bit breit. Bei einer, laut Datenblatt angegebenen maximalen Taktfrequenz von 50MHz ergibt sich somit:

kleinste auszugebende Frequenz/kleinstes Frequenzinkrement: 2,980232239 Hz maximale Ausgangsfrequenz: 25 MHz

Er ist der direkte Bruder des AD5932. Beide unterscheiden sich nur geringfügig. Der AD5930 verfügt über einen differentiellen Stromausgang, der AD5932 hingegen über einen einzelnen Spannungsausgang, bei dem ein 200Ω Abschlusswiderstand bereits integriert worden ist. Außerdem wurde die Ansteuerung der Vollaussteuerung beim AD5932 eingespart.

Beide verfügen über eine Sweepfunktion mit verschiedenen Modi. So ist es möglich, den Sweep vollständig intern durchzuführen oder aber über einen Interrupt den nächsten Frequenzschritt zu setzen, sodass hier ein aufwändiges Neuschreiben der nächsten Frequenz entfällt. Damit minimiert sich die Ansteuerung erheblich und die Datenübertragung zum IC wird erheblich reduziert. Zum Sweepen definiert man einfach nur die Startfrequenz, das Frequenzinkrement (positiv oder negativ) und die Anzahl von Inkrementen. Darüber hinaus lässt sich definieren, ob nur eine bestimmte Anzahl an Sweeps durchgeführt oder kontinuierlich gesweept werden soll.

Zusätzlich lässt sich mit dem AD5930 ein Burstsignal mit einer definierten Anzahl an Schwingungen erzeugen.

Der AD5930 verfügt über einen Eingang (FullScaleAdjust - FSADJUST) über den sich Amplitudenmodulation, aber auch Amplitudenkorrekturen durchführen ließe.

Eine microcontroller-gestützte Frequenzmodulation ist ebenfalls denkbar.

Programmiert werden beide Bausteine via SPI, mit maximalen Taktgeschwindigkeiten von bis zu 40MHz.

All diese Eigenschaften und noch einige weitere hier vielleicht nicht erwähnte prädestinieren dieses DDS-IC als Herzstück für einen Funktionsgenerator.

Taktquelle für den AD5930

Dem Datenblatt zum AD5930 kann man entnehmen, dass der AD5930 mit einem Takt aus einem Quarzoszillator von 50MHz betrieben werden kann. Da sich hiermit, wie man der Application Note AN-1044 entnehmen kann, ein Frequenzinkrement von ungünstigen 50 MHz / 2 ^ {24} = 2,980232239 Hz ergibt, ist es sinnvoll den AD5930 leicht zu übertakten. Dazu wird von 3Hz pro Frequenzinkrement auf die notwendige Taktfrequenz zurück gerechnet. Es ergeben sich 3 Hz * 2 ^ {24} = 50,331648 MHz für die Taktquelle.

Da diese Frequenzschritte zumindest für kleine Frequenzen relativ groß erscheinen, ist vorgesehen zwischen zwei Taktfrequenzen umzuschalten, sodass mit einer Taktfrequenz von 3,3554432 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. erreicht wird. (Details siehe nachfolgender Text)

Somit ergibt sich für den fein aufgelösten Frequenzbereich 0,2 Hz .. 1 MHz eine Frequenzauflösung von 0,2 Hz/Inkr. und für den grob aufgelösten Frequenzbereich 3 Hz .. 20 MHz eine Frequenzauflösung von 3 Hz/Inkr.

Um die Taktfrequenzen zu erzeugen, wird zunächst ein programmierbarer Synthesizer, der CDCE913 von Texas Instruments, eingesetzt. Mit diesem und einem extern angeschlossenen Quarz ist es möglich, die notwendige Taktfrequenz für den DDS-IC bereitzustellen. Er verfügt über eine 2-Wire I²C-Schnittstelle, sodass zur Programmierung lediglich eine Takt- (SCL) und eine Datenleitung (SDA) notwendig sind. Findet sich ein ähnliches IC mit 3-Wire SPI-Schnittstelle, so ist vorgesehen den CDCE913 zu ersetzen, da dann nur noch eine ChipSelect-Leitung notwendig wird und Takt- bzw. Datenleitung für AD5930 und PLL-IC gemeinsam verwendet werden können.

Es stehen eine Reihe von Quarzen zur Verfügung, mit denen sich die Taktfrequenz erzeugen lässt. Es sind lediglich ein paar wenige Randbedingung bei diesem IC zu beachten, um den richtigen Quarz auszuwählen:

1.) fmclk = fout = {fin / Pdiv} * {N / M}

mit M = 1 .. 511, N = 1 .. 4095 und Pdiv = 1 .. 127

2.) fVCO = fin * {N / M}

mit fVCO = 80 MHz .. 230 MHz und fin = 8 MHz .. 32 MHz

Die Frequenz fout sind in unserem Fall die gewünschten 50,331648 MHz. Mit den Randbedingungen ergibt sich für Pdiv = 2 .. 4 und daraus bspw. folgende mögliche Kombinationen für den zu verwendenden Quarz, wenn Pdiv = 2 gewählt wurde:

  • f(Quarz) in [MHz]: M (1…511)
  • 8,192: 125, 250
  • 9,8304: 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375
  • 11,0592: 225
  • 12,288: 125, 250, 375
  • 14,7456: 75, 150, 225, 300, 375, 450
  • 16,384: 125, 250, 500 mit N = 768, 1536, 3072
  • 19,6608: 25, 50, 75, 100, 125, 150, 200, 225, 250
  • 22,1184: 225, 450
  • 24,576: 125, 250, 375, 500 mit N = 512, 1024, 1536, 2048
  • 29,4912: 75, 150, 225, 300, 375, 450

Die M-Werte der Tabelle reduzieren sich, wenn man Pdiv = 3 oder 4 wählt.

Es empfiehlt sich einen Quarz mit maximal möglicher Frequenz zu verwenden, da dann der Frequenzfehler minimal wird.

Als leicht erhältlicher Standardquarz (Referenz sei bspw. Reichelt) kann daher derjenige mit 24,576 MHz zum Einsatz kommen.

Mit diesem Quarz und dem Ändern des Teilers von Pdiv = 2 auf Pdiv = 6 ergibt sich eine Frequenzauflösung des AD5930 auf 1 Hz, respektive einer Taktfrequenz des AD5930 von fmclk = 16,777216 MHz und mit Pdiv = 12 eine Auflösung von 0,5 Hz, respektive einer Taktfrequenz von fmclk = 8,388608 MHz. Zu beachten ist dabei, dass sich dadurch natürlich die maximal auszugebende Frequenz ebenfalls reduziert. Mit Pdiv = 6 sind dies fmax = 8,388608 MHz und für Pdiv = 12 entsprechend fmax = 4,194304 MHz.

Somit kann durch einfaches Ändern von Pdiv die Taktfrequenz bzw. die Frequenzauflösung verändert werden.

Den Zusammenhang zwischen Taktfrequenz und Frequenzauflösung zeigt die nachfolgende Tabelle noch einmal:

fmclk = 50,331648 MHz --> foutmin = 3 Hz --> Pdiv = 2

fmclk = 41,94304 MHz --> foutmin = 2,5 Hz --> Pdiv = 2

fmclk = 33,554432 MHz --> foutmin = 2 Hz --> Pdiv = 3

fmclk = 25,165824 MHz --> foutmin = 1,5 Hz --> Pdiv = 4

fmclk = 16,777216 MHz --> foutmin = 1 Hz --> Pdiv = 6

fmclk = 8,388608 MHz --> foutmin = 0,5 Hz --> Pdiv = 12

fmclk = 4,194304 MHz --> foutmin = 0,25 Hz --> Pdiv = 24

fmclk = 3,3554432 MHz --> foutmin = 0,2 Hz --> Pdiv = 30

fmclk = 2,0971515 MHz --> foutmin = 0,125 Hz --> Pdiv = 48

fmclk = 1,6777216 MHz --> foutmin = 0,1 Hz --> Pdiv = 60

Wer es genauer als ein Quarz braucht kann auch ein TCXO oder gar einen TCVCXO verwenden. Hierbei ist die Auswahl an Bausteinen jedoch deutlich eingeschränkter. Eine Möglichkeit ist die Verwendung eines TCXO mit einer Frequenz von 16,384 MHz. Mit ihm lassen sich die aufgeführten Taktfrequenzen ebenfalls einstellen. Es ist anzumerken, dass der CDCE913 über die Möglichkeit verfügt zwei PLL-Settings vorzuprogrammieren und im EEPROM zu hinterlegen, sodass zwischen zwei Ausgangsfrequenzen durch einfaches Umschalten eines Statusregisters umgeschaltet werden kann. Es kann aber auch zur Laufzeit auf die Register des PLL-Bausteins zugegriffen und Registerwerte neu geschrieben werden, sodass die maximale Ausgangsfrequenz des AD5930 voll ausgenutzt werden kann, ohne dabei auf sehr tiefe Frequenzen verzichten zu müssen.

Die notwendigen Register-Einstellungen lassen sich mit der Software TI ClockPro ermitteln. Exemplarisch soll am Beispiel einer 16,384 MHz-Quelle gezeigt werden welche Registerwerte eingestellt werden müssen:

Register --> HEX --> Bemerkungen

0 --> 81

1 --> 05 / 01 --> VCXO / Crystal

2 --> B4

3 --> 02 / 14 --> Pdiv = 2 / 20

4 --> 02

5 --> 60 / 78 --> Lastkapazität 12pF / 15pF

6 --> 00 --> Wert 01 speichert die Register-Einstellungen im EEPROM

7 --> 00

8 --> 00

9 --> 00

10 --> 00

11 --> 00

12 --> 00

13 --> 00

14 --> 00

15 --> 00

16 --> 00

17 --> 00

18 --> 00

19 --> 02

20 --> 69

21 --> 02

22 --> 01

23 --> 01

24 --> 30 --> PLL1_0 M=125

25 --> 02 --> PLL1_0 M=125

26 --> 0B --> PLL1_0 N=768

27 --> 0B --> PLL1_0 N=768

28 --> 60 --> PLL1_1 M=250

29 --> 04 --> PLL1_1 M=250

30 --> 83 --> PLL1_1 N=1536

31 --> 0B --> PLL1_1 N=1536

Sollen die Registerwerte dauerhaft im EEPROM des CDCE913 hinterlegt werden, dann wird Register 6 auf "1" und wieder zurück auf "0" gestellt.

Die Programmierung des DDS-ICs

In einem ersten Schritt soll der AD5930 über einen FT232 vollständig vom PC aus programmiert werden. Das macht Arbeiten im Bereich Mikrocontroller zunächst überflüssig. Mit einem kleinen Tool kann der FT232 via Bit Banging als USB to SPI Programmer genutzt werden, sodass der Schwerpunkt zunächst vollständig im Bereich Schaltungsentwurf liegen kann. Eine Adaptierung eines Mikrocontrollers ist dann in einer späteren Ausbaustufe "schnell" erledigt.

Auf dieser Webseite wird gezeigt, dass via Bit Banging der FT232 als USB to SPI Programmer verwendet werden kann. Dazu werden einfach die drei notwendigen SPI-Leitungen vom AD5930 mit dem FT232 wie folgt verbunden:

  • Beschreibung - AD5930 - FT232
  • ChipSelect - FSync - RI
  • Clock - SCLK - CTS
  • Data - SDATA - MOSI

und das SPI Demo Tool gestartet. Nachdem der FT232 erkannt wurde drückt man "Open Interface". Man vergewissert sich noch einmal, dass die Einstellungen für die SPI-Leitungen auch stimmen und klickt auf "Do bitbang Setup". Nun braucht man nur noch die Bitlänge von 8 auf 16 umstellen und kann durch direktes Schreiben der Adressen den AD5930 programmieren.

Als Beispiel soll gezeigt werden, wie ein 1MHz Sinussignal schnell per Hand mit diesem Tool programmiert werden kann:

  • 06db - setzt die notwendigen Einstellungen in ControlRegister
  • d051 - MSB der Startfrequenz für 1MHz
  • ceb8 - LSB der Startfrequenz für 1MHz
  • 3000 - MSB des Frequenzinkrements
  • 2000 - LSB des Frequenzinkrements
  • 1002 - minimale Anzahl der Frequenzinkremente

Die Programmierung ist kinderleicht und kann bequem als PC-Software ausgeführt werden, sodass hierfür kein Mikrocontroller zum Einsatz kommen muss. Wie der AD5930/32 für einen Sweep oder eine Einzelfrequenz programmiert werden kann, findet sich beispielhaft auch in der Application Note-1044 von Analog Devices. Eine erste PC-gestützte Software zur Programmierung des AD5930 via FT232RL steht bereits zur Verfügung und kann hier:

http://www.mikrocontroller.net/attachment/122544/Siggy201.exe

heruntergeladen werden.

Der 1. Verstärker

Das Datenblatt des AD5930 empfiehlt, dass an seinen DAC-Ausgängen ein mind. 200Ω Widerstand als Last angeschlossen wird, zu denen parallel ein Kondensator von 20pF spendiert werden soll, um ein Rekonstruktionsfilter 1. Ordnung auszubilden. Aus der Stromquelle des DAC wird somit eine Spannungsquelle. Je nach Taktfrequenz muss der Wert der Kapazität angepasst werden. Gesetz dem Fall der AD5930 wird mit eine Taktfrequenz von 41,94304MHz gespeist erhöht sich der Wert der Kapazität auf 39pF. Um die Vorteile eines differentiellen Ausgangs nutzen zu können kommen in aller Regel Übertrager zum Einsatz. Analog Devices, CN-0142, "High CMRR Circuit for Converting Wideband Complementary DAC Outputs to Single-Ended Without Precision Resistors" schreibt zu der Thematik: "...Traditional methods for converting wideband DAC comple-mentary current outputs to a single-ended signal are to either use a center-tapped transformer or a single op amp in a differential-to-single-ended configuration. However, the transformer low frequency nonlinearities may limit its use near dc; and the operational amplifier approach requires closely matched resistors to provide dc common-mode rejection, load impedance, and gain matching between the complementary DAC outputs. Errors in the matching will produce errors at the final output...". Abhilfe kann hier ein differentieller Verstärker wie der AD8129/AD8130 schaffen, der über einen differentiellen Eingang und einenganz so wie es in den meisten Anwendungen benötigt wird. Der Verstärker soll das Rekonstruktionsfilter treiben, mit dem es im nächsten Abschnitt weiter geht.

Das Rekonstruktionsfilter

Die DDS macht prinzipbedingt den Einsatz eines Rekonstruktionsfilters notwendig. Dieses sorgt dafür, dass das Taktsignal des DDS-ICs mit ausreichender Dämpfung unterdrückt wird. In verschiedenen Papern findet man ganz unterschiedliche Angaben zu dieser notwendigen Dämpfung. Einige sprechen von -60dBr (bspw. Aufsatz zur Tiefpassfilter - Dimensionierung von Gehard Rohm) andere sogar von -70dBr (bspw. Application Note #5 von www.thinkSRS.com) im Bereich der Funktionsgeneratoranwendungen. Die Einheit dBr heißt Decibel relativ und entspricht dem Verhältnis zweier Spannungspegel.

Letzt genannte Quelle schlägt für den Einsatz von DDS-ICs die Verwendung elliptischer Filter vor, da sie mit einem steilen Übergangsbereich und kleinem Ripple im Durchlassbereich entworfen werden können. Als Filter wird daher ein elliptisches Filter eingesetzt. Dieses wird mittels freien Tools (bsp. AADE Filter Design) dimensioniert und ausgelegt.

Wie im Abschnitt Taktquelle für den AD5930 nachzulesen ist, soll zwischen zwei verschiedenen Taktfrequenzen umgeschaltet werden. Demzufolge sind zwei verschiedene Rekonstruktionsfilter erforderlich. Für das Taktsignal 3,3554432 MHz kommt ein aktives Rekonstruktionsfilter zum Einsatz, da bei passiven Filtern große Induktivitäten notwendig würden, was mit höheren Filterverlusten einhergeht, da die DC-Widerstände großer Induktivitäten ebenfalls recht groß ausfallen. Für das Taktsignal 50,331648 MHz kommt dagegen ein elliptisches Filter, auch Cauer-Filter genannt, zum Einsatz.

Vielen graut es davor sich mit der Filterthematik zu beschäftigen, es soll jedoch gezeigt werden, dass der Entwurf eines ordentliches Filters mit modernen PC-gestützen Mitteln kein Geheimnis darstellt.

Die erste Frage die sich jedem, der noch nie ein Filter entworfen hat, stellt ist, wo muss die Filtergrenze liegen. Dazu ein wenig Theorie:

Es werde angenommen der DDS-IC ist mit fs=50MHz getaktet. Die maximale Ausgangsfrequenz ergibt sich laut Nyquist-Abtasttheorem zu fmax = 25 MHz. Das heißt, dass 25 MHz noch vom Filter durchgelassen werden sollen, aber das Stopband auch bereits bei fs-fmax = 25 MHz beginnen soll, ein Widerspruch in sich. Da es in der Realität keine unendlich steilen Filter gibt, trifft man einen Kompromiss und legt die maximale Ausgangsfrequenz auf fs/3. Dies würde bedeuten, dass uns nur etwa f = 16.67 MHz als maximale Ausgangsfrequenz der DDS zur Verfügung stehen.

Wir wollen uns diesem Kompromiss ein wenig entgegensetzen und setzen die Filtergrenze etwas höher, also bei 20 MHz an. Innerhalb einer Dekade (fs-fmax = 30MHz) soll das Signal um -60 dBc bis -70 dBc (dBc - Decibel under Carrier) gedämpft werden. Im Folgenden geht es also darum, ein Filter mit den getroffenen Annahmen zu entwerfen. Es wird geprüft, ob ein Filter 7. Ordnung diesem Anspruch gerecht werden kann oder ob ein Filter 9. Ordnung eingesetzt werden muss.

Mit Hilfe des Programmes AADE Filter Design entwerfen wir einen Elliptic LowPass mit folgenden Parametern:

F1 = 20 MHz F2 = 30 MHz Apass = 0,01 (warum 0,01 wird nachfolgend erklärt) Order = 7 bzw. 9 Zin = 50 Ω Zout = 50 Ω

Das Passband Ripple wird bewusst sehr klein gewählt, da es durch die Annäherung der errechneten Bauteilwerte an erhältliche und parasitären Effekten wieder zunehmen wird. Wenn man ein Passband Ripple von 0,5 dB erreicht wäre das großartig, mit kleiner 1 dB wären man aber immer noch sehr zufrieden. Wieso?

Das wird rechnerisch schnell deutlich:

Geht man davon aus, dass das Filter mit einer Eingangsimpedanz von 50 Ω von einer Quelle mit 50 Ω Ausgangsimpedanz und einem Signal von 1 V (0 dB) Amplitude gespeist wird, so wird man, wenn das Filter eine Ausgangsimpedanz von 50 Ω hat und man das Filter mit 50 Ω abschließt noch die halbe Spannung messen können, also 500 mV (ca. -6,02 dB). Lässt man nun 0,3 dB Ripple zu, so entspricht das einem Wert von -6.32 dB oder 483 mV, bei 0,5 dB sind es 472 mV und bei 1 dB noch rund 446 mV.

Die Bauteile werden zunächst als verlustfrei betrachtet und das Programm schlägt für beide Filter eine Bauteilbemessung vor:

Filter 7. Ordnung [[1]], [[2]]

Filter 9. Ordnung [[3]], [[4]]

Anhand der Bauteilbemessung wird schnell ersichtlich, dass es keine diskreten Kondensatoren mit 0,xxxpF gibt und auch keine Induktivitäten mit Werten unterhalb des nH-Bereiches.

Das Entwurftool lässt es aber dennoch zu, dass man sich die Filterkurve anschauen kann. Im direkten Vergleich der beiden Filter zeigt sich, dass mit dem Filter 7. Ordnung gerade etwa -60 dBr gegenüber dem maximalen Ausgangssignal an Dämpfung erreicht werden. Wir konzentrieren uns daher auf das Filter 9. Ordnung, da es mit etwa -90 dBr deutlich vielversprechender ausschaut.

Das Filter muss nun realen Bauteilwerten angenähert werden. Dies tut man, indem man einfach schaut, was die Hersteller für Bauteilwerte liefern können. Im einfachsten Fall gibt es genau den Wert, den man sucht, andernfalls kann man auch durch Verschaltung mehrerer Bauteile (Induktivitäten oder Kapazitäten in Serie oder parallel angeordnet) auf den gewünschten Bauteilwert kommen.

Es empfiehlt sich, eine SpiceSimulation durchzuführen, in der man das errechnete Filter mit dem aus realen Bauteilwerten bestehenden vergleicht. Hier kann, durch Hinzufügen des Serienwiderstandes bzw. der Güte und der Resonanzfrequenz bzw. der parasitären Kapazität, schon abgeschätzt werden, wie das Filter in etwa real wirken wird. Dies setzt jedoch ein gut durchdachtes, kapazitätsarmes Layout voraus.

Wer sich das nicht antun möchte, der baut das Filter "einfach" auf und vermisst es bspw. mit einem Gain-Phase-Analyser, einem Netzwerkanalysator oder mit einem Spektrumanalyser mit integriertem Tracking Generator o.ä. brauchbarem Messequipment.

Nähert man das mit den oben genannten Randbedingungen entworfene Filter 9. Ordnung an real erhältliche Bauteilwerte an, so erhält man bspw. das folgende Filter:

  • Dipol 1: 120pF
  • Dipol 2: 8pF || 540nH (aus 270nH + 270nH)
  • Dipol 3: 250pF(aus 150pF || 100pF)
  • Dipol 4: 43p (aus 33pF || 10pF) || 530nH (aus 330nH + 200nH)
  • Dipol 5: 230pF (aus 220pF || 10pF)
  • Dipol 6: 56pF || 490nH (aus 270nH + 220nH)
  • Dipol 7: 230pF (aus 220pF || 10pF)
  • Dipol 8: 30pF (aus 15pF || 15pF) || 480nH (aus 330nH + 150nH)
  • Dipol 9: 100pF

Dies Filter ist in folgender Simulation noch einmal gezeigt [[5]], [[6]].

Fügt man nun den Bauteilwerten noch ihre parasitären Elemente hinzu (Verluste in den Bauteilen), diese findet man in den Datenbättern der Bauteile, so kann man das Filter der Realität weiter annähern. Dies ist hier mal für Induktivitäten eines Herstellers unterschiedlicher Serien und Gehäusegrößen durchgeführt worden [[7]].

Nach diesen Ergebnissen fällt die Bauteilwahl auf die AS-Serie im Package 0805.

Als Kondensatoren werden NPO-Typen in 0805 mit ±0,5pF bei kleinen Bauteilwerten und ±5% bei den größeren Werten für die Toleranz eingesetzt.

Nun geht es an den Aufbau des Filters. Hier findet sich das Testlayout, das speziell für dieses Filter [[8]] verwendet wurde. Die in Serie geschalteten Induktivitäten werden im 90°-Winkel zueinander angeordnet, um die Kopplung der Induktivitäten untereinander zu reduzieren.

Nach dem Vermessen des Filters wird dessen Übertragungsfunktion (Uout/Uin in dB) dem ursprünglich simulierten Filter mit realen, verlustbehafteten Bauteilwerten graphisch gegenüber gestellt [[9]].

Es zeigt sich, dass das reale Filter [[10]] recht gut gelungen ist, sodass diese Bauteilwerte direkt im weiteren Projekt verwendet werden können.

Für den fein aufgelösten Frequenzbereich soll die Taktfrequenz des DDS 3,3554432 MHz betragen. Um ein aktives Filter zu entwerfen kommt das kostenlos Programm FilterPro von Texas Instruments zum Einsatz. Wir legen folgende Randbedingungen fest:

  • Passband: Low-Pass
  • Circuit-Type: MFB Single-Ended bzw. MFB Fully Differential
  • Anzahl Pole: 4
  • Cutoff Freq. 1,5M
  • Filter Type: Butterworth
  • Value Display: Component Values
  • Components: Res. E48 und Cap. E12

und erhalten sofort ein Filter mit der Bemessung der passiven Bauelemente und einer Dämpfung von 80 dB/Dekade. Bei der Wahl der richtigen OPVs für das Filter hilft die Angabe Req. GBP (erfoderliches Verstärkungsbandbreiteprodukt).

In diesem Abschnitt wurde gezeigt, dass die PC gestützte Auslegung eines Rekonstruktionsfilters bei Weitem nicht so kompliziert ist, wie es zunächst erscheinen mag, sodass jeder mit dem hier gezeigten Beispiel in der Lage sein sollte, sein eigenes Rekonstruktionsfilter auszulegen.

Weitere Infos zum Filter können der Diskussionsrunde entnommen werden.

Sin(x)/x-Korrekturstufe

Der Frequenzgang eines DAC und der DDS verfügt am Ausgang über einen solchen, ist nicht flach, sondern weist eine Hüllkurve auf, die der Sin(x)/x-Funktion mit x = πf/fs, auch als Si- oder Sinc-Funktion bekannt, entspricht. Das heißt, dass das Ausgangssignal zusätzliche Dämpfung erfährt (siehe dazu auch: http://www.dspguide.com/ch3/3.htm). Um diese einmal anschaulich zu quatifizieren: bei 0.8*fs/2 (fs - Samplingfrequenz) beträgt die zusätzliche Dämpfung 2.42dB. Dieses Verhalten des DAC muss der Schaltung wieder abgewöhnt werden. Dies erreicht man durch eine Schaltung mit inversem Sin(x)/x-Charakter. Da eine solche Schaltung nicht existiert und das Verhalten nur bis zur halben Samplingfrequenz korrigiert werden muss, kann man das bspw. durch einen Parallelschwingkreis oder einer wie hier gezeigten Schaltung [11] annähern. Die Alternative dazu stellt eine AGC (Automatic Gain Control oder Amplitudenregelung) dar, die entweder auf den FSAdjust des DDS selbst oder den 1. Verstärker zurück wirkt.

Amplitudenkorrektur

Der FSAdjust-Eingang ermöglicht eine Korrektur der Amplitude, sodass hier Verluste durch das Filter bzw. Passband Ripple, durch eine Rückkoppplung vom Verstärker zum DDS-IC, ausgeglichen werden können.

Endstufe

Übliche Funktionsgeneratoren verfügen über eine Endstufe, mit der Ausgangspegel von 20Vpp möglich sind. Ähnliche Ausgangspegel sollen auch hier das Ziel sein.

DC-Offsetverschiebung

Eine Gleichspannungsoffsetverschiebung soll ebenfalls implementiert werden. Diese kann analog von einem Potentiometer aus erfolgen, soll später dann jedoch gegen einen DAC ersetzt werden.

Spannungsversorgung

Selbstverständlich gehört auch eine durchdachte Spannungsversorgung in den Rahmen dieses Projektes, das den kompletten Funktionsgenerator mit den erforderlichen Spannungen versorgt.

Sonderfunktionen

Hier sollen die Funktionen beleuchtet werden, die entweder nicht direkt oder gar nicht aus dem AD5930, jedoch mit etwas Controllerunterstützung dennoch gewonnen werden können.

Amplitudenmodulation

Über den bereits erwähnten FSAdjust am AD5930 kann eine Amplitudenmodulation vorgenommen werden. Diese soll separat nach außen geführt werden und es dem Benutzer erlauben Signale auf eine eingestellte Trägerfrequenz im AD5930 aufzumodelieren.

Impuls-Signale

Für die Ausgabe von Impulsen kann die Burst-Funktion des AD5930 verwendet werden. Die minimale Impulslänge wird dann durch die maximale Ausgangsfrequenz des AD5930 bestimmt. Dazu kann das Signal durch einen schnellen Baustein der 74er Reihe geschickt werden, sodass Impulse von 20ns vorstellbar sind.

PWM-Signale

Im Rahmen des Ausbaus zum Standalone-Gerät wird zwangsläufig auch ein Mikrocontroller zum Einsatz kommen, sodass hier grundsätzlich die Möglichkeit besteht, den Funktionsgenerator um Pulsweitenmodulation zu erweitern. Für die Ausgabe von PWM-Signalen bis 20MHz ist jedoch ein entsprechend schneller Mikrocontroller notwendig. Macht man sich dagegen die Burst-Funktion des AD5930 in Kombination mit einem schnellem Baustein der 74er Reihe o.ä. zu Nutze, so sollte auch eine Pulsweitenmodulation mit langsameren Mikrocontrollern möglich sein. Hierzu ist aber die Programmierzeit des AD5930 mit zu berücksichtigen, da ständig neue Frequenzen geschrieben werden müssen.

Das Software Frontend

Für die Programmierung des AD5930 ist, in der Ausbaustufe mit FT232, eine Softwareoberfläche notwendig, von der aus sämtliche Einstellungen für den Bediener nutzerfreundlich vorgenommen werden können.

Ausbau zum Standalone-Gerät

Als weitere Stufe steht der Ausbau zum Standalone-Gerät an. Hierzu wird ein Mikrontroller mit Anzeige und Menüsteuerung zum Einsatz kommen können, sodass sämtliche Einstellungen auch bequem direkt am Gerät erfolgen können und ein PC nicht zwingend erforderlich ist. Hierfür ist die Programmierung eines Mikrocontrollers notwendig.

Ansteuerung des Standalone-Gerätes

Controllerauswahl

Anzeige der Statusinformationen - LCD

Schaltung des Controllerboards

Firmware

Schaltpläne und Layoutdaten

Alle Schaltpläne und Layoutdaten sollen hier für jeden zugänglich gemacht werden. Es bietet sich daher an Eagle in der Light Version oder KiCAD zu verwenden.

Diskussionsrunde

Unter diesem Link sollen Diskussionen zum Projekt erfolgen.

Links zu bekannten Projekten mit dem AD5930/AD5932

DDS-Funktionsgenerator mit dem MiniMEXLE Version 3.0

Siggen1