Digitaler LaPlace-Funktionsgenerator im FPGA

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Ein digitaler Funktionsgenerator, basierend auf der Wellenformsynthese nach LaPlace / Fourier.

von Jürgen Schuhmacher

Funktionen[Bearbeiten]

Auf der Basis von Sinuswellen werden komplexe Wellenformen in Echtzeit zusammengesetzt.

  • Signalformen: Sinusgrundwelle + bis zu 7 Oberwellen, inzwischen erweitert auf 31
  • Ausgangsfrequenz: von 0 Hz bis 25 MHz in Cyclone IV-chip (bei DDS)
  • Ausgangsfrequenz: von 0 Hz bis 5 MHz in Cyclone IV-chip (bei VA-Oszillation)
  • Amplitude +/-3V bei Verwendung der Beispiel-Plattform mit DACs in 3.3V-Technologie

Die Darstellung gelingt hier nur über direkte Ausgabe über VGA (Siehe Projekt VGA Core in VHDL, daher gibt es nur Screenshots). Alternativ würde ein mehrkanaliges Oszilloskop ausreichen, um die Signale zu scannen.

Erzeugung[Bearbeiten]

Die Sinuswellen selbst wurden aufgrund der benötigten Genauigkeit in diesem Projekt aus einer interpolierten, mehrfach abgetasteten Sinustabelle (phase dithering) gemäß dem DDS-Prinzip gewonnen, nochmals gefiltert und in der Phase so verschoben, dass die Phasenverschiebung durch den Filter kompensiert wird und die Addition korrekt gelingt. In einer späteren Version für Audio werden selbstschwingende Oszillatoren auf der Basis der DGL zweiter Ordnung verwendet. Diese erfordern mehr Rechenaufwand, liefern aber den besseren Sinus. Für einfache Operationen weit unterhalb der Abtastfrequenz reicht eine Vervielfachung der Frequenz mittels Multiplikation und Bereinigung um den Gleichanteil. Dies eignet sich auch für Mikrocontroller.

Anwendung[Bearbeiten]

Das System wird als Testgenerator verwendet und dient u.a. zum Sounddesign. Als Audio-Anwendung dient es zur Wave Table Synthese wobei mehrere Kanäle und Wellen gleichzeitig berechnet werden, dafür aber nur maximal 768k samples / sec.

Beispiel Wellenfeld[Bearbeiten]

Links[Bearbeiten]