Cours:Elen4 TNS TP TpsReel : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Création d'un bloc dans ce module)
(Création d'un bloc dans ce module)
Ligne 72 : Ligne 72 :
 
<source>
 
<source>
 
Enter valid argument list, including default arguments:  
 
Enter valid argument list, including default arguments:  
 
+
</source>
 +
* De même, on ne donnera pas de code permettant de tester le bon fonctionnement :
 +
<source>
 +
Add Python QA code? [Y/n] n
 +
Add C++ QA code? [Y/n] n
 +
</source>
 +
* Plusieurs fichers sont alors crées :
 +
<source>
 +
Adding file 'lib/passetout_impl.h'...
 +
Adding file 'lib/passetout_impl.cc'...
 +
Adding file 'include/gnuradio/customModule/passetout.h'...
 +
Adding file 'python/customModule/bindings/docstrings/passetout_pydoc_template.h'...
 +
Adding file 'python/customModule/bindings/passetout_python.cc'...
 +
Adding file 'grc/monModule_passetout.block.yml'...
 +
Editing grc/CMakeLists.txt...
 
</source>
 
</source>
  

Version du 24 mars 2023 à 11:01

Retour à la page du cours

TP6 : Temps réel : Codage d'un bloc en C++ / démodulation et PID numérique

Le but de ce TP est ...


Codage de bloc Gnuradio en c++

Première partie - guide de création d'un bloc en C++

Ce guide est inspirée du guide Creating an OOT (C++ block example) en l'adaptant pour nos besoins :

Nous allons créer un simple bloc qui recopie son entrée (en float) sur sa sortie. Donc le filtre caractérisé par y(n) = x(n) ou encore H(z)=1. Il s'agit donc d'une sorte de filtre passe-tout.

Suivez bien toutes les étapes, sans aller trop rapidement

Création d'un module externe

Dans les lignes qui suivent, le $ indique que l'on saisi une commande dans un terminal. Le $ n'est pas à saisir.

  • Ouvrez un terminal et placez-vous à la racine de votre dossier personnel :
$ cd $HOME
  • Créez un dossier de travail dédié à gnuradio et déplacez-vous à l'intérieur :
$ mkdir gnuradio
$ cd gnuradio
  • GNU Radio est livré avec gr_modtool, un utilitaire qui permet de créer des modules externes (OOT). Créons un module monModule
$ gr_modtool newmod monModule
  • Le dossier monModule est créé et contient tout le code squelette d'un module OOT, mais il n'a pas encore de blocs. Déplacez-vous dans monModule :
$ cd monModule
  • Vous pouvez afficher le contenu de ce dossier par
$ ls
Création d'un bloc dans ce module
  • Ajoutez un nouveau bloc nommé passetout :
$ gr_modtool add passetout
  • Quelques questions permettent alors de spécifier le type de bloc
GNU Radio module name identified: passetout
('sink', 'source', 'sync', 'decimator', 'interpolator', 'general', 'tagged_stream', 'hier', 'noblock')

Saisissez sync comme type de bloc, car le bloc que nous écrivons produira le même nombre d'échantillons en sortie que le nombre d'échantillons consommés depuis l'entrée.

Enter block type: sync
  • Spécifiez cpp</source> comme langage :
Language (python/cpp): cpp
Language: C++
Block/code identifier: passetout
  • Spécifiez un nom pour le copyright :
Please specify the copyright holder: Bibi
  • Il est possible de spécifier des paramètres d'entrée qui peuvent permettre de régler le fonctionnement du bloc. Ce ne sera pas notre cas, ne rien saisir sur cette question :
Enter valid argument list, including default arguments:
  • De même, on ne donnera pas de code permettant de tester le bon fonctionnement :
Add Python QA code? [Y/n] n
Add C++ QA code? [Y/n] n
  • Plusieurs fichers sont alors crées :
Adding file 'lib/passetout_impl.h'...
Adding file 'lib/passetout_impl.cc'...
Adding file 'include/gnuradio/customModule/passetout.h'...
Adding file 'python/customModule/bindings/docstrings/passetout_pydoc_template.h'...
Adding file 'python/customModule/bindings/passetout_python.cc'...
Adding file 'grc/monModule_passetout.block.yml'...
Editing grc/CMakeLists.txt...

Seconde partie - codage d'un filtre RII

Seconde partie - codage d'un filtre RIF

Démodulation

=== PID Numérique ===