Université Mohamed V de Rabat Ecole Nationale Supérieure d’Arts et Metiers Département Génie Electrique Traitement du signal par DSP Architecture et programmation des DSP M. NAJOUI – ENSET - Rabat Année Universitaire : 2020-2021 [email protected] LOGO Table des matières I. Introduction II. Qu’est ce qu’un DSP? III. Architecture des DSP IV. Performances des DSP V. Etude de cas : TMS320C6678 & C6713 VI. Implémentations 2 M. NAJOUI I. Introduction Définitions TNS Application d’opérations mathématiques sur des signaux représentés sous forme numérique Signal Quantité électrique qui traverse un canal sous la forme d'une tension ou d'un courant, et qui est utilisée pour transmettre des informations. Une suite de nombres. SN Signal numérique = Séquence d’échantillons Le signal électrique (impulsions), le signal sonore (sons) et le signal lumineux (voyants) sont des types de signaux. f(t)=5t : une seule variable f(x,y)=2x+3y : deux variables S1 = A Sin(ωt) : signal réel S2 = A Cos(ωt)+j A Sin(ωt) : signal complexe S4(t)= [S1(t), S2(t), S3(t)] : Signal multi-canaux I(x,y,t)= [Ir(x,y,t), Ig(x,y,t), Ib(x,y,t)]: Signal multidimensionnel M. NAJOUI 3 I. Introduction Pourquoi leTNS? Le traitement analogique du signal est réalisé souvent par des composants électroniques tels que : Résistances. Mise en œuvre difficile, Coûteux, Condensateurs. Reproductibilité difficile Inductances. Les caractéristiques des composants électroniques sont sensibles et peuvent changer suivant : La température, Instabilité à cause de la Les variations de tension sensibilité à l’env Les vibrations mécaniques Vieillissement Impact considérable sur l'efficacité des traitements fait par les circuits analogiques. 4 M. NAJOUI I. Introduction Pourquoi le TNS? Avec le traitement numérique du signal, il est facile de : Changer l’application. Souplesse : Programmation flexible, Corriger l’application. Développement rapide, Reproductibilité. ☺ Mettre à jour des applis. Un seul circuit Plusieurs applications En outre, le traitement numérique du signal réduit : La sensibilité au bruit. Le nombre de composants. Stabilité : Insensibilité à l’environnement, Précision connue Coût. et contrôlée. ☺ Consommation. Le temps de développement Les techniques du traitement numérique du signal sont Actuellement si puissantes que parfois c’est impossible d’atteindre les mêmes performances en analogique M. NAJOUI 5 Comment faire du TNS? Chaine classique de traitement numérique du signal : Partie numérique Quel type de processeur à utiliser pour le traitement ??? 6 M. NAJOUI Besoins en TNS Contraintes de temps réel : Exemple : taux d’échantillonnage 48kHz Te = 20.833 µs Arrivée de l’échantillon x(n) Théorème de Shannon Arrivée de l’échantillon x(n+1) t t0+Te t0 Temps de traitement T doit être <Te M. NAJOUI 7 Besoins en TNS : Cahier des charges Calculs rapides : Multiplications-accumulations rapides Bande passante de memoire importante Support matériel/logiciel pour accélérer le contrôle des algorithmes Contraintes temps réel : Entrées/sorties a débit fixe Prédiction des temps de réponse Contraintes des systèmes embarqués : Basse consommation d‘énergie Les DSP ont une architecture Taille des programmes matérielle et logicielle Production de masse : dédiée permettant de répondre à ces besoins Faible coût Rapidité de développement DSP ! 8 M. NAJOUI Classification des processeurs ASIP = Application Specific Instruction set Processor ASIC = Application Specific Integrated Circuit 9 M. NAJOUI Classification des processeurs Les processeurs généralistes (GPP) Coût relativement élevé Forte consommation électrique Bonnes performances en calcul numérique ☺ Certains surpassent les DSP en puissance brute (multi-coeurs) GPP moins bons que les DSP pour : La consommation d'énergie. La gestion des entrées-sorties Le prix Les accès aux mémoires. 10 M. NAJOUI Classification des processeurs Les microcontrôleurs ASIC/ASIP Coût élevé Faible coût ☺ Mise en œuvre complexe et Faible consommation ☺ longue Mémoire limitée Confidentialité Peu adapté aux signaux Faible consommation ☺ numériques Rendement amélioré ☺ Adapté aux tâches de FPGA : sorte de ASIC contrôle programmable. Faible consommation ☺ Traitement parallèle ☺ ASSP : Application Specific Standard Product 11 M. NAJOUI Classification des processeurs Microcontrôleurs : pas assez performants en TNS. ASIC : trop coûteux, mise en œuvre complexe et longue. ASIP : trop coûteux, définition complexe. Processeurs généralistes : coûteux, consomment trop d‘énergie, difficile à embarquer (µP). Solution : Concevoir des processeurs spécifiques pour faire du TNS. DSP Coût relativement faible ☺ Faible consommation d'énergie ☺ Jeu d’instruction spécialisé ☺ Efficacité et précision en calculs numériques ☺ Entrée/Sortie à grand débit ☺ Mémoire limitée 12 M. NAJOUI Classification des processeurs Conclusion : L’utilisation d’un DSP est justifiée lorsqu’on demande: Un prix convenable Une petite surface du circuit Une faible consommation Traitement de plusieurs signaux en temps réel L’utilisation d’un GPP est justifiée lorsqu’on demande: Une mémoire assez importante Des opérations avancées du système (OS: Windows, Linux,…) Pas de contraintes sévères sur la consommation M. NAJOUI 13 Capteurs Chaine de traitement numérique du signal basé sur un DSP Signal original Filtre Passe - Bas Convertisseur Analogique Numérique Signal traité Mémoire Actionneurs TNS basé sur un DSP Filtre Passe - Bas Convertisseur Numérique Analogique DSP Entrées/Sortie 14 M. NAJOUI DSP ? Un DSP est un type particulier de microprocesseur. Il se caractérise par le fait qu’il intègre un ensemble de fonctions spéciales. Ces fonctions sont destinées à le rendre particulièrement performant dans le domaine du traitement numérique du signal. Caractéristiques et avantages : Multiplication-ACcumulation rapide (MAC) avec un format de calcul étendu pour éviter les dépassements Mémoire à accès multiple/parallèle Modes d’adressage spécialisés Exécution rapide des boucles (SW Pipelining) I/O intégrées avec le processeur M. NAJOUI 15 Un peu d’histoire 1987 1980 1984 Le DSP1 de Bell Labs Le 7720 de NEC 1982 Texas Instruments introduit le TMS32010 Le premier processeur utilisant le format « virgule flottante » IEEE-754 est le MB86232 de Fujitsu Le DSP56001 premier DSP 24 bits virgule fixe de Motorola, Le TMS320C30 de TI Le DSP96001 et DSP96002 de Motorola Le premier DSP 32 bits virgule flottante “DSP32” de Bell Labs 1992-1997 : Processeurs faible consommation 1997-2008 : VLIW 2009+ : Multicore + Hybrides 16 M. NAJOUI Domaines d’application des DSPs Communications Modem, téléphonie Télévision & radio numérique Cryptage Audio Mixage et édition Effets Suppression de bruit Annulation d’écho Image / Vidéo Compression/Codage Traitement Militaire Imagerie (radar, sonar) Cryptographie Guidage de missiles Navigation Médical Equipements de monitoring (EEG, ECG) Imagerie (IRM…) Implants cochléaires, Instrumentation Analyseurs de spectre Générations de fonctions Interprétation de signaux sismiques, Automatisation Commande des machines Contrôle des moteurs Robots Automobile Contrôle du moteur Assistance au freinage Aide à la navigation Commandes vocales Tableau de bord 17 M. NAJOUI Domaines d’application du C667x 18 M. NAJOUI Principaux constructeurs de DSP Texas Instruments 13.00% 12,00% Analog Devices 65.00% Agere systems (ex-Lucent) Freescale (ex-Motorola) 7.00% 3.00% Autres (NXP, NEC... ) Part de marché/constructeur de DSP (2007) M. NAJOUI 19 Représentation des nombres Les valeurs traitées (coefficients, échantillons…) sont représentées sous les deux formes suivantes : DSP à Virgule fixe Virgule flottante Format courant : 16/24 bits Idéal avec CAN/CNA 12/14 bits Applications : Contrôle industriel, communications, instrumentation, parole, médical, militaire… Format courant : 32 bits Idéal pour le traitement sur une grande dynamique Applications : Audio professionnel, vidéo, médical … 20 M. NAJOUI Représentation des nombres : Virgule fixe Le complément à un d'un nombre binaire est la valeur obtenue en inversant tous les bits de ce nombre. Exemple : +7 est équivalent à 0111 -7 est équivalent à 1000 Complément à deux Inverser les bits de l'écriture binaire de la valeur absolue du nombre (complément à un), Ajouter 1 au résultat. Exemple : Calculer : 3 + (−4) ? = (−7) ou (−1) M. NAJOUI 21 Représentation des nombres : Virgule fixe Complément à deux Nombre Codage 3 0 1 1 2 0 1 0 1 0 0 1 0 0 0 0 -1 1 1 1 -2 1 1 0 -3 1 0 1 -4 1 0 0 Nombre positif : codé comme un binaire naturel Nombre négatif : Inversion des bits puis ajout de 1 Signe 22 M. NAJOUI Représentation des nombres : Virgule fixe Codage des entiers Exemple sur 8 bits : M. NAJOUI 23 Représentation des nombres : Virgule fixe Codage des réels Format Qk : Exemple : Si k = 0 2,3125 Partie entière sur N-k bits en C2 entier Partie fractionnaire sur k bits Pour coder un réel x, trouver les bi tels que : Exemple : format Q5 sur 8 bits (N=8, k=5) Partie entière : 3 bits && fractionnaire : 5 bits Pour les non-signés: 24 M. NAJOUI Représentation des nombres : Virgule fixe Exemple : Format Q5 sur 8 bits 01001010 = 2,3125 +q = +1/32 01001011 = 2,3438 Si on veut coder 2,33 l’erreur maximale sera de 1/64 (q/2). Que représente le nombre 01011101 en format Q2? Q4? Et Q7? Ecrire les nombres suivant sous la forme binaire 8 bits signé au format Q7 : +0.5 +1.0 -1.0 +1/3 = 0.3333 -1/3 = -0.3333 M. NAJOUI 25 Représentation des nombres : Virgule flottante Encodage Signe Exposant Mantisse Simple précision 32 bits 1bit 8 bits 23 bits Double précision 64 bits 1 bit 11 bits 52 bits valeur = signe × mantisse × 2(exposant − décalage) 26 M. NAJOUI Représentation des nombres : Virgule flottante Encodage Signe Exposant Mantisse Simple précision 32 bits 1bit 8 bits 23 bits Double précision 64 bits 1 bit 11 bits 52 bits valeur = signe × mantisse × 2(exposant − décalage) M. NAJOUI 27 Représentation des nombres Virgule fixe vs Virgule flottante Pour quelles types d’applications un processeur à virgule flottante est exigé ? Une grande précision Une gamme dynamique très large Un grand rapport signal-sur-bruit La facilité d’utilisation Vitesse : DSP à virgule fixe sont plus rapide. Taille : DSP à virgule fixe sont plus petits. Energie : DSP à virgule fixe consomment moins. DSP virgule Fixe DSP virgule Flottante Complexité hard Simple Complexe Coût Faible Elevé Consommation Faible Elevée Dynamique max 190 dB 1500 dB Complexité prog Elevée Faible 28 M. NAJOUI Architectures des processeurs Le temps d'exécution (Tx) d'un programme peut être présenté par l'équation : Tx = Ni * Tc * Nc • Ni : nombre d'instructions, • Tc : temps d’un cycle = (1/fréquence du CPU), • Nc : nombre de cycles nécessaires pour exécuter une instruction. Nous distinguons trois type d’architectures : CISC : Complex Instruction Set Computer RISC : Reduce Instruction Set Computer VLIW : Very Long Instruction Word 29 M. NAJOUI Architectures des processeurs Plusieurs solutions possibles pour minimiser le temps d'exécution d'un programme: Tx = Ni * Tc * Nc Minimiser le Ni : ADDWF f,d [tâche1 : lecture mémoire, tâche2 : addition, tâche3 : stockage] Exemple : PIC16F84 35 instructions RISC : nbre d’instructions réduit et qui s’exécutent rapidement. Minimiser le Tc et Nc : Exemple : LD mem,reg1 ADD reg1,reg2 ST reg2,mem Si tc = Tc/3 et nc = Nc/3 tx = Tx/9 CISC : jeu d’instructions riche avec des instructions complexes afin de simplifier la tâche du compilateur. Minimiser Ni, Tc et Nc : Placer plusieurs instructions dans un mot de taille assez grande (> 100 bits). Exécution en parallèle. VLIW : HW simplifié, mais elle exige des compilateurs puissants 30 M. NAJOUI Architecture générale d’un DSP 31 M. NAJOUI Architecture générale d’un DSP Architecture de Von Neumann (microprocesseurs) : Les échanges s'effectuent de manière simple entre l’ALU et la mémoire unique par un bus transitant les codes de programme et les données. Architecture de Harvard (DSP) : Mémoires données et programmes séparées Meilleure utilisation du CPU: Chargement du programme et des données en parallèle 32 M. NAJOUI Architecture générale d’un DSP Les opérations les + courantes dans les algorithmes de TNS Imposent Contraintes matérielles sur l’architecture DSP Filtres FIR : Pour chaque operation a(i)x(n-i) : • • • • • • Recherche de l’instruction Recherche du coefficient a(i) Recherche de la donnée x(n-i) Multiplication a(i)x(n-i) Accumulation a(i-1)x(n-i-1) + a(i)x(n-i) Décalage en mémoire x(n-i) x(n-i-1) Objectifs : 4 accès à la mémoire 2 accès à l’unité de calcul Réduire les accès mémoire en augmentant les accès simultanés Réduire le temps du calcul 33 M. NAJOUI SW Pipelining Principe : Découper une opération en plusieurs tâches élémentaires à effectuer en parallèle. Exemple : pipeline à 4 étages Fetch Lecture de l’instruction en mémoire programme Decode Décodage de l’instruction Read/Write Lecture ou écriture d’un opérande en mémoire de donnée Execute Exécution éventuelle d’une opération arithmétique/logique 34 M. NAJOUI SW Pipelining 35 M. NAJOUI SW Pipelining Différents types de pipelines 36 M. NAJOUI SW Pipelining PIPELINE : Ex C66xx Les phases du pipeline sont : Fetch, Decode et Execute. Fetch se fait en 4 étapes : PG: Program address generate PS: Program address send PW: Program access ready wait PR: Program fetch packet receive Decode se fait en 2 étapes : DP: Instruction dispatch DC: Instruction decode Execute : Le nombre des étapes d’exécution se diffère d’une instruction à une autre. 37 M. NAJOUI SW Pipelining PIPELINE : Ex C66xx 38 M. NAJOUI SW Pipelining Avantage : Gain en vitesse d’execution (temps) Inconvénient : Electronique et programmation complexe Un retard peut se produire : S’il existe un conflit de ressources (accès à la mémoire ou utilisation des bus) En cas de rupture de séquence (branchement non prévu, appel de sous-programme ou une interruption). M. NAJOUI 39 DSP à hautes performances Comment augmenter les performances ? Plusieurs solutions : Diminuer la durée d’un cycle d’horloge fréquence du chip. Augmentation de la Augmenter le travail réalisé au cours d’un cycle 40 M. NAJOUI DSP à hautes performances Diminuer la durée d’un cycle d’horloge Facilité de portage des applis existantes Limites : Consommation proportionnelle à la vitesse CPU Interfaces mémoires deviennent des goulets d’étranglement Power = fct(CV2f) C Capacitance. V Operating voltage. f Frequency of operation. M. NAJOUI 41 DSP à hautes performances Augmenter le travail réalisé au cours d’un cycle : Parallèlisme SIMD : La même instruction est appliquée simultanément à plusieurs données pour produire plusieurs résultats. Superscalaire : Plusieurs instructions dans 1 cycle d’horloge Plusieurs MAC, plusieurs ALU, cache données Le processeur détecte lui-même les instructions pouvant être exécutées en parallèle Circuit de contrôle complexe et consommation elevée. VLIW (Very Long Instruction Word) : Plus d’instructions dans 1 cycle d’horloge VLIW 8 voies = 8 instr. 32 bits = 256 bits Le compilateur est responsable de présenter au matériel des instructions exécutables en parallèle Augmentation du Hardware plus simple que superscalaire nombre de cœurs du Approches hybrides (SIMD/VLIW) 42 DSP (multi-core) M. NAJOUI Mesure de performances Mesure de la vitesse : 43 M. NAJOUI Mesure de performances Mesure de la vitesse : Exemple: DSP56156 30 MIPS Taux d’échantillonnage 48kHz ==> Te = 20.833 µs Quel est le nombre maximal d’instructions que peut exécuter ce DSP entre 2 échantillons ? 44 M. NAJOUI Mesure de performances Benchmark : mesurer le temps que met le DSP pour exécuter des programmes "standards" de TNS. Programmes standards Comment choisir ces programmes ? Quel domaine d’applications faut-il choisir ? La qualité de l’implémentation !!! La mesure des capacités d’un DSP par benchmark reste néanmoins intéressante, car elle tend à mesurer la performance globale du système de TNS (y compris les capacités du programmeur !) 45 M. NAJOUI Critères de choix d’un DSP Le type de DSP à utiliser : virgule fixe ou flottante, avec le format (16bit, 32bit…) Les ressources mémoires utilisés, car s’il faut par exemple exécuter très rapidement une FFT 1024 points, un DSP intégrant plus de 2048 mots de mémoire vive statique peut être nécessaire. La présence d’un ou de plusieurs timers internes, Le coût du DSP, son rapport «performance/prix», La bande passante La présence des canaux DMA (Direct Memory Access) Nombre de registres et de multiplieurs (matériel) La La La La La La La qualité de la documentation (de préférence claire et abondante). disponibilité de notes d’applications, d’un support technique. qualité du système de développement utilisé. possibilité d’utiliser un langage de haut niveau (Langage C). présence des librairies (du constructeur ou de tierces parties). possibilité de réaliser facilement des prototypes et à faible coût. pérennité du produit, c'est-à-dire l’évolution prévue par le fabricant (roadmap). 46 M. NAJOUI Gammes de DSP Gammes de TI : C2000 Lowest Cost Control Systems Motor Control Storage Digital Ctrl Systems TMS320 C5000 Performance & Best Ease-of-Use Efficiency Best MIPS per Watt / Dollar / Size Wireless phones Internet audio players Digital still cameras Modems Telephony VoIP C6000 Critical apps Comm Infrastructure Wireless Base-stations DSL Imaging Multi-media Servers Video 47 M. NAJOUI Evolution des DSP à virgule fixe 48 M. NAJOUI Evolution des DSP à virgule flottante 49 M. NAJOUI TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor 50 M. NAJOUI TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Protocoles de communication haut-débit Assure la communication entre un PC et le DSP pour des objectifs de débogage : chargement du code pour exécution par les cœurs, mise en pause/marche de chacun des cœurs, … 51 M. NAJOUI TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor WR : Réinitialisation sans mettre hors tension des composants Le connecteur AMC transporte des lignes des protocoles de communication haut-débit tel que RapidIO ou PCIe (débits jusqu’à 5 Gbps) 52 M. NAJOUI TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor NB ! En générale, les cartes d’évaluation doivent être configurer avant utilisation. Les modes de fonctionnement sont précisés par le constructeur. Notre carte DSP possède 18 interrupteurs « DIP-Switch » permettent la configuration statique de la carte (horloge, protocole PCIe, …). 53 M. NAJOUI Architecture du TMS320C6678 54 M. NAJOUI Architecture du TMS320C6678 8 cœurs chacun pouvant se comporter comme un processeur indépendant, fonctionnant jusqu’à 1.25GHz Les niveaux de mémoires : L1 local pour chacun des cœurs, L1D (pour les données) et L1P (pour le programme) de taille 32Ko chacun; c’est le niveau le plus proche au cœur ==> un accès plus rapide, sans latences (débit de 16 octets par cycle). L2 local pour chacun des cœurs de taille 512 Ko; l’accès à cette mémoire est moins rapide qu’en L1 L1 ou L2 peuvent être utilisée en mode CACHE, 55 M. NAJOUI Architecture du TMS320C6678 Les niveaux de mémoires: MSM (Multicore Shared Memory) est une mémoire statique SRAM de 4 Mo partagées entre les cœurs Un contrôleur de la mémoire dynamique DDR3 (Double Data Rate) 64-Bit DDR3 EMIF, il s’occupe des différentes opérations de contrôle pour la mémoire externe DDR3 (rafraîchissement périodique, READ, WRITE, …) L’accès à ce type de mémoire est relativement lent par rapport aux mémoires statiques. 56 M. NAJOUI Architecture du TMS320C6678 Assure les opérations de débogage entre DSP et PC Mémoire non volatile, de taille 128 Ko, servant pour sauvegarder le code d’initialisation, même après mise hors tension des périphériques du DSP. Protège l’accès concurrent aux périphériques par plusieurs maîtres (i.e : les 8 cœurs) Génère les horloges demandées aux fréquences souhaitées L’EDMA (Enhanced Direct Memory Access) permet le transfert mémoire sans l’intervention du CPU. 57 M. NAJOUI Architecture du TMS320C6678 PCIe (5 Gbps), RapidIO (5 Gbps), ETHERNET (1 Gbps), TSIP (32 Mbps), HyperLink (50 Gbps, entre 2 DSP C6678) Interface entre le DSP et les mémoires flash externes Optimiser le transfert des paquets issus des interfaces de communications haut-débit sur le bus TeraNet, ainsi que de réduire les latences des transferts mémoires entre cœurs. Protocoles de comm haut-débit 58 M. NAJOUI Structure interne d’un cœur C66xx 59 M. NAJOUI Structure interne d’un cœur C6xxx Deux banc, chacun est composé de : 32 registres de 32-bit : A0...A31 et B0...B31 4 unités .L, .S, .M et .D 60 M. NAJOUI Structure interne d’un cœur C6xxx .L : Unité arithmétique et logique, capable d’exécuter des instructions arithmétiques (additions, soustractions) et logiques (AND, OR, …), chacune des unités est capable de faire au maximum 2 additions/soustractions 32-bit flottantes/fixes par cycle ; Notez bien que toutes les instructions agissent seulement sur les 64 registres disponibles par cœur, et n’admettent pas des opérandes liées à la mémoire externe. .S : Unité de branchement et de décalage, capable d’exécuter des opérations de branchement (saut du flux d’exécution d’un programme à une position bien déterminée) ou de décalage des registres. Cette unité est capable également d’exécuter des opérations d’additions/soustractions flottante ou fixe (au maximum 2 opérations par unité); .M : Unité de multiplication, capable d’exécuter au maximum 4 multiplications 32-bit flottantes/fixes; .D : Unité de chargement et de stockage, capable de charger/stocker une donnée sur 64-bit; 61 M. NAJOUI Structure interne d’un cœur C6678 62 M. NAJOUI Performances d’un cœur du C6678 Capable d’exécuter 8 instructions différentes en parallèle par cycle (une instruction par unité). Capable d’exécuter 8 multiplications 32-bit flottante/fixe par cycle en utilisant les deux unités de multiplication, et 8 additions/soustractions 32-bit flottante/fixe par cycle en exploitant les 4 unités .L1/.L2/.S1/.S2; 63 M. NAJOUI C6713 Core functional block diagram 64 M. NAJOUI Caractéristiques du DSP C6713 65 M. NAJOUI Description du Cœur de C673 66 M. NAJOUI Développement d’une application embarquée Conception algorithmique Choix de la cible (DSP) Développement sur PC C ou assembleur ou autres… Environnement de développement intégré (IDE) Compilation, link Chargement de l’exécutable dans le simulateur ou la cible (carte d’évaluation) Exécution du programme sur simulateur ou sur la cible Vérification et Test du fonctionnement M. NAJOUI 67 Développement d’une application embarquée Assembleur Langage C Langage bas-niveau Fastidieux Jeux d’instructions complexes et irréguliers Spécifique à chaque constructeur Langage haut-niveau Plus rapide à coder Meilleure portabilité Code machine généré moins efficace Plus puissant Accès à certains registres inconnus du C Nécessite la maitrise de l’architecture afin de développer un code optimise. Permet d’optimiser 68 M. NAJOUI L’outil de développement Code Composer Studio v6.2.0 ou v5.3.0 de TI : IDE permettant de : Coder en C/C++ ou ASM et compiler Charger l’application sur la cible et debugger Un outil puissant et gratuit, capable de faire l’émulation (quand on dispose d’une carte d’évaluation) ou la simulation sur simulateur. Téléchargement : http://processors.wiki.ti.com/index.php/Download_CCS 69 M. NAJOUI Les étapes de création d’une application sur CCS Création du projet : Le type (lib, exe…), la famille et le type générique du DSP choisi. Configuration de la cible (Target Configuration) : Un fichier portant l’extension «.ccxml » où il faut spécifier la cible à utiliser (simulateur ou émulateur). Lier le fichier de configuration « .ccxml » au projet. Création du fichier de commande « .cmd » : Un fichier essentiel où le développeur précise dans quel niveau mémoire (L1, L2, MSM, DDR3, ROM) il faut charger le programme de son application. Développement de l’application Compilation, débogage et exécution du projet. 70 M. NAJOUI Notre première application Affichage d’un message Création du projet : File -> New -> CCS Project Project -> New CCS Project Output type : Executable Family : C6000, Generic C66xx Device Empty Project or Empty Project (with main.c) 71 M. NAJOUI Notre première application Affichage d’un message Configuration de la cible : View -> Target Configurations New Target Configuration File Ou File -> New -> Target Configuration File Cliquer sur « Finish » 72 M. NAJOUI Notre première application Affichage d’un message Dans le cas de simulation : Texas Instruments Simulator C6678 Device Cycle Approximate Simulator, Little Endian Cliquer sur « Save » 73 M. NAJOUI Notre première application Affichage d’un message Dans le cas de l’émulation : Texas Instruments XDS100v1 USB Emulator TMS320C6678 Cliquer sur « Save » Vous pouvez aussi tester la connection!!! 74 M. NAJOUI Notre première application Affichage d’un message Dans le cas de l’émulation : DSK-EVM-eZdsp onboard USB Emulator DSK6713 Cliquer sur « Save » 75 M. NAJOUI Notre première application Little Endian & Big Endian La différence entre "Little Endian" (LE) et "Big Endian" (BE) existe au niveau de la façon d’adressage d’un octet au sein d’un mot (de 32-bits) : La carte d’évaluation peut être configurer en LE ou en BE. Pour notre carte, nous avons choisi LE. 76 M. NAJOUI Notre première application Affichage d’un message Lier le .ccxml au projet : Clique droit sur votre fichier de configuration Link File To Project -> Nom de votre projet Assurez-vous que le fichier est bien visible dans votre projet 77 M. NAJOUI Notre première application Affichage d’un message Création du fichier de commande : File -> New -> Others -> File Sauvegarder le fichier sous l’extension .cmd et placer le dans le même répertoire de votre projet (qui doit se trouver dans le workspace) La structure minimale du fichier CMD est la suivante : -stack : Taille de la pile en octets -heap : Taille d’allocations dynamiques en octets MEMORY { } : Liste des mémoires disponibles sur le DSP utilisé SECTIONS { } : Le programme est découpé en sections pouvant être mappées à plusieurs mémoires 78 M. NAJOUI Notre première application Affichage d’un message La liste des mémoires disponibles sur TMS320C6678 est la suivante : 79 M. NAJOUI Notre première application Affichage d’un message Nous distinguons plusieurs sections prédéfinies pour un programme : 80 M. NAJOUI Notre première application Affichage d’un message Exemple de compilation d’un programme C : 81 M. NAJOUI Notre première application Affichage d’un message Exemple de fichier de commande .cmd : -stack 0x5000 -heap 0x5000 MEMORY { L2SRAM : o = 0x00800000 , l = 0x00080000 } SECTIONS { .text > L2SRAM .data > L2SRAM .cinit > L2SRAM .const > L2SRAM .cio > L2SRAM .far > L2SRAM .near > L2SRAM .fardata > L2SRAM .sysmem > L2SRAM .stack > L2SRAM } 82 M. NAJOUI Notre première application Affichage d’un message Développer votre première application: 83 M. NAJOUI Notre première application Affichage d’un message Compiler, débugger et exécuter votre application après chargement : Project -> Build Project, puis Run -> Debug Compilation et génération d’un fichier .out (traduction binaire d’un code assembleur) qui sera charger par la suite dans la mémoire spécifiée. Cocher les cœurs que vous voulez utiliser pour l’exécution de votre application. Après validation, l’application se chargera dans la cible et vous pouvez voir tous les cœurs dans la fenêtre « debug ». Exécuter votre application 84 M. NAJOUI Notre première application Affichage d’un message Après exécution sur un cœur vous devez voir le résultat de printf dans la console. [TMS320C66x_0] This is my first application on TMS320C6678 85 M. NAJOUI Chaine de compilation (1/2) Simulateur 86 M. NAJOUI Chaine de compilation (2/2) 87 M. NAJOUI TPs sur TMS320C6713B 88 M. NAJOUI TP1 : Prise en main du CCS et C6713B Objectifs : Maitriser les étapes essentielles de création d’un projet sur CCS. Apprendre comment implémenter des algorithmes de TNS sur DSP C6713B. Création du projet sous CCS : Cliquer sur : Project New CCS Project. Ensuite remplir les informations suivantes : • • • • • Project name : nom de votre projet (exemple TP1) Output type : Executable Cocher la case Use default location Family : C6000 Variant : C671x Floating-point DSP et sélectionner dans zone de droite TMS320C6713 • Connection : Spectrum Digital DSK-EVM-eZdsp onboard USB Emulator • Project templates and examples : choisir Empty Project (with main.c) 89 M. NAJOUI TP1 : Prise en main du CCS et C6713B Ajout de la CSL (Chip Support Library) : CSL fournit une interface en langage C pour simplifier la configuration et le contrôle des périphériques du DSP TMS320C6713 (Timer, EMDA, …). Pour pouvoir utiliser la CSL dans un projet, il faut : • Ajouter le chemin des fichiers .h de la CSL : Sélectionner le projet, aller dans le menu Project→Properties→CCS Build→C6000 compiler→Include options, cliquer sur Add et sélectionner le répertoire "C:\Program Files\C6xCSL\include". • Ajouter le fichier csl6713.lib : aller dans le menu Project →Properties → CCS Build → C6000 linker → File search path → Include library file, cliquer sur Add et sélectionner le fichier "C:\Program Files\C6xCSL\lib_3x\csl6713.lib“. 90 M. NAJOUI TP1 : Prise en main du CCS et C6713B Ajout de la BSL (Board Support Library) : La BSL est fournit par TI afin de faciliter la programmation des composants intégrés dans la carte DSK6713 (comme : Stereo codec AIC23). Pour pouvoir utiliser la BSL dans un projet, il faut : • Ajouter le chemin des fichiers .h de la BSL : Sélectionner le projet, aller dans le menu Project →Properties →Build → C6000 compiler → Include options, et sélectionner le répertoire "C:\ti\DSK6713\c6000\dsk6713\include". • Ajouter le fichier dsk6713bsl.lib : Sélectionner le projet, aller dans le menu Project →Properties → Build → C6000 linker → File search path → Include library file, cliquer sur Add et sélectionner le fichier "C:\ti\DSK6713\c6000\dsk6713\lib\dsk6713bsl.lib“. M. NAJOUI 91 TP1 : Prise en main du CCS et C6713B Configuration de la cible : Simulation : sélectionner Texas Instruments Simulator dans la zone Connection puis cocher le C6713 Device Cycle Accurate Simulator, Little Endian dans la zone Board or Device. Cliquer enfin sur Save. Emulation : sélectionner Spectrum Digital DSK-EVM-eZdsp onboard USB Emulator dans la zone Connection puis cocher le DSK6713 dans la zone Board or Device. Cliquer enfin sur Save. Compilation du projet : clique droite sur le projet puis Build Project. Chargement du programme dans la cible : Run Debug Exécution : 92 M. NAJOUI TP2 : Implémentation d’un FIR sur C6713 Les objectifs : Simulation sur Matlab d’un filtre à réponse impulsionnelle finie (RIF) Implémenter ce filtre sur le DSP TMS320C6713 Comparer les résultats de l’implémentation avec les résultats obtenus par Matlab Simulation du FIR sur MATLAB : Créer le signal x(t) = cos(2πf1t) + cos(2πf2t) + cos(2πf3t), sachant que f1=50, f2=300, f3=2000, Fe=8000 et Tm=0.1 (durée du signal x(t)) En utilisant la commande fir1, calculer les paramètres d’un filtre FIR passe bande d’ordre 100 avec les fréquences de coupure fc1=200 et fc2=400. En utilisant la commande filter, créer le signal y(t) qui est le résultat de l’opération de filtrage du signal x(t) par le filtre FIR crée précédemment 93 M. NAJOUI TP2 : Implementation d’un FIR sur C6713 Simulation du FIR sur MATLAB : Créer le signal x(t) = cos(2πf1t) + cos(2πf2t) + cos(2πf3t), sachant que f1=50, f2=300, f3=2000, Fe=8000 et Tm=0.1 (durée du signal x(t)) En utilisant la commande fir1, calculer les paramètres d’un filtre FIR passe bande d’ordre 100 avec les fréquences de coupure fc1=200 et fc2=400. En utilisant la commande filter, créer le signal y(t) qui est le résultat de l’opération de filtrage du signal x(t) par le filtre FIR crée précédemment Visualiser sur la même figure les 4 courbes suivantes : • • x(t) et X(f) : l’input dans le domaine temporel et fréquentiel. y(t) et Y(f) : l’output dans le domaine temporel et fréquentiel. Générer les trois fichiers suivants : • • • Coef.dat : les coefficients du filtre FIR séparés par une virgule. Input.dat : les échantillons du signal à filtrer séparés par une virgule. Output.dat : contenant les échantillons du signal filtré par Matlab séparés par une virgule. 94 M. NAJOUI TP2 : Implementation d’un FIR sur C6713 Implémentation du FIR sur C6713 Créer un projet sur CCS avec le nom FIR_filter, Développer la fonction « float FIR_filter(float xn) » qui implémente le filtre FIR. N = ordre du filtre. bk = Coefficients du filtre. Développer le programme principal ou vous faites appel a la fonction de filtrage afin de filtrer le signal d’entrée. Comparaison des résultats obtenus avec ceux de Matlab : Comparaison graphique : en mode Debug, aller a Tools → Graph → Single Time. Comparaison arithmétique (point par point) : Développer un programme C permettant de comparer les valeurs de Output_Ref avec celles de Output sachant qu’une erreur de 0.01 est permise. 95 LOGO www.themegallery.com M. NAJOUI