FPGA Lab: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
 
(45 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
''Diese Seite und das Projekt befinden sich noch im Aufbau (Stand März 2010).''
'''Ct Lab Client Library''' und '''FPGA Lab''' wurden in '''[[CtLab Library]]''' und '''[[CtLab FPGA SigLab]]''' umbenannt. Der Quellcode befindet sich nun auf GitHub.


'''FPGA Lab''' ist ein kleines FPGA-basiertes Signallabor. Es kombiniert einen modulierbaren Mehrfach-[http://www.mikrocontroller.net/articles/DDS DDS]-Generator, einen Universalzähler für Frequenz- und Periodenmessungen sowie einen Pulsgenerator. Dazu gibt es bisher ein LabView-Frontend (später auch eine native Windowsanwendung).
Details dazu auf den neuen Wikiseiten:


== Die technischen Merkmale in Kürze ==
* [[CtLab Library]]
* [[CtLab FPGA SigLab]]


* Frequenz-/Periodenmesser
[[Category:FPGA und Co]]
** Frequenz bis 100 MHz, Periode bis 120 Minuten
** einstellbare Messfrequenz bzw. Torzeit
** Anzeige für Überlauf oder ausbleibendes Signal
 
* 4-kanaliger DDS-Signalgenerator
** Frequenz bis 50 MHz
** Rechteck, Sägezahn (steigend oder fallend), Sinus
** einstellbare Amplitude und Phasenlage, separate Synchronisationsausgänge mit fester Phasenlage 0°
** jeder Kanal ist durch die anderen Kanäle in Amplitude, Frequenz und Phase modulierbar (auch gleichzeitig)
 
* Pulsgenerator
** getrennt einstellbare Puls- und Pausendauern jeweils 10 ns bis 1 s
 
* Ausgänge
** Jeder der beiden Analogausgänge der DACRAM-Erweiterungskarte (die einen 2-kanaligen DA-Wandler enthält) kann wahlweise  eines der vier DDS-Generatorsignale oder das Pulsgeneratorsignal ausgeben.
** Parallel dazu stehen alle vier Synchronisationssignale und das Signal des Pulsgenerators zur Verfügung.
 
== Modulierbarer 4-Kanal-DDS-Generator ==
 
Dieser nach dem [http://www.mikrocontroller.net/articles/DDS DDS]-Prinzip arbeitende Generator kann vier unabhängige Signale unterschiedlicher Kurvenformen bereitstellen, die sich vielfältig beeinflussen und untereinander auch modulieren lassen.
 
=== Signalformen ===
 
[[Datei:FPGA_Lab_Sinus_10kHz.JPG|thumb|150px|Sinus 10 kHz]]
[[Datei:FPGA_Lab_Sägezahn_10kHz.JPG|thumb|150px|Sägezahn 10 kHz]]
[[Datei:FPGA_Lab_Lissajous_2,5kHz-10kHz.JPG|thumb|150px|Lissajous-Figur mit zwei DDS-Kanälen, X-Kanal Sinus 2,5 kHz, Y-Kanal  Sinus 10 kHz]]
Jeder der vier Kanäle kann symmetrische Rechtecksignale, steigende und fallende Sägezahnsignale sowie Sinussignale liefern. Die Rechteck- und Sägezahnsignale werden direkt aus dem aktuellen Wert des jeweiligen Phasenakkumulators ermittelt. Die Werte des Sinussignals werden einer Lookuptabelle entnommen, welche pro Periode 4096 Werte bereitstellt (wobei die Tabelle tatsächlich nur 1024 Werte für die erste Viertelperiode enthält, der Rest wird abgeleitet).
 
=== Frequenzbereich ===
 
Die internen Phasenakkumulatoren werden mit 100 MHz getaktet und sind 32 Bit breit, somit stehen grundsätzlich Frequenzen bis 50 MHz bei einer Auflösung von 0,023 Hz zur Verfügung. Die nutzbare Bandbreite hängt natürlich auch noch vom eingesetzten DA-Wandler und den Ausgangsverstärkern ab.
 
Auf der DACRAM-Erweiterungskarte sind zwei Bestückungsmöglichkeiten vorgesehen:
* 2-Kanal-DAC AD5447 mit 21 Megasamples und Verstärker AD8055
* TxDAC AD9752 (12 Bit) oder AD9754 (14 Bit) mit 125 Megasamples und Verstärker LT1818
 
'''FPGA Lab''' wurde mit der ersten Variante getestet, auch die Bilder wurden damit gemacht.
 
=== Amplitude ===
 
Die Amplitude ist vom invertierenden Maximum über Null bis zum nicht-invertierenden Maximum einstellbar. Die Wertauflösung beträgt für alle Signalformen 16 Bit bei maximaler Amplitude. Bei Verwendung der DACRAM-Karte beträgt die maximale Amplitude &plusmn;1,25 V (2,5V<sub>ss</sub>).
 
=== Phasenlage ===
 
Die Phasenlage kann in beide Richtungen um jeweils maximal eine Periode verschoben werden (&plusmn;2&pi; bzw. 360°). Die Auflösung über den gesamten Bereich von &plusmn;2&pi; beträgt intern 32 Bit, die Schnittstelle zum Frontend nutzt davon derzeit aber nur 16 Bit. Jeder Kanal besitzt einen separaten Synchronisationsausgang, der ein symmetrisches Rechtecksignal liefert, dessen steigende Flanke immer bei Phasenlage 0° liegt.
 
{{subst:Absatz}}
 
=== Modulation ===
 
[[Datei:FPGA_Lab_AM_10kHz-1kHz.JPG |thumb|150px|Amplitudenmodulation, Träger Sinus 10&nbsp;kHz, Nutzsignal Sinus 1&nbsp;kHz]]
[[Datei:FPGA_Lab_FM_1kHz-100Hz.JPG|thumb|150px|Frequenzmodulation, Träger Sinus 1&nbsp;kHz, Nutzsignal Sinus 100&nbsp;Hz]]
Jeder Kanal lässt sich durch die anderen Kanäle unabhängig voneinander in Amplitude, Frequenz und Phase modulieren, auch gleichzeitig. Die Modulationstiefe lässt sich über die Amplitude des modulierenden Signals variieren. Die maximale Modulationstiefe umfasst bei Amplitudenmodulation (AM) den gesamten Spannungsbereich, bei Frequenzmodulation (FM) dzt. &plusmn;762&nbsp;Hz (das wird noch geändert) und bei Phasenmodulation &plusmn;1/2&nbsp;Periode (&plusmn;&pi; bzw. 180°) ausgehend von der eingestellten Phasenlage. Bei Amplitudenmodulation zeigt das Frontend an, wenn es zu einer Übermodulation kommt.
 
== Hinweise zur Realisierung ==
 
=== Plattform, Portabilität ===
 
Entwickelt wurde '''FPGA Lab''' für die [http://www.mikrocontroller.net/topic/122573 Spartan-3-FPGA-Karte aus dem c´t-Lab] (weitere Verweise am Ende dieser Seite) unter Verwendung von [http://www.mikrocontroller.net/articles/Xilinx_ISE Xilinx ISE]. Es werden aber keine besonderen Spezialitäten dieser Karte genutzt. Alle Komponenten sind in VHDL implementiert, Schematics werden nicht verwendet. Xilinx-Spezifika wurden weitgehend vermieden oder gekapselt. Der Code sollte sich also relativ leicht auf andere FPGA-Karten und auch auf andere FPGAs übertragen lassen. Durch die Verwendung von Generics im VHDL-Code sind viele Aspekte relativ leicht änderbar (z.B. Wert- und Zeitauflösung der DDS-Generatoren, Größe der DDS-Lookup-Tabellen, Anzahl der Adressen der [http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface SPI-Schnittstelle],...). '''FPGA Lab''' enthält einen adressierbaren SPI-Slave, der als eigenständige Komponente in anderen Projekten eingesetzt werden kann.
 
=== Was noch fehlt ===
 
* Phasensynchronisation zwischen den einzelnen DDS-Generatoren
* wahlweises internes Aufschalten des Frequenz-/Periodenmessers auf eines der Generatorsignale
* einstellbarer DC-Anteil bei den DDS-Generatoren
* verbesserter Einstellberech für den Hub bei der Frequenzmodulation
* gemeinsame Nutzung der Wellenformtabellen für die vier DDS-Generatoren
* native Windowsanwendung als ALternative zum LabView-Frontend
* Erweiterung zum Arbiträr- bzw. Bitmustergenerator.
 
== Quellcode, Lizenz ==
 
'''FPGA Lab''' ist Open Source und wird unter der [http://www.gnu.org/licenses/gpl.html GNU General Public License (GPL)] lizensiert. Der Quellcode wird in Kürze verfügbar sein (ca. April 2010).
 
== Weitere Informationen ==
 
'''FPGA Lab''' basiert auf dem c't-Lab von Carsten Meyer, c't magazin. Weitere Informationen gibt es hier:
 
* [http://www.mikrocontroller.net/topic/122573 XILINX FPGA Spartan CT-Projekt]
* [http://www.heise.de/ct/projekte/machmit/ctlab Projekteseite der c´t]
* [http://thoralt.ehecht.com/phpbb Thoralts c't-Lab-Forum]
* [http://thoralt.ehecht.com/wiki Thoralts c't-Lab-Wiki]
* [http://de.wikipedia.org/wiki/Direct_Digital_Synthesis DDS auf Wikipedia]
 
[[Kategorie:Projekte]] [[Kategorie:FPGA und Co]] [[Kategorie:Signalgeneratoren]]

Aktuelle Version vom 18. Juni 2021, 14:57 Uhr

Ct Lab Client Library und FPGA Lab wurden in CtLab Library und CtLab FPGA SigLab umbenannt. Der Quellcode befindet sich nun auf GitHub.

Details dazu auf den neuen Wikiseiten: