Digital Down Converter im FPGA

Diese Seite soll einen Überblick über die aktuellen Entwicklungen zur Implementierung eines DDC im FPGA bieten.
Ziel ist es ein HF-Frontend für ein DSP basiertes Kurzwellen-SDR(Software Defined Radio) zu schaffen.
Dazu müssen die mit hoher Abtastrate gesampleteten Antennensignale vorverarbeitet(auf einen niedrigeren Frequenzbereich herunter gemischt) und anschliessend in der Datenrate reduziert(dezimiert) werden.
Es wird das Konzept der komplexen I/Q-Verarbeitung genutzt. Die Ausgangssignale der I/Q-Mischung bilden dann den Ausgangspunkt zur Demodulation in einem digitalen Signalprozessor(DSP).

Für Grundlagen der I/Q-Verarbeitung empfehle ich [1], für das gesamte Thema des Software Defined Radio allgemein [2] und Signalverarbeitung mit FPGA im Speziellen [4].

Konzept

Zuerst wird ein Testsystem zur Verifizierung der Signalverarbeitung im FPGA entwickelt. Anschliessend fliessen die mit dem Testsystem gemachten Erfahrungen in eine Leiterplatte, die ein gesamtes HF-Frontend von Antennenanschluss über FPGA bis zum DSP-Interface bietet.

Zur Unterstützung während der Entwicklung wird eine Schnittstelle vorgesehen um die I- und Q-Signale am PC von bestehender Software zu demodulieren.

Zum Empfang von Kurzwellen-Signalen ist ein Empfangsbereich von mindestens 1,8 bis 30MHz nötig. Zusätzlich soll die Möglichkeit des Empfangs von Signalen im 2m- bzw. 70cm-Ameteurfunk-Band untersucht werden.

Als Basis des Testsystems wurde das LPRP von Arrow mit einem Altera Cyclone III(EP3C25) gewählt. Es bietet einen integrierten Programmieradapter, einen I²S-Audio-Codec zur NF-Ausgabe und ein User-Interface mit 12 freikonfigurierbaren GPIOs.

Der Programmieradapter wurde so modifiziert, dass darüber auch USB-Kommunikation zwischen FPGA und PC möglich ist. Für das User-Interface wurde ein ADC-Modul mit einem 100MSps-ADC entworfen. Später wurde eine USB-Soundkarte, die eine digitale S/PDIF-Schnittstelle bietet, hinzugefügt.

Über die USB-Schnittstelle des Programmieradapters können die I/Q-Signale mit einer Bandbreite von bis zu 200kHz bei 16bit übertragen werden. Später soll darüber die Konfiguration der Empfangsfrequenz realisiert werden können.

Zusätzlich kann über die USB-Audio-Schnittstelle 24bit/48kHz I/Q-Signale in einem für Standard-SDR-Software kompatiblen Format übertragen werden.

Übersicht

Das HF-Signal wird vom Analog-Digital-Wandler mit 49,152MHz gesamplet. Im IQ-Mixer wird das heruntergemischte Signal per Dezimation auf 48kHz Bandbreite gewandelt. Die heruntergemischten 16bit I- und Q-Daten können mit 3 verschiedenen Schnittstellen(USB, S/PDIF und analog) zum PC übertragen werden.




Erste Tests erfolgten mit generierten Signalen aus dem Signalgenerator und bestätigten die Funktion des DDC. Bald kam der Wunsch auf modulierte Signale zu empfangen und zugleich die Fähigkeit der Unterabtastung auszutesten.

Dazu wurde ein Bandpass-Filter für das 2m-Band vor dem ADC geschalten und ein erster vorführbarer Testaufbau realisiert:

Damit ist es möglich Signale im 2m-Band zu empfangen. Die Empfangsfrequenz fRX ergibt sich aus der Samplerate des ADC fADC und der eingestellten Frequenz des internen NCO fNCO per Unterabtastung in der 6. Nyquist-Ebene:
fRX = 3 * fADC - fNCO
Beispiel: Zum Empfang auf fRX = 145,5MHz ist bei einer Abtastfrequenz von 49,152MHz die Frequenz fNCO = 1,956MHz einzustellen.
Zur Demodulation wurde SDR# verwendet. Bildschirmfoto des 2m-Empfangs:

Die Möglichkeit des 70cm-Empfangs ist noch zu untersuchen. Laut Datenblatt [3] besitzt der eingesetzte ADC eine Analogbandbreite von 475MHz. Zudem ist die Veränderung des Signal-zu-Rauschabstands bei Verdopplung der Abtastfrequenz zu untersuchen.

IQ-Mixer

Die gesamte Signalverarbeitung befindet sich im Modul des IQ-Mixers. Das hochfrequente Eingangssignal vom ADC(RF) wird mit einem komplexen NCO gemischt und anschliessend mit einem CIC Dezimator dezimiert.



VHDL-Implementierung IQ-Mixer

Numerical Controlled Oscillator

Der NCO erzeugt ein komplexes Local Oscillator-Signal. Die Berechnung des Signalverlaufes erfolgt mittels CORDIC-Algorithmus, der eine hohe Phasen- und somit Frequenzauflösung ermöglicht.
Der aktuelle Phasenwert ergibt sich durch das Aufsummieren des Frequenzkontrollworts(FCW).
Die Frequenzauflösung ergibt sich aus der Phasenauflösung P und der Samplefrequenz fADC.
Beispiel für 24bit Phasenauflösung: fmin = fADC / P = 2,93Hz



VHDL-Implementierung NCO

Cascaded Integrator Comb Decimator

VHDL-Implementierung CIC

USB Interface

Analyse der USB-Schnittstelle
Untersuchung zum USB-Datendurchsatz
VHDL-Implementierung USB

S/PDIF

Informationen zur VHDL-Implementierung von S/PDIF auf ACK.space
VHDL-Implementierung S/PDIF

I²S Interface

VHDL-Implementierung I²S
VHDL-Implementierung LM4921
VHDL-Implementierung SPI


Aktueller Stand: 31. Oktober 2013
Sebastian Weiss(DL3YC)

Quellen

[1]: Quadratursignale: Komplex, aber nicht kompliziert(deutsch)
[2]: Krink(DL7BJK): SDR - Software Defined Radio für den Funkamateur
[3]: Analog Devices AD9283 Datasheet
[4]: U. Meyer-Baese: Digital Signal Processing with Field Programmable Gate Arrays