0% ont trouvé ce document utile (0 vote)
188 vues18 pages

Essais de Radio Logicielle avec FPGA

Ce document décrit les réflexions de l'auteur sur ses essais de radio logicielle avec des FPGA. Il explique le matériel et logiciels utilisés, notamment Matlab, Simulink et Xilinx ISE. Il détaille ensuite les problèmes rencontrés, notamment le coût élevé de Matlab et l'impossibilité de continuer les essais sans cet outil.

Transféré par

Jean Mallet
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
188 vues18 pages

Essais de Radio Logicielle avec FPGA

Ce document décrit les réflexions de l'auteur sur ses essais de radio logicielle avec des FPGA. Il explique le matériel et logiciels utilisés, notamment Matlab, Simulink et Xilinx ISE. Il détaille ensuite les problèmes rencontrés, notamment le coût élevé de Matlab et l'impossibilité de continuer les essais sans cet outil.

Transféré par

Jean Mallet
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Réflexions sur les Essais de Radio logicielle avec des FPGA

1. Introduction

La Radio Logicielle ne date pas d'aujourd'hui chez F5MI, les premiers essais remontent à
1996 et la parution dans Radio-Ref de 2 Articles (Introduction à la Radio numérique N°s
11 et 12 1996). On peut retrouver ces articles sur mon site (1).

Il est à remarquer que c'est la première fois que l'on essaye l'échantillonnage direct avec un
ADC de 12 bits échantillonné à 25 Msps.

Comme il faut toujours reconnaitre à César ce qui reviens à Jules!!! La primauté de cette
étude est due à mon ami KC1HR (Peter Traneus Anderson), publiée dans QEX de Mars
1994 "A Simple SSB Receiver Using a Digital Down Converter". Et les articles qui ont
suivis dans cette même revue!

J'ai continué les Etudes DSP (Visibles sur mon site) jusqu'à la parution de la version
Française du DSP10 de W7PUA, et ce jusqu'en 2014 où j'ai considéré que j'avais fait le Tour
du DSP, de ses pompes et de ses œuvres!

Je me suis accordé une brève incursion, en compagnie de Roland de PY4ZBZ sur les RTL-
SDR (R820T et E4000). Il faut dire que Roland a fait l'essentiel du Travail, et que je me suis
contenté de lui donner un accueil sur mon site.

Puis je me suis intéressé sous l'égide de Marc (F6ITU) au HL2, là je me suis contenté de
souder les éléments sur le PCB, de le mettre en service, et de faire des essais avec un
Transverter 144/28 Mhz d'origine DL. Ce n’est pas glorieux tout cela, mais il faut dire que
des problèmes physiques m'ont grandement freiné dans mes élans... Ne pouvant pas trop
'bidouiller' j'ai beaucoup lu, et ceci compense cela!

Et en début d'année 2020 j'ai décidé de m'intéresser sérieusement à ce qu'il y avait dans le
ventre des FPGA...

2.Matériel et Logiciel

La première chose à faire lorsque on veut réaliser un ensemble à FPGA, c'est de voir ce que
les autres ont fait!:

- Il y a l'Hermès Lite II, c'est un Projet maintenu par Steve Haynal, il n'est pas
question de refaire quoi que ce soit à partir de cette réalisation!

- En surfant sur le net je tombe sur un article de W1QG (2) et là je suis intéressé
vraiment, je contacte Dick W1QG qui me transmet un autre article décrivant un Projet de
Transceiver à FPGA (3).

Et par Dick j'ai le contact avec son ami K6JCA. Je vous laisse le plaisir de lire le Blog de
K6JCA (4) et de ne pas oublier de télécharger le modèle FPGA SDR Simulink, les filtres et le
fichier .ino de l’Arduino. (5).

- Si on résume: On va avoir besoin de Matlab, de Simulink, d'un certain nombre de


Toolboxes de chez MathWorks, et du Programme Xilinx pour gérer les FPGA. A ce stade ce
sera ISE Design suite 12.2 de Xilinx, avec le Générateur de code (Fichiers gratuits), et
Matlab R2009B Version 'Home' avec ses compléments (Payant)!

Ça donne ça: On voit une Carte Xilinx 3S500E , une horloge 64 Mhz, une Carte ADC 12 bits
65 Msps, et un Arduino pour gérer le fonctionnement des utilitaires (Clavier, BF..). Ce n'est
pas tout à fait ce que l'on voit en photo chez les Om’s US, hormis le FPGA! A cette époque
je n'avais pas encore de carte DAC pour la sortie, et je ne voulais pas utiliser une Carte 16
bits, trop chère pour les premiers essais, il me faudrait adapter le soft à la demande! Et je ne
savais pas encore comment!

A ce niveau j'ai laissé tomber la Solution Altéra qui est tentante mais qui demande une
programmation différente de celle de Xilinx (Programmation à partir de Quartus, soit en
VHDL, soit à partir des schémas blocs de Quartus!). Je n'avais pas assez de recul pour
démarrer ce que on voit sur la photo ci-dessous:
A savoir une Carte FPGA avec un Cyclone IV, une carte ADC 14 bits, une carte DAC 14bits,
un Codec, une horloge 80 Mhz, une sortie LAN et une USB... Cette étude devra être menée
après la fin de la première!

3.Début des Problèmes


Sur le Schéma ci-dessous on voit le Modèle Simulink réalisé par K6JCA, avec des
blocs Xilinx.
A la lecture du blog de K6JCA on se rends compte de la faisabilité apparente de la
réalisation du Transceiver FPGA.. Ce qui semble avoir été réalisé 2 fois doit pouvoir se
réaliser une troisième. Le fait de ne pas utiliser d'ADC 16 bits devrait pouvoir se résoudre en
modifiant le câblage dans le bloc ad-hoc. ( marqué hf_adc) sur le schéma. Mais s’il est facile
d'avoir l'ensemble Xilinx ISE 12.2 avec une License permanente.. Cependant pour avoir le
Matlab de 2009, il faut avoir le Matlab de 2020. Et la version Home est disponible moyennant
(140€ + 50€ pour Simulink + 30€ par Toolbox..) Ce qui amène vite l'affaire à 300€ TTC!!! Bon
on peut avoir tout en Version Test pendant 1 mois, et en pleurant un peu, pendant 1 mois de
plus.. J'ai fait comme ça, chargé le 2020 en version Test, chargé le 2009, et lancé le .mdl de
K6JCA.. Il y a des choses à installer correctement, à commencer par les Callbacks.. ( voir la
doc de Matlab). La compilation a fonctionné correctement 'avec un ordi W10', et j'ai eu la
phrase magique : 0 errors, 484 warnings! A ce point on craint ces Warnings, mais bon je
fais la suite jusqu'au bout, et j'ai eu mes fichiers pour le téléchargement sur la carte
Waveshare utilisée par Jeff, et au premier coup le télé versement dans le FPGA a
fonctionné.. Et là je réalise que je n'ai rien touché au soft de K6JCA, et donc que ma carte
ADC 12 bits ne marcherait pas. Bon je fais mon câblage, 12 bits au lieu de 16 et les autres
pins restent en l'air! En sortie j'ai une carte DAC 14 bits... On met l'alim, il ne se passe rien
de mauvais, ça consomme, ça ne chauffe pas trop.. Les oscillateurs marchent, on les voit à
l'oscillo.. Et je réalise qu’il me faut un programme .ino pour faire fonctionner le Mélangeur
NCO du Transceiver. Et je ne l’ai pas ce fichu programme.. Reste à le demander à K6JCA!!!
Et lui il ne le retrouve pas dans sa pagaille!!!! Comment faire marcher un Mélangeur
numérique sur une fréquence donnée ?.. Il suffit de lui envoyer un incrément . Ce n’est rien!
un simple mot de 26 bits!!! Là j'hallucine un max... J'ai fait des maths, et la seule chose que
je suis arrivé à faire c'est de me shooter au 'Doliprane' et de me faire hurler dessus par YL...
Stop Arrêt des essais... Et comme un malheur n'arrive jamais seul Matlab est arrivé au bout
du temps gratuit! Et ON N'EN ACHETE PAS UN AUTRE!...

Et c'est comme ça qu’on laisse tomber un essai, En août 2020 je reçois un mail de K6JCA
qui avait retrouvé son fichier .ino, plus une tapée de notes théoriques qui lui ont servies pour
réaliser son bidule!! Merci, mais ça arrive un peu tard... Il me faut donc trouver un Matlab,
bon c'est possible si on a des accointances avec une Université!! Je n'insiste pas, mon soft
fonctionne mal, il me faudrait du temps pour m'y plonger plus avant, la carte ADC de chez
les Chinois est nulle, faut la bikiniser entièrement, ça ne vaut pas le coup! Il s'agit de :
"Module AD haute vitesse AD9226 MSPS ADC 12bit FPGA carte de développement
extension 65MSPS Acquisition de données" Il vaut mieux prendre ce module "Module ADC
haute vitesse 105MSPS 14bit module d'acquisition de données" Depuis j'ai réalisé une CAO
pour un AD6645 tamponné en sortie, avec un préampli à l'entrée, et l'horloge intégrée... On
n'est jamais aussi bien servi que par soi-même, et ça fonctionne bien mieux que les trucs
Chinois! Alors l'histoire de la programmation des bits non utilisés!! Il faut renseigner le Bloc
d'entrée pour lui dire si on lui envoie 12, 14 ou 16 bits... Le fait sur la partie câblage d'enlever
ou pas les références des pins MSB inutilisées n'a pas d'importance sauf de coller un
Warning. Et comme il y en a partout! c'est effrayant... Comme je n'ai plus de Matlab, je ne
peux plus rien faire.. Donc. Si on n'est pas dans une Université qui a un accès à ces logiciels
pleinement et gratuitement, on ne peut pas utiliser ce genre de programmation.. Je ne dirai
pas que j'ai perdu du temps pour rien, car j'ai bcp appris en me creusant la tête pour faire
marcher ces fichus blocs... Faut noter que le Générateur de code de Xilinx n'est pas en
License permanente, et qu'il faut la renouveler dès qu'elle est expirée! Tant que on a Matlab
il faut faire des fichiers de Sortie .xise pour 12, 14 et 16 bits et bien noter les sorties
correspondantes sur les ADC !! Ceci parce que si Matlab 2009 n’est plus disponible, le
programme Xilinx ISE 12.2 lui est permanent !! Donc une fois les programmes compilés
correctement on peut faire les essais que l’on veut.

Alors on va se poser la Question de savoir : Pourquoi passer par Matlab + Simulink + les
Blocs et le Générateur de Code Xilinx ? Alors que on pourrait peut-être tout faire avec Matlab
+ Simulink + les Blocs de Simulink.. Voilà ça parait évident ! Seulement Matlab va vous
bloquer à la Compilation, le Module HDL Coder qui génère le Code pour du Verilog ou du
VHDL, nécessaire pour programmer les FPGA, n’est pas fourni en version ’Home’ et pour
avoir le Trial il faut passer sous les ‘Fourches Caudines’ de MathWorks… Donc le prix des
Codeurs HDL étant exorbitants, il vaut mieux contourner le Problème et se rabattre sur
Xilinx.

4. Alors la suite....
Pour le moment j'ai décidé de mettre un bémol sur ce genre de programmation, on peut
Télécharger Vivado qui est gratuit, et se diriger vers Zynq (Le processeur du Red Pitaya), il y
a des cartes Zynq bon marché chez les Chinois, il va falloir programmer en se servant des
Blocs de Vivado, ce n’est pas évident mais c'est moins casse-pipe que de passer par Vivado
+ le Générateur de code Xilinx + Simulink... Et alors je vous livre un truc génial: Si on se
paye l'ensemble 'Home' de Matlab, on est bloqué au bout du 1000 -ème bloc.. Et 1000 blocs
ça y est vite, ce n’est pas croyable.. Essayez de compter ceux du Transceiver de K6JCA!
Vous aurez vite mal à la tête.. J'ai fait un essai tant que j'avais Matlab 2020.. J’ai lancé le soft
de K6JCA, il m' a fallu modifier pas mal de blocs, parce qu’entre 2009 et 2020 il y avait eu
pas mal de modifications! Surtout les Compilateurs CIC et FIR.. J'y suis arrivé sans avoir
d'erreurs de constructions.. J'ai lancé la compil! Bingo! Perdu: 2538 blocs!!! et on a droit qu'à
1000!! Donc ça coûte cher, c'est une arnaque. On ne l'utilise pas...

Je n’ai pas essayé la deuxième version que vous avez vue en photo, Il faut travailler avec
Quartus et les blocs Altéra! J'ai vu quelques réalisations chez les UA.. Mais pour le moment
je n’ai pas 20 vies, et bcp de choses à faire...

Alors j'ai lancé la discussion, j'espère qu'elle sera intéressante.

JP F5MI

On est en 2022. Cet article a été écrit en 2020.. 2021 a été pour moi une année
maudite, je ne m’appesantirai pas sur les problèmes que j’ai eu. Donc rien en
2021, et je viens de reprendre depuis peu, et l’Emission d’Amateur, et les
Divers essais qui sont restés dans l’oubli. Je vais partir vers d’autres horizons
que j’avais laissé entrevoir : à savoir une carte Zynq et Xilinx Vitis 2022.. Ça va
être une autre programmation, et je reviendrai dans le Courant de l’Année pour
faire le point sur ces essais.
Ceux qui veulent communiquer avec moi peuvent le faire via mon adresse :
[email protected]
Avec mes 73 Jp F5MI
4bis. Suite récente…
Avant de me lancer vers les essais dont je parle plus tôt, j’ai pu avoir en test un Matlab 2022
et Xilinx Vitis 2022. J’ai repris l’étude de K6JCA mais uniquement sur un récepteur pour ne
pas être bloqué par la limitation des blocs à 1000.
La Carte utilisée est une carte fabriquée par les DL’s qui utilisent un Spartan xc7S25. Il m’a
fallu reprendre tous les blocs Xilinx et faire pas mal de modifications à l’intérieur des sous-
systèmes . A l’heure actuelle j’en suis à la mise au point du Soft et à la Simulation.

Pour ce faire on distingue une source RF qui n’est là que pour permettre une simulation
correcte. Les 2 Images suivantes vous montrent le schéma de cette source et ce qui sort en
Sortie .

La fréquence d’échantillonnage est à 80 Mhz et les 2 pics sont à +/- 10 MHz. Dans le Bloc
RF Source il y a du bruit qui est ajouté et que l’on peut voir sur l’enregistrement.
Ci-dessous est le schéma du sous ensemble Filtres Rx qui divisent la fréquence
d’échantillonnage de 80 Mhz par 8192. Les sorties I et Q sont donc à 9765.625 kHz. Ces
sorties seront transmises au Bloc Audio en vue d’être transmise à un Codec externe .
Un autre sous-ensemble intéressant est : le Serial Interface 1 qui réalise la transition entre le
monde extérieur : Ici une carte Arduino pour la programmation de la Fréquence de
Réception et le FPGA. Les données nécessaires sont disponibles sur Data_26.
A l’instant où j’écris ces lignes, la simulation est à peu près correcte, il y a encore pas mal de
choses à contrôler et à modifier avant d’en arriver à l’étape ultime de la génération du Code,
et du téléversement dans la Carte Spartan. Et passer aux essais. J’ai la disponibilité du
Matlab pour 1 mois, donc il ne me faut pas perdre du temps.

5.Annexes..
Une Autre Carte ADC avec AD6645 Mais sans horloge
Une Carte ADC Chinoise avec 2 AD9226 et sans horloge. A côté il y a un Codec
Audio et une Carte LAN
Carte ADC 14 bits fabrication maison. Avec un AD6645 t une horloge 96 Mhz.
Schéma donné par Matlab pour réaliser un Démodulateur SSB.. Il faut se rendre sur le Site
et télécharger le Webinar qui va avec ce schéma pour en connaitre davantage. Il y a des
sortie ‘en l’air’ sur les Compilateurs et le FDA Tool n’est pas documenté à ce stade.

6-Références diverses :
1-Site radio Numérique de F5MI : https://f5mi640.pagesperso-orange.fr/
2-QRA de W1QG : https://www.qrz.com/db/W1QG/
3-Article de W1QG : www.w5cz.net/fpga_dsp1.pdf
4-Blog de K6JCA : http://k6jca.blogspot.com/2017/02/an-fpga-sdr-hf-transceiver-
part-1.html
5-Soft du Transceiver de K6KJA : https://github.com/k6jca/fpga-sdr-rev-2.5 et
https://github.com/k6jca/FPGA-SDR-FILTER-FILES

Vous aimerez peut-être aussi