Radio logicielle : Différence entre versions

De Wiki d'activités IMA
 
(38 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Introduction ==
+
== '''I.Introduction''' ==
 
+
<include nopre noesc src="/home/pedago/pimasc/include/video-RadioLogicielle-iframe.html" />
 
La radio logicielle (Software Defined Radio) est sous forme d'un récepteur câblé (Hardware) qui consiste à numériser le signal d'entrée et à le traiter par logiciel pour avoir les possibilités d'évolution, que ce soit en terme de fréquence qu'en terme de modulation, et pour assurer une vitesse de traitement suffisante en implémentant les algorithmes sur FPGA en VHDL. Dans ce projet, on focalisera l'étude sur les signaux de l'horloge atomique DCF (77,5kHz) en utilisant un convertisseur analogique numérique afin de pouvoir utiliser le FPGA.
 
La radio logicielle (Software Defined Radio) est sous forme d'un récepteur câblé (Hardware) qui consiste à numériser le signal d'entrée et à le traiter par logiciel pour avoir les possibilités d'évolution, que ce soit en terme de fréquence qu'en terme de modulation, et pour assurer une vitesse de traitement suffisante en implémentant les algorithmes sur FPGA en VHDL. Dans ce projet, on focalisera l'étude sur les signaux de l'horloge atomique DCF (77,5kHz) en utilisant un convertisseur analogique numérique afin de pouvoir utiliser le FPGA.
  
Ligne 7 : Ligne 7 :
 
performances accrues en réception par rapport à des technologies radio traditionnelles
 
performances accrues en réception par rapport à des technologies radio traditionnelles
 
possibilité de mettre à jour logiciellement les BTS pour supporter de nouvelles modulations (exemple : migration de la norme GSM à la norme EDGE)
 
possibilité de mettre à jour logiciellement les BTS pour supporter de nouvelles modulations (exemple : migration de la norme GSM à la norme EDGE)
 +
<br style="clear: both;">
 +
----
 +
----
 +
 +
== '''II.Avancement du projet''' ==
 +
 +
 +
 +
'''1ère séance'''
 +
 +
----
 +
 +
Dans un premier temps, on a essayé de comprendre le principe du fonctionnement du SDR (Radio Logicielle) en discutant avec les professeurs référents Alexandre Boé et Nicolas Defrance.
 +
Nous avons donc pu dans un premier temps distinguer deux parties dominantes dans ce projet :
 +
 +
-Une partie électronique (réalisation du convertisseur analogique/numérique).
 +
                                   
 +
 +
-Une partie informatique (réalisation d'un code en VHDL permettant le filtrage à 77,5Khz du signal reçu et la démodulation de ce signal filtré).
 +
 +
 +
Ainsi nous avons établi dans un premier temps un schéma du principe de fonctionnement de ce projet qui contient un convertisseur analogique-numérique, un filtre numérique et un démodulateur analogique.
 +
[[Fichier:Séance1.png]]
 +
----
  
== Convertisseur analogique numérique ==
+
'''2ème séance'''
  
[[Fichier:adc.jpg]]
+
----
  
Afin de tester ce convertisseur, nous avons réalisé un premier schéma avec le minimum d'appareils, donc constitué d'un générateur réglé sur 5V, d'un potentiomètre 10kΩ afin de faire varier la tension en entrée Vin(+) entre 0V et 5V, d'un oscilloscope numérique et de résistances et condensateurs.
+
Notre principal objectif est de recevoir un signal analogique et le convertir en numérique pour le traiter ( filtrer et démoduler )et il doit être adéquat à la bande de fréquences dont on a besoin, c'est à dire choisir les bons coefficients pour pouvoir les introduire dans le VHDL, et on a choisi de travailler sur un filtre FIR (filtre à réponse impulsionnelle finie) au lieu d'un filtre IIR (filtre à réponse impulsionnelle infinie) car le FIR est un filtre non récursif, il est stable peu importe les coefficients utilisés et il est moins sensible aux erreurs de quantification que les filtres IIR.
Le générateur nous a ici servi à la fois d'alimentation pour le convertisseur et de signal d'entrée.
+
Ensuite, on a réussi à trouver ces coefficients pour avoir la bande de fréquence voulue à l'aide de FDATOOL (MATLAB).
  
Voici le schéma de câblage de ce premier test :
 
  
[[Fichier:adc1.jpg]]
 
== '''Bilan des séances''' ==
 
  
 
----
 
----
 +
 +
'''3ème et 4ème séance'''
 +
 +
----
 +
 +
[[Fichier:séance3_4.jpg|200px|thumb|left|Signaux bruités de -14 mV à 14mV.]]
 +
 +
Afin de comprendre au mieux les différents éléments constituant notre travail, nous nous sommes intéressés au signal d'entrée et au signal recherché.
 +
Le signal recherché correspond au signal DCF77 qui a pour fréquence porteuse une fréquence de 77,5Khz.
 +
Nous avons donc commencé à chercher une antenne de fréquences d'utilisation pouvant contenir notre signal DCF77.
 +
Après s'être renseigné auprès des professeurs à la recherche d'un telle antenne, plusieurs antennes étaient disponibles dans l'école et nous avons donc opté pour une antenne radioélectrique captant des ondes électromagnétiques de fréquences allant jusqu'à 1 Mhz et contenant donc notre signal DCF77.
 +
Les champs électriques des ondes électromagnétiques captés pouvant induire une tension aux bornes d'une antenne; nous avons donc effectué quelques tests avec cette antenne afin d'évaluer la plage de tension que pouvait fournir l'antenne.
 +
A l'aide d'un oscilloscope, nous avons mesuré ces tensions et nous sommes rendu compte que notre antenne ne délivrait que des tensions de l'ordre du milli-volt.
 +
 +
 +
 +
 +
  
  
'''1ère et 2ème séance'''
 
 
----
 
----
  
Dans un premier temps, on a essayé de comprendre le principe du SDR (Radio Logicielle). Puis on a fait un schéma qui illustre et reflète le fonctionnement de ce système et qui contient un convertisseur analogique-numérique, un filtre numérique et un démodulateur analogique.
+
'''5ème séance'''
Notre principal objectif est de recevoir un signal et le convertir en numérique pour pouvoir le traiter ( filtrer et démoduler ) à l'aide du VHDL. Pour cela, il faut premièrement choisir le bon filtre et qui peut être adéquat à la bande de fréquences dont on a besoin, c'est à dire choisir les bons coefficients pour pouvoir les introduire dans le VHDL. Dans les prochaines séances, on essayera d'essayer le VHDL du filtre pour voir si ça marche et de passer aux autres blocs du système.
+
 
 +
---
 +
 
 +
Dans un premier temps, nous avons cherché une façon de réaliser une carte de conversion Analogique/numérique à base de composants existants.
 +
 
 +
 
 +
Nous nous sommes d'abord posé la question du type de convertisseur que l'on pouvait réaliser.
 +
Nous nous sommes donc intéressé aux différents types de convertisseurs existants.
 +
 
 +
Les signaux à convertir étant des signaux audio d'assez hautes fréquences, il était nécessaire de trouver un convertisseur assez rapide capable d'effectuer la conversion.
 +
 
 +
Parmi les différents types de convertisseurs, ceux de type « convertisseurs à approximations successives » et ceux de type « convertisseurs flash » ou « semi-flash pipeline »  convenaient très bien pour notre application étant donné leur grande vitesse de conversion contrairement aux convertisseurs à simple et double rampe qui sont des convertisseurs très précis mais très lents.
 +
 
 +
Les convertisseurs flash ou semi-flash ont la particularité d'être des convertisseurs très rapides mais très chers, utilisés principalement pour des applications critiques comme la vidéo, alors que les convertisseurs à approximations successives ont des temps de conversions de l'ordre de la dizaine de microsecondes pour des résolutions allant jusqula douzaine de bits et sont moins chers.
 +
Ces convertisseurs à approximations successives sont donc plutôt utilisés dans le domaine de l'audio.
 +
 
 +
Nous avons donc choisit de travailler avec un convertisseur à approximations successives qui représentent les meilleurs rapports vitesse de conversion/prix et vitesse de conversion/précision.
 +
 
 +
Nous avons ainsi cherché sur différents sites de fabricants de circuits intégrés des convertisseurs analogiques/numériques à approximations successives, et après en avoir demandé conseil auprès des professeurs référents devant la multitudes de composants CAN correspondants à nos critères (convertisseurs 8bits à haute vitesse de conversion) disponibles sur le site de chez Maxim, les professeurs nous ont proposé un convertisseur déjà disponible dans la salle de TP et tout à fait approprié pour notre projet (ADC0804LCN).
  
 +
Nous avions donc quelques convertisseurs ADC 0804 à notre disposition.
 +
[[Fichier:séance5.jpg]]
 +
----
  
 
'''6ème séance'''
 
'''6ème séance'''
 +
 
----
 
----
  
Afin de convertir le signal reçu en numérique, il nous est demandé de créer une carte analogique-numérique. A l'aide d'un ADC0804LCN 8 bits qui nous à été fourni nous avons donc cherché a fabriquer cette carte. Après quelques recherches, à l'aide de résistances, de condensateurs, d'un potentiomètre nous avons conçu une première carte de conversion.
+
A l'aide d'un ADC0804LCN 8 bits qui nous à été fourni, nous avons donc cherché a fabriquer cette carte. Après quelques recherches, à l'aide de résistances, de condensateurs, d'un potentiomètre, nous nous sommes rendu compte que ce convertisseur ne convertit que les valeurs reçus entre 0V et 5V et nous avons conçu une première carte de conversion.
Néanmoins nous nous sommes rendu compte que ce convertisseur ne convertit que les valeurs reçus entre 0V et 5V.
+
En réalisant un premier montage, nous avons constaté que ca fonctionnait pas.
  
 +
 +
----
  
 
'''7ème séance'''
 
'''7ème séance'''
 +
 
----
 
----
 +
[[Fichier:séance7.jpg|200px|thumb|left|Réalisation du convertisseur analogique numérique]]
 +
Nous avons trouvé que le dysfonctionnement du convertisseur qu'on a réalisé était dû à un problème de contact.
 +
Le montage électronique qu'on a établit permet alors de recevoir des signaux de 0V à 5V et de les convertir en signaux numériques de 8 bits. Et puis, on a essayé de voir comment on peut adapter un signal venant de l'antenne (-5V à 5V) à l'entrée du convertisseur qui accepte que des signaux de 0V à 5V.
  
Afin de convertir les valeurs du signal qui varient entre -5V et 5V, on a décidé de mettre 2 amplificateurs opérationnels (le premier est diviseur, le deuxième inverseur) en aval du convertisseur qui accepte que des valeurs de 0V à 5V.
 
Du côté du filtre numérique, on a calculé les coefficients qui nous permettront d'avoir un filtre passe bande qui laisse passer la fréquence de 77,5Khz. En outre, on a introduit ces coefficients dans le VHDL et on les a convertit en binaire pour que le FPGA puisse les reconnaître.
 
  
  
'''8ème séance'''
+
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
----
 +
 
 +
'''8ème et 9ème séance'''
 +
 
 
----
 
----
  
Le montage électronique qu'on a établit permet de recevoir des signaux de -5V à 5V et de rétrécir cette plage de 0V à 5V (en ajoutant des amplificateurs) afin que le convertisseur puisse fonctionner. Et à la sortie du convertisseur, on arrive à avoir les 8 bits qui représentent le signal d'entrée.
+
Afin de convertir les valeurs du signal qui varient entre -5V et 5V (Antenne), on a décidé de mettre 2 amplificateurs opérationnels (le premier est un diviseur, le deuxième est un inverseur) en aval du convertisseur qui accepte que des valeurs entre 0V à 5V.
Du côté du VHDL, on a crée un bloc dans altium qui représente le filtre numérique et on l'a relié aux composants qui permettront de visualiser le résultat. Néanmoins, il nous reste quelques erreurs à corriger afin de simuler le montage sur le FPGA.
+
Pour le filtre numérique, on a calculé d'une autre façon les coefficients qui nous permettront d'avoir un filtre passe bande qui laisse passer la fréquence de 77,5Khz grâce à Scilab. En outre, on a introduit ces coefficients dans le VHDL qui consiste à faire les opérations mathématiques pour un bloc du filtre numérique sachant qu'il y a n blocs du FIR (où n est l'ordre de ce filtre). Et puis, on a convertit ces coefficients en binaire (8 bits) pour que le FPGA puisse les reconnaître (en utilisant conv_std_logic).
 +
 
 +
 
 +
----
 +
 
 +
'''10ème séance'''
 +
 
 +
----
 +
 
 +
On a réalisé le code VHDL du premier bloc qui consiste à multiplier le coefficient par le signal d'entrée et à sommer ce résultat avec le signal antécédent en prenant en compte le retard entre chaque bloc du filtre (delay) : y[n] = sum(Bk.x[n-k]) pour k allant de 0 à N (N:ordre du filtre) où y[i] représente les valeurs du signal de sortie, x[i] représente les valeurs du signal d'entrée et Bi représente les coefficients du filtre numérique.
 +
 
 +
 
 +
----
 +
 
 +
'''11ème séance'''
 +
 
 +
----
 +
 
 +
On a réalisé le code VHDL de la deuxième partie qui consiste à traiter tous les blocs du filtre numérique en introduisant les coefficients du filtre et en utilisant le premier code du VHDL.
 +
En exécutant les 2 codes du VHDL, il n'y avait aucune erreur affichée. Mais lors de la visualisation sur l'écran, on obtenait des signaux aléatoires et non pas le signal qu'on comptait avoir. Cela peut être dû aux coefficients du filtre puisque le fonctionnement est très sensible à ces derniers.
 +
 
 +
----
 +
 
 +
'''12ème et 13ème séance'''
 +
 
 +
----
 +
 
 +
On a établit 2 codes vhdl dont l'un consiste à identifier les bits (0 ou 1) selon les durées d'impulsions, et l'autre consiste à décoder le signal de 8 bits et qui est codé en BCD.
 +
 
 +
[[Fichier:Tr.png]]
 +
----
 +
 
 +
=='''Rapport'''==
 +
----
 +
[http://projets-imasc.plil.net/mediawiki/index.php?title=Fichier:Rapport_omar.pdf#file]

Version actuelle datée du 29 mai 2013 à 14:11

I.Introduction


Vidéo HD

La radio logicielle (Software Defined Radio) est sous forme d'un récepteur câblé (Hardware) qui consiste à numériser le signal d'entrée et à le traiter par logiciel pour avoir les possibilités d'évolution, que ce soit en terme de fréquence qu'en terme de modulation, et pour assurer une vitesse de traitement suffisante en implémentant les algorithmes sur FPGA en VHDL. Dans ce projet, on focalisera l'étude sur les signaux de l'horloge atomique DCF (77,5kHz) en utilisant un convertisseur analogique numérique afin de pouvoir utiliser le FPGA.

Les radios logicielles sont par exemple utilisées dans les réseaux radio-mobiles (GSM, UMTS, etc.) au niveau des stations de base. Elles présentent les avantages suivants : possibilité d'émettre (et de recevoir) des signaux simultanément dans plusieurs canaux, à l'aide d'un unique émetteur/récepteur performances accrues en réception par rapport à des technologies radio traditionnelles possibilité de mettre à jour logiciellement les BTS pour supporter de nouvelles modulations (exemple : migration de la norme GSM à la norme EDGE)



II.Avancement du projet

1ère séance


Dans un premier temps, on a essayé de comprendre le principe du fonctionnement du SDR (Radio Logicielle) en discutant avec les professeurs référents Alexandre Boé et Nicolas Defrance. Nous avons donc pu dans un premier temps distinguer deux parties dominantes dans ce projet :

-Une partie électronique (réalisation du convertisseur analogique/numérique).


-Une partie informatique (réalisation d'un code en VHDL permettant le filtrage à 77,5Khz du signal reçu et la démodulation de ce signal filtré).


Ainsi nous avons établi dans un premier temps un schéma du principe de fonctionnement de ce projet qui contient un convertisseur analogique-numérique, un filtre numérique et un démodulateur analogique. Séance1.png


2ème séance


Notre principal objectif est de recevoir un signal analogique et le convertir en numérique pour le traiter ( filtrer et démoduler )et il doit être adéquat à la bande de fréquences dont on a besoin, c'est à dire choisir les bons coefficients pour pouvoir les introduire dans le VHDL, et on a choisi de travailler sur un filtre FIR (filtre à réponse impulsionnelle finie) au lieu d'un filtre IIR (filtre à réponse impulsionnelle infinie) car le FIR est un filtre non récursif, il est stable peu importe les coefficients utilisés et il est moins sensible aux erreurs de quantification que les filtres IIR. Ensuite, on a réussi à trouver ces coefficients pour avoir la bande de fréquence voulue à l'aide de FDATOOL (MATLAB).



3ème et 4ème séance


Signaux bruités de -14 mV à 14mV.

Afin de comprendre au mieux les différents éléments constituant notre travail, nous nous sommes intéressés au signal d'entrée et au signal recherché. Le signal recherché correspond au signal DCF77 qui a pour fréquence porteuse une fréquence de 77,5Khz. Nous avons donc commencé à chercher une antenne de fréquences d'utilisation pouvant contenir notre signal DCF77. Après s'être renseigné auprès des professeurs à la recherche d'un telle antenne, plusieurs antennes étaient disponibles dans l'école et nous avons donc opté pour une antenne radioélectrique captant des ondes électromagnétiques de fréquences allant jusqu'à 1 Mhz et contenant donc notre signal DCF77. Les champs électriques des ondes électromagnétiques captés pouvant induire une tension aux bornes d'une antenne; nous avons donc effectué quelques tests avec cette antenne afin d'évaluer la plage de tension que pouvait fournir l'antenne. A l'aide d'un oscilloscope, nous avons mesuré ces tensions et nous sommes rendu compte que notre antenne ne délivrait que des tensions de l'ordre du milli-volt.





5ème séance

---

Dans un premier temps, nous avons cherché une façon de réaliser une carte de conversion Analogique/numérique à base de composants existants.


Nous nous sommes d'abord posé la question du type de convertisseur que l'on pouvait réaliser. Nous nous sommes donc intéressé aux différents types de convertisseurs existants.

Les signaux à convertir étant des signaux audio d'assez hautes fréquences, il était nécessaire de trouver un convertisseur assez rapide capable d'effectuer la conversion.

Parmi les différents types de convertisseurs, ceux de type « convertisseurs à approximations successives » et ceux de type « convertisseurs flash » ou « semi-flash pipeline » convenaient très bien pour notre application étant donné leur grande vitesse de conversion contrairement aux convertisseurs à simple et double rampe qui sont des convertisseurs très précis mais très lents.

Les convertisseurs flash ou semi-flash ont la particularité d'être des convertisseurs très rapides mais très chers, utilisés principalement pour des applications critiques comme la vidéo, alors que les convertisseurs à approximations successives ont des temps de conversions de l'ordre de la dizaine de microsecondes pour des résolutions allant jusqu'à la douzaine de bits et sont moins chers. Ces convertisseurs à approximations successives sont donc plutôt utilisés dans le domaine de l'audio.

Nous avons donc choisit de travailler avec un convertisseur à approximations successives qui représentent les meilleurs rapports vitesse de conversion/prix et vitesse de conversion/précision.

Nous avons ainsi cherché sur différents sites de fabricants de circuits intégrés des convertisseurs analogiques/numériques à approximations successives, et après en avoir demandé conseil auprès des professeurs référents devant la multitudes de composants CAN correspondants à nos critères (convertisseurs 8bits à haute vitesse de conversion) disponibles sur le site de chez Maxim, les professeurs nous ont proposé un convertisseur déjà disponible dans la salle de TP et tout à fait approprié pour notre projet (ADC0804LCN).

Nous avions donc quelques convertisseurs ADC 0804 à notre disposition. Séance5.jpg


6ème séance


A l'aide d'un ADC0804LCN 8 bits qui nous à été fourni, nous avons donc cherché a fabriquer cette carte. Après quelques recherches, à l'aide de résistances, de condensateurs, d'un potentiomètre, nous nous sommes rendu compte que ce convertisseur ne convertit que les valeurs reçus entre 0V et 5V et nous avons conçu une première carte de conversion. En réalisant un premier montage, nous avons constaté que ca fonctionnait pas.



7ème séance


Réalisation du convertisseur analogique numérique

Nous avons trouvé que le dysfonctionnement du convertisseur qu'on a réalisé était dû à un problème de contact. Le montage électronique qu'on a établit permet alors de recevoir des signaux de 0V à 5V et de les convertir en signaux numériques de 8 bits. Et puis, on a essayé de voir comment on peut adapter un signal venant de l'antenne (-5V à 5V) à l'entrée du convertisseur qui accepte que des signaux de 0V à 5V.









8ème et 9ème séance


Afin de convertir les valeurs du signal qui varient entre -5V et 5V (Antenne), on a décidé de mettre 2 amplificateurs opérationnels (le premier est un diviseur, le deuxième est un inverseur) en aval du convertisseur qui accepte que des valeurs entre 0V à 5V. Pour le filtre numérique, on a calculé d'une autre façon les coefficients qui nous permettront d'avoir un filtre passe bande qui laisse passer la fréquence de 77,5Khz grâce à Scilab. En outre, on a introduit ces coefficients dans le VHDL qui consiste à faire les opérations mathématiques pour un bloc du filtre numérique sachant qu'il y a n blocs du FIR (où n est l'ordre de ce filtre). Et puis, on a convertit ces coefficients en binaire (8 bits) pour que le FPGA puisse les reconnaître (en utilisant conv_std_logic).



10ème séance


On a réalisé le code VHDL du premier bloc qui consiste à multiplier le coefficient par le signal d'entrée et à sommer ce résultat avec le signal antécédent en prenant en compte le retard entre chaque bloc du filtre (delay) : y[n] = sum(Bk.x[n-k]) pour k allant de 0 à N (N:ordre du filtre) où y[i] représente les valeurs du signal de sortie, x[i] représente les valeurs du signal d'entrée et Bi représente les coefficients du filtre numérique.



11ème séance


On a réalisé le code VHDL de la deuxième partie qui consiste à traiter tous les blocs du filtre numérique en introduisant les coefficients du filtre et en utilisant le premier code du VHDL. En exécutant les 2 codes du VHDL, il n'y avait aucune erreur affichée. Mais lors de la visualisation sur l'écran, on obtenait des signaux aléatoires et non pas le signal qu'on comptait avoir. Cela peut être dû aux coefficients du filtre puisque le fonctionnement est très sensible à ces derniers.


12ème et 13ème séance


On a établit 2 codes vhdl dont l'un consiste à identifier les bits (0 ou 1) selon les durées d'impulsions, et l'autre consiste à décoder le signal de 8 bits et qui est codé en BCD.

Tr.png


Rapport


[1]