Funktionsgenerator mit ADSP2181 EZ-Kit lite

Irgendwann (ist schon ein paar Jahre her) kam ein Kollege mit einem Problem zu mir: Er braucht einen Funktionsgenerator, der zwei überlagerte Sinusschwingungen unterschiedlicher Frequenz erzeugen soll. Beide Signale sollen in der Frequenz und in der Amplitude einstellbar sein. Zu allem Überfluß sollen die beiden Frequenz auch noch Quarzstabil sein. Die damals benötigten Frequenzen lagen in der Größenordnung von 15 Hz bis 500 Hz.

Kein Problem, sowas kann man kaufen, nennt sich arbiträrer Funktionsgenerator und kostet so etwa 3000 DM (je nach Hersteller). Doch Problem, ist zu teuer, davon einen zweiten anzuschaffen, da er den Generator über längere Zeit benötigen würde und der, der an meinem Arbeitsplatz steht, nicht für längere Zeit entbehrlich ist.

Der erste Versuch mit einem gekauften low-cost-Teil (immerhin 500 DM) ging gnadenlos daneben (das Teil war eine haarsträubende Konstruktion aus einem analogen Funktionsgenerator-IC, einem FPGA, RAM und DAC, man konnte zwar alles programmieren, aber weder die Amplitude noch die Frequenz waren langzeitstabil).

Nun hatte ich just zu dieser Zeit ein Evaluation-Board (EZ-Kit lite) mit einem Signalprozessor und Codec in einem anderen Projekt im Einsatz. Auf dem Board ist ein DSP (ADSP 2181 von Analog Devices), ein EPROM und der Codec (eigentlich für Audio gedacht, kann 48kHz, 16Bit und Stereo). Genau das was man braucht, um einen programmierbaren Funktionsgenerator zu bauen. Also schnell noch so ein Board bestellt und ran an die Arbeit.

Herausgekommen ist dabei ein Programm, was ich in das EPROM des Evaluationboards gebrannt habe und ein Steuerprogramm für den PC, mit dem man die gewünschten Frequenzen und Amplituden einstellen kann. Die Verbindung zwischen dem PC und dem DSP-Board wird über die serielle Schnittstelle hergestellt. Freundlicherweise gab es bei Analog Devices viele Beispielprogramme, so daß ich letztenendes nur den eigentlichen Funktionsgenerator programmieren mußte.

Das Steuerprogramm auf dem PC ist in Delphi 1 geschrieben (ja, ich hab auch mal damit programmiert, damals kannte ich Linux noch nicht) und ist ein gutes Beispiel dafür, wie man es nicht machen sollte (aber es hat auf Windows 3.1 funktioniert).

Für alle, die sich dafür interessieren, gibt es hier das Programm für das EZ-Kit lite: sigidsp.zip und das unsäglich schlechte Delphi-Programm: sigictl.zip.

Zum Beweis, daß es heute noch läuft (aber nicht mit NT) der Screenshot:


Zurück zur Hompage ... und ein Zaehlpixel hab ich auch :-)