TPDSP Simulink

Télécharger au format doc, pdf ou txt
Télécharger au format doc, pdf ou txt
Vous êtes sur la page 1sur 7

-1-

Université de Nice-Sophia Antipolis 2007-2008


Polytech'Nice-Sophia, Elec4

Travaux Pratiques de Traitement du Signal

TP n°: 5 – DSP sous Simulink

1. Présentation du TP

A travers ce TP, nous utiliserons l’ensemble des logiciels suivants:


 Matlab 6.5 Release 13 (The MathWorks, http:\\www.mathworks.com)
 Simulink 4.0 avec DSP Blockset et Real-Time Workshop 4.0 (The MathWorks)
 SignalMaster Software Tools 3.0 (LYRtech Inc., http:\\www.lyrtech.com)
 Code Composer Studio 2.0 (Texas Instrument, http:\\www.ti.com)

Simulink est une toolbox de Matlab qui permet de construire des «  modèles » de simulation.
Elle est constituée d’une interface graphique simple et complète qui permet ainsi de simplifier
le code Matlab. La construction d’un modèle se fait par simple déplacement des blocs sur la
feuille du modèle. On appelle « bloc » une boîte possédant une ou plusieurs entrées/sorties, et
réalisant une fonction précise sur un signal donné. Par exemple, nous trouvons le bloc de la
fonction FFT (Fast Fourier Transform) qui applique l’algorithme rapide de la transformée de
Fourier sur un signal. Les liens entre les blocs se font d’une manière tout aussi simple avec le
placement d’une ligne entre 2 blocs. Les paramètres d’un bloc sont obtenus par un double-clic
sur le bloc. L’interface principale de Simulink (« Simulink Library Browser ») permet
d’accéder à tous les blocs des toolbox Matlab installées sur l’ordinateur. Par exemple, il est
possible d’accéder aux blocs de la Communication Blockset, DSP Blockset, LSP DSPLink
Blockset. Cette dernière toolbox nous permettra de communiquer et de lancer une simulation
sur la carte SignalMaster de LYR Signal Processing (LSP).

Les blocksets utilisés :


 Communication Blockset : librairie des blocs permettant de simuler/tester des canaux de
communication (LAN, GSM, …).
 DSP Blockset : librairie regroupant un grand nombre de fonctions utilisées dans le
traitement numérique du signal (transformations, statistiques, filtrage numérique…).
 Real-Time Workshop (RTW): ce package permet la traduction des modèles en langage
C. Il est indispensable pour pouvoir communiquer avec la carte SignalMaster à partir
de Simulink. RTW fait directement appelle au logiciel Code Composer Studio pour créer
un exécutable destiné au DSP de la carte SignalMaster.
 LSP DSPLink : cette librairie est fournie avec la carte SignalMaster. Elle propose
différents outils utilisable sur la carte SignalMaster (voir la section « Librairie LSP
DSPLink »).

La carte SignalMaster est constituée des éléments suivants :


 Un DSP Texas Instruments’ TMS320C6701 :
 cadencé à 150MHz (maximum de 900Mflops)
 3 types de mémoires accessible au DSP : mémoire Interne (64KByte), Synchronous Burst Static RAM
(SBSRAM : 1MB), Synchronous Dynamic RAM (SDRAM : 16MB)
 architecture en virgule flottante avec adressage sur 32 bits.
 Un FPGA Xilinx Virtex XCV300  de 1536 CLB (Configurable Logical Block).
-2-

 Un CODEC Crystal’s CS4228 :


 Sur 24 bits, à 96kHz, 2 ADC, 6 DAC
 Un processeur AMD ELANSC520 :
 Cadencé à 100MHz
 « Communication controller » : gère les communications Ethernet, USB, FireWire, cartes PCI, PC-
CARD, mémoire SDRAM.

2. Les principaux outils sous Simulink :


Outils Localisation dans Simulink
Une fenêtre d’affichage (Scope) Simulink Sinks  Scope
Les outils mathématiques (Sum,...) Simulink Math
DSP Blockset  Math functions  Math Operations
Les transformées (FFT,…) DSP Blockset  Transforms
Les générateurs de signaux Simulink Sources  …
Un filtre numérique DSP Blockset  Filtering  Filter Designs  Digital
Filter Design
Afficher sur le même Scope Parameters  General  Number of axes
Switch DSP Blockset  Signal Routing  Manual Switch.
La librairie de la carte SignalMaster LSP DSPLink Blockset  C6xx-based … SBC6xx-
based...

3. Librairie LSP DSPLink


Blocs Description
Paramétrer l’ensemble des entrées/sorties du CODEC.
(fréquence d’échantillonnage en entrée : de 8 kHz à 96 kHz)
Paramétrer les sorties du CODEC.
(taille des trames, fréquence d’échantillonnage)
Paramétrer les liaisons parallèles
(raccordement cartes annexes, mémoires,…)

Paramétrer les 4 LED de la carte SignalMaster

Calcul le taux d’utilisation CPU, le nombre de cycles ou le temps


d’exécution d’une tache.
Paramétrer le fichier de commande lors de la compilation
(allocation de la mémoire lors de l’exécution sur le DSP)
Paramétrer les entrées du CODEC.
(taille des trames, fréquence d’échantillonnage)

Remarque : Lors de l’utilisation d’un bloc « Acquisition » ou « Playback » dans un modèle, il est
nécessaire d’avoir un bloc « Control » sur le modèle.

4. Aide : Lancer une simulation


Il existe 2 modes de simulation :
 le mode normal qui s’exécute sur Matlab (= simulation sur l’ordinateur)
 le mode external qui permet d’exécuter le modèle sur une carte SignalMaster.
Voici les étapes de compilation du mode external :
1) Paramétrer RTW :
-3-

Tools  Real-Time Workshop  Options


Vérifier que le fichier de la cible est : rt_smc6xx.tlc. Les autres options à
paramétrer sont utilisées pour la compilation du modèle.
2) Choisir le signal de référence :
Tools  External Mode Control Panel… Signal & triggering...
Choisir un signal du modèle qui servira de référence (synchronisation) dans la liste
proposée, puis cliquer sur Trigger Signal pour le valider.
3) Compiler le modèle :
Tools  Real-Time Workshop  Build Model ou CTRL+B
La fenêtre de commande de Matlab affiche alors les étapes de la compilation (Debug).
La compilation est terminée lorsque la ligne « ### Created executable:
{model} » s’affiche.
4) Transférer le modèle sur la carte :
Simulation  Connect to target
Deux modes de communications possibles :
i) le réseau (Ethernet) avec le bouton Connect to SignalMaster.
ii) la liaison série (COM1) avec le bouton COM Connect.
5) Exécution sur la carte SignalMaster:  ou Simulation  Start
6) Arrêter une simulation : ■ ou Simulation  Stop

Remarques :
i. Si le modèle est modifié, il est nécessaire de le recompiler.
ii. Certaines boites peuvent être modifiées pendant une simulation (exemple : les
interrupteurs), donc il n’est pas toujours utile de recompiler le modèle.
iii. Pour relancer une simulation après l’avoir arrêté, il faut transférer à nouveau le modèle
sur la carte (sans le recompiler s’il n’a pas été modifié).

5. Manipulation
 Sous Matlab 6.5, créer un répertoire de travail sur le disque D et lancer Simulink :
>> !md D:\nom_rep
>> cd D:\nom_rep
>> simulink
 Ouvrir le modèle C:\Matlab6p5\work\new1.mdl avec Simulink et l’enregistrer
dans votre répertoire de travail.
 Pour chaque question, enregistrer le modèle sous un nom différent.
exemple : « Q4.mdl » pour le modèle de la question 4.

Questions :

- Q1 : Sinusoïde bruitée


Visualiser 20 périodes d’une sinusoïde bruitée par un bruit blanc.
Paramètres : amplitude de la sinusoïde à 2V, variance de 2 pour le bruit, fréquence de
la sinusoïde à 50Hz, fréquence d’échantillonnage de 1000Hz, simulation en mode
normal. Pour visualiser 20 périodes on utilisera Simulation Parameter…  Solver 
Stop Time. Quelle est la valeur du paramètre Stop Time ?

- Q2 : Filtrage passe-bas


Ajouter un Filtre numérique FIR passe-bas pour atténuer le bruit.
Gabarit du filtre : atténuation en bande passante : 20log10(1+δ1) = +3dB, atténuation en
bande atténuée : 20log10(δ2) = -40dB.
-4-

Quel paramètres choisissez-vous pour ce filtre passe-bas ? (Fpass, Apass/Astop en


dB). Visualiser la distribution des pôles et des zéros de ce filtre. Commenter.
Quel est l’ordre minimal du filtre, selon Matlab, pour un début de bande atténuée situé
aux fréquences 100Hz et 200Hz ? Commentez.
 Pour chaque filtre, on peut vérifier la forme de la réponse impulsionnelle, la réponse fréquentielle,
la réponse indicielle, ainsi que le placement et les valeurs des pôles et des zéros du filtre.

- Q3 : Filtrage coupe-bande


Remplacer le filtre FIR passe-bas par un filtre FIR coupe-bande. Ajouter une sinusoïde
au signal d’entrée (amplitude 0,5, fréquence 3kHz). Paramétrer le filtre pour éliminer
cette fréquence de 3kHz. Visualiser le signal grâce à un Scope avant et après filtrage.
 Mettre un Switch pour pouvoir basculer d’un signal à l’autre durant la simulation.

- Q4 : Effet de Réverbération


Enlever la sinusoïde de 3kHz et remplacer le filtre FIR par un filtre de réverbération.
Nous utiliserons la
figure suivante pour
concevoir ce filtre de
réverbération.
Paramètres : mettre un
délai de 250 ms, les
gains seront ceux qui
sont indiqués sur la
figure.

- Q5 : Spectre d’un signal


Visualiser l’amplitude en dB de la Transformée de Fourier des signaux d’entrée.
Paramètres : on travaillera sur des blocs de 256 symboles; fréquence d’échantillonnage
de 32kHz. Utiliser la fonction C:\Matlab6p5\work\vect2scope.mdl pour
l’affichage du spectre.

- Q6 : Canal de communication


Simuler un canal de communication avec ajout d’un bruit blanc additif Gaussien
(AWGN). La plupart des blocs utilisés pour cette question se trouvent dans la
Communication Blockset. Cette simulation se déroulera en mode normal. Le signal
d’entrée est une sinusoïde de fréquence 750Hz échantillonnée à 48kHz et d’amplitude
1V.
Avant de faire transiter un signal dans un canal de communication, il est nécessaire de
le quantifier convenablement puis de le moduler pour le transmettre dans le canal.
La quantification s’effectue avec un bloc CM  Source Coding  Sampled
Quantizer Encoded . On quantifiera cette sinusoïde en M=5 états possibles (entre 0 et
4). Le paramètre Quantization Partition (M-1 valeurs) doit renseigner sur le
découpage de l’axe des valeurs du signal (dans notre cas , on découpera l’axe [-1, 1]
en M-1 parties). Le paramètre Quantization codebook (M valeurs) attribue à chaque
domaine découpé une valeur (dans notre cas un nombre entier positif).
La modulation sera une modulation de phase (PSK) CM  Modulation  Digital
Baseband Modulation  PM  M-PSK (De)Modulator Baseband.
Entre le modulateur et le démodulateur, on simulera un canal AWGN CM 
Channels … avec un rapport signal à bruit SNR=10 dB.
On visualiser les effets du canal avec la constellation du signal en amont et en aval du
canal en utilisant le bloc CM  Comm Sinks  Discrete-Time Scatter Plot Scope. On
mettra un Trace Period et un Decision point de 1/48000.
-5-

 La constellation d’un signal en bande de base est la représentation des différents états possibles du
signal dans le plan complexe.
Quel est la constellation du signal transmis ? Et celle du signal en sortie du canal ?
Modifier le SNR et commenter.

- Q7 : Benchmark
Mesurer le nombre de cycles (bloc Profiler) lorsque aucun, 1 ou 2 filtres fonctionnent
en même temps sur le DSP.
Conseils : placer un bloc Enabled Subsystem (Simulink  Ports & Subsystems) sur la
figure, l’ouvrir et y placer le filtre de réverbération. Copier ce Subsystem afin d’en
avoir 2 sur la même sortie du bloc Acquisition. L’entrée située sur le dessus du
Subsystem permet de le rendre actif ou inactif. Pour cela, relier cette entrée du
Subsystem à la sortie d’un bloc Switch. Ce dernier aura 2 blocs « Constant » comme
entrées, l’un à 0 et l’autre à 1. Sommer les sorties des 2 Substystems et ajouter le signal
provenant directement de la sortie du bloc Acquisistion. Envoyer le signal final aux 2
entrées du bloc Playback.
Placer le bloc Profiler avec un Scope et mesurer approximativement les taux
demandés. Combien de cycles utilise un tel filtre ?

- Q8 : Filtrage coupe-bande


On reprend la question 3, en passant en mode external et on remplace la sinusoïde
bruitée par l’entrée CODEC de la carte SignalMaster et on utilise le filtre FIR
coupe-bande. Visualiser le signal sonore grâce à un Scope et l’écouter à travers la
sortie du CODEC avant et après filtrage.
 Mettre un Switch pour pouvoir basculer d’un signal à l’autre durant la simulation.
Paramètres : configurer convenablement les blocs CS4228 Acquisition, Playback,
Control pour une fréquence d’échantillonnage du CODEC de 48kHz .
-6-

Annexe 1 : Utilisation de « sons » Matlab.

Il est possible d’utiliser des sons directement depuis Matlab. Pour cela, il faut charger un
son avec la commande >> load train (on peut utiliser chirp, laughter, handel). La
commande précédente permet d’obtenir la valeur de la fréquence d’échantillonnage du son
(Fs), ainsi que le vecteur des échantillons du son (y). Simulink a besoin d’un vecteur temps
pour lire un tel son. Pour cela un peut utiliser la ligne de commande suivante pour construire
ce vecteur temps :
>> temps=[1/Fs:1/Fs:length(y)/Fs]';
On peut alors ajouter un bloc From Workspace (Simulink  Sources) sous Simulink avec le
paramètre d’entrée Data =[temps y].
Pour récupérer un son dans l’espace de travail Matlab, on mettra un bloc To Workspace
(Simulink  Sinks) avec un format de type Array. Pour l’écouter, on utilisera la commande :
>> sound(simout,Fe), où Fe est la fréquence d’échantillonnage du modèle (ex :
48kHz).

Annexe 2 : Les fichiers de compilation 

Il est possible de retrouver les modèles en langage C sous le logiciel CodeComposer Studio.
Après compilation d’un modèle, on récupère les fichiers suivants :

Extension du Description
fichier
.OPTS Contient les arguments de la ligne de compilation
o les chemins des fichiers sources et des librairies utilisées :
{model}_sources.opts
o les options du compilateur : {model}_compiler.opts. Ces options sont
groupées dans un autre fichier avec la commande -@{model}.bld
o les options du lieur ( traducteur : C compilé  assembleur ) :
{model}_linker.opts
o le langage assembleur utilisé pour le lieur : {model}_assembler.opts
.OBJ Fichiers compilés.
.OUT Fichier final (exécutable) à transférer et à lancer sur le DSP
.H Fichier Header du programme en C. Il y a 5 fichiers header :
o {model}.h : initialise et définit les constantes de la simulations (nombre de blocs,
nom du model, …)
o {model}_common.h : initialise les paramètres de chaque bloc sans préciser leurs
valeurs.
o {model}_prm.h : définit les valeurs des paramètres. Voir les commentaires ou
l’ordre définis dans {model}_common.h .
o {model}_reg.h : initialise les variables de transferts (vecteurs du modèle).
.C {model}_dt.c : initialise la structure des variables

Annexe 3 : Paramétrer le CODEC


Il est nécessaire de bien paramétrer le CODEC de la carte SignalMaster en accord avec
les différents formats des signaux qui peuvent transiter sur le modèle. Par exemple, on ne peut
pas mettre en entrée du CODEC une matrice ou un vecteur colonne ! Il y a deux possibilités
pour paramétrer les blocs CS4228 :
- soit travailler avec des blocs de données (trame):
- Frame Size : taille du bloc,
- Transfer Mode : DMA
- Model Sample Time : 1,
- soit avec un flot de données (en série):
-7-

- Frame Size : 1
- Transfer Mode : Polling
- Model Sample Time : durée d’échantillonnage

Exemple d’utilisation du CODEC à 48kHz:


 Mettre un bloc CS4228 Acquisistion et/ou CS4228 Playback :
o Codec ID : CS4228_ID2 
o Frame size : 1
o Model Sample Time : 1/48000
 Inclure aussi un bloc CS4228 Control :
o Frame size : 1
o Transfer Mode : Polling
o Sampling frequency : 48kHz
o Enable Codec ID1 : 
o Enable Codec ID2 : 
o Model Sample Time : 1/48000
 On peut rajouter un slider-gain (Simulink  Math) en sortie de l’acquisition pour
amplifier le signal.
 Le bloc d’acquisition permet de récupérer 2 sorties. Pour les afficher sur la même
fenêtre, on peut mettre un multiplexeur (Simulink  Signals & Systems  Mux) avec
2 entrées et 1 sortie. Dans les paramètres du Scope, il faut alors réduire le Time
Range : SampleTime*64 .

Annexe 4 : Mémoire SBSRAM


Pour disposer de plus de mémoire durant une simulation, il faut spécifier la mémoire à
utiliser durant la simulation. Pour cela, on peut utiliser de la SBSRAM (1MB) :
1) ajouter un bloc « CMD File Generator » en choisissant une mémoire de type SBSRAM
pour « Text Section » et « C Variables  ».
2) Dans les paramètres de simulation, onglet « Real-Time Workshop », cocher les cases
suivantes :
o General code generation options : Local block outputs: 
o DSP Compiler Options : Memory Models : -ml0:Far_Aggregate_Data
o DSP Linker Options : Create Memory Map File : 
Enable Program Cache : 

Vous aimerez peut-être aussi