Vous êtes sur la page 1sur 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
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
Sommaire
I)La table de mixage, fonctionnement général
II)Présentation des différents composants
1.Le Microcontroleur
a)Présentation
b)L'horloge
c)Reception et transmission des données
2.Les convertisseurs analogiques-numériques
3.Les convertisseurs numériques-analogiques
III)Travail mis en place lors de l’année
IV)Description de notre travail
1.Le Microcontroleur
2.Le Logiciel Mplab
3.Les Premiers Pas Indispensables : Créer Un Projet
4.Les Premiers Exemples De Programmations
5.La Programmation Du Bloc DCI
6.Les Essais De Programmations
7.Résolution Du Problème De L'horloge Pour Les CNA
V)Traitement de signaux numériques
1.Théorie
2.Traitement Du Signal
a)Le Volume
b)Le Mixage
c)Les filtres
1.Les filtres FIR
2.Les filtres IIR
d)La réverbération
e)Etude d'une implantation de logiciel
Conclusion
Lexique
Annexes
Bibliographie

3
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 multicanal
6 sorties ( liaison multicanal 5.1.)
1 connecteur pour une gestion d’accessoires supplémentaires

Gestion des données sonores sur 16 bits


Bande 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 technique
Programmation en assembleur du microcontroleur ( µC )
Gestion des entrées et sorties
Gestion des composants externes au microcontroleur

Prise en main du logiciel Mplab


utilisation du programmateur et de son logiciel « WinPic800 »

Partie théorique
Langage 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
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
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


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: Analog Features:


• Modified Harvard architecture • 12-bit Analog-to-Digital Converter (ADC) with:
• C compiler optimized instruction set architecture - 200 ksps conversion rate
• Flexible addressing modes - Up to 13 input channels
• 83 base instructions - Conversion available during Sleep and Idle
• 24-bit wide instructions, 16-bit wide data path • Programmable Low-Voltage Detection (PLVD)
• Up to 48 Kbytes on-chip Flash program space • Programmable Brown-out Reset
• 2 Kbytes of on-chip data RAM
• 1 Kbyte of nonvolatile data EEPROM Special Microcontroller Features:
• 16 x 16-bit working register array
• Enhanced Flash program memory:
• Up to 30 MIPS operation:
- 10,000 erase/write cycle (min.) for
- DC to 40 MHz external clock input
industrial temperature range, 100K (typical)
- 4 MHz-10 MHz oscillator input with
• Data EEPROM memory:
PLL active (4x, 8x, 16x)
- 100,000 erase/write cycle (min.) for
• Up to 33 interrupt sources:
industrial temperature range, 1M (typical)
- 8 user selectable priority levels
• Self-reprogrammable under software control
- 3 external interrupt sources
• Power-on Reset (POR), Power-up Timer (PWRT)
- 4 processor traps
and Oscillator Start-up Timer (OST)
• Flexible Watchdog Timer (WDT) with on-chip
low-power RC oscillator for reliable operation
• Fail-Safe Clock Monitor operation:
Peripheral Features: - Detects clock failure and switches to on-chip
• High-current sink/source I/O pins: 25 mA/25 mA low-power RC oscillator
• Up to five 16-bit timers/counters; optionally pair
up DSP Features:
16-bit timers into 32-bit timer modules • Dual data fetch
• Up to four 16-bit Capture input functions • Modulo and Bit-Reversed modes
• Up to four 16-bit Compare/PWM output functions • Two 40-bit wide accumulators with optional
• Data Converter Interface (DCI) supports common saturation logic
audio Codec protocols, including I2S and AC’97 • 17-bit x 17-bit single-cycle hardware
• 3-wire SPI module (supports 4 Frame modes) fractional/integer multiplier
• I2C™ module supports Multi-Master/Slave mode • All DSP instructions are single cycle
and 7-bit/10-bit addressing - Multiply-Accumulate (MAC) operation
• Up to two addressable UART modules with FIFO • Single-cycle ±16 shift
buffers
• CAN bus module compliant with CAN 2.0B
standard

II)Présentation des différents composants 7


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


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


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


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


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


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


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


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

Novembre :
tutoriels sur la base des microcontrôleurs et de son environnement
Notions é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 30F4013
Explications et descriptions basique des composants et du système global.

 prise en main des fonctionnalités importante de Mplab


création et paramétrage de nouveau projet
déclaration indispensables d’initialisation
inclusion 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écembre :
Configuration du bloc DCI pour l’utilisation de la transmission I2S

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


Tutorial : 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.

Illustration 1: Programmateur GTP-USB

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


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


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


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

Illustration 2: Interface du logiciel MPlab

IV)Description de notre travail 18


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.mcw


Cette 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


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, SPLIM
nop

.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 .end


la 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


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: ;1
mov #__SP_init, W15 ;2
mov #__SPLIM_init, W0 ;3
mov W0, SPLIM ;4
nop ;5

mov #0x0000,W4 ;6
mov W4,TRISC ;7
mov #0xBFF0,W5 ;8
boucle: ;9
mov W5,_PORTC ;10
inc W5,W5 ;11
goto 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 C
si le bit est à 0, la broche est en sortie
si le bit est à 1, la broche est en entrée
ligne 8: on initialise W5 à la valeur BFF0
ligne 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


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
__reset
mov #0x0019,W0
mov W0,PR5
mov #0x0000,W0
mov W0,TMR5
mov #0b1000000000000000,W0
mov W0,T5CON

mov #0xFFF7,W4
mov W4,TRISF

IV)Description de notre travail 22


bset IEC1,#T5IE
boucle:
goto boucle

__T5Interrupt:
bclr IFS1,#T5IF
btg PORTF,#3
retfie

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:

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

IV)Description de notre travail 23


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


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


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. Illustration 4: Typon du générateur de fréquence (50 x 25mm)

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


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


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 convolution
S(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ées
Par exemple pour n entrées, on obtient:
1
S(z) = ∑  ∗E i z 
n
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:
1 Volumei
S(z) = ∑  ∗ ∗E i z  
n ∑ Volume i

V)Traitement de signaux numériques 28


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


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


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


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


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
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
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