D.S.P Digital Signal Processor Olivier Romain Professeur des Universités [email protected] http://olivieromain.free.fr 1 Objectif de ce cours n Sensibiliser l’étudiant à l’architecture d’un DSP n Qu’elles sont les différences avec un processeur généraliste n Implémenter un algorithmes de traitement audio en temps réel 2 Plan du cours n Partie 1 : Quelles architectures pour le traitement du signal ? q Introduction aux DSP n Partie 2 : Caractéristiques générales des DSP q Architectures conventionnelles, Format des données, Mode d’adressage, DMA, Pipeline, etc. n Partie 3 : Détails du DSP BF561 q Plateforme Blackfin BF561 q Visual DSP++ n Partie 4 : Alternatives au DSP q FPGA q GPU 3 Références n Internet q q q q q q q q n www.ti.com www.freescale.com www.analog.com www.dspguide.com www.dspguru.com www.dsprelated.com http://www.tde.lth.se/ugradcourses/DSPDesign/DSPDesign-eng.html http://www.bdti.com/articles/evolution/sld001.htm Livres q q q Les DSP : Famille ADSP218X : Principe et Applications, Michel Pinard, Dunod DSP : Les processeurs de traitement du signal. Famille 320C50, Geneviève Baudoin, Ferial Virolleau, Dunod The scientist and Engineer’s guide to digital signal processing. Steven W smith. www.dspguide.com 4 Partie 1 Quelles architectures pour le traitement numérique du signal ? 5 Synoptique d’une application de TNS caméra Numérique Consignes microphone son CAN µP CNA capteurs Résultats 6 Contraintes d’une application de TNS n Travaille à intervalles réguliers sur des valeurs discrètes d’un signal continue n 2 types d’applications temps réels : 7 Paramètres d’une TNS n Latence : n Cadence : 8 Algorithmes types n Corrélations : mesure de vraisemblance n Convolutions : filtrage n Filtres numériques q q FIR : Réponse Impulsionnelle Finie IIR : Réponse Impulsionnelle Infinie n DFT: Transformé de Fourier discrète n DCT :Transformé en Cosinus discret q n DWT : Transformé en Odelettes q n MP3 JPEG2000 DWT Etc. 9 Corrélation n Mesure la ressemblance de deux signaux q n Utilisée dans les systèmes radar, sonar, etc. Formulation mathématique q Signal C représente la corrélation des signaux a et b q Nécessite N*M multiplication-accumulation 10 Convolution n Fonction mathématique utilisée en filtrage des données n Élément filtrant ó noyau de convolution n Formulation mathématique n Convolution rapide x h FFT IFFT FFT y 11 Filtre FIR n N échantillons les plus récents dans une ligne à retards X(i) q Filtre non-récursif n Le nouvel échantillon fait avancé les N-1 suivant n La cellule de base correspond à une addition-multiplication q N+1 étapes au total n Chaque étape : q q q q q 2 accès mémoires aux données 1 addition 1 multiplication 1 écriture mémoire pour le résultat Objectif : n Réaliser une étape/instruction 12 Filtre IIR n Sortie dépend des échantillons d’entrées et des valeurs des sorties aux instants précédents pondérées. q Filtre récursif n N échantillons les plus récents dans une ligne à retards x(i) n N-1 échantillons les plus récents dans une ligne à retards y(i) 13 Algorithmes types : Filtres FIR vs IIR n FIR n IIR 14 TFD n TFD : Transformée de Fourier Discrète q n FFT d’un vecteur numérique TFD 4 points 15 TFD Même sous-matrice n TFD 4 points q n Etage Butterfly Inversion des colonnes 2 et 3 TFD q Sorties inversées q Entrées inversées 16 Estimation des besoins n Ordre de grandeur des applications TNS 17 Quel processeur utiliser ? 18 Classification ASIC Processeurs Spécialisés DSP Circuits programmables Généralistes GPU Multi-coeurs PLD Mémoires FPGA 19 Quel processeur pour le TNS ? 20 Quels processeurs pour le TNS ? n Conclusion 21 Partie 2 Caractéristiques générales des DSP 22 Introduction n DSP ont 30 ans q q n Introduits par Texas Instrument en 1982 TMS32010 Evolutions q q q q SIMD Multi-coeurs VLIW Hétérogène n Processeur Généraliste + DSP 23 Types de DSP n On peut classer les DSP en deux grandes catégories / au format des données DSP virgule fixe • Codage en virgule fixe • Données codées de 16 à 32 bits • MIPS • Exemple • DSP56000 (freescale) • Shark (Analog Device) • Blackfin (Analog Device) • TMS320C25 DSP virgule flottante • Codage en virgule flottante • Données au delà de 32 bits • Compatible IEEE754 • MFLOPS • Exemple • TMS320C30 24 Codage en virgule fixe n On utilise N bits (M+P) pour représenter les nombres binaires non signés ou signés (complément à 2) q q M bits pour la partie entière P bits pour la partie fractionnaire X = (bM −1bM −2 b0 , b−1b−2 b− p+1 ) 25 Codage en virgule fixe 26 Exemple 27 Format 16 bits 28 Codage en virgule flottante n Sur N bits, les nombres x est représenté par une mantisse M et un exposant E. n Si m est le nombre de bit de la matisse et e le nombre de bit de l’exposant alors : n La mantisse m est un nombre compris entre [0,1[, premier chiffre après la virgule n Exemple : 2135,65798 = + 0,213565798e4 29 Codage en virgule flottante n .2 Formats (IEEE754) q q Simple précision sur 32 bits. Double précision 64 bits. 30 Codage en virgule flottante n Virgule fixe (>90% des ventes des DSP) n Virgule flottante 31 Exemple de DSP existants 32 Pourquoi un DSP est rapide ? 1. 2. Architecture des DSP Mode d’adressage 33 Quel est le problème ? n On veut réaliser un filtrage passe-bas par un filtre FIR de 50 coefficients q Le calcul de la sortie nécessite 50 MACs 34 Quel est le problème ? n General Processor q q ⇒ 1 multiplication : 70 cycles horloge 1 addition : 10 cycles horloge FIR 50 coefficients ⇒ n > 4000 cycles DSP q ⇒ 1 Multiplication + 1 addition + accès mémoires : 1 voir <1 cycles horloge FIR 50 coefficients ⇒ 50 cycles 35 Exemple n Benchmark des DSP de Analog Device n Données constructeurs accessibles à : http:// www.analog.com/ processors/ 36 Pourquoi un DSP est rapide ? n Quelles sont les caractéristiques d’un DSP qui permettent de réaliser un traitement le plus rapidement possible ( >=1MAC par cycle ) ?. n 4 facteurs : 1. 2. 3. 4. Architecture matérielle // Mode d’adressage DMA Pipeline 37 1. Architectures 38 Architecture Harvard : TMS32010 n Virgule fixe 16 bits n Instructions et mémoires séparées n 1 MAC en 1 cycle horloge n Temps d’un MAC q q 1982 : 390ns 2012 : 0.23ns 39 Architecture SHARC : Analog Device Instructions Données SHARC Super HARvard Computing Architecture SIMD n SIMD : Single Instruction Multi Data Stream n Opérations parallèles sur différentes largeurs de chemins de données (16 bit, 8 bit, ...). q Split unités d'exécution. q Unités d'exécution multiples. Blackfin n n n n n n n n n n Virgule fixe 16 bits SIMD : même instruction simultanément. Instruction DSP sur 16 Bits Instruction RISC sur 32 Bits. 2 Multiplieurs de 16 bits 4 Additionneurs 8 Bits 2 Additionneurs 40 Bits 750MHz / 1512 MMAC Jusqu’à 3000MMAC 0.15mW/MMAC 2. Modes d’adressage 43 Mode d’adressage n Objectifs : q n Puissance d’un DSP dépend de ces modes d’adressage Type d’adressage classique q q q q q q Adressage immédiat Adressage indirect Adressage direct Adressage pré & post-incrémentation Adressage circulaire Adressage Bit-reverse Mode d’adressage n Immédiat q q n Direct q n Valeur spécifiée n DM(R1, 74h) ou PM(R1, 32h) Utilisé pour l’initialisation par exemple de registre Valeur spécifiée à une adresse mémoire n DM(R1, 0x20045) ou PM(R1, 0x320001) Indirect q A une adresse mémoire spécifiée ó adresse mémoire de l’instruction ou de l’opérande n DM(R1, R3 ) à l’adresse de R3 ó adresse cherchée 45 Mode d’adressage n Pré & Post-incrémentation q q Adressage indirect avec spécification d’un registre de base (RB) et d’incrément (RI) n DM(RB, RI) Attention : n RB incrémenté avant ou après accès mémoire q pré-incrémentation et post-incrémentation 46 Adressage circulaire n But : q Ne conserver que les n dernières valeurs des entrées, ou d'un calcul précèdent, comme dans une FIFO sans gestion explicite de la mémoire. n Moyen : q n Adressage modulo longueur du buffer Ressources (dépend du DSP) : q Registre d’index (RI) n q Registre d’incrément (RM) n q RI=RI+RM Registre de base (RB) n q position courante dans le buffer Adresse du début du buffer Registre de longueur (RL) n Taille du buffer circulaire Adressage circulaire : exemple 48 Exercice 49 Adressage de type bit reverse n Adressage avec inversion de l'ordre des bits q Pour faire des calculs comme la FFT, on peut avoir besoin de manipuler directement certains bits des adresses. Adressage bit reverse n Transformée de Fourrier Discrète de taille 4 q Algorithme dit du Papillon óButterfly 51 3. Le DMA : Direct Memory Access Signal analogique d’entrée N −1 Echantillonnage et Conversion A/N X(n) Contrôleur de DMA Codec Signal analogique de sortie Conversion N/A ∑ A(k)* X (n − k ) k=0 Processeur Y(n) Direct Memory Access 52 Principe du DMA n Mécanisme qui permet plusieurs types de transfert de données sans passer par le processeur permettant ainsi une accélération assez importante des performances. n Le transfert de données peut être : q Entre la mémoire et la mémoire (MDMA). q Entre la mémoire et le SPI (Serial Peripheral Interface). q Entre la mémoire et le port série (SPORT). q Entre la mémoire et le port UART. q Entre la mémoire et le PPI. (Parallel Peripheral Interface ). 53 DMA : paramètres n Certain paramètres ont besoin d’être définie avant de commencer le transfert DMA. Ces paramètres sont : q q q q Configuration n Décrit certain caractéristiques du transfert DMA comme la taille des données, la direction du transfert…… Start Address n Spécifie l’adresse a partir de laquelle le transfert DMA commencera. Count n Spécifie le nombre d’éléments que le contrôleur DMA transférera. Modify n Spécifie le pas d’incrémentation après le transfert de chaque donnée. 54 Conclusion n Pourquoi un DSP est rapide ? q Architecture optimisée pour le traitement n n n n Plusieurs unités de calcul en // ó Archi SIMD Modes d’adressages spécifiques DMA Un DSP permet de réaliser un MAC dans un temps <= à 1 cycle d’horloge. 55 Partie 3 Carte Blackfin 561 1. 2. Détails de la carte de développement Environnement logiciel 56 1. Famille Blackfin n Analog Device q Depuis 2001 : BF535 57 ADSP BF561 58 ADSP BF561 DSP BF561 Processor 59 Schéma fonctionnel du BF561 60 Caractéristiques techniques n BF561 q Dual core à 600MHz n q > 1.2 GMACs 328ko de mémoire intégrée / coeur n Coeur q q q q 2 MAC de 16 bits 2 ALU de 40 bits 4 ALU de 8 bits Un registre à décalage de 40 bits 61 Caractéristique carte développement n n n n n n n n n Fréquence d’horloge du cœur : 600MHz. Interface USB pour le déboguage Mémoire q 32 MB de SDRAM (16M x 16 bits) q 2 MB de mémoire Flash (2 block de (512k x 16 bits)) Codeur audio AD1836 connecté au port série SPORT 0 (6 out / 4 in RCA) Décodeur vidéo ADV7183 connecté au port parallèle (3 in RCA) Codeur vidéo ADV7171 connecté au port parallèle (3 out RCA) Connecteur JTAG de 14-Pin pour l’émulation 4 boutons poussoirs et 6 LED. Interface d’extension. 62 Codec Audio AD1836 n Le codec AD1836 permet d’acquérir des signaux audio sur deux entrées analogiques (canaux stéréo 0 et 1) indépendantes à une fréquence d’échantillonnage fixe de 96kHZ. Il permet aussi de restituer à partir de données numériques des signaux analogiques sur trois canaux de sortie indépendant. 63 Codec AD1836 n L’interface série SPORT0 du DSP permet d’envoyer et de recevoir les données respectivement en entrées ou en sorties du CODEC. n Le port série (SPI) est connecté au codec audio AD1836. La connexion SPI est utilisé pour accéder au registres de contrôle du codec audio. 64 2. Environnement de développement VISUAL DSP++ 4.5 65 66 67 68 69 70 71 72 73 74 75 76 Application au TP Aiguës Filtres FIR Lecteur MP3 Médium CODEC son AD1836 DSP CODEC AD1836 Grave 77 Partie 4 Alternative aux DSP 78 Introduction n Le traitement numérique du signal était à l’origine réalisée sur des architectures de type DSP n Actuellement, il existe 2 grands concurrents : q q FPGA GPU 79 TNS sur FPGA n Multiplieur HW enfouie dans un FPGA q n « Cœur de DSP » Optimiser les performances des architectures de traitement // q IP FIR Stratix III Carte DSP Cyclone II n Cyclone II q n techno 90nm Analog IO o o o o One 12-bit, 125-million samples per second (MSPS) analog-to-digital (A/ D) converter—TI ADS5520 One 14-bit, 165-MSPS digital-toanalog (D/A) converter—TI DAC904 VGA digital-to-analog converter (DAC) Stereo audio coder/decoder (CODEC), 96 KHz Prototypage de filtre sous Simulink / Matlab GPU : Graphics Processing Unit n n n Processeur graphique utilisée sur la carte pour l’affichage sur un moniteur Depuis peu utilisé pour le calcul Architecture massivement parallèle 83 Exemple : architecture tuile de calcul Processeur 84 Fin du cours 85