* # TSA - TD 10 ###### tags: `TSA` `S2` ## Execice 3 Architecture La routine de cet exercice sert à calculer l'équation aux différences pour un filtre de taille L et des données d'entrée de taille N ### Rappel de l'architecture ![](https://i.imgur.com/IaSt90w.png) Multiplication du contenu de dma et pma (16bits) dans PREG (32bits) On ajoute à chaque fois le contenu de PREG dans un accumulateur (32+n bits) n correspond au(x) bit(s) de garde pour eviter le depassement On prend apres que les 16bits de poids fort il y a un registre à décalage qui sert aux divisions faciles par des puissances de 2 ### Petit rappel convolution avec un filtre FIR de longueur L ![](https://i.imgur.com/ne5P4Z7.png) ### Que font les 3 lignes ? La routine d'interruption fait exactement une convolution du signal par un filtre FIR (quelle coïncidence !) ``` RPT #L-1 MACD hL-1, *- APAC ``` ### Instruction RPT ![](https://i.imgur.com/ALIC1H9.png) Première instruction : Repeat uniquement MACD L fois ![](https://i.imgur.com/iysErUE.png) Le registre auxiliaire pointe sur l'échantillon le plus ancien (X n-(L-1)) ### Insctruction MACD ![](https://i.imgur.com/cazhN3T.png) Les parties en rouge sont importantes ![](https://i.imgur.com/JNXVoqO.png) MAC = multiplier puis accumule Mais ici on fait l'inverse * Addition accumulateur plus sortie du multiplieur * On va mettre ce qui vient de dma dans TREG0 * On va faire la multiplication DMA * PMA dans le PREG (produit) * \* indique l'@ de AR0 et \- on decremente * Le moins sert à modifier le pointeur vers une adresse inférieure à chaque fois * (PFC)+ 1 -> PFC indique que PFC va etre incrémenté de 1 * (dma) -> (dma)+1 sert à recopier le contenu de l'@ de DMA dans la case @+1 (cette ligne donne le nom de MACD) * ![](https://i.imgur.com/CHr6PhI.png) On écrase à chaque fois la valeur d'en dessous jusqu'à arriver tout en haut du dma ### Instruction APAC ![](https://i.imgur.com/s12gRn2.png) On ajoute d'abord puis on multiplie C'est pourquoi on met un APAC a la fin pour ajouter la derniere valeur ### Adressage circulaire ![](https://i.imgur.com/N3JzCFF.png) Adressage circulaire possible en C La valeur courante vient écraser la valeur la plus ancienne. Mémoire organisé de façon circulaire ![](https://i.imgur.com/mV6pOhA.png) La routine d'interruption calcule y[n] en faisant des additions et multiplications. Déclenché à chaque fois à la fréquence d'horloge d'acquisition du signal (a chaque fois qu'on a un nouvel échantillon) ## Exercice 2 : Structure de filtrage 1) ![](https://i.imgur.com/bJ7AjCX.png) Travailler en z sur ce type de structure ![](https://i.imgur.com/66ZDHu7.png) 2) ![](https://i.imgur.com/sMA26UO.png) Fonction de transfert = produit des 4 systèmes. Les découpes sont possible uniquement là où il y a un fil tout seul (pas aux + et au fonction de retard) ![](https://i.imgur.com/sW14ZkP.png) **H1.** ![](https://i.imgur.com/ZoPr4vh.png) **H2.** ![](https://i.imgur.com/u4ZhyRI.png) **H3.** ![](https://i.imgur.com/Svnyuhq.png) **H4.** ![](https://i.imgur.com/6xCZHAl.png) Avec un peu de reflexion on voit que les 2 filtres sont identiques ![](https://i.imgur.com/GLdmZAR.png) **Rappel du filtre moyenneur** ![](https://i.imgur.com/jfw4QHz.png) **Bilan et type de filtre** ![](https://i.imgur.com/yL3FhO8.png) Petit exemple : ![](https://i.imgur.com/Y2kocr2.png) ## Exercice 1: Quantification 1.a) On a un pas de quantification de 2.5V Niveaux arrondis au milieu des intervales (-3.75,-1.25,1.25,3.75) ![](https://i.imgur.com/hzim6eR.png) 1.b) On a plus de point vers 2.5V Nombre identique d'échantillons dans chaque intervalle ![](https://i.imgur.com/GE08549.png) 2) ![](https://i.imgur.com/kw1BpBG.png) ![](https://i.imgur.com/pHsrX6i.png) Peut être comparé à la QAM