TP2 Simulation des convertisseurs
Polycopié du cours architecture pour le TNS cours_tns.pdf
A FAIRE A LA FIN DE CHAQUE SEANCE POUR COPIER VOS FICHIERS SUR UN DISQUE PARTAGE, ET PERMETTRE LA RECUPERATION DES FICHIERS SI UN MEMBRE DU BINOME EST ABSENT, SINON TANT PIS POUR VOUS!
copier coller dans une console:
rsync -av --delete ~/TP_ARCHI_TNS_ETU /mnt/etu/s4
et compléter la ligne en appuyant 3 fois sur la touche Tabulation, puis entrée.
Dans la démarche qui consiste à se rapprocher des conditions réelles dans lesquelles la méthode TraiteUnEchantillon sera utilisée, nous souhaitons maintenant intégrer les convertisseurs dans la chaîne de traitement en les simulant par des fonctions:
Le schéma suivant représente l'agencement de ces deux fonctions relativement à TraiteUnEchantillon.
Les fonctions simuADC et simuDAC doivent être définies dans les fichiers convertisseurs.cpp et .h que vous devez compléter dans votre projet:
double SimuADC ( double Ve, double Vmin, double Vmax, int nbBits); double SimuDAC ( double M, double Vmin, double Vmax, int nbBits);
#include <math.h> /*! * \brief SimuADC simule un ADC avec sortie non signée */ double SimuADC ( double Ve, double Vmin, double Vmax, int nbBits) { double q = (Vmax-Vmin)/(pow(2,nbBits)-1); double ekQuant; if (Ve<Vmin) ekQuant = 0; else if (Ve>Vmax) ekQuant = pow(2,nbBits)-1; else ekQuant = round((Ve-Vmin)/q); return ekQuant; } /*! * \brief SimuDAC simule un DAC avec entrée non signée */ double SimuDAC ( double M, double Vmin, double Vmax, int nbBits) { double q = (Vmax-Vmin)/(pow(2,nbBits)-1); return (Vmin + q*( (unsigned int)M % (1<<nbBits)) ); }
Une directive #include “convertisseur.h” est présente dans le fichier filtretrace.h pour pouvoir appeler ces fonctions.
Comme cela a été dit en introduction de ce TP (relisez là si vous avez oublié…) il faut maintenant inclure les convertisseurs analogique↔numérique dans ReponseEnLigne(). Voici les opérations à effectuer:
Une fois les réponses validées, mettre à jour le suivi de version en saisissant dans une console:
echo commence cd ~/TP_ARCHI_TNS_ETU git commit -a -m'ADC/DAC working' gitk & echo fini
FiltreTrace filtre_echo_RIF(NB_COEFF_B,coeffB,NB_COEFF_A,coeffA);
devra être remplacée par:
FiltreTrace filtre_echo_RIF(NB_COEFF_B,coeffB,NB_COEFF_A,coeffA,0,NULL,valeur_pour_offsetEntreeInit,valeur_pour_offsetSortieInit);
Remarque: C'est le même phénomène que lors de l'utilisation de montage à AOp (souvenez-vous du télémètre !), où il a fallu centrer les signaux d'entrée sur la tension $(vmax+vmin)/2$ plutôt que sur 0V.
Une fois les réponses validées, mettre à jour le suivi de version en saisissant dans une console:
echo commence cd ~/TP_ARCHI_TNS_ETU git commit -a -m'offset working' gitk & echo fini
FiltreTrace filtre_echo_RIF(NB_COEFF_B,coeffB,NB_COEFF_A,coeffA,0,NULL,valeur_pour_offsetEntreeInit,valeur_pour_offsetSortieInit);
devra être remplacée par:
FiltreTrace filtre_echo_RIF(NB_COEFF_B,coeffB,NB_COEFF_A,coeffA,0,NULL,offsetEntreeInit,offsetSortieInit,valeur_pour_valeurSortieMaxInit,valeur_pour_valeurSortieMinIit);
Une fois les réponses validées, mettre à jour le suivi de version en saisissant dans une console:
echo commence cd ~/TP_ARCHI_TNS_ETU git commit -a -m'saturation working' gitk & echo fini