FPGA-DSP-Radio für Schmalbandkommunikation [ 150177
Ich arbeite an einem kompletten Hochleistungs-Transceiver für Schmalband-SSB/CW (und möglicherweise auch AM und FM) auf Kurzwelle und/oder VHF (Amateurfunkbänder), basierend auf der Signalverarbeitung in einem FPGA zusammen mit einem 24-Bit-ADC und einem sehr schnellen DAC. Es ist eigenständig und nicht wie die meisten anderen SDR-Projekte, die auf einen PC angewiesen sind.
Ich arbeite an einem kompletten Hochleistungs-Transceiver für Schmalband-SSB/CW (und möglicherweise auch AM und FM) auf Kurzwelle und/oder VHF (Amateurfunkbänder), basierend auf der Signalverarbeitung in einem FPGA zusammen mit einem 24-Bit-ADC und einem sehr schnellen DAC.
Es ist eigenständig und nicht wie die meisten anderen SDR-Projekte, die auf einen PC angewiesen sind.
Eine funktionierende Demo finden Sie unter https://www.youtube.com/watch?v=BCwOSmN_0kI.
Unter https://sm6vfz.wordpress.com/dspsdr-with-fpga/ gibt es einen Entwurf eines Projektlogbuchs mit einigen Bildern. HF-Schaltkreise, einschließlich LO-Synthesizer, werden ebenfalls von Grund auf neu gebaut.
Aus dem Labor: FPGA-DSP-Board für Schmalbandradio Dank Daniel können wir ein brillantes Design präsentieren. Seien wir ehrlich, alle Ehre gebührt Daniel. Wir haben die Leiterplatten unter Anleitung und Korrekturen von Daniel entworfen. Wir haben dieses Projekt Ende 2015 gestartet. Das mag wie eine lange Zeit erscheinen, aber jetzt haben wir wirklich etwas vorzuweisen. (Text von Daniel)Abstrakt Dieses Projekt stellt eine Platine für den Hochleistungs-Schmalband-Funkbetrieb vor. Es verfügt über einen 24-Bit-ADC zum Abtasten bei Zwischenfrequenz im Empfangsmodus, einen Cyclone IV FPGA für die Signalverarbeitung, einen Hochgeschwindigkeits-DAC für die lokale Oszillator- und Sendesignalerzeugung, ein für Digital-to-Mic/Lautsprecher codiertes Audio und einen TCXO für Hochfrequenzstabilität und eine I2C- oder UART-Schnittstelle für einen Host-Controller. Außerdem wird ein einfaches Radio-Frontend-Board vorgestellt, mit dem man problemlos einen Transceiver für Kurzwelle bauen kannSchaltungsbeschreibung Das Herz (oder Gehirn) des Boards besteht aus dem EP4CE10 Cyclone IV FPGA von Intel, ehemals Altera (IC4). Hierbei handelt es sich um einen Chip, der für praktisch jede digitale Funktion konfiguriert werden kann. Seine Gates werden beim Start entsprechend der Firmware in einem externen Flash (IC5) angeschlossen, der als Konfigurationsspeicher bekannt ist. Für die Audio-Ein- und -Ausgabe gibt es einen „Codec“, TLV320AIC20K (IC3), der aus zwei ADCs und besteht DACs mit 16-Bit-Auflösung und maximal 25 ksps. Es enthält einen digitalen 8-kHz-Tiefpassfilter sowie einen Mikrofonverstärker und einen Lautsprechertreiber, der 250 mW an 8 Ohm liefern kann. Für alle analogen Audio-I/Os gibt es wählbare Verstärkungs-/Dämpfungsfaktoren für die Lautstärkeregelung usw. Neben dem Anschluss an Lautsprecher (K2) und Mikrofon (K3) sind an K4 weitere Kanäle angeschlossen, die für die Audioverbindung mit Zusatzgeräten verwendet werden können . Der Haupteingang der Platine ist ein Differenzsignal, typischerweise im Hunderter-kHz-Bereich, an K1. Dies passiert einen differenziellen Operationsverstärker (IC1) und einen diskreten Filter, um schließlich in einem AD7760 24-Bit-ADC (IC2) digitalisiert zu werden. Dieser Chip verfügt über viele Versorgungsanschlüsse, die durch Spannung und/oder passive Filterung getrennt sind. Sein Haupttakt kommt vom FPGA und wird durch IC8 auf 5 V Swing verstärkt. Auf der Platine befindet sich außerdem ein schneller Zweikanal-DAC, DAC5672 (IC6), mit Ausgangstransformatoren für Differenz-zu-Single-Ended und Tiefpassfilterung, der Signale bis zu 50 MHz durchlässt. Seine beiden Ausgangskanäle, A und B genannt, stehen an K8 und K9 zur Verfügung. Um alles zu takten, ist ein 20 MHz TCXO (IC7) auf der Platine. Dieser Takt wird dem FPGA zugeführt und dann an die Peripherie-ICs weiterverteilt. Die Frequenz kann mit Potentiometer P1 fein eingestellt werden. Es gibt auch einen Eingang für eine externe Referenzquelle, sofern diese verfügbar ist (K5). Abhängig von der Verfügbarkeit einer externen Referenz kann der TCXO über T1 ein- oder ausgeschaltet werden. Sowohl das Signal vom TCXO als auch die externe Referenz werden dem FPGA über ungepufferte Inverter zugeführt, die zur analogen Verstärkung angeschlossen sind (IC9, IC10). Diese Signale können dann einen moderaten Spannungshub aufweisen. Der Takt wird im FPGA heruntergeteilt, um in LED1 ein niederfrequentes Blinken zu erzeugen, das anzeigt, dass der Takt läuft und das FPGA konfiguriert ist. Eine an K10 eingehende Versorgungsspannung von 5 V wird an vier verschiedene LDOs (IC11-14) verteilt, um die für die verschiedenen Chips erforderlichen Spannungen bei 1,2 V, 1,8 V, 2,5 V und 3,3 V zu erzeugen. Die Schnittstelle zum Host-Controller besteht aus zwei Pins, die für die I2C- oder UART-Kommunikation vorgesehen sind und über einen Lötjumper (JP1) ausgewählt werden können. Es gibt außerdem sieben zusätzliche GPIOs (bei K7), die typischerweise für PTT- (Push-to-Talk) und Morsetastensignale verwendet werden. Es sollte auch möglich sein, diese Pins für I2S-Audio-I/O zu verwenden. Darüber hinaus gibt es eine JTAG-Schnittstelle zur Programmierung des FPGA und seines Konfigurationsspeichers (K6).Programmierung Die kompilierte Firmware für dieses Projekt mit dem Namen „TRX“ ist als „JTAG Indirect Configuration“-Datei (trx.jic) verfügbar, die zunächst das FPGA als Brücke konfiguriert und dann über diese den Konfigurationsspeicher programmiert. Dies geschieht mit Hilfe eines „USB-Blasters“, der über USB mit einem PC verbunden wird und so eine JTAG-Schnittstelle zur Platine bildet. Ein solches Gerät kann sehr günstig gekauft werden – schauen Sie bei eBay, AliExpress und ähnlichen Seiten nach. Die auf dem PC zu verwendende Software heißt Quartus Lite und kann kostenlos von der Intel/Altera-Website heruntergeladen werden. Sollte die komplette Entwicklungsumgebung nicht von Interesse sein, besteht die Möglichkeit, nur die für die Programmierung benötigten Anwendungen herunterzuladen. Die Quartus-Suite ist sowohl für Windows- als auch für Linux-Computer verfügbar.Steuerschnittstelle Bei einem eigenständigen Radio wäre der Controller wahrscheinlich eine kleine Mikrocontrollerplatine mit Display und Tasten. Dies könnte mit einem PIC, AVR, STM32 oder im Grunde jedem anderen Prozessortyp entworfen werden. Es könnte sich auch um ein fertiges Arduino, Teensy, Platino oder jedes andere beliebte Prototyping-Board handeln. Für Experimente oder wenn ein Monitor und eine Maus/Tastatur kein Hindernis darstellen, stellt ein Raspberry Pi eine flexible Steuerungsschnittstelle dar. Für den Raspberry Pi (oder jeden anderen Linux-Computer) wurde ein Applet in Python mit dem grafischen GTK-Framework geschrieben, das den Zugriff auf die Steuerelemente erleichtert. Dieses Applet stellt standardmäßig über den seriellen UART-Port eine Verbindung zur FPGA-Karte her. Es verfügt außerdem über einen experimentellen Socket-Modus, um den Fernbetrieb zu ermöglichen. Die Idee besteht dann darin, einen Server auf einem Raspberry Pi am Standort des Radios zu betreiben und mit dem Applet von einem entfernten Computer aus eine Verbindung zu diesem Pi herzustellen. Angesichts der großen Menge an künstlichem Lärm in städtischen Gebieten und der Einschränkungen bei der Installation Aufgrund der großen Antennen an diesen Standorten wird die Möglichkeit der Fernbedienung für Funkamateure und Kurzwellenhörer immer interessanter. Um dies zu vermeiden, sollte es auch möglich sein, das Audio vom FPGA direkt auf die PCM/I2S-Ports des Raspberry Pi zu leiten den Umweg über analoges Audio bei der Fernbedienung. Dies muss noch getestet werden.Funkplatine Außerdem wurde ein Entwurf einer einfachen HF-/Funkplatine mit wenigen Komponenten erstellt, der dem oben angegebenen Blockdiagramm (TBD) entspricht. Die Antenne wird an K1 angeschlossen, wo sie einen Tiefpassfilter sieht, der FM-Rundfunksignale und andere potenzielle VHF/UHF-Störer entfernt. Das antiparallele Diodenpaar D1 begrenzt den Durchgang sehr starker Signale durch den Filter und bietet gleichzeitig einen Gleichstrom-Rückweg für statische Aufladung, die sich andernfalls in einem langen und isolierten Antennendraht aufbauen kann. Der bewährte SA602-Chip (IC1) verstärkt dann das Signal und mischen Sie es mit dem von DAC A an K2. Ein Quarzfilter, FL1, sorgt für eine scharfe Filterung bei der ersten Zwischenfrequenz. Die Impedanzen des SA602 und des Filters passen ziemlich gut zusammen, sodass keine zusätzlichen Anpassungskomponenten (die normalerweise erforderlich wären) verwendet werden. Anschließend folgt ein weiterer SA602 (IC2), der sich mit dem DAC-B-Signal mischt und die zweite ZF als Differenzsignal (an K4) erzeugt, das dem ADC der FPGA-Karte zugeführt wird. Die HF- und FPGA-Karten funktionieren zusammen mit einem passenden Controller zur Frequenzwahl etc. sehr gut für den Empfang von nahezu Null bis etwa 30 MHz. Wenn der Empfänger an eine große Antenne angeschlossen ist, die sowohl schwache als auch starke Signale empfängt, geht er nicht so schnell in die Sättigung und erzeugt fehlerhaften Ton, wie es bei vielen anderen SDR-Lösungen der Fall ist. Es kann daher für ernsthafte Arbeiten und den Empfang seltener und schwacher Signale verwendet werden.Stückliste FPGA DSP-Board (150177-1 v2.1)WiderstandR1,R2,R3,R4 = 560 Ω, 1 %, 0W1, SMD 0603R5,R6,R25,R28,R30,R34,R35,R36,R44-R47,R48,R53 = 10 kΩ, 1 %, 0W1, SMD 0603R7,R32,R33 = 330 Ω, 1 %, 0W1, SMD 0603R8-R11,R19-R22,R37,R38,R39,R41 = 1 kΩ, 1 %, 0W1, SMD 0603R12,R13 = 18 Ω, 1 %, 0W1, SMD 0603R14,R17,R18 = 10 Ω, 1 %, 0W1, SMD 0603R15,R49-R52,R54-R58 = 100 Ω, 1 %, 0W1, SMD 0603R16 = 160 kΩ, 1 %, 0W1, SMD 0603R23 = 47 kΩ, 1 %, 0W1, SMD 0603R24,R29,R31 = 27 Ω, 1 %, 0W1, SMD 0603R26 = 100 kΩ, 1 %, 0W1, SMD 0603R27,R42,R43 = nicht montiertR40 = 2k0, 1 %, 0W1 , SMD 0603P1 = 10 kΩ, 20 %, Trimmer, 4,5 mm, 250 mW, SMD (3314G-2-103E, Bourns) KondensatorC1,C2,C5-C8,C14,C16-C19,C20,C22,C23,C25, C27, C28, C29, C42, C44, C46, C47, C48, C50, C52, C53-C64, C66, C68, C70, C72, C73, C74, C75, C76, C77, C78, C79, C80, C81, C82,C92,C95,C98,C105,C106 = 100 nF, 10 %, 50 V, X7R, SMD 0603C3,C4,C33,C34,C35 = nicht montiertC9 = 5p6 ± 0,25 pF, 50 V, C0G/NP0, SMD 0603C10,C11 = 27 pF, 1 %, 100 V, C0G/NP0, SMD 0603C12,C21 = 10 nF, 10 %, 50 V, X7R, SMD 0603C13,C43,C89,C90,C102,C103,C104,C107, C108,C109,C110 = 47 µF, 10 %, 16 V, Tantal, 0,35 Ω, SMD Gehäuse C (TR3C476K016C0350, Vishay)C15 = 33 pF, 5 %, 50 V, C0G/NP0, SMD 0603C24,C26 = 10 µF, 10 %, 6V3, X7R, SMD 0805C30,C31,C32 = 10 pF, 5 %, 50 V, C0G/NP0, SMD 0603C36 = 1 nF, 10 %, 50 V, %, 50 V, X7R, SMD 0603C39,C40,C41,C93,C96,C99 = 1 µF, 10 %, 16 V, X7R, SMD 0603C45,C49,C51 = 100 pF, 5 %, 50 V, C0G/NP0 , SMD 0603C83,C85,C86,C88 = 120 pF, 5 %, 50 V, C0G/NP0C84,C87 = 180 pF, 5 %, 50 V, C0G/NP0, SMD 0603C65,C67,C69,C71,C91,C94 ,C97,C100,C101 = 2µ2, 10 %, 6V3, L18,L19,L20,L21,L22,L23,L24,L25,L30,L31,L32,L33,L34,L35,L36,L37,L38,L39,L40 = 1 kΩ@100 MHz, 0Ω6, 200 mA, SMD 0603 (HZ0603B102R-10, Laird Technologies)L5 = 15 nH, 5 %, 0Ω17, 700 mA, fres 4 GHz (CW160808-15NJ, Bourns)L26,L27,L28,L29 = 180 nH, 2 %, 0Ω64, 0A4, SMD 0805 (0805CS-181XGLB, Coilcraft)TR1,TR2 = TC4-1WG2+ (Mini-Circuits) SemiconductorIC1 = OPA2374AIDG4, SMD SO-8IC2 = AD7760BSVZ, SMD TQFP-64IC3 = TLV320AIC20KIPFB, SMD, TQFP-48IC4 = EP4CE10E22 C8N, TQFP-144IC5 = M25P40-VMN6PB, SOIC-8IC6 = DAC5672IPFB, SMD 5 x 3,2 mmIC7 = 20 MHz Quarzoszillator, adj., 5 x 3,2 mm (ASVTX-09-20.000MHZ-T, Abracon)IC8,IC9,IC10 = 74AHC1GU04W5-7 , SMD SOT-25IC11 = LP3891EMR-1.2/NOPB, SMD SOIC-8+PowerPADIC12 = TPS73018DBVT, SMD SOT-23-5IC13 = TPS79625DCQG4, SMD SOT-223-6 (DCQ6)IC14 = TPS79633DCQ, SMD SOT-223-6 ( DCQ6)LED1,LED2,LED3 = LED, grün, 50 mcd, 2,1 V bei 20 mA, SMD 0805 (KP-2012CGCK, Kingbright)T1 = PMV65XP, SMD SOT-23-3T2 = IRF9321PBF, SMD SOIC-8 AndereK1,K3 = Stiftleiste, 3-fach, SIL, Raster 2,54 mm, vertikal, DurchgangslochK2 = Stiftleiste, 2-fach, SIL, Raster 2,54 mm, vertikal, DurchgangslochK4 = Stiftleiste, 14-polig, SIL, Raster 2,54 mm, vertikal, DurchgangslochK5,K8,K9 = SMA-Stecker, gerade Buchse, weiblich, Durchgangsloch, 50 ΩK6 = Stiftleiste, 2x5, vertikal, Rastermaß 2,54 mm, DurchgangslochK7 = Stiftleiste, 10-polig, SIL, Rastermaß 2,54 mm, vertikal, DurchgangslochK10 = Klemmenblock, 2-polig, Raster 5,08 mm, Durchgangsloch Misc.PCB 150177-1 v2.1Stückliste 160160-1 v1.1WiderstandR1,R2,R10 = 1 kΩ, 1 %, 0W1, SMD 0603R3,R5 = 56 Ω, 1 %, 0W1, SMD 0603R4,R6 = 120 Ω, 1 %, 0W1, SMD 0603R7 = 5,6 kΩ, 1 %, 0W1 , SMD 0603R8 = 22 kΩ, 1 %, 0W1, SMD 0603R9 = 330 Ω, 1 %, 0W25, SMD 1206 KondensatorC1,C4 = 150 pF, 5 %, 50 V, C0G/NP0, SMD 0603C2,C3 = 270 pF, 5 %, 50 V, C0G/NP0, SMD 0603C5,C6,C8,C9,C11,C13-C18 = 100 nF, 10 %, 25 V, X7R, SMS 0603C7 = 1 nF, 5 %, 100 V, C0G. NP0, SMD 0603C10 = 8,2 pF, +/-0,25 pF, 50 V, C0G/C12 = 10 pF, 5 %, 50 V InduktorL1,L2,L3 = 330 nH, 5 %, 310 mA, Frequenz 600 MHz (36502AR33JTDG, TE Connectivity)L4,L5,L6 = 1000 Ω bei 100 MHz, 200 mA (HZ0603B102R-10, Laird Technologies) HalbleiterD1 = BAS70-04, SMD SOT-23LED1 = LED, grün, 50 mcd, 2,1 V bei 20 mA, SMD 0805T1 = BFR520, 300 mW, 70 mA, 9 GHz, SMD SOT-23IC1,IC2 = SA602AD, SMD SO-8 AndereK1,K2,K3,K5 = SMA-Stecker, gerade Buchse, Buchse mit Durchgangsloch, 50 ΩK4 = Stiftleiste, 3-Wege, SIL, Raster 2,54 mm, vertikal, DurchgangslochK6,K7 = Klemmenblock, 2-Wege, Raster 5,08 mm, DurchgangslochFL1 = 45 MHz, 1 kOhm, Quarzfilter, 15 kHz (30 kHz könnten auch funktionieren, 7,5 kHz ist zu schmal), SMD Misc.PCB 160160-1 v1.1
Ich arbeite an einem kompletten Hochleistungs-Transceiver für Schmalband-SSB/CW (und möglicherweise auch AM und FM) auf Kurzwelle und/oder VHF (Amateurfunkbänder), basierend auf der Signalverarbeitung in einem FPGA zusammen mit einem 24-Bit-ADC und einem sehr schnellen DAC. Es ist eigenständig und nicht wie die meisten anderen SDR-Projekte, die auf einen PC angewiesen sind. Aus dem Labor: FPGA-DSP-Karte für Schmalbandfunk Zusammenfassung Schaltkreisbeschreibung Programmierung Steuerschnittstelle Funkkarte Stückliste FPGA DSP-Karte (150177-1 v2.1) Stückliste 160160-1 v1.1