Da ich viel EPROMs rumfliegen habe und die mir einfach zu Schade waren sie wegzuwerfen, dachte ich, es muss doch dafür noch eine Verwendung geben.
So kam ich auf die Idee mit dem DDS Generator.
Dieser besteht aus folgenden Komponenten:
- 1. Taktgeber (4093), erzeugt ein Taktsignal und gibt dies an den
- 2. Adresszähler (74HC4040). Dieser sogenannte binary ripple counter teilt quasi die Taktfrequenz herunter und zählt somit die Speicheradresse für den EPROM hoch. Bei einem Überlauf fängt er einfach wieder bei Null an. Der Zählerstand stellt die aktuelle Phase des Signals dar. Die acht Zählerausgänge gehen direkt an den
- 3. EPROM (2716) mit vier Signaltabellen: Sinus, Dreieck, Sägezahn, Sägezahn rückwärts. Die Auswahl des gewünschten Ausgangssignales erfolgt einfach durch entsprechende Beschaltung von zwei weiteren Adresspins. Die acht Datenleitungen gehen an ein
- 4. Latch (74HC573). Dieses hat die Aufgabe die Daten vom EPROM erst nach einem halben Takt zu übernehmen. Das verhindert die Entstehung von ungültigen (Momentan-) Werten, die durch Jitter an den Zählerausgängen und an den Datenleitungen am EPROM entstehen. Das Latch wird mit der vollen Taktfrequenz befeuert. Die bereinigten Daten gelangen an einen
- 5. Buffer (74HC541). Er sorgt für definierte Pegel für das
- 6. R2R-Netzwerk. Hier kann schon ein schöner Sinus abgegriffen werden. Diese Signal schickt man am besten noch durch einen
- 7. Tiefpass. Einfach aufgebaut aus einem R-C-Glied.
->zoom
Laut FFT hat der Sinus bei etwa 1 kHz ein THD von -55dB (Ich meine hier den Abstand zur 2. Harmonischen. Die Experten werden jetzt wieder Aufscheien, weil das kein echter THD ist). Es ist schon erstaunlich, was man mit einfachen Mitteln schon erreichen kann. Mit dem alten (analogen) XR2206 erreicht man minimal -45dB. OK, der kann auch Frequenzen bis 1 MHz. Wo wir gleich bei den Problemen dieser Methode sind.
Die Ausgangsfrequenz berechnet sich wie folgt:
f_out = f_clk / 2^n
Das bedeutet, der Takt ist bei 8 Bit Adressierungsbreite um das 256 fache höher als die Ausgangsfrequenz. Hier also 256 kHz. Das Signal am niederwertigsten Bit am Zählerausgang hat eine Frequenz von 128 kHz. Das bedeutet eine Periodendauer von ca. 7,8 µS. Jetzt kommt der springende Punkt: Der EPROM hat eine „address to output cycle time†œ (tACC) von 450 nS. Er benötigt also eine gewisse Zeit zwischen Adressänderung und dem Bereitstellen der Daten am Ausgang. Bei rund 1 MHz Taktfrequenz (4,3 kHz Ausgangsfrequenz) ist also theoretisch Schluss. Praktisch geht das noch höher aber mit steigender Frequenz kommen immer mehr fehlerhafte Daten aus dem EPROM. Damit steigt also auch die Verzerrung des Sinussignals. Abhilfe schafft hier nur ein schnellerer Speicher. Mit einer tACC von 70 nS kommt man auf eine Signalfrequenz von 23 kHz.
Die maximale Taktfrequenz berechnet sich wie folgt :
f_clkmax = 1 / 2(t_acc + t_pd)
tpd = propagation delay vom Adresszähler = 14ns
Fertiger Aufbau
Hier ist ein Flash Speicher mit 70ns t_acc verbaut.
->zoom
Extras:
- Zuschaltbarer Ausgangsfilter 2. Ordnung
- Einstellbare Frequenz von 8 bis 20000 Hz / 3 Bereiche wählbar, die Grenzfrequenz des Filters wird mit umgeschaltet
- Einstellbare Amplitude 0 - 5 Vpp
- DC Level 2,5 V lässt sich auskoppeln
- 15 verschiedene Kurvenformen (Sinus, Dreieck, Sägezahn, Rechteck, Impuls, ...)
EPROM Image: EPROMImageSinTable2732.hex.pdf (Datei speichern und in *.hex umbenennen)
Zur Zeit sind folgende Kurvenformen im Speicher
Sinus & Ähnliche:
- 0. Mute (2,5Vdc)
- 1. Sinus
- 2. Multitone (4 Frequenzen: Grundwelle + 3., 5. und 10. Harmonische)
- 3. Halbkreis-Sinus
- 4. Sägezahn links (Rampe fallend)
- 5. Sägezahn links 10% Steigend/90% Fallend
- 6. Dreieck (50% Steigend/50% Fallend)
- 7. Sägezahn rechts 90% Steigend/10% Fallend
- 8. Sägezahn rechts (Rampe steigend)
- 9. Rechteck, 50% duty cycle (0° phasenverschoben gegenüber sync)
- 10. Rechteck, 50% duty cycle (90° phasenverschoben gegenüber sync)
- 11. Rechteck, 50% duty cycle (180° phasenverschoben gegenüber sync)
- 12. Rechteck, 50% duty cycle (-90° phasenverschoben gegenüber sync)
- 13. Impuls, 10% duty cycle
- 14. Nadel Impuls (1x 5V, 255x 0V)
- 15. special