====== TD 1 Architecture pour le TNS : Dimensionnement ====== L'objectif de ce TD et de savoir dimensionner les calculs (opérandes, résultats intermédiaires et finaux) pour l'implémentation d'équation de récurrence de filtres RIF en virgule fixes. Il est la suite du TD papier: {{https://bvdp.inetdoc.net/files/iut/tp_tns/TDcalculVfixeV2.doc}} Nous souhaitons progressivement permettre l'évolution du filtre réalisé au TP1 pour le porter sur microcontrôleur avec des calculs en virgules fixes. Pour cela, nous allons "simuler" numériquement le fonctionnement des périphériques de conversion à l'aide de fonctions. Ensuite, nous coderons (quantifierons) les coefficients du filtre en virgule fixe et listerons les opérations nécessaires pour pouvoir effectuer les calculs sur ces nombres. ====Quantification des entrées analogiques==== Déterminer les types adéquats pour les paramètres d'entrée et de retour de la fonction **simuADC**. Cette fonction prend en entrée: - une valeur de tension analogique - un facteur multiplicatif - un offset - une valeur maximale admissible pour la sortie - une valeur minimale admissible pour la sortie La fonction retourne: - la valeur numérique convertie. ===Solution:=== unsigned short int simuADC(double e, double facteur, double offset, unsigned short int min, unsigned short int max){ //calcul intermédiaire sur plus de bits que le résultat et en signé pour stocker un résultat valide avant saturation long int temp=(long int) round( (e* facteur) + offset); //gestion des saturations if (temp>max) temp=max; if (temp - Déterminer les valeurs min et max pour un ADC sur **nbBitsQuantADC** bits fournissant une valeur au format UQnbBitsQuantADC.0 - Déterminer les valeurs facteur et offset pour une correspondance de la valeur 0 pour une entrée à 0 V et $2^{nbBitsQuantADC}$ pour une tension de 3.3V. ===Solution:=== 0 et (1< ====Génération des valeurs de sorties analogiques==== Déterminer les types adéquats pour les paramètres d'entrée et de retour de la fonction **simuDAC**. Cette fonction prend en entrée une valeur numérique correspondant à la sortie du filtre pour un échantillon, un facteur et un offset et retourne la valeur numérique convertie correspondant à une valeur analogique. ===Solution:=== double simuDAC(unsigned short int e, double facteur, double offset, double min, double max){ double temp= (e* facteur) + offset ; //gestion des saturations if (temp>max) temp=max; if (temp - Déterminer les valeurs d'échantillons d'entrée min et max pour un DAC sur nbBitsQuantDAC bits au format UQnbBitsQuantDAC.0. Déterminer les valeurs des paramètres min et max si le DAC est capable de générer des tensions entre 0 et 3.3V. - Déterminer les valeurs facteur et offset pour une correspondance de la valeur 0 pour une sortie à 0 V et $2^{nbBitsQuantDAC}$ pour une tension de 3.3V. ===Solution:=== (1<