35
ARNAUD Marc-Antoine DUMOULIN Romain FOLLET Clément Rapport de projet: Conception d'un logiciel embarqué pour le contrôle d'une table de mixage numérique Université de Valenciennes et du Hainaut-Cambrésis Professeur tuteuré: Mr Philippe Thomin 2006 - 2007 1

Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

ARNAUD Marc-AntoineDUMOULIN RomainFOLLET Clément

Rapport de projet:

Conception d'un logiciel embarqué pour le contrôle d'une table de mixage

numérique

Université de Valenciennes et du Hainaut-Cambrésis

Professeur tuteuré: Mr Philippe Thomin 2006 - 2007

1

Page 2: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

RÉSUMÉ

Les objectifs du projet sont :- Mise à niveau théorique en électronique numérique et en programmation assembleur.- Programmation en assembleur d’un microcontroleur (µC) pour un prototype de table

de mixage numérique avec comme priorités la gestion des entrées et sorties et la gestion des composants externes au µC.

- Etude sur les algorithmes de traitement des signaux audio.

2

Page 3: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

SommaireI)La table de mixage, fonctionnement généralII)Présentation des différents composants

1.Le Microcontroleura)Présentationb)L'horlogec)Reception et transmission des données

2.Les convertisseurs analogiques-numériques3.Les convertisseurs numériques-analogiques

III)Travail mis en place lors de l’annéeIV)Description de notre travail

1.Le Microcontroleur2.Le Logiciel Mplab3.Les Premiers Pas Indispensables : Créer Un Projet4.Les Premiers Exemples De Programmations5.La Programmation Du Bloc DCI6.Les Essais De Programmations7.Résolution Du Problème De L'horloge Pour Les CNA

V)Traitement de signaux numériques1.Théorie2.Traitement Du Signal

a)Le Volumeb)Le Mixagec)Les filtres

1.Les filtres FIR2.Les filtres IIR

d)La réverbératione)Etude d'une implantation de logiciel

ConclusionLexiqueAnnexesBibliographie

3

Page 4: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

INTRODUCTION

Le choix de ce sujet d’étude est lié directement au projet de diplôme d’I.U.T de Marc-Antoine réalisé en 2006 à l’I.U.T GEE2I de Lyon.Son projet portait sur l’étude et la conception d’une table de mixage numérique .avec comme principales caractéristiques techniques :2 entrées mono ( ou une entrée stéréo )6 entrées pour une liaison multicanal6 sorties ( liaison multicanal 5.1.)1 connecteur pour une gestion d’accessoires supplémentaires

Gestion des données sonores sur 16 bitsBande passante : 20 H à 20kHz

A partir du cahier des charges, Marc-Antoine a choisi les composants et réalisé le montage .A la fin de son stage, l’ensemble des composants étaient monté cependant la programmation du microcontrôleur n’avait pas pu être commencé.

Rentrée 2007, Marc-Antoine nous a présenté son projet comme inachevé.Ils nous a semblé interressant de continuer son projet.

Partie techniqueProgrammation en assembleur du microcontroleur ( µC )Gestion des entrées et sortiesGestion des composants externes au microcontroleur

Prise en main du logiciel Mplabutilisation du programmateur et de son logiciel « WinPic800 »

Partie théoriqueLangage assembleur Apprentissage des fonctions réalisés par les différents composants.Etude sur les traitements de signaux audio

Objectifs à atteindre

Pour Marc-Antoine, l’objectif était de concrétiser un projet pour lequel il a deja consacrer beaucoup de temps et qui pourrait correspondre à un tremplin pour son projet professionnel ( travailler dans la conception électronique dans le domaine de l’audiovisuel )Plus techniquement parlant, les objectifs étaient :La maîtrise du langage assembleur du microcontrôleur et des logiciels associés.L’étude des traitements des signaux audio.

4

Page 5: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Pour Romain Dumoulin , dans un premier temps, l’objectif a été de prendre en cours le projet déjà en place et donc de revoir, voir apprendre certaines notions de l’électronique analogique et numérique. Il s’agit (enfin) d’un mise en pratique de nombreuses notions étudiées en cours ( FNAV, CNAV, programmation, Codage TV, mathématiques du signal) ainsi que la decouverte de notions tels que le langage assembleur, les DSP, les microcontroleurs.L’objectif second est de travailler sur le traitement du signal (les algorithmes propres à l’audio ). Ce projet pouvant être une parfaite approche pour d’autres projets concernant l’électronique numérique et le son.

Pour Clement Follet, qui avait a suivi un DUT de mesures physiques avait déjà lors de son stage de fin de DUT programmé un microcontroleur. Ce projet est une opportunité pour lui d’approfondir ces compétences dans le langage assembleur et dans les microcontroleurs appliqués aux systèmes audiovisuels. C'est aussi un premier pas vers la conception de boîtes à effets musicales.

Pour ce projet, nous avons prévu de travailler deux heures par semaines.

5

Page 6: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

I) LA TABLE DE MIXAGE, FONCTIONNEMENT GÉNÉRAL

La table de mixage possède plusieurs étages, nous entrons en premier lieu les signaux analogiques dans les amplifificateurs. Ceux-ci réalisent l'adaptation d'impédance, et par la suite l'addition de signaux (pour les entrées XLR, on additionne le point chaud et l'inverse du point froid).Ensuite, l'étape de conversion analogique numérique est réalisée, on se retrouve donc avec 16bits par canal symbolisant le signal d'entrée.

Ces données sont transférées dans le microcontroleur qui réalise les différents algorithmes.On en retourne 6 valeurs de 16bits, qui sont envoyées dans les convertisseurs numériques analogiques. Par la suite, on a un étage d'adaptation d'impédance et d'inversion de signaux pour obtenir des signaux symétriques.

Par dessus cette architecture, d'autres composants sont necessaires au bon fonctionnement des conversions, par exemple nous n'avons pas parlé des filtres qui servent de filtres anti-repliement indispensable pour toute conversion analogique numérique.

I)La table de mixage, fonctionnement général 6

Page 7: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

II) PRÉSENTATION DES DIFFÉRENTS COMPOSANTS

1. LE MICROCONTROLEUR

A) PRÉSENTATION

Le microcontrôleur utilisé pour la conception de la table de mixage est le dsPIC30F3014 de la société Microchip.Le dsPIC (digital signal PICs) est le premier microcontrôleur de la société Microchip qui ait une architecture 16 bits (les anciens étant à 8 bits). Il est adapté aux applications de traitement du signal et peut donc remplacer un DSP.

Voici ses caractéristiques:

High-Performance Modified RISC CPU:• Modified Harvard architecture• C compiler optimized instruction set architecture• Flexible addressing modes• 83 base instructions• 24-bit wide instructions, 16-bit wide data path• Up to 48 Kbytes on-chip Flash program space• 2 Kbytes of on-chip data RAM• 1 Kbyte of nonvolatile data EEPROM• 16 x 16-bit working register array• Up to 30 MIPS operation:- DC to 40 MHz external clock input- 4 MHz-10 MHz oscillator input withPLL active (4x, 8x, 16x)• Up to 33 interrupt sources:- 8 user selectable priority levels- 3 external interrupt sources- 4 processor traps

Peripheral Features:• High-current sink/source I/O pins: 25 mA/25 mA• Up to five 16-bit timers/counters; optionally pairup16-bit timers into 32-bit timer modules• Up to four 16-bit Capture input functions• Up to four 16-bit Compare/PWM output functions• Data Converter Interface (DCI) supports commonaudio Codec protocols, including I2S and AC’97• 3-wire SPI module (supports 4 Frame modes)• I2C™ module supports Multi-Master/Slave modeand 7-bit/10-bit addressing• Up to two addressable UART modules with FIFObuffers• CAN bus module compliant with CAN 2.0Bstandard

Analog Features:• 12-bit Analog-to-Digital Converter (ADC) with:- 200 ksps conversion rate- Up to 13 input channels- Conversion available during Sleep and Idle• Programmable Low-Voltage Detection (PLVD)• Programmable Brown-out Reset

Special Microcontroller Features:• Enhanced Flash program memory:- 10,000 erase/write cycle (min.) forindustrial temperature range, 100K (typical)• Data EEPROM memory:- 100,000 erase/write cycle (min.) forindustrial temperature range, 1M (typical)• Self-reprogrammable under software control• Power-on Reset (POR), Power-up Timer (PWRT)and Oscillator Start-up Timer (OST)• Flexible Watchdog Timer (WDT) with on-chiplow-power RC oscillator for reliable operation• Fail-Safe Clock Monitor operation:- Detects clock failure and switches to on-chiplow-power RC oscillator

DSP Features:• Dual data fetch• Modulo and Bit-Reversed modes• Two 40-bit wide accumulators with optionalsaturation logic• 17-bit x 17-bit single-cycle hardwarefractional/integer multiplier• All DSP instructions are single cycle- Multiply-Accumulate (MAC) operation• Single-cycle ±16 shift

II)Présentation des différents composants 7

Page 8: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Certaines particularités sont très pratiques pour la programmation:− Une fréquence d'horloge de 30MHz donc 30MIPS qui est satisfaisante pour un

microcontrôleur offert par la société Microchip, mais qui s'avèrera insuffisante pour une table à 8 entrées.

− les nombreuses sources d'interruption avec leur 7 niveaux de priorité qui facilitent la programmation.

− Les timers, utiles quand on doit effectuer des opération à une certaine fréquence (à 48kHz par exemple)

− le bloc DCI qui permet la reception et la transmission de données incluant le protocol I2S pour la transmision.

− Les convertisseurs CAN intégrés permettant la conversion des informations provenant des potentiomètres.

− Un jeu d'instruction assez important, incluant l'instruction MAC(Multiply-Accumulate) nécessaire à la réalisation de filtres.

L'architecture du dspic:

Comme on peut le lire dans les caractéristiques du dsp, l'architecture est nommée Harvard modifiée.

Le nom d'Harvard vient du nom de la fameuse université où vers 1930 un professeur a conçu un prototype de calculateur possédant deux mémoires séparées. La subtilité est là, l'architecture des microprocesseurs actuels PENTIUM porte le nom de Von Neumann et regroupe dans une seule et même mémoire les instructions (le programme) et les données. Du coup ils doivent d'abord aller chercher l'instruction, puis ensuite lire les données et calculer le résultat. Avec une architecture Harvard, le temps de calcul est divisé par deux car l'instruction est les données peuvent être lus au même moment.

Dans le cas d'une architecture Harvard modifiée, il y a bien 2 mémoires séparées mais un seul bus qui les connecte au processeur, ils ne bénéficient donc pas du gain de vitesse de l'architecture Harvard.

Le Processeur CPU quand a lui est de type Reduced Instruction Set Computer (RISC), ce qui signifie qu'il a été optimisé de tel manière que la majorité des instructions s'éxécute en un seul cycle d'horloge.

II)Présentation des différents composants 8

Page 9: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

B) L'HORLOGE

La première chose à savoir est comment configurer l'horloge pour optimiser les calculs.Nous avons choisi de faire tourner l'horloge à son maximum sachant qu'une fonction programme bouclée à la fréquence de 48kHz (fréquence d'échantillonnage) dans le cas de la reception de 8 entrées ne laisserait que très peu d'instructions pour le traitement du signal.

Le dspic nous propose une liste de configuration:

Nous choisissons l'oscillateur interne de 7,37Mhz avec une PLL de 16x (FRC w/PLL 16x), ce qui nous fait sachant que la fréquence est par la suite redivisée par 4, une fréquence de 29,48MHz.

Choisir cette configuration d'horloge se programme par la mise à 0 ou 1 de bits dans les registres suivants:

II)Présentation des différents composants 9

Page 10: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Remarques: − Il est aussi possible de faire varier la fréquence de +10,5% à -12% de sa valeur à partir

d'un registre TUN<3:0> mais la fréquence que l'on a choisi étant maximale cela nous impossible.

− La configuration de l'oscillateur du microcontrôleur se fait en réalité à l'aide d'un logiciel lors du transfert du programme dans le dspic et non par programmation.

C) RECEPTION ET TRANSMISSION DES DONNÉES

La réception et la transmission est la seconde partie de la programmation à effectuer.L'acquisition des données binaires sous la forme de mots de 16 bits à la fréquence d'échantillonnage désirée pour chaque entrée demande un timing précis. L'étude des composants pré et post-dsp est donc plus que nécessaire, c'est à dire l'étude des convertisseurs analogique-numerique et numérique-analogique ainsi que des filtres anti-repliement.

2. LES CONVERTISSEURS ANALOGIQUES-NUMÉRIQUES

Huit convertisseurs à approximations successives ADS7809 sont utilisés.

Ce type de convertisseur a été le premier des systèmes audionumériques. Son principe est basé sur la recherche dichotomique, on utilise des tensions réparties selon une progression de puissances de 2 (par exemple 0,25V 0,5V 0,1V 0,2V 0,4V 0,8V 1,6V 3,2V) et dont la somme sera comparée à la tension continue (voir figure 3.3).

II)Présentation des différents composants 10

Page 11: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Caractéristiques des ADS7809 :Le datasheet est disponible sur le CD et sur le site de Texas Instrument.

Comme on peut le voir sur la figure le CAN de la marque Texas Instuments a une fréquence d'échantillonnage maximale de 100kHz, une résolution de 16bits soient 65536 niveaux de codages ainsi qu'un rapport signal à bruit de 86dB.

Le CAN est commandé par le microchip à travers les pins CS et R/C qui enclenchent la conversion après un changement d'état (voir figure 1 ci-dessous). Trois résistances internes R1IN, R2IN, R3IN sont reliées différemment à des résistances de 100Ohms suivant différents niveaux de tension d'entrée du CAN (ici on utilise le niveau 0V à 5V).Une pin SB/BTC demande que le codage de sortie soit en binaire simple ou en complément à deux, le Binary Two's Complement servant à coder des valeurs négatives.L'entrée EXT/INT configure le CAN pour recevoir ou emmettre l'horloge binaire (Bitclock).La sortie en liaison série composée des pin DATA, DATACLK et SYNC sert respectivement à transmettre les données, à imposer le débit des données et à synchroniser les mots de 16bits avec le DSP.

II)Présentation des différents composants 11

Page 12: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Les diagrammes temporels :

Le dspic envoit une impulsion vers la pin R/C du premier convertisseur à la fréquence de 48kHz (l'impulsion étant dirigée vers le CAN1 par le multiplexeur), la transmission de l'echantillon précédemment converti commence: une impulsion est envoyée par la pin SYNC (début de la suite de bits) suivie des 16bits sur la pin DATA. Les bits sont synchronisés à la fréquence d'horloge de DATACLK commandée par le microcontrôleur.

Dès que la transmission de l'échantillon du CAN1 est terminée, on demande au multiplexeur d'envoyer une impulsion seulement dans le CAN2, et ainsi de suite...

R éception par le DSP :

La réception des données des CANs et la transmission vers les CNAs se fait à l'aide du bloc DCI (Data Converter Interface).

Concernant la réception, les mots de 16bits arrivent dans l'entrée CSDI et sont repérés par l'entrée COFS quand le mode esclave Frame Synchronisation est configuré (on rappelle qu'une impulsion est émise par le CAN vers cette entrée). Chaque mot est placé dans un regitre tampon (Shadow Register) pour être mis en mémoire puis traité.

II)Présentation des différents composants 12

Page 13: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Pour la transmission, c'est l'opération dans le sens inverse qui est effectuée à l'exception que nous devons configurer le bloc en mode I2S et que les données passent cette fois-ci par la pin CSDO.

Dans ce mode, la broche qui servait de détecteur d'impulsion se change en indicateur de voie (WS), voie droite ou voie gauche. On remarque que le premier bit du mot est envoyé une période après le front montant ou le front descendant (sélectionnable).

Une horloge doit être émise que ce soit pour la transmission ou pour la réception, la fréquence est réglée suivant la formule:

FBCK= FCY/[ 2*(BCG+1)]où BCG<11:0> est une valeur entre 1 et ((2^11)-1). Si tous les bits sont à 0, aucune horloge n'est générée.

Dans notre cas: Fbck = Fcy/(2*(1+1)) = 7,37MHz

En ce qui concerne la table de mixage et ses six sorties en 5.1, trois convertisseurs sont utilisés, ce sont des convertisseurs double canaux couramment utilisés en stéréo puisqu'ils utilisent la norme I2S.Les différents signaux pour les 3 CNAs sont envoyés à la suite vers le multiplexeur et distribué vers les CNAs concernés, ceci à la fréquence 48kHz.

II)Présentation des différents composants 13

Page 14: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

3. LES CONVERTISSEURS NUMÉRIQUES-ANALOGIQUES

Le datasheet des PCM1725 est disponible sur le CD et sur le site de Texas Instrument.

Ils sont toujours de la marque Texas Instruments et échantillonent de 16kHz à 96kHz en passant par 48k. Trois entrées servent pour la liaison série, BCKIN pour l'horloge, LCRIN pour séparer la droite de la gauche, DIN comme Data IN. La broche Format mise à +5V commande le timing I2S. Une horloge est envoyée dans la pin SCKI pour déterminer la fréquence d'échantillonnage. Il faut envoyer une fréquence 256 fois ou 384 fois supérieure à 48kHz.Le systéme se règle automatiquement à la fréquence voulue.

Problème: 256*48k = 12,288MHz. Nous avons pas la possiblité d'émettre une hologe du microcontrôleur à une telle fréquence (si le nombre d'instruction par seconde nous le permettait nous aurions au mieux utilisé le dspic uniquement pour générer cette clock...). Il a donc fallu construire un générateur de fréquence de 12,288Mhz précisement. (decription de la résolution par la suite)

II)Présentation des différents composants 14

Page 15: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

III)TRAVAIL MIS EN PLACE LORS DE L’ANNÉE

Novembre :tutoriels sur la base des microcontrôleurs et de son environnementNotions élémentaires : logique binaire, hexadécimal, liaison serie…Description des ports entrées-sorties, des différents périphériques ( DCI, liaison I2S)Composition interne du microcontroleur ( ALU, cartographie mémoire…)Lecture du datasheet du µC dsPIC 30F4013Explications et descriptions basique des composants et du système global.

prise en main des fonctionnalités importante de Mplabcréation et paramétrage de nouveau projetdéclaration indispensables d’initialisationinclusion du fichier de déclaration des broches d’entrées-sorties et des périphériques internes.

gestion des interruptions et du timer

Sans programmateur, nous étions obligé de trouver un moyen pour vérifier l’exactitude du code.La solution a été résolue en apprenant à ce servir du simulateur de µC inclus dans Mplab.De ce fait, on a pu vérifier l’état de chaque adresse mémoire par rapport à l’avancement du code.

Décembr e : Configuration du bloc DCI pour l’utilisation de la transmission I2S

Tutorial : Notions d’interruptions et de timer, avancées du projetTutorial : Mplab

Janvier :Un membre de l’équipe est en stage, la fréquence des réunions diminue fortement :Une réunion en janvier, deux réunions en février.

Achat du programmateur « GTP-USB »sur le site internet WinPic800 permettant d’écrire du code dans le µC et ainsi tester le code en temps réel.

III)Travail mis en place lors de l’année 15

Illustration 1: Programmateur GTP-USB

Page 16: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Il existe plusieurs programmateurs compatible avec le µC, il fallu comparer afin de trouver un programmateur accessible au budget d’un étudiant.Par exemple, le programmateur proposé par Microship est à 130 euros.Celui choisi est à 70 euros, et permet de programmer différentes marques (Microship, Atmel)

Etude de la gestion du programmateur : compatibilité avec Mplab. Après l’achat du programmateur, il était nécessaire d’étudier la documentation technique pour être certain de la compatibilité. Documentation en espagnol…( légères révisions en espagnol)

Février :Premiers essais avec le programmateur.Debut du travail de recherche, de documentation et d’études sur le traitement du signal.Se référer à la partie théorique.

Recherche de la structure de programmation pour la gestion des entrées sorties (cf Les CAN).

Cette partie de programmation a commencée a être écrite mais la logique de programmation ne correspondait pas a celle de l’assembleur mais a du C De ce fait, beaucoup de lignes on pourraient être supprimées car un algorithme plus efficace peut être trouvé.

Mars :

Problème : pour les données de sortie, il faut une horloge pour les CNA de 12,288 MHz.Or il est impossible de générer une fréquence d’une telle précision avec le microcontroleur : comme le µC tourne 30 Mhz, on ne peut générer un signal carré de fréquence maximal de 15MHz.Suite à cette observation, nous avons recherché une solution pour palier ce problème.Ce problème n’avait pas étudié lors de la conception de la table de mixage et a été un frein dans l’avancé du projet.La solution apportée fut d’intégrer au système un générateur de fréquence se composant d’un unique circuit intégré.Suite a ce choix d’intégrer un nouveau composant, il a nous a été obligé de réaliser une alimentation de 3,3 volt et ainsi de placer une régulateur intégré de tension pour réaliser cette fonction. Pour plus de détails se reporter à la réalisation du générateur.

Avril : Création du typon avec le logiciel Protel, logiciel le plus adapté pour ce type de réalisation.Démarche au près de l’IUT GEII pour la création du circuit imprimé.Fin avril, remise en question de la structure de la table par rapport à la structure des tables de mixages numériques actuelles.Nous avons effectués des recherches sur l’architecture des tables de mixages numériques.

A ce moment du projet, nous decidons de diverger notre projet en deux parties :- conception d’une table de mixage d’étude de signaux- recherche et compréhension des systèmes numériques actuels

III)Travail mis en place lors de l’année 16

Page 17: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Ces deux parties nous ont parues très intéressantes à développer car nous souhaitons voir aboutir notre projet mais aussi nous éveiller au traitement du signal professionnels. Ces deux optiques sont importantes pour tous les membres de l’équipe qui vont aussi bien de la conception électrique au traitement des signaux audio.

Pour permettre l'essai de traitements audio, nous avons recherché une méthode de générer en interne un signal sinusoidale, voir un signal aléatoire.De ce fait, nous avons programmés un logiciel permettant de créer une sinusoide pure.

Mai : Soudure des composants sur le circuit imprimé offerts gracieusement par l’IUT GEII.Paramétrage du générateur de fréquences par réseau I2C.

Essai de programmations pour réaliser de simple filtres passe bas.

III)Travail mis en place lors de l’année 17

Page 18: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

IV)DESCRIPTION DE NOTRE TRAVAIL

1. LE MICROCONTROLEUR Chacunes des broches a une adresse mémoire d'un seul bit. L'ensemble de 16 broches forment un PORT (ici de A à E). En revanche toutes les adresses des ports ne sont pas disponibles en sorties (en effet 5x16=80 est différents de 40 broches). Ceci est expliqué par le fait que Microchip souhaite garder une compabilité entre ces microcontrolleur (µC) ne possédant pas les mêmes caractéristiques.De plus, chacune de ces 40 broches ont la possibilité d'être utilisées pour différentes fonctions. Prenons par exemple la première broche INT0/RA11, elle peut être commandée par le logiciel en tant que broches possédant l'état 0 ou 1, elle peut aussi être utilisée en tant qu'entrée à deux états. La troisème possibilité est lorsque l'on utilise l'interruption 0 (détaillée par la suite), elle permet d'être utilisée en tant qu'entrée pour recevoir des instructions de grandes importances interrompant ainsi la suite logique du logiciel en cours d'exécution.

Dans la partie restante du schéma blocs, on retrouve tous les éléments du µC:− l'Unité Arithmétique de Logique (ALU) (en haut à gauche, à droite du bloc Interrupt

Controller)− les espaces mémoires X et Y de RAM− les registres Wxx (dans le blocs W Register Array)− le blocs Digital Signal Processor (DSP) − l'horloge interne du µC (interne ou externe, à paramétrer)− les prériphériques internes du µC, blocs I2C, Timers, DCI...

2. LE LOGICIEL MPLAB

IV)Description de notre travail 18

Illustration 2: Interface du logiciel MPlab

Page 19: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Après une découverte succinte du µC, nous avons regardé en parallèle le logiciel de programmation Mplab. Ce logiciel est gratuit et disponible sur le site de Microchip. Il est également mis à disposition sur le cd joint au rapport.

Nous allons détailler l'environnement de Mplab en décrivant les fonctions que relèvent chacunes de fenêtres:

en haut à gauche: logiciel10.mcwCette fenêtre présente le projet et tous les fichiers qui sont associés à la programmation

à droite : on trouve ici le code du fichier I2C 2.s écrit en assembleur.

En bas à gauche:la fenêtre de « sortie », c'est là où l'on voit apparaître les messages d'erreurs, si la

compilation a été réussie, si un programmateur est connecté correctement...En haut au centre:

La fenêtre watch est utilisé lors d'une programmation en simulation ou en connection directe avec le µC. Elle permet de visualiser les différents registres du µC et avec les onglets, on peut configurer les registres visibles utilisés sur les périphériques internes du µC.Par exemple, ici, on a séléectioné les registres utiles pour la configuration des périphériques DCI, I2C, les CAN.

La fenêtre Logic Analizer est très utile lors des simulations car elle permet de visualiser les signaux présents sur les broches du µC. Ainsi, on peut véifier si les signaux correspondent à la programmation effectuée.

On possède aussi une mesure de l'espace mémoire utilisé. Le µC possède de l'espace réservé au programme(mémoire FLASH) et un autre à des données (de la RAM), ceci explique la représentation de deux espaces différents.

Une démonstration de simulation sera réalisée lors de la soutenance.

IV)Description de notre travail 19

Page 20: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

3. LES PREMIERS PAS INDISPENSABLES : CRÉER UN PROJET

Pour démarrer un projet, il faut tout d'abord savoir avec quel µC on souhaite travailler, en effet chaque language assembleur est propre à un µC. Pour nous c'est le dsPIC30F4013.

Ensuite il faut selectionner quel language on souhaite utiliser (C, assembleur,...), nous avons choisi l'assembleur. Le autres languages languages nécéssitent une compilation pour arriver à créer un code assembleur qui sera ensuite intégré dans le µC. Cette compilation n'est jamais parfaite et comme nous souhaitions utiliser le µC avec la plus grande efficacité, nous avons jugé bon de programmer en assembleur.

Ensuite, il faut créer un fichier debut1_1.s. Ce fichier doit impérativement comporter les instructions suivantes:

.equ __30F4013, 1

.include "p30f4013.inc"

.global _wreg_init

.global __reset

.text__reset:mov #__SP_init, W15 mov #__SPLIM_init, W0 mov W0, SPLIMnop

.end

La premières ligne est la déclaration du composant dsPIC30F4013. Ensuite on trouve une inclusion de fichier; si l'on ouvre ce fichier, on va trouver toutes les déclarations des variables utilisées:par exemple lorsque l'on utilise PORT A dans de code assembleur on va ensuite aller chercher la correspondance de l'adresse mémoire du µC. En effet, un µC ne comprend que suite de 0 et de 1. donc pour lui il doit obligatoirement connaître l'adresse se composant d'une suite de nombres binaires.Les deux lignes suivantes correspondent à des déclarations d'utilisations de correspondance. Par exemple la ligne 3 permet dans le language assembleur d'utiliser les registres W0 à W15 qui sont des espaces mémoires interne au µP présent dans le µC.

Ensuite on défini une zone de code avec .text et .endla première instruction que l'on doit trouver est la réinitialisation du µC (un reset), puis on trouve l'initalisation de paramètres non détaillés ici.

Remarque: Il faut faire bien attention à ne pas mélanger: les déclarations qui ne sont là que pour aider à la programmation et permettent une compabilité entre µC, et la zone de code où chaque ligne correspond à une adresse mémoire précise.

IV)Description de notre travail 20

Page 21: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

4. LES PREMIERS EXEMPLES DE PROGRAMMATIONS

Nous allons voir maintenant au travers d'un exemple, comment programmer en assembleur et quel sont les instructions de bases.

Voici le fichier debut1_1.s (disponible en annexes et sur le CD).equ __30F4013, 1 .include "p30f4013.inc".global _wreg_init.global __reset

.text ;début du code__reset: ;1mov #__SP_init, W15 ;2mov #__SPLIM_init, W0 ;3mov W0, SPLIM ;4nop ;5

mov #0x0000,W4 ;6mov W4,TRISC ;7mov #0xBFF0,W5 ;8

boucle: ;9mov W5,_PORTC ;10inc W5,W5 ;11goto boucle ;12

.end ;13

On remaque que l'on retrouve bien les déclarations éssentielles au bon fonctionnement. Il est confortable aussi de pouvoir commenter son code ce qui cefait après un point-virgule.

Rentrons dans le code:Ligne 5: instruction nop qui veut dire no operation c'est a dire que le µC attent un cycle.Ligne 6: l'instruction mov copie le premier terme (si un #.....) ou le contenu de l'adresse (si c'est une adresse) vers l'adresse du deuxième terme.

Ex: mov #0xFE17 , W1 copie la valeur FE17 dans le registre W1 mov #W1 , W10 copie la valeur contenue à l'adresse FE17 dans W10

ligne 7: TRISC est le registre qui permet de contrôler le sens des broches du port Csi le bit est à 0, la broche est en sortiesi le bit est à 1, la broche est en entrée

ligne 8: on initialise W5 à la valeur BFF0ligne 9: déclaration d'une étiquette : c'est un poin de repère par exemple ici boucle équivaudra à l'adresse de la ligne 10. Une étiquette doit toujours être collée au bord gauche de la page de code.

IV)Description de notre travail 21

Page 22: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Ligne 10: on copie la valeur de W5 dans les bits du Port C. Ainsi, si l'on envoie un 1, la broche est mise au potentiel +5V, si l'on envoie un 0, la broche est au potentiel 0V.Ligne 11: on incrémente W5 et on replace le résultat dans W5.Ligne 12: on retourne à l'adresse équivalente à l'étiquette boucle.

On a ainsi réalisé un générateur de fréquences avec une division de la fréquence par deux si l'on passe de RC x à RC x+1. La fréquence de RC0 dépend du nombre de cycle par seconde effectuées par le µC.

Maintenant, nous allons compliquer un peu le code car éxecuter un code linéaire n'est pas facilement gérable.De ce fait, comme le µC possède des interruptions, nous allons expliquer le principe de fonctionnement de ces blocs.Une interruption est nécessaire pour réaliser des taches de niveaux d'importances différentes.Par exemple, nous souhaitons que toutes les étapes de conversions et de traitement soient prioritaires sur la captation des valeurs des potentiomètres. De même, nous ne souhaitons effectuer une prise de valeurs sur les potentiomètres à chaque échantillon audio.Ce problème est ainsi géré par la génération d'interruptions.

Définition:Une interruption permet de faire évoluer le code non plus linéairement mais dépendant d'un interval de temps, ou d'un signal recu sur une broche.En fait c'est un compteur qui a un seuil de déclenchement variable, et l'entrée qui fournie les impulsions est soit l'horloge du µC, soit une broche.Ainsi, on peut effectuer des temporisations qui déclenchent un processus à des intevals de temps précis.

Pour nous, il sera nécéssaire d'être précis pour la prise et l'envoie d'échantillons pour être sur d'avoir un signal à 48kHz. Si nous souhaiterons aussi effectuer des opérations à des espaces de temps précis, nous utiliserons donc cette fonctionnalité.

Au niveau de la programmation, on doit rajouter la déclaration suivante:.global __T1Interrupt

Ensuite, dans le code on doit inclure une structure du type:intialisations.text

__resetmov #0x0019,W0mov W0,PR5mov #0x0000,W0mov W0,TMR5mov #0b1000000000000000,W0mov W0,T5CON

mov #0xFFF7,W4mov W4,TRISF

IV)Description de notre travail 22

Page 23: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

bset IEC1,#T5IEboucle:

goto boucle

__T5Interrupt:bclr IFS1,#T5IFbtg PORTF,#3retfie

Les registres PR5, TRM5,T5CON permettent de régler le timer.Ensuite, on place la troisième broche du port F en sortie.On active ensuite l'interruption avec la mise à 1 du bit T5IE se trouvant dans le registre IEC1.

On arrive dans une boucle qui peut contenir une tâche peut importante, par exemple le rafraîchissement d'un afficheur LCD.Le µC tourne en permanence dans cette boucle.Dès lors que l'interruption du Timer est générée, le microcontroleur va effectuer les codes présents à l'étiquette de l'interruption.Ici dès que le Timer5 déclenche, nous allons effectuer les trois lignes de codes de l'etiquette __T5Interrupt. La première ligne sert à réinitialiser le Timer, la deuxième ligne à complémenter le troisième bit du port F (ce qui nous crée un signal d'une période de 2 temporisations).La dernière ligne permet de dire que les actions de la tache du Timer est finie, et que le microcontrolleur doit ainsi continuer le programme principal (ici, il va retouner à l'éttiquette boucle).

Remarque: les Timers sont des périphériques internes générant des interruptions au µP. Mais les autres périphériques (DCI, I2C, ...) génèrent aussi des interruptions pour signaler que tel mot a été transmis, ou que la réception est complète...

On retrouve ainsi avec la simulation le signal souhaité sur la broche RF5:

IV)Description de notre travail 23

Illustration 3: Simulation du Timer générant des interruptions

Page 24: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

5. LA PROGRAMMATION DU BLOC DCI

La programmtion de ce bloc nous a demandé plus de temps que pour les interruptions car plus de registres sont à paramétrer. De plus dans la documentation spécifique au microcontrolleur, toutes les options ne sont pas très bien définies.Nous avons tout d'abord essayé de programmer, de simuler mais rien n'était généré.Nous avons fait des recherches sur internet, en allant sur des forums, et en cherchant un peu mieux sur le site de Microchip, nous avons trouvé une documentation plus intérressante pour programmer. En effet le pdf sur la famille des dsPIC est plus explicite car elle décrit en une page ce que un registre comporte. Par la suite, on a aussi l'ordre des démarches à suivre pour paramétrer correctement les périphériques internes.

Malgré cette trouvaille très riche, nous n'arrivions pas à faire une simulation où l'on devai apercevoir nos signaux générés.Après avoir cherché un peu plus sur le site de Microchip, nous avons décidé d'envoyé un mail à cette société pour qu'il puisse nous expliquer notre problème.Deux jours après, nous avions une réponse expliquant que tous les périphériques internes ne pouvaient être simulé et que nous étions obligé de programmer notre composant pour tester.

6. LES ESSAIS DE PROGRAMMATIONS

Dès que nous avons recu cette réponse et comme nous avions cablé l'interface entre l'ordinateur et le programmateur ainsi qu'entre le programmateur et le µC. Nous avons cherché à programmer un µC.

Marc-Antoine possédait à ce jours trois µC. Mais comme les essais n'ont pas été très concluants, nous avons été obligé de recommander des échantillons (les µC sont offers pour permettre la réalisation de prototypes). Ainsi pendant deux semaines, nous étions un peu bloqués sur cette partie.

Nous avons tout de même recherché des informations pour savoir comment nous devions programmer avec le logiciel WinPic800 (fourni sur le CD).Nous avons donc paramétré notre logiciel pour avoir la possibilité d'éffacer et de réecrire le code.

IV)Description de notre travail 24

Page 25: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

7. RÉSOLUTION DU PROBLÈME DE L'HORLOGE POUR LES CNA

Lorsque nous avons programmés le µC, nous ne possédions toujours pas de signal en sortie. De ce fait, nous avons retourné lire en détail la documentation sur le CNA.On c'est ainsi apercu que nous avions oublié de généré une fréquence égale à 256 fois la valeur d'échantillonnage (ici 48000Hz). Ce qui nous fait une horloge à générer à la fréquence de 12,288MHz. Le µC ne permet pas de générer une fréquence aussi précise et aurai nécéssité d'utiliser un autre µC pour générer une fréquence.De ce fait, nous avons effectué des recherches sur les sites des fabriquant de composants (Texas Instrument, Maxim,...). La solution retenue a été de prendre un générateur de fréquence (spécialisé pour les fréquences d'horloges numériques).Deux problèmes se sont trouvés:− Le composant s'alimente en 3,3V− Il génère une fréquence de 24,576MHz soit le double de ce que nous souhaitions.

Nous avons résolu le premier en choissisant un régulateur intégré de tension permettant de convertir du 5V au 3,3V.Le deuxième a été de relier ce composant au réseau I2C du µC. En effet, après avoir lu la documentation, nous avons vu qu'il possède un diviseur de fréquence intégré. Mais il faut le paramétrer par le réseau I2C.Marc-Antoine avait prévu, l'année dernière, la possibilité de connecter d'autres outils reliés par réseaux I2C. De ce fait, les broches étaient déjà réservées pour ce type de réseau.

Remarque: Le réseau I2C est un réseau crée par Philips, ce réseau possède un maître et un ou des esclaves. Pour se reconnaître entre composants, chacun possède une adresse sur 7 bits dont quatre qui sont déterminés par le composant utilisé. Ce réseau ce compose de deux connecteurs, un pour une horloge, et un autre pour les données. À chaque envoi de donnée, on envoie un premier octet spécifiant l'adresse de l'esclave, puis un deuxième octet pour la donnée.

Ainsi, il faut réaliser une autre partie de programmation pour paramétrer le réseau I2C. Cette partie n'a pas été finie car là aussi, on ne pouvait simuler sous Mplab.De plus, ce réseau demande de gérer l'état de transmission, on doit générer le bit de start, l'envoie de l'adresse, vérifier que l'esclave répond, envoyer la donnée et enfin envoyer un bit de stop.

De plus cette partie a nécéssité la réalisation d'un ciruit imprimé. Comme les composant sont très petits, nous étions obligés de réaliser cette plaque.Marc-Antoine ayant déjà effectué ce type de produit, il a réalisé rapidement un typon, simple face, à l'aide du logiciel Protel (logiciel professionnel d'électroniciens).

IV)Description de notre travail 25

Page 26: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Voici le typon, mais pour le faire imprimer, il doit être généré en miroir (symétrie verticale) car lors de la conception de la plaque, le circuit est inversé. Le typon ayant servi à générer la plaque réelle est sur le CD au format pdf.

Pour faire tirer le typon, nous sommes allés voir l'IUT de l'université qui a bien voulu nous le réaliser. Nous avons aussi demandé les condensateurs nécéssaires.

Pour réaliser la soudure, c'est Marc-Antoine qui c'est chargé de cette étape car les composants sont au pas (espacement entre deux broches) de 0,65mm. Ce type de soudure demande beaucoup de temps et de précision, il faut placer de l'étain sur la piste, en placer sur les broches du composant. Placer avec grande précision le composant pour venir chauffer légèrement l'étain de la piste et soude ainsi le composant.Ensuite, il a soudé les condensateurs, et enfin il a relié le générateur à la table de mixage.

Par manque de temps, nous n'avons pas eut le temps d'avancer plus mais l'ensemble de cette partie nous a déjà beaucoup apporté car nous avons recherché beaucoup de documentations. En plus, ce projet nous a perfectionné en anglais technique car aucune documentation c'est en francais mais tout en anglais. Même si parfois nous avons pris plus de temps à comprendre la traduction, nous avons avancé pour découvrir de nouvelles connaissances.

Pour poursuivre plus rapidement et tendre vers l'application de traitement audio, nous avons décidé de faire un générateur intégré.De ce fait, la table de mixage se transforme plus en synthétiseur. En effet, nous avons programmé pour générer des signaux purs mais nous pouvons facilement générer tout type de signaux car nous enregistrons toutes les valeurs indépendament.

Nous allons maintenant expliquer le principe de base pour générer des signaux.L'une des meilleures solutions pour générer des signaux est l'utilisation de table d'échantillons. Dans ces générateurs, l'onde n'est pas calculée au fur et à mesure,

IV)Description de notre travail 26

Illustration 4: Typon du générateur de fréquence (50 x 25mm)

Page 27: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

mais lue cycliquement dans une table mémoire qui regroupe les valeurs d'échantillons en fonction du temps.

Ces oscillateurs sont par ailleurs à la base de nombreux synthétiseurs modernes et si la mémoire contenant la forme d'onde était la copie d'un signal d'entrée pendant un certain temps, on disposerait d'un échantillonneur (ou sampler).

Nous nous cantonons à la génération d'une sinusoïde pour avoir une fréquence pure (sans harmoniques) mais cherchons à avoir une fréquence variable.La solution la plus simple pour faire varier la fréquence est d'enregistrer le minimum d'échantillons pour la fréquence la plus basse et d'ensuite lire les échantillons une fois sur deux, une fois sur trois, une fois sur quatre...On obtient alors f, 2f, 3f, 4f etc...Il existe des manières plus évoluées qui permettent d'avoir une fréquence qui varie continuement et non discrêtement, comme la technique de l'interpolation sui est représenté par le schéma suivant:

Ainsi il peut être assez simple de générer type de signaux et avec des fréquences multiples de 2.Avec nouvelle notion, nous réalisons déjà un peu du traitement de signal, et c'est pour cela que nous allons maintenant expliquer ce que nous avons appris sur le traitement audio.

IV)Description de notre travail 27

Page 28: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

V) TRAITEMENT DE SIGNAUX NUMÉRIQUES

1. THÉORIE

Aujourd'hui, il devient courant de voir des systèmes audionumériques réaliser différents traitements de signaux. En audiovisuel, ces applications se retrouvent dans des équaliseur numériques, des tables de mixages numériques, des générateurs d'effets,...

Pour comprendre le principe de fonctionnement, il est important de connaître les propriétés de la transformée en Z car elle permet de travailler sur des signaux discrets comme le numérique. Ainsi en étudiant les fonctions de transferts de différents éléments, il peut être possible d'étudier la réaction globale du système.

Ainsi pour avoir un traitement de signal, il faut avoir au minimum:− un signal d'entrée numérique e(t)− un signal de sortie numérique s(t)− un sytème capable de réaliser différents types d'opérations h(t)

Ainsi on peut en déduire la relation suivante:s(t) = h(t) * e(t) => c'est un produit de convolutionS(z)=H(z) x E(z) => en Z, on obtient un produit (comme avec la transformée de Fourier)

2. TRAITEMENT DU SIGNAL

Nous allons tout d'abord expliquer comment fonctionnent les principes de bases tels que le volume, le mixage, la gestion du panoramique...

A) LE VOLUME

Pour gérer le volume, il est juste necessaire de réaliser une multiplication des chaque echantillon par une valeur comprise entre 0x0000 et 0x7FFF. On obtient ainsi une équation de ce type: S(z) = Valeur_d'un_registre x E(z)Chaque échantillon est multiplié par une valeur considée comme constante.

B) LE MIXAGE

Pour additionner plusieurs signaux, on va être obligé d'insérer à chaque entrée un coefficient dépendant du nombre total d'entréesPar exemple pour n entrées, on obtient:

S(z) = ∑ 1n∗E zi

Le problème ici c'est que l'on ne peut rien modifier en paramètres, de ce fait on fait varier le coefficient 1/n en fonction d'un volume. Il faudra toujours avoir la somme des coefficients égale à 1.On obtient ainsi la fonction suivante:

S(z) = ∑ 1n∗

Volumei

∑Volume i

∗E z i

V)Traitement de signaux numériques 28

Page 29: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

C) LES FILTRES

En numérique, deux types de filtres sont istinguables. Nous avons les filtre à réponse finie et les filtres à réponse infinie.

La différence se comprend facilement si l'on envoie en entrée des filtres, une implusion.

Pour le premier, nous aurons un signal de sortie qui rapidement tend vers 0. Alors que dans l'autre cas, la sortie ne devient jamais nulle.

Nous allons dévelloper un peu plus la structure de chacun de ces filtres.

1. Les filtres FIR

Les filtres à réponse impulsionnelle finie (Finit Impluse Reponse) sont des filtres qui nécéssitent le moins d'octets de mémoire.

En voici un schéma bloc qui décrit la fonction d'un filtre FIR:

On peut remarquer que l'écantillon de sortie ne dépend que de l'entrée et des échantillons antécédents de l'entrée.

Ainsi on peut génraliser ce principe en écrivant l'équation écrite en dessous du schéma bloc.On retrouve bien la propriété décrite au dessus: la sortie à l'instant n est une somme d'une infinité de produits entre les échantillons précédents et un coefficient.

Pour réaliser un filtre passe bas, il est facile de voir qu'il faut réaliser une moyenne sur plusieurs octets. Ainsi on peut obtenir par exemple:

y[n] = 1/3 * x[n] + 1/3 * x[n-1] + 1/3 * x[n-2]

Si l'on étent cette moyenne à l'infini, on obtient la valeure moyenne du signal.

2. Les filtres IIR

A la différence du premier filtre étudié, l'octet de sortie dépend d'une somme des échantillons d'entrée (avec des coefficients) et d'une somme des échantillons calculés précédement.

De ce fait, si l'on rentre une impulsion, on active le système lors de l'état haut de l'entrée. Ensuite, le rebouclage de la sortie sur l'entrée réalise un système bouclé.Ce rebouclage explique pourquoi à l'infini, il est possible un très faible signal théorique.

V)Traitement de signaux numériques 29

Page 30: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

La formule présente bien deux sommes qui permettent d'obtenir le schéma bloc ci-dessus.

Après avoir compris comment fonctionnent les filtres numériques, nous allons maintenant passer aux effets de réverbérations, fortement liés aux filtres.

D) LA RÉVERBÉRATION

Le concept de réverbération diffère de celui de l’écho par le fait que l’on est dans une pièce de petite taille par rapport à la vitesse du son, ainsi les reflexions sont multiples.Pour simuler un auditorium plusieurs réflexions seront générées.Le but est d’avoir la qualité sonore d’une église, d’un auditorium, ou d’autre, dans une pièce de mauvaise qualité. La réverbération peut aussi donner de l’ampleur à une source un peu « plate », elle peut supprimer certains défauts, ou enfin « fondre » un son dans une ambiance sonore.Les effets numériques de type réverbértion vont permettre de modifier l’allure temporelle du son reçu par l’auditeur

L’effet de réverbération est cette fois obtenu en additionnant le signal de sortie retardé.Dans ce cas, il est indispensable d’atténuer fortement le signal retardé. En effet le système est bouclé puisque l’on a un retour de la sortiesur l’entrée. Il y a donc un risque d’instabilité, qui peut ici se traduire par en effet de Larsen.La relation temporelle de la réverbération est donc s(t)= e(t) + B.s(t-θ) où θ est le retard d’une reflexion et e(t) le signal original, et B le coefficient d’atténuation.

Dans le calculateur on doit implanter l’algorithme associé à la réverbération, qui consiste à retarder le signal de sortie puis à additionner au signal original.L’équation est donc : Y(n) = X(n) + B.Y(n-m)Il faut determiner la valeur à donner à la grandeur m qui réalise le retard de chaque réverbération.Pour parcourir une distance de 20 mètres, le son met environ 60 ms.A la fréquence de 48kHz, soit une période de 20,8 μs, il faut 60 ms/20,8 μs, soit 2880 périodes d’échantillonnage.On fixe par exemple m=2880

V)Traitement de signaux numériques 30

Page 31: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

Après une étude de la réponse en fréquence, on peut remarquer une periodicité fréquentielle du traitement de type réverbération ,dépend de la durée de cette réverbération.Il faut faire attention à une eventuelle instabilité si B devient trop grand, cela peut amener le son à saturer rapidement, et qui va traduire par un effet Larsen, ou d’autres détériorations du signal original.Il existe bien sur des algorithmes plus compliqués que celui proposé par la relation précedente qui corrigent certains défauts, comme le traînage des sons aigus.J.Moorer a étudié des relations permettant de régler les réverbérations tardives et initiales de façon séparées

Ce shéma bloc represente l’algorithme de réverbération de J.A.Moorer pour fréquence d’échantillonnage de 44,1 kHz.

On remarque que le principe de réverbération est un filtre IIR où l'on a les coefficients d'entrées suivants:a(0) =1; les autres sont nulles. Ainsi, on obtient une sortie dépendant du signal d'entrée ajouté de la réverbération ( somme des anciens échantillons calculés).

V)Traitement de signaux numériques 31

Page 32: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

E) ETUDE D'UNE IMPLANTATION DE LOGICIEL

Pour chaque échantillon, la séquence réalisée par le calculateur est la même.Les initialisations étant faites, on exécute une boucle qui fait toujours la même chose.Tout d’abord, elle doit acquérir la valeur d’un échantillon, X(n).Cette acquisition se fait grâce aux convertisseur analogique numérique.Ce convertisseur est synchronisé sur l’horloge, de période Te, période d’échantillonnage ( pour notre table : 48 kHz)On effectue 48000 boucles de programmes par seconde.Dans cette boucle, on effectue également le traitement, c’est a dire le calcul de Y(n)

Pour écrire l’algorithme associé au calcul de Y(n), on utilise une pile mémoire ( buffer) qui va stocker les echantillons nécessaires au calcul. Suivant le nombre d’échantillons à conserver, la taille de la pile est plus ou moins grande.

Pour éviter de calculer la suite des échantillons Y(n), on peut determiner l’équation générale associée à Y(n). Pour résoudre une équationaux différences, on adopte la même méthode que celle que pour une équation différenctielle.

Utilisation et efficacité de la transformé en Z pour les algorithme de calcul.Le fait de calculer la fonction de transfert avec la transformée en Z permet d'obtenir une équation étant adptable à la programmation car la sortie dépend des échantillons d'entrée ainsi que ceux de sortie.

Malheureusement, nous n'avons pas eut le temps d'avancer plus loin dans le traitement audio.

V)Traitement de signaux numériques 32

Page 33: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

CONCLUSION

Le projet de table de mixage vient d’un projet de fin de stage.

Nous avons décidé de poursuivre ce projet

Nous nous sommes fixé de nombreux objectifs, des objectifs théoriques qui concerne le traitement du signal mais aussi les notions d’électronique et de langage assembleur.

Le projet avançant par impulsions en fonctions des problèmes rencontrés.

Alors les programmes d’initialisation du logiciel avait été écrits, la difficulté majeure rencontré est venu d’un problème de générateur d’horloge pour les convertisseurs analogiques numériques.

Suite à ce problème, nous avons orienté le projet vers à la fois l’étude théorique du traitement et vers la programmation d’un synthétiseur .

Conclusion 33

Page 34: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

LEXIQUE

Voici un petit lexique qui pourra vous aider pour la lecture de ce compte rendu.

DSP Digital Signal Processor

µC microcontroleur

µP microprocesseur

ALU Unité Arithmétique de Logique

RAM Random Access Memory

Eeprom Electrique Erasable Programmable ROM

DCI Data Converter Interface

I2S Inter Integrated-Circuit Sound

I2C Inter Integrated Circuit

FIR Finite Impluse Reponse (Filter)

IIR Infinit Impluse Reponse (Filter)

z transformée en z définie par z=ep ΔT avec p = jω

ANNEXES

Toutes les annexes qui ont étés utilisés sont disponibles sur le cd ci-joint.Si malgré tout vous souhaitez avoir plus d'informations, consultez la bibliographie.

Annexes 34

Page 35: Conception d'un logiciel embarqué pour le contrôle d'une ...clement.follet.free.fr/blog/dl/etudes/dream... · RÉSUMÉ Les objectifs du projet sont :-Mise à niveau théorique en

BIBLIOGRAPHIE

Voici les principaux sites que nous avons consultés:

www.microchip.com

www.ti.com

www.ic-maxim.com

www.winpic800.com

www.analog-devices.com

Ouvrages consultés:

« Débuter en traitement numérique du signal » J-N. Martin

« Applications audionumériques des DSP » Benoit Bouchez

« The scientist and engineer’s guide to Digital Signal Processing » Steven W.Smith

Bibliographie 35