Outils pour utilisateurs

Outils du site


tptns2018_2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tptns2018_2 [2019/03/20 18:06]
bvandepo
tptns2018_2 [2019/03/22 11:17] (Version actuelle)
bvandepo
Ligne 75: Ligne 75:
 </​file>​ </​file>​
  
-Une directive **#include "convertisseurs.h"** est présente dans le fichier filtretrace.h pour pouvoir appeler ces fonctions.+Une directive **#include "convertisseur.h"** est présente dans le fichier filtretrace.h pour pouvoir appeler ces fonctions.
  
  
Ligne 146: Ligne 146:
 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: 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:
  
-  - Ajouter **#include "convertisseurs.h"** dans filtretrace.h pour pouvoir appeler les fonctions de simulation de convertisseurs depuis filtretrace.+  - Ajouter **#include "convertisseur.h"** dans filtretrace.h pour pouvoir appeler les fonctions de simulation de convertisseurs depuis filtretrace.
   - Dans le fichier ​ filtretrace.cpp,​ intégrez dans la méthode **ReponseEnLigne** l'​appel de ces 2 fonctions (dynamique 0 à 3,3V , 12 bits) pour que la méthode **TraiteUnEchantillon** traite des échantillons quantifiés en entrée et en sortie:   - Dans le fichier ​ filtretrace.cpp,​ intégrez dans la méthode **ReponseEnLigne** l'​appel de ces 2 fonctions (dynamique 0 à 3,3V , 12 bits) pour que la méthode **TraiteUnEchantillon** traite des échantillons quantifiés en entrée et en sortie:
     - appeler **simuADC** sur chaque échantillon du tableau **e[k]** et stocker sa valeur de retour dans une variable **ekquant** du bon type.     - appeler **simuADC** sur chaque échantillon du tableau **e[k]** et stocker sa valeur de retour dans une variable **ekquant** du bon type.
Ligne 152: Ligne 152:
     - appeler **simuDAC** en lui fournissant la valeur fournie par **TraiteUnEchantillon** et ranger la valeur de sortie de **simuDAC** dans le tableau **s[k]**.     - appeler **simuDAC** en lui fournissant la valeur fournie par **TraiteUnEchantillon** et ranger la valeur de sortie de **simuDAC** dans le tableau **s[k]**.
   - Vérifier le bon fonctionnement des 2 filtres du TP1. Expliquez l'​amplitude de la réponse impulsionnelle du filtre RIF.   - Vérifier le bon fonctionnement des 2 filtres du TP1. Expliquez l'​amplitude de la réponse impulsionnelle du filtre RIF.
 +
 +
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} 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
 +  ​
 +
  
 === Prise en compte de l'​offset numérique des échantillons=== === Prise en compte de l'​offset numérique des échantillons===
   - Ajouter aux échantillons d'​entrée (pour les signaux impulsion et échelon définis dans le fichier **tparchi1.cpp**) un offset de 3,3V/2.   - Ajouter aux échantillons d'​entrée (pour les signaux impulsion et échelon définis dans le fichier **tparchi1.cpp**) un offset de 3,3V/2.
-  - Calculer à la main la valeur de l'​échantillon de sortie du filtre à $k=3$ pour le RIF de l'​exercice 2 du TP1 pour le signal impulsion avec offset défini en 1) et comparer avec la valeur fournie par  **ReponseEnLigne()**. Interpréter les résultats. Ce phénomène est provoqué par l'​offset numérique de **ek_quant** (sa valeur de repos est différente de 0). Modifiez **TraiteUnEchantillon()** pour respecter le schéma de la P11 du cours (en entrée __et__ en sortie !!). Pour cela, vous utiliserez ​les attributs de la classe **Filtre** suivants: ​ **offsetEntree** et **offsetSortie**. Pour que ces deux attributs soient correctement initialisés,​ vous veillerez à ajouter ​en valeurs effectives ​correctes ​pour paramètres du constructeur de l'​objet filtre **offsetEntreeInit** et **offsetSortieInit**. Par exemple la ligne:+  ​-  
 +     - Calculer à la main la valeur de l'​échantillon de sortie du filtre à $k=3$ pour le RIF de l'​exercice 2 du TP1 pour le signal impulsion avec offset défini en 1) et comparer avec la valeur fournie par  **ReponseEnLigne()**. Interpréter les résultats. 
 +     ​- ​Ce phénomène est provoqué par l'​offset numérique de **ek_quant** (sa valeur de repos est différente de 0). Modifiez **TraiteUnEchantillon()** pour respecter le schéma de la P11 du cours (en entrée __et__ en sortie !!). Pour cela, vous devrez calculer ​les bonnes valeurs pour les offsets. Ces offset seront accessibles dans la classe **Filtre** ​grâce aux attributs  ​suivants: ​ **offsetEntree** et **offsetSortie**. 
 +     ​- ​Pour que ces deux attributs soient correctement initialisés,​ vous veillerez à ajouter ​les valeurs effectives pour les paramètres du constructeur de l'​objet filtre **offsetEntreeInit** et **offsetSortieInit**. Par exemple la ligne:
 <file cpp cons1.cpp>  ​ <file cpp cons1.cpp>  ​
   FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA);​   FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA);​
Ligne 161: Ligne 174:
 devra être remplacée par: devra être remplacée par:
 <file cpp cons2.cpp>  ​ <file cpp cons2.cpp>  ​
-  FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA,​0,​NULL,​offsetEntree,offsetSortie);+  FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA,​0,​NULL,​valeur_pour_offsetEntreeInit,valeur_pour_offsetSortieInit);
 </​file>​ </​file>​
-  - Vérifiez ​ que les deux premiers filtres fournissent les mêmes réponses impulsionnelles ​et indicielles ​qu'​avant ajout des convertisseurs (à la précision de la quantification près).+  - Vérifiez ​ que les deux premiers filtres fournissent les mêmes réponses impulsionnelles qu'​avant ajout des convertisseurs (à la précision de la quantification près).
  
 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. 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.
 +
 +<ifauth @prof>
 +Note bertrand:
 +réponse indicielle du filtre RIF deborde 1.65 + 1 + 1 =3.65V
 +</​ifauth>​
 +
 +
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} 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
 +  ​
 +
 +
  
 <ifauth @prof> <ifauth @prof>
Ligne 180: Ligne 209:
   - Définissez le nouveau filtre $s_k=2e_k$   - Définissez le nouveau filtre $s_k=2e_k$
     - Tracez sa réponse indicielle. Quel problème constatez-vous ?     - Tracez sa réponse indicielle. Quel problème constatez-vous ?
-  - Pour corriger ce problème, vous devez saturer le résultat du calcul de l'​équation de récurrence avant de le retourner (donc avant la fin de **TraiteUnEchantillon()**). Pour cela, vous utiliserez les attributs de la classe **Filtre** suivants: ​ **valeurSortieMax** et **valeurSortieMin**. ​ Pour que ces deux attributs soient correctement initialisés,​ vous veillerez à ajouter ​en valeurs effectives ​correctes ​pour paramètres du constructeur de l'​objet filtre **valeurSortieMaxInit** et **valeurSortieMinInit**. Par exemple la ligne:+  - Pour corriger ce problème, vous devez saturer le résultat du calcul de l'​équation de récurrence avant de le retourner (donc avant la fin de **TraiteUnEchantillon()**). Pour cela, vous utiliserez les attributs de la classe **Filtre** suivants: ​ **valeurSortieMax** et **valeurSortieMin**. ​ Pour que ces deux attributs soient correctement initialisés,​ vous veillerez à ajouter ​les valeurs effectives pour les paramètres du constructeur de l'​objet filtre **valeurSortieMaxInit** et **valeurSortieMinInit**. Par exemple la ligne:
 <file cpp cons3.cpp>  ​ <file cpp cons3.cpp>  ​
-  FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA,​0,​NULL,​offsetEntree,offsetSortie); +  FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA,​0,​NULL,​valeur_pour_offsetEntreeInit,valeur_pour_offsetSortieInit); 
 </​file>  ​ </​file>  ​
 devra être remplacée par: devra être remplacée par:
 <file cpp cons4.cpp>  ​ <file cpp cons4.cpp>  ​
-  FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA,​0,​NULL,​offsetEntree,offsetSortie,valeurSortieMaxInit,valeurSortieMin); +  FiltreTrace filtre_echo_RIF(NB_COEFF_B,​coeffB,​NB_COEFF_A,​coeffA,​0,​NULL,​offsetEntreeInit,offsetSortieInit,valeur_pour_valeurSortieMaxInit,valeur_pour_valeurSortieMinIit); 
 </​file>​ </​file>​
   - Testez le bon fonctionnement de l'​ensemble sur la sinusoïde   - Testez le bon fonctionnement de l'​ensemble sur la sinusoïde
 +
 +
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} 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
 +  ​
  
  
tptns2018_2.1553101604.txt.gz · Dernière modification: 2019/03/20 18:06 par bvandepo