matériel 29 Ed 2003 CHAPITRE 2 MATERIEL Architecture générale d’un DSP Le DSP V

matériel 29 Ed 2003 CHAPITRE 2 MATERIEL Architecture générale d’un DSP Le DSP Virgule fixe Texas 320C31 Le Starter Kit matériel 30 Ed 2003 matériel 31 Ed 2003 1. ARCHITECTURE GENERALE D'UN DSP 1.1. Architecture d'un microprocesseur standard 1.1.1. Schéma interne BUS ADRESSES 16 bits Compteur programme Index Pointeur de pile ACCUMULATEURS Régistres eventuels (pour stockage ou indirections) UNITE ARITHMETIQUE et LOGIQUE Code condition BUS DONNEES Décodage d' instruction et contrôle Registre d' instruction AMPLI D' ADRESSES 16 Commande des différents aiguillages et séquencement interruptions horloges lecture-écriture BUS interne UNIQUE AMPLI DE SORTIES DONNEES 1.1.2. Déroulement d'une instruction Soit une instruction simple, par exemple de chargement d'un registre interne(Accu) par un opérande en mémoire donnée (adressage direct ou étendu). Mémoire Donnée Mémoire Programme PROCESSEUR l i Bus adresse Bus donnée Bus interne mixte Compteur programme Accu variables (RAM) Programme Constantes (RAM ou REPROM) matériel 32 Ed 2003 En début d’exécution d’une instruction, le compteur programme pointe sur son code opérateur, l’adresse de l’opérande demande souvent deux cases mémoire. Un processeur quelconque à besoin au minimum de 3 ou 4 phases, et donc 3 ou 4 périodes d'horloge: phases bus adresse bus donnée cycle de ? lecture du code de l'instruction et décodage adresse du code opération en mémoire programme code instruction lecture lecture de l'adresse de l'opérande (1 ou 2 phases) adresse(s) suivante(s) en mémoire programme adresse de l'opérande (en 1 ou 2 parties) lecture(s) lecture de l'opérande adresse de l'opérande en mémoire donnée donnée lecture exécution: mise dans "accu" Très souvent, un processeur possède une horloge de base à Fck, (par exemple 100 MHz), mais chaque phase (de lecture ou d’écriture) demande 2 ou 4 périodes de cette horloge (ou d’avantage), ce qui ralentit encore les opérations ! 1.1.3. Réduction de ce nombre de "cycles d'exécution" Les phases 3 et 4 peuvent être regroupées dans ce cas simple, mais pas toujours si une opération arithmétique est à effectuer. On peut aussi placer à une seule adresse le code de l'instruction et l'adresse de l'opérande (adresse alors réduite en travaillant par "pages"), phases 1 et 2 sont alors regroupées. La seconde phase est également inutile si la donnée à lire est "pointée par un registre interne au processeur (adressage indirect par registre). Le nombre de phases peut donc être diminué, mais on veut arriver à une instruction = 1 période d'horloge pour la plupart des instructions ! Pour cela, le seule façon est de - réduire à une adresse l'instruction complète (adresse et opérande éventuel) - envisager un processeur qui exécuterait une instruction (voir plusieurs) à chaque temps élémentaire. C'est la structure "pipe line" (avec un chevauchement des phases), dont nous expliquons ici seulement le principe. instruction n instruction n+1 Recherche instruction Recherche opérande phases successives exécution instruction n+2 Recherche instruction Recherche instruction Recherche opérande Recherche opérande exécution exécution Doit être possible en même temps adresses mémoire progressives PC code opérateur adresse opérande matériel 33 Ed 2003 Ceci n'est pas possible avec la structure actuelle, il faut en effet pouvoir matériellement lire en même temps la mémoire donnée et la mémoire programme ! Ceci nécessite donc une structure à deux bus internes séparés, la structure "Harward", ainsi que deux zones mémoires programme et mémoire données entièrement distinctes. 1.2. Architecture DSP: Harward Nous donnons ici un schéma simple, correspondant au 320C10 (ancien DSP de Texas), qui est plus simple que celui d'un DSP moderne virgule fixe ou flottant, tout en étant basé sur les mêmes principes. matériel 34 Ed 2003 On repère: -les mémoires internes Programme et donnée. Le compteur programme. -le bus programme, le bus donnée -Des bus internes adresses et données bien séparés, pour chaque zone. -Un accumulateur, les opérateurs arithmétiques câblés: ALU (unité arithmétique et logique), multiplieur, circuits de décalage: "shifter". etc ..... 1.3. Conclusion sur l’architecture DSP Grâce à la structure Harward, un processeur de signal présente donc une structure interne optimisée afin de réaliser plus aisément et plus rapidement qu’un microprocesseur les opérations classiques de traitement de signal. Il est surtout optimisé pour des calculs de sommes de produit, tel que l’équation d’un filtre numérique y h x n k k m n k = = − − ∑ 0 1 . . On peut en effet réaliser en un seul cycle machine (donc par exemple en 50ns) les opérations : accumulation, produit, décalage d’un pointeur et de la donnée pointée. Il est par contre nettement moins performant en mode d’adressage ! Les DSP se repartissent en deux grandes familles : les DSP virgule fixe d’une part, et les DSP virgule flottante d’autre part. Ces derniers sont naturellement plus puissants , mais plus onéreux et consomment un plus, et pour de nombreuses applications simples, les DSP virgule fixe sont encore très utilisés. Les DSP peuvent travailler uniquement sur leurs mémoires RAM internes en mode "MonoChip" ou "Microcontroleur" pour de petites applications. Plusieurs configurations mémoires sont possibles (répartition de la mémoire en mémoire programme et mémoire donnée. Ces mémoires sont hélas toujours de petite taille (quelques k mots). En mode "Microprocesseur" et même "Multiprocesseur", on peut étendre largement le domaine adressable (à 64k ou plus mots de 16 bits ou 32 bits par exemple), travailler sur une portion de mémoire commune ..... Dans le cas de programmes en REPROM d'accès relativement lent (> 50 à 100ns), un transfert du code objet exécutable vers une RAM interne (ou externe) au processeur est toujours effectué avant l'exécution de celui ci, si on veut garantir la vitesse maximale possible de travail. matériel 35 Ed 2003 2. LE PROCESSEUR TEXAS VIRGULE FLOTTANTE TMS320C31 Notre but n’est pas de décrire entièrement le processeur Texas TMS320C31, il faudrait plus de 300 pages …, mais de donner le minimum nécessaire à la compréhension d’un tel circuit. Quarz 50 MHz, division par deux donc Fck = 25 MHz et Tck = 40 ns 2.1. Synoptique général Bus adresse 24 bits Bus donnée 32 bits 2.2. Registres principaux RO à R7 Registre principaux de calcul, de 32 bits ou 40 bits AR0 à AR7 Registres auxiliaires de 32 bits, pointeurs et compteurs de boucles. SP Pointeur de pile de 32 bits matériel 36 Ed 2003 ST Registre STATUS de 32 bits contenant entre autres le bit GEI (Global Enable Interrupt) de validation générale des interruptions (Attention, contrairement à un grand nombre de microprocesseurs, c’est un bit de validation et non un masque …) IE (Interrupt Enable) Registre de 32 bits de validations des diverses interruptions. IF (Interrupt Flags) Registre de 32 bits contenant les drapeaux correspondant. 2.3. Les interruptions La validation générale des interruptions se fait par le bit GIE du registre STATUS (Global interrupt Enable) On distingue RESET interruption "reset" à la mise sous tension 3 0 INT à INT quatres lignes d'interruption sur niveau bas. TINT0 et TINT1 interruption des deux Timer (fin de décomptage) RINT (0 et 1) interruption associée à la lecture des ports séries rapides XINT (0 et 1) interruption associée à l'écriture du port série rapide TRAP, NMI, INTR … interruptions diverses logicielles Lors de chaque interruption, et si elle est validée : Le drapeau correspondant dans IF passe à 1. Le bit GEI est mis à 0, interdisant tout autre interruption L’instruction en cours se termine. Le compteur programme est sauvegardé automatiquement dans la pile système (gérée par le registre SP) (comme pour les appels aux sous programmes) Le DSP part en interruption (voir ses pseudo vecteurs) Attention : ce processeur ne sauve automatiquement en pile aucun registre (à part évidemment le PC), il faut donc au minimum sauver le Status (ou se trouvent les bits N,Z,C etc classique de tout processeur qui servent lors des branchement conditionnels). Dans le cas général, on peut sauver tout le contexte, mais cela fait 26 registres ! Quand on programme en C, on se servira des facilités du C et du Interrupt Handler qui gère cela automatiquement. 2.3.1. Vecteurs Les interruptions sont NON-VECTORISEES (pseudos vecteurs ..). matériel 37 Ed 2003 Lors d'une interruption, ce DSP va exécuter l'instruction placée à des adresses bien précises (il ne va pas chercher une adresse de branchement !!). La table des vecteurs est donc en fait une table de Jump. Le vecteur Reset est situé à l’adresse 0 donc en ROM forcément ! En mode mise au point, tous les autres doivent renvoyer à une autre table de Jump, en RAM. On peut aussi parfois déplacer la table des vecteurs initiaux vers une zone de RAM, par programmation juste en début de programme après le Reset. Ces pseudos vecteurs contiennent chacun un code d’instruction de saut à une adresse déterminée, donc un mot de 32 bits (instruction + adresse sur 24 bits). La table précédente est la table initiale de vecteur, ou de Jump. 2.3.2. Registres concernés Nous utiliserons juste les bits mentionnés ici. -Registre IE : bits de validation des diverses interruptions. 0 RINT0 XINT0 INT1 INT0 0 0 1 0 A laisser à 1 sur le kit INT2 INT3 -Registre IF : drapeaux d’interruption. Même disposition que IE. La remise à zéro est automatique uploads/Litterature/ materiel-1.pdf

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