www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Digitaler Funktionsgenerator


Autor: Thomas B. (paraglider)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe in den letzten Wochen mal einen Funktionsgenerator in VHDL
programmiert (funktioniert!). Sicher nichts besonderes, aber vielleicht
will sich ja jemand das Ein oder Andere abschauen - oder mir noch Tips
geben, was man besser machen kann.

Stichworte:
- FPGA: Spartan3 (XC3S200) in Form des Digilent Starter Kit
- DAC: TDA1543 auf Lochraster-Platine (2 Kanäle)
- Bedienung über 5 Tasten
- Anzeige: LCD mit HD44780 / ST7066 (4x27 Zeichen)
- Spannungskonverter für negative LCD-Spannung (Ladungspumpe)
- Funktionswerte-Tabelle in BRAM (generiert von einem kleinen
C-Programm)
- DCM's für Takt, Multiplizierer für Amplitude.
- Max. Frequenz mit TDA1543 ca. 100 kHz, bei anderem DAC max. 50MHz
möglich
- Amplitude und Offset einstellbar

Die komplette Bedienung ist ebenfalls in VHDL geschrieben - was einen
Haufen (Hardware-)Logik braucht (war eigentlich mehr aus Übung
gedacht). Als nächstes möchte ich die Bedienung in Form von einem sehr
kleinen Controller im FPGA (z.B. xsoc) und Software in einem BRAM
aufbauen. Das ist - denke ich - die elegantere und sparsamere Lösung.

Ach so, den Schaltplan für den Anschluss von DAC und LCD habe ich
gerade nicht elektronisch, folgt demnächst aber.

Bei Fragen, mailt mir.

Viele Grüße, Thomas

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

erstmal Glückwunsch zu deinem Projekt. Hab die Quellcodes zwar nur kurz
überflogen aber es sieht recht putzig aus. Die Idee mit dem RAM hatte
ich bei meinen Audio-Tests auch, nur das ich eine ganze Welle speicher
(und nicht nur nen Halben oder gar einen Viertel-Sinus).
Was mich noch interessieren würde wäre die Ansteuerung des TDA1543, da
ich diesen auch habe und für ein andere kleine Tests verwenden wollte.
Wäre schön wenn du die sachen mal reinstellen könntest.
Eine Bedienung unter VHDL hatte ich auch mal gebastelt. Da allerdings
nur in ganz klein um das externe RAM auf meinem Spartan3 Board manuell
zu beschreiben und auszulesen (war auch nur als einstieg gedacht). Aber
es zeigt das man einfache Sachen auch recht gut in VHDL formulieren
kann.
Schönes Projekt. Was ich mir evtl. mal abgucken werde ist die
Geschichte mit den DCMs. Bisher bin ich mit meinem 50MHz Quarz für
alles ausgekommen. Aber nicht mehr lange :-)
Hast du schonmal daran gedacht den Funktionsgenerator hier als Projekt
zu machen ?

Gruß
Rene

Autor: Thomas Petrulat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 abo 

Autor: Thomas B. (paraglider)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

hatte ja versprochen, dass ich noch den Schaltplan einstelle. Wie ihr
seht, handelt es sich hier um eine ganz einfache Schaltung, die mehr
zum Testen der prinzipiellen Funktion dient.
Denn Offset des TDA1543 habe ich mit R1 so eingestellt, dass bei
angezeigtem Offset "0.000V" etwa 2 Volt am Ausgang anliegen, so kann
man die FPGA-Konfiguration prinzipiell testen. Die Amplitude ist nicht
kalibriert, ein eingestelltes Millivolt entspricht also tatsächlich
nicht genau einem Millivolt. Auch ist das Ausgangssignal im
Frequenzbereich oberhalb etwa 20kHz deutlich verzerrt, obwohl die
Ausgabefrequenz 50MHz/5.5/16/2=284kHz beträgt.
Wer einen Funktionsgenerator für den (Heim-)Laborbetrieb aufbauen will,
der sollte natürlich eine Schaltung mit symetrischer Stromversorgung,
kalibrierbarer Verstärkung, besserem Filter etc. aufbauen (gerne auch
hier posten). Der Operationsverstärker ist vielleicht auch nicht so gut
für diesen Zweck geeignet, ich habe ich nur verwendet, weil er einen
weiten Ausgangsspannungsbereich hat.

Gruß, Thomas

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.