FPGA Lab: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
(Ausgänge beschrieben)
(SPI und Komponenten beschrieben)
Zeile 23: Zeile 23:
** ein Synchronisationssignal je DDS-Kanal
** ein Synchronisationssignal je DDS-Kanal
** Signal des Pulsgenerators
** Signal des Pulsgenerators
* [http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface SPI]-Slave zur Anbindung an einen Mikrocontroller
** mehrere addressierbare Register zum Setzen von Konfigurationswerten und Auslesen von Messwerten


=== Universalzähler (Frequenz-/Periodenmesser) ===
=== Universalzähler (Frequenz-/Periodenmesser) ===


Dieser Zähler kann entweder die Frequenz des externen Signals oder dessen Periode messen. Die Bedienoberfläche errechnet aber auch den jeweils anderen Wert und zeigt beide zusammen an.
Dieser Zähler kann entweder die Frequenz eines Signals oder dessen Periode messen. Die Bedienoberfläche errechnet aber auch den jeweils anderen Wert und zeigt beide zusammen an.


==== Messmethode ====
==== Messmethode ====
Zeile 122: Zeile 126:


'''FPGA Lab''' wurde mit der ersten Variante getestet, auch die Bilder wurden damit gemacht.
'''FPGA Lab''' wurde mit der ersten Variante getestet, auch die Bilder wurden damit gemacht.
=== SPI-Schnittstelle ===
Über den [http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface SPI]-Slave kann ein Master (z.B. ein Mikrocontroller wie der ATmega644 auf der [http://www.mikrocontroller.net/topic/122573 Karte aus dem c´t-Lab]) Konfigurationswerte an '''FPGA Lab''' übergeben und Messwerte auslesen. Dazu besitzt der SPI-Slave mehrere Datenregister mit 32 Bit Breite, die über ein separates Adressregister ausgewählt werden können.
Der SPI-Slave hat folgende Signale:
* MOSI ('''M'''aster '''O'''ut -> '''S'''lave '''I'''n): zu schreibende Daten zum '''FPGA Lab'''
* MISO ('''M'''aster '''I'''n <- '''S'''lave '''O'''ut): gelesene Daten vom '''FPGA Lab'''
* SCLK ('''S'''hift '''Cl'''oc'''k'''): Schiebetakt
* SS_Address ('''S'''lave '''S'''elect for address): Auswahl des Adressenregisters
* SS_Data ('''S'''lave '''S'''elect for data): Auswahl des aktuell adressierten Datenregisters
Die beiden SS-Signale sowie SCLK sind im Ruhezustand High, zum Übertragen einer Adresse oder eines Datenwortes zieht der Master (also z.B. der Mikrocontroller) das entsprechende SS-Signal und danach auch SCLK auf Low. Der Master legt ein Datenbit an MOSI an und erzeugt an SCLK eine steigende Flanke. Diese veranlasst den Slave, das Datenbit in sein internes Empfangsschieberegister einzulesen. Das wiederholt sich für die folgenden Bits, wobei die höherwertigen Bits immer zuerst übertragen werden. Sofern gerade ein Datenwort (und keine Adresse) übertragen wird, stellt der Slave gleichzeitig an jeder fallenden SCLK-Flanke (inklusive der ersten) jeweils ein Bit aus seinem Sendesschieberegister an MISO zur Verfügung, das der Master dann an der nächsten steigenden SCLK-Flanke übernehmen kann. Am Ende der Übertragung setzt der Master das SS-Signal wieder auf High.
Bei aktiviertem (also auf Low gezogenem) SS_Address wird das Adressregister angesprochen, bei aktiviertem SS_Data dasjenige Datenregister, das durch das Adressregister angegeben wird.
Die Adressen sind wie folgt belegt:
{| class="wikitable"
!rowspan="2"|Adresse!!rowspan="2"|Richtung!!rowspan="2"|Komponente!!colspan="2"|Bedeutung der Bits!!rowspan="2"|Anmerkungen
|-
|31..16||15..0
|-
|3||W||Quelle für Analogausgänge||Ausgang 1||Ausgang 0||
|-
|4||R||rowspan="2"|Universalzähler||colspan="2"|Status||Bit 1: Überlauf, Bit 0: Signal aktiv
|-
|5||R||colspan="2"|Rohmesswert||Dieser Wert muss noch entsprechend Torzeit bzw. Messfrequenz umgerechnet werden.
|-
|14||W||rowspan="2"|Pulsgenerator||colspan="2"|Pausendauer||
|-
|15||W||colspan="2"|Pulsdauer||
|-
|16||W||rowspan="3"|DDS-Kanal 0||colspan="2"|Wellenform & Modulationsquelle||Bit 18..16: Wellenform, Bit 5..4: PM-Quelle, Bit 3..2: FM-Quelle, Bit 1..0: AM-Quelle
|-
|17||W||colspan="2"|Phaseninkrement||Dieser Wert ist bestimmt direkt die Frequenz.
|-
|18||W||Amplitude||Phasenlage||Vorzeichenbehaftete Werte
|-
|20||W||rowspan="3"|DDS-Kanal 1||colspan="2"|Wellenform & Modulationsquelle||rowspan="9"|siehe Anmerkungen zu DDS-Kanal 0
|-
|21||W||colspan="2"|Phaseninkrement
|-
|22||W||Amplitude||Phasenlage
|-
|24||W||rowspan="3"|DDS-Kanal 2||colspan="2"|Wellenform & Modulationsquelle
|-
|25||W||colspan="2"|Phaseninkrement
|-
|26||W||Amplitude||Phasenlage
|-
|28||W||rowspan="3"|DDS-Kanal 3||colspan="2"|Wellenform & Modulationsquelle
|-
|29||W||colspan="2"|Phaseninkrement
|-
|30||W||Amplitude||Phasenlage
|}


== Bedienung ==
== Bedienung ==
Zeile 139: Zeile 201:
=== Komponenten ===
=== Komponenten ===


'''FPGA Lab''' enthält einen SPI-Slave mit mehreren adressierbaren Registern, der auch als eigenständige Komponente in anderen Projekten eingesetzt werden kann.  
'''FPGA Lab''' enthält einen [http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface SPI]-Slave mit mehreren adressierbaren Registern, der auch als eigenständige Komponente in anderen Projekten eingesetzt werden kann.  


=== Plattform, Portabilität ===
=== Plattform, Portabilität ===


'''FPGA Lab''' wurde unter Verwendung von [http://www.mikrocontroller.net/articles/Xilinx_ISE Xilinx ISE] entwickelt. Im FPGA-Code wurde auf Portabilität geachtet. Alle Bestandteile sind in VHDL implementiert, Schematics werden nicht verwendet. Xilinx-Spezifika wurden fast vollständig vermieden, die interne Taktverdoppelung per DCM ist 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],...). Für nahezu alle Entitäten existieren selbstverifizierende Tests und Konfigurationsdateien für die Kurvenformanzeige im Simulator ISim.   
'''FPGA Lab''' wurde unter Verwendung von [http://www.mikrocontroller.net/articles/Xilinx_ISE Xilinx ISE] entwickelt. Im FPGA-Code wurde auf Portabilität geachtet. Alle Bestandteile sind in VHDL implementiert, Schematics werden nicht verwendet. Xilinx-Spezifika wurden fast vollständig vermieden, die interne Taktverdoppelung per DCM ist 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 des SPI-Slaves,...). Für nahezu alle Entitäten existieren selbstverifizierende Tests und Konfigurationsdateien für die Kurvenformanzeige im Simulator ISim.   


Der auf der FPGA-Karte befindliche Mikrocontroller (ATmega644) vermittelt zwischen dem auf dem FPGA realisierten SPI-Slave einerseits und dem über RS232, USB oder Ethernet angeschlossenen PC andererseits. PC-seitig wird dabei ein einfaches textorientiertes Protokoll benutzt, um bestimmte SPI-Register zu beschreiben oder auszulesen. Für den Mikrocontroller wird (derzeit) die Originalfirmware (Version 2.6) benutzt, sie ist nicht Bestandteil dieses Projektes. Die Bedienoberfläche nutzt das in der Originalfirmware implementierte Textprotokoll. Daher ist bei der Portierung auf eine andere Karte mit Portierungsaufwand bei Bedienoberfläche oder Firmware zu rechnen.  
Der auf der FPGA-Karte befindliche Mikrocontroller (ATmega644) vermittelt zwischen dem auf dem FPGA realisierten [http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface SPI]-Slave einerseits und dem über RS232, USB oder Ethernet angeschlossenen PC andererseits. PC-seitig wird dabei ein einfaches textorientiertes Protokoll benutzt, um bestimmte SPI-Register zu beschreiben oder auszulesen. Für den Mikrocontroller wird (derzeit) die Originalfirmware (Version 2.6) benutzt, sie ist nicht Bestandteil dieses Projektes. Die Bedienoberfläche nutzt das in der Originalfirmware implementierte Textprotokoll. Daher ist bei der Portierung auf eine andere Karte mit Portierungsaufwand bei Bedienoberfläche oder Firmware zu rechnen.  


=== Was noch fehlt ===
=== Was noch fehlt ===

Version vom 26. März 2010, 17:53 Uhr

Diese Seite und das Projekt befinden sich noch im Aufbau (Stand März 2010).

FPGA Lab ist ein FPGA-basiertes Signallabor für die Spartan-3-FPGA-Karte aus dem c´t-Lab und die dazugehörige DACRAM-Erweiterungskarte (Verweise zu diesem Projekt am Ende dieser Seite). Es kombiniert einen modulierbaren Mehrfach-DDS-Generator, einen Universalzähler für Frequenz- und Periodenmessungen sowie einen Pulsgenerator. Dazu gibt es bisher eine LabView-Bedienoberfläche (später auch eine native Windowsanwendung).

Technische Merkmale

  • Universalzähler (Frequenz-/Periodenmesser)
    • Frequenz bis ca. 150 MHz, Periode bis ca. 120 Stunden
    • 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 von 10 ns bis ca. 40 s
  • Ausgänge
    • zwei Analogsignale von frei wählbaren Quellen (DDS-Kanal oder Pulsgenerator) gleichzeitig
    • ein Synchronisationssignal je DDS-Kanal
    • Signal des Pulsgenerators
  • SPI-Slave zur Anbindung an einen Mikrocontroller
    • mehrere addressierbare Register zum Setzen von Konfigurationswerten und Auslesen von Messwerten


Universalzähler (Frequenz-/Periodenmesser)

Dieser Zähler kann entweder die Frequenz eines Signals oder dessen Periode messen. Die Bedienoberfläche errechnet aber auch den jeweils anderen Wert und zeigt beide zusammen an.

Messmethode

Bei der Frequenzmessung dient das externe Signal als Takt für den Zähler, ein internes Torsignal steuert die Dauer des Zählvorganges. Bei der Periodenmessung wird der Zähler durch ein internes Signal getaktet, die steigenden Flanken des externen Signals steuern wiederum die Zähldauer. Je nach Messmethode arbeitet der Zähler also in der Taktdomäne des externen Signals oder des Systemtakts, die zu- und abführenden Signale werden entsprechend synchronisiert.

Der interne Zähler selbst wird durch das jeweils genutzte Torsignal weder gestoppt noch zurückgesetzt, er läuft ständig durch. Das Torsignal steuert lediglich das Auslesen des Zählers, der Messwert ergibt sich dann aus der Differenz des aktuellen und des vorangegangenen Auslesewertes. Das funktioniert auch bei einem Zählerüberlauf, solange danach der aktuelle Auslesewert den vorangegengenen nicht einholt. Der nutzbare Zählbereich hängt also nur von der Bitbreite des Zählers ab. Echte Überläufe dieses nutzbaren Bereiches werden erkannt und signalisiert.

Da das Torsignal auf das Taktsignal einsynchronisiert wird, arbeitet die Ausleselogik bei fehlendem externen Signal nicht mehr, weder bei Frequenz- noch bei Periodenmessung. In diesem Fall wird weiterhin der Wert aus dem letzten Messzyklus ausgegeben. Eine Art Herzschlagsignal zeigt jedoch an, ob Messzyklen stattfinden oder nicht.

Messbereiche

Der interne Zähler ist 32 Bit breit. Messbereich und Auflösung ergeben sich theoretisch bei der Frequenzmessung direkt aus der Torzeit, bei der Periodenmessung aus der Zählfrequenz. Natürlich gibt es aber physikalische Grenzen, die theoretischen Obergrenzen für die Frequenzmessung können nicht annähernd erreicht werden. Beim eingesetzten FPGA sind Messungen bis über 150 MHz möglich.

Die tatsächlich unterstützten Messbereiche sind:

  • Frequenzmessung:
    • Torzeit 10 s (Auflösung 0,1 Hz)
    • Torzeit 1 s (Auflösung 1 Hz)
    • Torzeit 0,1 s (Auflösung 10 Hz)
  • Periodenmessung:
    • Messfrequenz 10 kHz (max > 119 Stunden, Auflösung 100 μs)
    • Messfrequenz 100 kHz (max > 11,9 Stunden, Auflösung 10 μs)
    • Messfrequenz 1 MHz (max > 71 Minuten, Auflösung 1 μs)
    • Messfrequenz 10 MHz (max > 7 Minuten, Auflösung 100 ns)

Modulierbarer 4-Kanal-DDS-Generator

Dieser nach dem DDS-Prinzip arbeitende Generator kann vier unabhängige Signale unterschiedlicher Kurvenformen bereitstellen, die sich vielfältig beeinflussen und untereinander auch modulieren lassen.

Signalformen

Lissajous-Figur mit zwei DDS-Kanälen, X-Kanal Sinus 2,5 kHz, Y-Kanal Sinus 10 kHz
Sägezahn 10 kHz
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.

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.

Phasenlage

Die Phasenlage kann in beide Richtungen um jeweils maximal eine Periode verschoben werden (±2π bzw. 360°). Die Auflösung über den gesamten Bereich von ±2π beträgt intern 32 Bit, die Schnittstelle zur Bedienoberfläche 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.

Modulation

Frequenzmodulation, Träger Sinus 1 kHz, Nutzsignal Sinus 100 Hz, Frequenzhub 500 Hz
Amplitudenmodulation, Träger Sinus 10 kHz, Nutzsignal Sinus 1 kHz, Modulation 50%

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. ±762 Hz (das wird noch geändert) und bei Phasenmodulation ±1/2 Periode (±π bzw. 180°) ausgehend von der eingestellten Phasenlage. Bei Amplitudenmodulation zeigt die Bedienoberfläche an, wenn es zu einer Übermodulation kommt.

Pulsgenerator

Pulssignal, Puls 20 μs, Pause 100 μs

Dieser Generator kann ein Rechtecksignal bereitstellen, bei dem sich die Puls- und Pausendauern unabhängig voneinander jeweils von 10 ns bis 42,9 s einstellen lassen. Die Bedienoberfläche lässt sich derzeit allerdings nur bis 1 s einstellen (das wird noch geändert).

Es existieren mehrere Einstellbereiche:

  • 10 ns bis 1 μs (Auflösung 10 ns)
  • 1 μs bis 1 ms (Auflösung 1 μs)
  • 1 ms bis 1 s (Auflösung 1 ms)

Ausgänge

Jeder der beiden Analogausgänge der DACRAM-Erweiterungskarte kann wahlweise eines der vier DDS-Generatorsignale oder das Pulsgeneratorsignal ausgeben. Parallel dazu stehen die Synchronisationssignale aller vier DDS-Kanäle sowie das Signal des Pulsgenerators zur Verfügung. Die maximale Amplitude der Analogausgänge beträgt ±1,25 V (2,5Vss), die anderen Ausgänge haben LVTTL- bzw. LVCMOS33-Pegel.

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.

SPI-Schnittstelle

Über den SPI-Slave kann ein Master (z.B. ein Mikrocontroller wie der ATmega644 auf der Karte aus dem c´t-Lab) Konfigurationswerte an FPGA Lab übergeben und Messwerte auslesen. Dazu besitzt der SPI-Slave mehrere Datenregister mit 32 Bit Breite, die über ein separates Adressregister ausgewählt werden können.

Der SPI-Slave hat folgende Signale:

  • MOSI (Master Out -> Slave In): zu schreibende Daten zum FPGA Lab
  • MISO (Master In <- Slave Out): gelesene Daten vom FPGA Lab
  • SCLK (Shift Clock): Schiebetakt
  • SS_Address (Slave Select for address): Auswahl des Adressenregisters
  • SS_Data (Slave Select for data): Auswahl des aktuell adressierten Datenregisters

Die beiden SS-Signale sowie SCLK sind im Ruhezustand High, zum Übertragen einer Adresse oder eines Datenwortes zieht der Master (also z.B. der Mikrocontroller) das entsprechende SS-Signal und danach auch SCLK auf Low. Der Master legt ein Datenbit an MOSI an und erzeugt an SCLK eine steigende Flanke. Diese veranlasst den Slave, das Datenbit in sein internes Empfangsschieberegister einzulesen. Das wiederholt sich für die folgenden Bits, wobei die höherwertigen Bits immer zuerst übertragen werden. Sofern gerade ein Datenwort (und keine Adresse) übertragen wird, stellt der Slave gleichzeitig an jeder fallenden SCLK-Flanke (inklusive der ersten) jeweils ein Bit aus seinem Sendesschieberegister an MISO zur Verfügung, das der Master dann an der nächsten steigenden SCLK-Flanke übernehmen kann. Am Ende der Übertragung setzt der Master das SS-Signal wieder auf High.

Bei aktiviertem (also auf Low gezogenem) SS_Address wird das Adressregister angesprochen, bei aktiviertem SS_Data dasjenige Datenregister, das durch das Adressregister angegeben wird.

Die Adressen sind wie folgt belegt:

Adresse Richtung Komponente Bedeutung der Bits Anmerkungen
31..16 15..0
3 W Quelle für Analogausgänge Ausgang 1 Ausgang 0
4 R Universalzähler Status Bit 1: Überlauf, Bit 0: Signal aktiv
5 R Rohmesswert Dieser Wert muss noch entsprechend Torzeit bzw. Messfrequenz umgerechnet werden.
14 W Pulsgenerator Pausendauer
15 W Pulsdauer
16 W DDS-Kanal 0 Wellenform & Modulationsquelle Bit 18..16: Wellenform, Bit 5..4: PM-Quelle, Bit 3..2: FM-Quelle, Bit 1..0: AM-Quelle
17 W Phaseninkrement Dieser Wert ist bestimmt direkt die Frequenz.
18 W Amplitude Phasenlage Vorzeichenbehaftete Werte
20 W DDS-Kanal 1 Wellenform & Modulationsquelle siehe Anmerkungen zu DDS-Kanal 0
21 W Phaseninkrement
22 W Amplitude Phasenlage
24 W DDS-Kanal 2 Wellenform & Modulationsquelle
25 W Phaseninkrement
26 W Amplitude Phasenlage
28 W DDS-Kanal 3 Wellenform & Modulationsquelle
29 W Phaseninkrement
30 W Amplitude Phasenlage


Bedienung

LabView-Bedienoberfläche

LabView-Bedienoberfläche

Derzeit existiert eine mit LabView 8 entwickelte Bedienoberfläche (Beschreibung wird nachgereicht).

Hinweise zur Realisierung

Komponenten

FPGA Lab enthält einen SPI-Slave mit mehreren adressierbaren Registern, der auch als eigenständige Komponente in anderen Projekten eingesetzt werden kann.

Plattform, Portabilität

FPGA Lab wurde unter Verwendung von Xilinx ISE entwickelt. Im FPGA-Code wurde auf Portabilität geachtet. Alle Bestandteile sind in VHDL implementiert, Schematics werden nicht verwendet. Xilinx-Spezifika wurden fast vollständig vermieden, die interne Taktverdoppelung per DCM ist 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 des SPI-Slaves,...). Für nahezu alle Entitäten existieren selbstverifizierende Tests und Konfigurationsdateien für die Kurvenformanzeige im Simulator ISim.

Der auf der FPGA-Karte befindliche Mikrocontroller (ATmega644) vermittelt zwischen dem auf dem FPGA realisierten SPI-Slave einerseits und dem über RS232, USB oder Ethernet angeschlossenen PC andererseits. PC-seitig wird dabei ein einfaches textorientiertes Protokoll benutzt, um bestimmte SPI-Register zu beschreiben oder auszulesen. Für den Mikrocontroller wird (derzeit) die Originalfirmware (Version 2.6) benutzt, sie ist nicht Bestandteil dieses Projektes. Die Bedienoberfläche nutzt das in der Originalfirmware implementierte Textprotokoll. Daher ist bei der Portierung auf eine andere Karte mit Portierungsaufwand bei Bedienoberfläche oder Firmware zu rechnen.

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 zur LabView-Bedienoberfläche
  • Erweiterung zum Arbiträr- bzw. Bitmustergenerator.

Quellcode, Lizenz

FPGA Lab ist quelloffen (Open Source) und wird unter der GNU General Public License (GPL) lizensiert. Der Quellcode wird in Kürze verfügbar sein (ca. April 2010). Einige Sub-VIs in der Lab-View-Bedienoberfläche wurden aus dem Originalprojekt der c´t übernommen, diese sind aber ebenfalls quelloffen und dürfen sogar kommerziell genutzt werden.

Weitere Informationen

FPGA Lab basiert auf dem c't-Lab von Carsten Meyer, c't magazin. Weitere Informationen gibt es hier: