DSP C6000 BAHTAT Mounir 0 DSP C6000 Architecture & programmation C/ASM Rédigé p

DSP C6000 BAHTAT Mounir 0 DSP C6000 Architecture & programmation C/ASM Rédigé par : Mounir BAHTAT Type de cours : TP guidé Catégorie du cours : Systèmes embarqués & Temps réel Pré-requis : - Mise à jour le : 18-12-2012 Easy Learn www.easylearn.max.st DSP C6000 BAHTAT Mounir 1 Sommaire Partie 1 : Architecture & Programmation C embarqué Chapitre 1 : DSP et architecture Chapitre 2 : Notre premier programme en C embarqué Chapitre 3 : Techniques d’optimisation en C Partie 2 : Programmation ASM C66x Chapitre 1 : Notre premier code assembleur Chapitre 2 : Ecrire un code assembleur optimisé DSP C6000 BAHTAT Mounir 2 Introduction Une unité centrale de traitement (CPU : Central Processing Unit) est l’élément jouant le rôle d’un cerveau dans tout système. Cet élément ne permet pourtant que d’effectuer des opérations arithmétiques et logiques basiques, ainsi que des opérations d’E/S [Entrée/Sortie]. Depuis 1970, les CPU (plus précisément les microprocesseurs) ne cessent de s’optimiser. Le besoin en temps réel dans des applications liées aux traitements de signal, a engendré l’apparition d’un nouveau type de processeurs optimisés, qui portent l’acronyme de DSP (Digital Signal Processor). Les DSP et les systèmes embarqués temps réel Un système embarqué est un système électronique [matériel] et informatique [logiciel] autonome, qui doit souvent prendre en compte des contraintes temps réel. Les caractéristiques essentielles qui sont généralement exigées pour un système embarqué sont : - Le coût doit être le plus faible possible - Consommation énergétique la plus faible possible, dû à l’utilisation des batteries [en général] - Encombrement le plus réduit possible - Performance taillée spécifiquement pour une certaine application [puissance de calcul, …] L’architecture d’un système embarqué est constituée principalement/généralement d’un élément de traitement (qui peut être GPP [General Purpose Processor] et/ou DSP [Digital Signal Processor] et/ou SoC [System On Chip] basé sur FPGA/ASIC), des mémoires et des interfaces de communication avec des périphériques [comme exemple : écran tactile, GPS, …]. La partie logicielle qui sera présente dans des mémoires Flash pour pouvoir être exécutée par un microprocesseur, est appelée : "firmware". Ci-après un exemple de système embarqué : Gumstix Overo COM [Computer On Module], avec Wifi et Bluetooth Partie 1 : Architecture & Programmation C embarqué Chapitre 1 : DSP et architecture Les DSP sont apparus vers 1978, pour répondre aux attentes temps réel des algorithmes de traitement de signal. Ils se sont caractérisé principalement des processeurs ordinaires par l’opération MAC (Multiplication & Accumulation) en un seul cycle d’horloge, alors que cette dernière opération est couteuse en termes de cycles sur d’autres types de microprocesseurs. Les DSP se dotent également d’une architecture Harvard modifié, qui contrairement aux architectures Von Neumann, permet l’accès simultané au programme et aux données, via des bus dédiés. L’utilisation de ce type de processeur dans un cadre de traitement de signal nécessitera des interfaces de conversion analogique/numérique (échantillonnage à une certaine fréquence), du fait que le DSP ne pourra traiter les données qu’aux cycles d’horloge, comme le montre la figure suivante : DSP C6000 BAHTAT Mounir 3 ADC=[Analog-Decimal Converter] ; DAC=[Decimal-Analog Converter] Texas Instruments (TI) occupe 70% du marché des DSP, laissant 30% aux autres concurrents (Motorola, Analog Devices, Lucent Technologies, …) On s’intéressera durant ce TP guidé, à un DSP propre au Texas Instruments, ces DSP se trouvent catégorisés en 3 : C2000 ; C5000 et C6000. Les caractéristiques/applications de chacune des familles sont citées ci-dessous : On s’intéressera particulièrement aux DSP performants C6000, qui se trouvent encore catégorisés en 2 : à virgule fixe et à virgule flottante. Les DSP à virgule flottante peuvent effectuer des opérations à virgule (nombres réels) en 1 cycle, alors que ça doit prendre plusieurs cycles sur un DSP à virgule fixe (spécifique aux nombres entiers) ; Ceci est dû à la présence des blocs matériels dans l’architecture du DSP qui sont spécialisés dans les opérations flottantes, alors que pour un DSP à virgule fixe une opération flottante est traduite en une combinaison de plusieurs opérations fixes [entières], engendrant une augmentation considérable des cycles lors de l’exécution. Les DSP de TI de la famille C6000 classés en performance sont listés ci-dessous : DSP C6000 BAHTAT Mounir 4 DSP à virgule fixe DSP à virgule flottante DSP C6000 BAHTAT Mounir 5 Le DSP qui sera utilisé dans ce TP est le tout dernier TMS320C6678 à virgule fixe ET flottante. Ce DSP qui se présente sous la forme d’un circuit intégré est fournie dans une carte de développement avec d’autres périphériques et mémoires afin faciliter son test et utilisation. La carte se présente ainsi : On y trouve principalement le DSP, des interfaces pour les protocoles de communication haut-débit (Ethernet, HyperLink, AMC), de la mémoire dynamique de 512 Mo, un émulateur XSD100v1 qui a pour rôle de faire communiquer un PC avec le DSP pour des objectifs de débogage : chargement du code logiciel vers les mémoires pour exécution par les cœurs du DSP, mise en pause/marche de chacun des cœurs, accès direct aux mémoires, … 18 interrupteurs DIP-Switch permettent la configuration statique de la carte (horloge, protocole PCIe, …). Un émulateur externe à haute vitesse peut être connecté via 60-pin afin d’effectuer des opérations de débogage rapide. Le connecteur AMC dans l’image ci-dessus transporte des lignes des protocoles de communication haut-débit tel que RapidIO ou PCIe (débits jusqu’à 5 Gbps [giga bit per second]). Finalement des boutons poussoirs pour "reset" sont également disponibles, l’expression "warm reset" exprime une réinitialisation sans mettre hors tension des composants. La configuration usine [par défaut] des DIP-Switch est la suivante : Cette configuration statique initiale choisit : - Un fonctionnement en "Little Endian" ; la différence entre "Little Endian" et "Big Endian" existe au niveau de la façon d’adressage d’un octet au sein d’un mot (de 32-bit) comme le montre la figure suivante : DSP C6000 BAHTAT Mounir 6 - "I2C Boot Master Mode" -> lire après la mise sous tension, du code programme à partir d’une mémoire EEPROM de 128Ko via le protocole série I2C - Module PCIe désactivé L’architecture interne du DSP C6678 est la suivante : Le DSP contient 8 cœurs chacun pouvant se comporter comme un processeur indépendant, fonctionnant jusqu’à 1.25 GHz. Plusieurs niveaux de mémoires sont présents : - L1 local pour chacun des cœurs, divisé en 2, L1D (pour les données) et L1P (pour le programme) de taille 32Ko chacun ; c’est le niveau le plus proche au cœur, résultant en un accès le plus rapide possible, sans latences (débit de 16 octets par cycle) DSP C6000 BAHTAT Mounir 7 - 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 aussi utilisé en mode CACHE, durant ce mode, on sauve l’accès aux données lointaines (à partir de la mémoire dynamique DDR3 externe par exemple) en les chargeant au L1 ou L2 d’avance. - MSM (Multicore Shared Memory) est une mémoire statique SRAM de 4 Mo commune à tous les cœurs - Un contrôleur de la mémoire dynamique DDR3 (Double Data Rate), 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. Ci-après une brève description des autres modules de l’architecture : - Le périphérique « Debug and Trace » s’occupera des opérations de débogage entre DSP et PC - La mémoire « Boot ROM » est une mémoire non volatile, de taille 128 Ko, servant pour sauvegarder le code programme, même après mise hors tension des périphériques du DSP - Le bloc « Semaphore » protège l’accès concurrent aux périphériques par plusieurs maîtres (particulièrement par les 8 cœurs) - Le PLL (Phase-Locked Loop) permettra la génération des signaux aux fréquences souhaitées - L’EDMA (Enhanced Direct Memory Access) permet le transfert mémoire sans l’intervention du CPU, ceci apporte une importante majeure pour les applications nécessitant l’accès à une quantité importante de la mémoire - Le bloc EMIF16 est un contrôleur d’une mémoire ROM externe - Plusieurs protocoles de communication haut-débit sont disponibles également sur le DSP : PCIe (5 Gbps), RapidIO (5 Gbps), ETHERNET (1 Gbps), TSIP (32 Mbps), HyperLink (50 Gbps, entre 2 DSP C6678), I2C, UART, SPI - Finalement, le « Multicore Navigator » a pour rôle d’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 Chacun des cœurs C66x CorePac est présenté sous le schéma suivant : DSP C6000 BAHTAT Mounir 8 On trouve par banc : - 32 registres de 32-bit nommés A0 -> A31 / B0 -> B31 - 4 unités .L / .S / .M / .D o .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 uploads/Ingenierie_Lourd/ dsp-c6000-architecture-amp-programmation-c-asm.pdf

  • 17
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager