banner

Blog

Aug 06, 2023

Radio FPGA DSP pour communications à bande étroite [ 150177

Je travaille sur un émetteur-récepteur complet haute performance pour bande étroite SSB/CW (et éventuellement aussi AM et FM) sur ondes courtes et/ou VHF (bandes radio amateur) basé sur le traitement du signal dans un FPGA avec un ADC 24 bits et un très rapide DAC.Il est autonome et différent de la plupart des autres projets SDR qui reposent sur un PC.

Je travaille sur un émetteur-récepteur complet haute performance pour bande étroite SSB/CW (et éventuellement aussi AM et FM) sur ondes courtes et/ou VHF (bandes radio amateur) basé sur le traitement du signal dans un FPGA avec un ADC 24 bits et un très rapide CAD.

Il est autonome et différent de la plupart des autres projets SDR qui reposent sur un PC.

Voir https://www.youtube.com/watch?v=BCwOSmN_0kI pour une démonstration fonctionnelle.

Sur https://sm6vfz.wordpress.com/dspsdr-with-fpga/, vous trouverez un projet de journal de bord du projet avec quelques images. Les circuits RF, y compris le synthétiseur LO, sont également en cours de construction à partir de zéro.

Du labo : carte DSP FPGA pour radio à bande étroite Grâce à Daniel, nous sommes en mesure de présenter un design brillant. Soyons honnêtes, tout le mérite revient à Daniel. Nous avons conçu les PCB avec les conseils et les corrections de Daniel. Nous avons commencé ce projet fin 2015, cela peut sembler long mais maintenant nous avons vraiment quelque chose à montrer. (Texte de Daniel)Abstrait Ce projet présente une carte pour un fonctionnement radio haute performance à bande étroite. Il comprend un ADC 24 bits pour l'échantillonnage à fréquence intermédiaire en mode réception, un FPGA Cyclone IV pour le traitement du signal, un DAC haute vitesse pour l'oscillateur local et la génération de signal de transmission, un audio codé pour le numérique vers micro/haut-parleur, un TCXO pour une stabilité à haute fréquence et une interface I2C ou UART pour un contrôleur hôte. Une simple carte frontale radio est également présentée, avec laquelle on peut facilement construire un émetteur-récepteur pour ondes courtesDescriptif des circuits Le cœur (ou cerveau) de la carte est constitué du FPGA EP4CE10 Cyclone IV d'Intel, anciennement Altera (IC4). Il s'agit d'une puce qui peut être configurée pour pratiquement n'importe quelle fonction numérique. Ses portes sont connectées au démarrage selon le firmware dans un flash externe (IC5) qui est connu comme la mémoire de configuration. Pour l'entrée et la sortie audio, il y a un "codec", TLV320AIC20K (IC3), qui se compose de deux ADC et DAC à une résolution de 16 bits et un maximum de 25 ksps. Il intègre un filtre passe-bas numérique de 8 kHz, ainsi qu'un amplificateur de micro et un pilote de haut-parleur pouvant délivrer 250 mW sous 8 Ohm. Pour toutes les E/S audio analogiques, il existe des facteurs de gain/atténuation sélectionnables pour le contrôle du volume, etc. Outre la connexion au haut-parleur (K2) et au micro (K3), il a d'autres canaux connectés à K4 qui peuvent être utilisés pour la connexion audio à l'équipement auxiliaire. . L'entrée principale de la carte est un signal différentiel typiquement dans la gamme des centaines de kHz, à K1. Cela passe par un amplificateur opamp différentiel (IC1) et un filtre discret, pour finalement être numérisé dans un CAN AD7760 24 bits (IC2). Cette puce possède de nombreuses connexions d'alimentation, qui sont séparées par un filtrage de tension et/ou passif. Son horloge maître provient du FPGA et est amplifiée à 5V swing par IC8. Il y a aussi un DAC rapide à deux canaux sur la carte, DAC5672 (IC6) avec des transformateurs de sortie, pour un filtrage différentiel à asymétrique et passe-bas qui laisse passer des signaux jusqu'à 50 MHz. Ses deux canaux de sortie, appelés A et B, sont disponibles en K8 et K9. Pour tout cadencer un TCXO 20 MHz (IC7) est sur la carte. Cette horloge est transmise au FPGA puis redistribuée aux circuits intégrés périphériques. La fréquence peut être ajustée avec le potentiomètre P1. Il existe également une entrée pour une source de référence externe lorsqu'elle est disponible (K5). Selon la disponibilité d'une référence externe, le TCXO peut être activé ou désactivé via T1. Le signal du TCXO et la référence externe sont transmis au FPGA via des onduleurs sans tampon connectés pour une amplification analogique (IC9, IC10). Ces signaux peuvent alors présenter une oscillation de tension modérée. L'horloge est divisée dans le FPGA pour générer un flash basse fréquence dans la LED1, indiquant que l'horloge fonctionne et que le FPGA est configuré. Une tension d'alimentation de 5V, entrant à K10, est distribuée à quatre LDO différents (IC11-14) pour générer les tensions nécessaires aux différentes puces, à 1,2V, 1,8V, 2,5V et 3,3V L'interface avec le contrôleur hôte se compose de deux broches destinées à la communication I2C ou UART, sélectionnables par cavalier à souder (JP1). Il existe également sept GPIO supplémentaires (à K7) utilisés généralement pour les signaux PTT (Push-to-talk) et Morse. Il devrait également être possible d'utiliser ces broches pour les E/S audio I2S. De plus, il existe une interface JTAG pour la programmation du FPGA et sa mémoire de configuration (K6).La programmation Le micrologiciel compilé pour ce projet, nommé "TRX", est disponible sous la forme d'un fichier de "configuration indirecte JTAG" (trx.jic) qui configure d'abord le FPGA en tant que pont, puis programme la mémoire de configuration via le premier. Cela se fait à l'aide d'un "USB Blaster" qui se connecte à un PC via USB pour former une interface JTAG avec la carte. Un tel appareil peut être acheté à très bon marché - regardez sur eBay, AliExpress et des sites similaires. Le logiciel à utiliser côté PC est connu sous le nom de Quartus Lite et peut être téléchargé gratuitement à partir du site Web d'Intel/Altera. Si l'environnement de développement complet n'est pas intéressant, il est possible de télécharger uniquement les applications nécessaires à la programmation. La suite Quartus est disponible pour les ordinateurs Windows et Linux.Interface de contrôle Dans une radio autonome, le contrôleur serait probablement une petite carte de microcontrôleur avec écran et boutons. Cela pourrait être conçu avec un PIC, AVR, STM32 ou tout autre type de processeur. Il peut également s'agir d'un Arduino, d'un Teensy, d'un Platino prêt à l'emploi ou de toute autre carte de prototypage populaire. Pour les expériences, ou lorsqu'un moniteur et une souris/un clavier ne sont pas un obstacle, un Raspberry Pi constitue une interface de contrôle flexible. Pour le Raspberry Pi (ou tout autre ordinateur Linux), une applet a été écrite en Python, avec le framework graphique GTK, qui rend les commandes facilement accessibles. Cette applet se connecte à la carte FPGA via le port série UART par défaut. Il dispose également d'un mode socket expérimental, pour permettre un fonctionnement à distance. L'idée est alors d'exécuter un serveur sur un Raspberry Pi à l'emplacement de la radio et de se connecter à ce Pi avec l'applet d'un ordinateur distant. Avec la grande quantité de bruit artificiel dans les zones urbaines, et avec les limitations d'installation de grandes antennes dans ces endroits, l'option de fonctionnement à distance devient de plus en plus intéressante pour les radioamateurs et les auditeurs d'ondes courtes. Il devrait également être possible d'acheminer l'audio du FPGA directement vers les ports PCM/I2S du Raspberry Pi afin d'éviter le détour par audio analogique lors d'une opération à distance. Cela reste à tester.Carte radio Une conception d'une simple carte RF / radio avec peu de composants qui satisfait le schéma fonctionnel TBD ci-dessus a également été réalisée. L'antenne est connectée à K1 où elle voit un filtre passe-bas supprimant les signaux de diffusion FM et d'autres interférences VHF/UHF potentielles. La paire de diodes anti-parallèles D1 limite les signaux très forts traversant le filtre tout en fournissant un chemin de retour CC pour la charge statique qui, autrement, peut s'accumuler dans un fil d'antenne long et isolé. La puce SA602 éprouvée (IC1) amplifie ensuite le signal et le mélanger avec celui provenant du DAC A, en K2. Un filtre à cristal, FL1, ajoute un filtrage net à la première fréquence intermédiaire. Les impédances du SA602 et du filtre correspondent assez bien, donc aucun composant d'adaptation supplémentaire (qui serait normalement nécessaire) n'est utilisé. Un autre SA602 suit ensuite (IC2), qui se mélange avec le signal DAC B et produit le deuxième IF sous forme de signal différentiel (en K4) à alimenter vers l'ADC de la carte FPGA. Les cartes RF et FPGA, associées à un contrôleur approprié pour la sélection de fréquence, etc., fonctionnent très bien pour une réception de pratiquement zéro à environ 30 MHz. Lorsqu'il est connecté à une grande antenne, qui capte les signaux faibles et forts, le récepteur ne sature pas facilement et ne produit pas d'audio indésirable comme de nombreuses autres solutions SDR. Il peut donc être utilisé pour les travaux sérieux et la réception de signaux rares et faibles.Nomenclature Carte DSP FPGA (150177-1 v2.1)RésistanceR1,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, CMS 0603R14,R17,R18 = 10 Ω, 1 %, 0W1, CMS 0603R15,R49-R52,R54-R58 = 100 Ω, 1 %, 0W1, CMS 0603R16 = 160 kΩ, 1 %, 0W1, CMS 0603R23 = 47 kΩ, 1 %, 0W1, SMD 0603R24,R29,R31 = 27 Ω, 1 %, 0W1, SMD 0603R26 = 100 kΩ, 1 %, 0W1, SMD 0603R27,R42,R43 = non montéR40 = 2k0, 1%, 0W1 , SMD 0603P1 = 10 kΩ, 20 %, trimmer, 4,5 mm, 250 mW, SMD (3314G-2-103E, Bourns) CondensateurC1,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 = non montéC9 = 5p6 ± 0,25 pF, 50 V, C0G/NP0, SMD 0603C10,C11 = 27 pF, 1 %, 100 V, C0G/NP0, CMS 0603C12,C21 = 10 nF, 10 %, 50 V, X7R, CMS 0603C13,C43,C89,C90,C102,C103,C104,C107, C108,C109,C110 = 47 µF, 10 %, 16V, tantale, 0,35 Ω, CMS boîtier C (TR3C476K016C0350, Vishay)C15 = 33 pF, 5 %, 50 V, C0G/NP0, SMD 0603C24,C26 = 10 µF, 10 %, 6V3, X7R, CMS 0805C30,C31,C32 = 10 pF, 5 %, 50 V, C0G/NP0, CMS 0603C36 = 1 nF, 10 %, 50 V, X7R, CMS 0603C37,C38 = 22 nF, 10 %, 50 V, X7R, CMS 0603C39,C40,C41,C93,C96,C99 = 1 µF, 10 %, 16 V, X7R, CMS 0603C45,C49,C51 = 100 pF, 5 %, 50 V, C0G/NP0 , CMS 0603C83,C85,C86,C88 = 120 pF, 5 %, 50 V, C0G/NP0C84,C87 = 180 pF, 5 %, 50 V, C0G/NP0, CMS 0603C65,C67,C69,C71,C91,C94 ,C97,C100,C101 = 2µ2, 10 %, 6V3, X7R, CMS 0603 InducteurL1,L2,L3,L4,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16,L17, 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, CMS 0603 (HZ0603B102R-10, Laird Technologies)L5 = 15 nH, 5 %, 0Ω17, 700 mA, fréquence 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 = EP4CE10E2 2C8N, TQFP-144IC5 = M25P40-VMN6PB, SOIC-8IC6 = DAC5672IPFB, SMD 5 x 3,2 mmIC7 = Osc cristal 20 MHz, ajust., 5 x 3,2 mm (ASVTX-09-20.000MHZ-T, Abracon)IC8,IC9,IC10 = 74AHC1GU04W5-7 , CMS SOT-25IC11 = LP3891EMR-1.2/NOPB, CMS SOIC-8+PowerPADIC12 = TPS73018DBVT, CMS SOT-23-5IC13 = TPS79625DCQG4, CMS SOT-223-6 (DCQ6)IC14 = TPS79633DCQ, CMS SOT-223-6 ( DCQ6)LED1,LED2,LED3 = LED, verte, 50 mcd, 2,1 V à 20 mA, SMD 0805 (KP-2012CGCK, Kingbright)T1 = PMV65XP, SMD SOT-23-3T2 = IRF9321PBF, SMD SOIC-8 AutreK1,K3 = Barrette à broches, 3 voies, SIL, pas de 2,54 mm, verticale, trou traversantK2 = Barrette à broches, 2 voies, SIL, pas de 2,54 mm, verticale, trou traversantK4 = Barrette à broches, 14 voies, SIL, pas de 2,54 mm, vertical, trou traversantK5,K8,K9 = Connecteur SMA jack droit, femelle, trou traversant, 50 ΩK6 = Embase, 2x5, vertical, pas 2,54 mm, trou traversantK7 = Embase à broches, 10 voies, SIL, pas 2,54 mm, vertical, trou traversantK10 = Bornier, 2 voies, pas 5,08 mm, trou traversant Misc.PCB 150177-1 v2.1Nomenclature 160160-1 v1.1RésistanceR1,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 Condensateur C1,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 InductorL1,L2,L3 = 330 nH, 5 %, 310 mA, fres 600 MHz (36502AR33JTDG, TE Connectivity)L4,L5,L6 = 1000 Ω @ 100 MHz, 200 mA (HZ0603B102R-10, Laird Technologies) SemiconductorD1 = BAS70-04, SMD SOT-23LED1 = LED, vert, 50 mcd, 2,1 V @ 20 mA, SMD 0805T1 = BFR520, 300 mW, 70 mA, 9 GHz, SMD SOT-23IC1,IC2 = SA602AD, SMD SO-8 AutreK1,K2,K3,K5 = Connecteur SMA, jack droit, trou traversant femelle, 50 ΩK4 = Embase à broches, 3 voies, SIL, pas de 2,54 mm, vertical, trou traversantK6,K7 = Bornier, 2 voies, pas de 5,08 mm, trou traversantFL1 = 45 MHz, 1 kOhm, Crystal Filter, 15 kHz (30 kHz pourrait également fonctionner, 7,5 kHz est trop étroit), SMD Misc.PCB 160160-1 v1.1

Je travaille sur un émetteur-récepteur complet haute performance pour bande étroite SSB/CW (et éventuellement aussi AM et FM) sur ondes courtes et/ou VHF (bandes radio amateur) basé sur le traitement du signal dans un FPGA avec un ADC 24 bits et un très rapide DAC.Il est autonome et différent de la plupart des autres projets SDR qui reposent sur un PC. Du labo : Carte FPGA DSP pour radio à bande étroite Résumé Description du circuit Programmation Interface de contrôle Carte radio Nomenclature Carte FPGA DSP (150177-1 v2.1) Nomenclature 160160-1 v1.1
PARTAGER