400 likes | 778 Views
COURS DE DSP (Digital Signal Processor) Alain Fruleux. I S E N 2006. Plan. Première Partie 0 Introduction 1 Comment se former au DSP? 2 Notions Générales 3 Le TP1. 0-1 Introduction: Code Composer Studio TI utilisé en TP. 0-2 Vision Globale DSK/TMS320c5510 de TI. ?. ?. ?. ?. ?.
E N D
COURS DE DSP(Digital Signal Processor)Alain Fruleux I S E N 2006
Plan • Première Partie • 0 Introduction • 1 Comment se former au DSP? • 2 Notions Générales • 3 Le TP1
0-2 Vision Globale DSK/TMS320c5510 de TI • ? • ? • ? • ? • ?
0.3 Utilisation des DSP T. I. • C1x Hard Disk Controllers • C2x Fax/Machines Embedded Control • C3x Videophones • C5x Voice Processing • C54x Digital Cellular Phones • C6x Wireless Base/Modems • C8x Video Conferencing
0.4 Position du Cours Télécommunication Electro - technique Electronique Informatique électronique de puissance Micro - processeurs et DSP électricité Réseaux traitement de signal semi- conducteurs Automatisation Processus Manufacturier Signaux et Systèmes Numériques Physique Mesure
1.1 Comment se former au DSP? • - • 10 Cours/Expérimentation • sur une maquette DSK/TMS320C5510 • Prise en main • Le jeu d ’instruction et registres • Écriture et compilation d ’un programme (Assembleur) • Repeat Block/ Adressage Circulaire • Temps d ’exécution • Instruction Parallèle • Synthèse réaliser un filtre FIR
1.2 Cycle de Développement • 1-Réalisation ( ou utilisation) de la carte électronique (existante) : cible/target • 2-Écriture d ’un programme en c et assembleur (fichier source) • 3-Assemblage ou Compilation (fichier objet) • 4-Chargement du programme sur la cible (fichier exécutable) • 5-« Debugage »/Test du fonctionnement 2 4 3 1 5
1.2.1 Le Langage Assembleur • Pour gagner de la place (concision du code) • Pour gagner du temps (d ’exécution pas de développement) • Couche indispensable entre le hard et les couches logiciels supérieurs. • Souvent lié à une programmation en C. • Forme définitive d ’un programme après compilation.
1.2.1 Le Langage Assembleur • Formalisme : 4 champs (TMS320C5402) • EtiquetteInstr.Opérand Commentaires • (ou label) • Début LD#0x7FFF,0,A charger A avec la valeur hexa 7FFF • FinBDébut saut à Début • pour lisibilitéregistre • correspond à adresse mémoire • adresse après étiquette • compilation variable immédiate
2- NOTIONS PREALABLES • 2.1 Représentation des Nombres Entiers • 2.2 Autres Représentations • 2.3 Opérations sur Entiers • 2.4 Représentation des Nombres Réels
2.1 Représentation des nombres entiers • 2.1.1 Nombres entiers en Base 10 • 101001 +1*100000 • 1001 +1*1000 • 1 =1*10°
2.1.2 Nombres entiers en Base 2 • 101001 +1*32 • 1001 +1*8 • 1 =1*2° • = 41 (décimal) • MSB LSB
2.1.4 Dynamique des Nombres Entiers • 8 bits 1 octet (byte) 0 à 255 Dec 00h à FFh en Héxa • 16 bits 2 octets (word) 0 à 65535 ou 0000h à FFFFh • 32 bits 4 octets (long w) 0 à 4.294.967.295 ou FFFFFFFFh
2.2 Autres Représentations • 2.2.1 Nombres BCD (Binary Coded Decimal) • C ’est une astuce pour utiliser la notation hexadécimal pour le décimal.On s ’arrête à 9 et cela complique un peu les algorithmes de calcul • XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2.2 Autres Représentations • 2.2.2 Représentation de Texte (ASCII)
2.2 Autres Représentations • 2.2.3 État extérieur (port d ’entrée/sortie)
2.2 Autres Représentations • 2.2.4 Registre de commande • 1.3.3 Registre de status (d’état)
2.2 Autres Représentations • 2.2.5 Codage d ’une instruction (TMS320C5402) • l ’instruction (équivalente à A=32767): • LD #0x7FFF,0,A • (charger A avec la valeur hexa 7FFF) • est codée (en hexa) dans la mémoire: • F0 20 LD#??,0,A • 7F FF 7FFF variable immédiate
2.3- OPERATIONS SUR ENTIERS • 2.3.1 Addition en Base 2, 16 et 10 • ret 1001111- 1- 11- • 01001011 = 4Bh = 75 • + 11100101 = E5h =229 • = 1 00110000 = 1 30h=304
2.3.2 Nombres entiers signés (complément à 2) • + ????????? = - 41 = ??h • Soustraction et nombres négatifs • 00101001 = + 41 = 29h • + 11010111 = - 41 = D7h • = (1) 00000000 = 00 = (1)00h
2.3.3 Opérations Logiques • ET (AND) • 01001011 = 4Bh = 75 • et 11100101 = E5h =229 • = 01000001 = 41h= 65 • Masque (forcer un bit à 0) • xxxxxxxx • et 10111101 • = x0xxxx0x
2.3.3 Opérations Logiques • OU (OR) • 01001011 = 4Bh = 75 • ou 11100101 = E5h = 229 • = 11101111 = EFh= 239 • Masque (forcer un bit à 1) • xxxxxxxx • ou 01000010 • = x1xxxx1x
2.4 Représentation des nombres Réels • Dans un filtre FIR la somme des coefficients est égale à 1 • Nous avons besoin de variables non entières • S est le signe 0 positif 1 négatif • la somme fractionnaire est toujours <1
2.4.1 Virgule Fixe (Q15) • Exemple d ’un Nombre positif
2.4.1 Virgule Fixe (Q15) • L ’utilisation de la virgule fixe est délicate: • Les variables doivent être comprises entre -1 et +1 • Multiplication : pas de débordement possible • Addition et soustraction risque de débordement qu ’il faut traiter (test des variables avant l ’opération) • Faire attention à l ’ordre des calculs • Faire attention au format de variable supporté par les instructions en Assembleur et en C • Ces problèmes sont résolus avec la virgule flottante • Malheureusement notre TMS320C55 ne possède pas de virgule flottante (sauf en C) pour des économies de surface de silicium et de consommation…..
2.4.2 Virgule Flottante • e exposant codé en complément à 2 (-128 à 127) • si e=-128 alors variable =0 • s signe de la mantisse 0=positif 1=négatif • f fraction de la mantisse en 2^-n • on ajoute 1 systématiquement à f si s=0, -2 si s=1
2.4.2 Virgule Flottante • Exemple d ’un Nombre positif
2.4.2 Virgule Flottante • Exemple d ’un Nombre négatif