NN2K1 1 INITIATION AUX DSP DESS Microélectronique Université Paul Sabatier Toul
NN2K1 1 INITIATION AUX DSP DESS Microélectronique Université Paul Sabatier Toulouse Nicolas Nolhier 02/2001 NN2K1 2 PLAN du COURS • Introduction – Spécificités d'un DSP – Formats des données • Le DSP ADSP 21065L – Caractéristiques – Architecture – Unités de Calcul – Séquenceur – Générateurs d'adresse – Les interruptions – Le cache – Organisation de la mémoire – Le DMA – Le SPORT – Timer et I/O • La Conversion Analogique Digitale – Structures de CODEC – Communications avec le DSP • Environnement de développement NN2K1 3 Références • Informations sur les DSP Analog Devices – http://www.analog.com/DSP/ • Informations sur les DSP Motorola – http://www.motorola.com/SPS/DSP/ • Cours de formation sur les DSP et le traitement numérique du signal – http://www.techonline.com/ • Introduction aux DSP – http://perso.wanadoo.fr/lapiste/dsp.htm NN2K1 4 Le DSP • DSP : Digital Signal Processor • Cœur d'une chaîne de traitement numérique du signal • Système numérique / système analogique : – Filtres numériques spécifiques – Stabilité / Reproductibilité • DSP / Circuit Intégré dédié ASIC : – Reprogrammation – Algorithmes adaptatifs NN2K1 5 Spécificités des DSP / Microprocesseur • Cas d'un microprocesseur – Architecture Von Neuman – Mémoire globale • Cas d'un DSP – Architecture Harvard – Mémoire séparée Architecture NN2K1 6 Spécificités des DSP / Microprocesseur • Instructions adaptées et optimisées: – Ex le MAC : 1 cycle d'horloge A = B*C + D • Modes d'adressage évolués – adressage circulaire post-incrémental • RAM interne • Gestion directe de la mémoire DMA • Pipe-Line : gestion // des opérations • "Multi-processing" • Entrées / sorties numériques NN2K1 7 Virgule fixe ou flottante ? • DSP à virgule fixe – ex : sur 32 bits • entier • fractionnaire – Plus complexe à programmer - normalisation – Dynamique réduite – Coût plus faible N = !b31.2 31 + bi i =0 30 " 2 i N = (!1) b3 1 + bi i= 0 30 " 2 i !31 !2 "147" 483" 648 # N # 2 "147 "483 "647 !1 " N " 0.999999977 NN2K1 8 • DSP à virgule flottante (IEEE 754.1985) – ex : sur 32 bits – exemples : – Souplesse – Grande dynamique – Structure complexe - Prix élevé N = (!1) S.(1, f).2 e!127 e = ei 2i i =0 7 ! f = fi i = 0 22 ! 2i " 23 0 00000111 11000000000000000000000 + 7 0.75 1 10000001 01100000000000000000000 - 129 0.375 +1.75 ! 2 7"127 ( ) = +1.316554 !10 "36 !1.375 " 2 129!127 ( ) = !5.500000 NN2K1 9 Le DSP ADSP-21065L • DSP 32 bits de chez • Virgule flottante / fixe • 180 MFLOPS • Horloge interne 60 MHz - Un cycle par instruction ! • 544 kbits de SRAM intégrée • 2 ports série haut débit ( 30MBits/s) – 32 canaux TDM • 2 Timers (capture / PWM) • 12 lignes In/Out digitales • 10 canaux DMA • 3.3 V • $10 - pour 100.000 pièces ! NN2K1 10 Exemple d'application • Processeur audio numérique AV32R Décodage numérique pour Home Cinéma Formats supportés : • Dolby Digital™ • DTS™ • MPEG2™ • Dolby Pro Logic™ • TAG McLaren Surround • Processing Format THX Cinema™ NN2K1 11 Brochage • Boîtier 208 broches NN2K1 12 Schéma Bloc général NN2K1 13 Les unités de calcul • 3 unités : – ALU – Multiplieur – Un registre à décalage • Chaque unité : une opération par cycle NN2K1 14 Le bloc des registres • Register File : interface entre les bus de données et les unités de calcul • Transfert de données et résultat de calcul • 16 registres indépendants de 40 bits – si on travaille sur 32 bits b0 - b7 ignorés • en assembleur : – Fx : registre x pour une opération en flottant – Rx : registre x pour une opération en fixe ex : F0 = F1 * F2 ; R0 = R1 * R2 ; F15 = 12.254 ; R15 = 13 ; NN2K1 15 Unité arithmétique et Logique ALU • Opérations sur des nombres à virgule fixe et flottante. • Addition/ soustraction/ moyenne • Opérateurs logiques (fixes) • Conversions • Fonctions diverses – exemple d'instructions portant sur des flottants : • Chaque instruction modifie des drapeaux dans les registres d'état Fn = Fx + Fy ; Fn = Fx - FY ; Fn = ABS Fx ; COMP(Fx,Fy) ; Fn = (Fx + Fy)/2 ; Fn = MAX (Fx,Fy) ; Fn = MIN (Fx, Fy) ; Fn = FLOAT Rx ; Rn = FIX Fx ; NN2K1 16 Drapeaux de l'ALU • Mis à 1 ou à 0 après une opération • Permettent les tests et branchements • registre ASTAT • registre STKY (ces bits restent à 1 !) Rem : - COMP (x,y); génère un 1 si x > y - BIT CLR STKY AUS; retombe à 0. NN2K1 17 Le multiplieur • En virgule fixe : – capable d'effectuer des MAC – utilise un registre d'accumulation sur 80 bits MR • En virgule flottante : – seulement la multiplication Fn = Fx * Fy ; • Drapeaux gérés par le multiplieur – registre ASTAT – registre STKY NN2K1 18 Unité de décalage Shifter • Travaille sur 32 bits sur des nombres à virgule fixe – porte sur Rn • Décalages et rotations • Mise à 1 ou 0 de bits, tests... – exemple d'instructions • Drapeaux affectés : – dans le registre ASTAT Rn = LSHIFT Rx BY Ry; /* signé >0 Left */ Rn = ROT Rx BY Ry ; Rn = BCLR Rx BY Ry ; Rn = BSET Rx BY Ry ; BTST Rx BY Ry ; /* set SZ si bit=0 */ NN2K1 19 Séquenceur de programme • Le séquenceur contrôle le déroulement du programme – linéaire – structures de boucles – sous-programmes – sauts – routines d'interruption • Architecture : NN2K1 20 Cycle d'instruction • 3 cycles d'horloge pour gérer une instruction – lecture (mémoire ou cache) – décodage – exécution • Chaque tâche est séparée – Structure "pseudo-parallèle" ou PipeLine – Rupture du pipeline : conflit mémoire, sauts, boucles .... Temps (cycles) Lecture Décodage Exécution 1 Instruction 1 2 Instruction 2 Instruction 1 3 Instruction 3 Instruction 2 Instruction 1 4 Instruction 4 Instruction 3 Instruction 2 …. …. …. …. NN2K1 21 Sauts • Branchement : JUMP addr24 PC<- addr24 • Saut à un sous-programme : CALL addr24 PC+1 -> PC Pile PC <- addr24 Retour : RTS PC <- PC Pile suite: DM(I0,1) = f0; f8 = f1 * f4 ; f1 = f1 * f0; f8 = f8 + f1; r0 = rcv_tcb + 7; r0 = r1 AND r0; r0 = BSET r0 BY 17; JUMP suite; i4 = Init_Codec; r15 = ENABLE; r0 = rcv_tcb + 7; r0 = r1 AND r0; r0 = BSET r0 BY 17; CALL suite; i4 = Init_Codec; r15 = ENABLE; suite: DM(I0,1) = f0; f8 = f1 * f4 ; RTS; f1 = f1 * f0; f8 = f8 + f1; NN2K1 22 Branchements et sauts conditionnels • JUMP et CALL peuvent être conditionnels : IF condition JUMP addr24 ; IF condition CALL addr24 ; • Liste des conditions • Tout ne s'applique pas au IF !! Mnémonique Description Vrai si … EQ ALU :résultat = 0 AZ=1 LT ALU :résultat < 0 AN=1 and AZ=0 LE ALU :résultat ! 0 AZ=1 or AN=1 AC ALU :retenue AC=1 AV ALU :dépassement AV=1 MV Multiplieur :dépassement MV=1 MS Multiplieur :résultat < 0 MN=1 SV Shifter :dépassement SV=1 SZ Shifter :résultat = 0 SZ=1 TF Test de Bit Vrai BTF=1 LCE Boucle terminée (Do Until) CURLCNTR=1 NOT ICE Boucle non terminée (If..) CURLCNTR"1 NE ALU :résultat "0 AZ=0 GE ALU :résultat # 0 AN=0 GT ALU :résultat > 0 AZ=0 and AN=0 NOT AC ALU :pas de retenue AC=0 NOT AV ALU :pas de dépassement AV=0 NOT MV Multiplieur :pas de dépassement MV=0 NOT MS Multiplieur :résultat # 0 MN=0 NOT SV Shifter :pas de dépassement SV=0 NOT SZ Shifter :résultat non nul SZ=0 NOT TF Test de Bit Faux BTF=0 FOREVER Toujours Faux (Do Until) TRUE Trajours Vrai (If…) NN2K1 23 Structures de boucle • Le contrôle de la boucle se fait en interne. • Boucle avec condition de fin : DO addr24 UNTIL condition; • Boucle avec compteur : LCNTR= data16 , DO addr24 UNTIL LCE; • Les boucles peuvent être imbriquées (6 MAX) • Pas de branchement sur les 3 dernières instructions de la boucle DO suite UNTIL EQ; f6 = max (f2,f7); suite: r3 = r3 - 1; r3 = 0x120; LCNTR=12, DO test UNTIL LCE; f2 = DM(I0,M1); f6 = max (f2,f7); test: DM(I2,M1) = f6; f6 = -5.0; NN2K1 24 Registres spéciaux du séquenceur • La pile du PC (PC Stack ou PCSTKP) – adresse de retour • sous-programmes • routines d'interruption – adresse de début du boucle – taille 30*24 bits – registre STKY : bit 21 PCFL PC stack full bit 22 uploads/Ingenierie_Lourd/ dsp.pdf
Documents similaires
-
18
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 02, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 6.1983MB