Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

AdministrationAnimauxArtComptabilitéDiversesDroitéducationélectronique
FilmsL'économieL'histoireL'informatiqueLa biologieLa géographieLa grammaireLa littérature
La médecineLa musiqueLa politiqueLa psychologieLa sociologieLe tourismeLes mathématiquesManagement
PersonnalitésPhysiqueRecettesSportTechnique

Les modes d’adressages

technique



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Les modes d’adressages

Le C5X peut adresser 64 Kmots de mémoire programme et 96 Kmots de mémoire données (64 Kmots de mémoire données privée et 32 Kmots de mémoire globale, mode multiprocesseur).

Les instructions sont codées sur 1 ou 2 mots de 16 bits. Il parait évident que si l’on code les adresses d’opérandes sur 16 bits, deux mots sont nécessaires pour coder celles-ci. Le temps d’exécution qui en résulterait serait de 2 cycles et donc non compatible avec les performances espérées pour le DSP. Dans les différents modes d’adressage proposés, le constructeur a eu la volonté de coder une instruction sur 16 bits. Ces modes d’adressage sont :



l’adressage direct ( instructions codées sur 16 bits),

l’adressage des MMR ( instructions codées sur 16 bits),

l’adressage indirect (instructions codées sur 16 bits),

l’adressage immédiat court ou long (respectivement codés sur 1 ou 2 mots),

l’adressage par registre BMAR ou DBMR.

Adressage direct :

Fig. 16 : Principe de l’adressage direct.

 

L’adresse de l’opérande est définie par une adresse (DMA : Direct Memory Adresse) sur 7 bits qui correspond à un espace adressable de 128 mots dans une page définie par DP (Data Pointer) registre de 9 bits. Cette découpe par pages de 128 mots permet d’avoir une instruction en adressage direct codée sur 16 bits.

 

Exemple :

.ds 300h ; directive d’assemblage, déclaration des données

COMPT .word 25 ; déclaration de la variable COMPT à l’adresse 300h initialisée à 25

.ps 0900h

.entry ; début du programme à l’adresse 900h, mémoire SARAM

LDP  #8h ; DP

LACL  07h , ACCL (407h) , les 16 bits de poids faible de ACC sont chargés

;par la valeur à l’adresse 407h

LDP  #6 ; DP

LACHL  VAL ; ACCH (300h) soit ACCH = 25

Adressage des MMR :

28 registres sont mappés dans l’espace mémoire page 0 ainsi que 64 autres registres (réservés pour le contrôle des périphériques). Ce mode d’adressage permet d’accéder aux registres MMP sans changer la valeur du DP et fonctionne comme un adressage direct avec une mise à 0 des 9 bits de poids forts de l’adresse (page 0).

4 instructions permettent ce mode d’adressage :

LAMM Load accumulator with MMR

LMMR : Load MMR

SAMM : Store ACC in MMR

SMMR : Store MMR

 

Fig. 17 : Principe de l’adressage des MMR.

Fig. 18 : Registres mappés à la page 0.

Exemple

.mmregs ; possibilité pour l’utilisateur de placer dans l’instruction sur le MMR le nom du registre

LAMM   07h ; ACC = PMST

LAMM  PMST ; ACC = PMST dans ce cas, le compilateur remplace PMST par son adresse soit 07h

LMMR  GREG, #300h ; GREG prend la valeur placée à l’adresse 300h

SAMM  IOWSR ; IOWSR = ACC

SMMR  CWSR, #300h ; La valeur de CWSR est placé à l’adresse 300h

Adressage indirect :

Cet adressage se fait en utilisant un des 8 registres auxiliaires (ARn). Le registre courant est défini par le pointeur de registres auxiliaires ARP.

L’intérêt de l’utilisation des registres auxiliaires réside dans les possibilités de calcul offerte par l’ ARAU, ce calcul se faisant en parallèle du CALU.

Fig. 19 : Principe de l’adressage indirect.

Les huits registres ARn sont connectés à l’ARAU et on peut ainsi obtenir une post-incrémentation ou décrémentation de 1(*+ ou *-), du registre auxiliaire courant, dans l’instruction. On peut de plus (cas de lecture dans une matrice) incrémenter ou décrémenter le registre auxiliaire courant de la valeur comprise dans INDX (*0+ ou *0-).

Exemple : supposons que AR6 soit sélectionné (ARP = 6) et contienne 384h

ADD *+ ; ACC ACC + [AR6]  AR6 = AR6 + 1

Donc cette instruction permet de faire l’addition de l’accumulateur avec le contenu de l’adresse 384h et de positionner le pointeur courant vers l’adresse suivant pour la prochaine instruction.

Le contenu du registre INDX peut servir de d’incrément ou de décrément, la syntaxe est alors :

ADD *0+ ; ACC ACC + [AR6] 

; AR6 = AR6 + INDX +1

Ceci permet de lire une colonne entière d ‘une matrice par exemple.

Lors d’un adressage indirect, il est possible de spécifier le prochain registre courant.

ADD *, AR2 ; ACC ACC + [AR6] ; ARP = 2

 

Fig. 20 : Les différentes solutions d’adressage indirect.

Exemple : à l’adresse 300h il y a la valeur 3h et à l’adresse 301h il y a la valeur 10h

LAR AR0, #300h ; AR0 = 300h

LACL #11FFh, AR0 ; ACC = 000011FFh  ARP AR0

ADD *+ ; ACC = 00001202h AR0 = 301h

ADD *-, 2, AR1 ; ACC = 00001202h + 10h * 4 AR0 = 300h ARP AR1

Exemple :

SPLK #300h, AR7 ; AR7 = 300h

MAR *, AR7 ; ARP = 7, cette instruction permet de spécifier le pointeur courant

Exemple :

* This routine uses indirect addressing to calculate the following equation:

10

–––––

X(I) x Y(I)

/

–––––

I = 1

* The routine assumes that the X values are located in on-chip RAM block B0,

* and the Y values in block B1. The efficiency of the routine is due to the

* use of indirect addressing and the repeat instruction.

SERIES MAR *,AR4 ;ARP POINTS TO ADDRESS REGISTER 4.

SETC CNF ;CONFIGURE BLOCK B0 AS PROGRAM MEMORY.

LAR AR4,#0300h ;POINT AT BEGINNING OF DATA MEMORY.

RPTZ #9 ;CLEAR ACC AND PREG; REPEAT NEXT INST. 10 TIMES

MAC 0FF00h,*+ ;MULTIPLY AND ACCUMULATE; INCREMENT AR4.

APAC ;ACCUMULATE LAST PRODUCT.

RET ;ACCUMULATOR CONTAINS RESULT.

 


Adressage indirect en bit reverse :

Cet adressage est utilisé pour le calcul de la FFT. L’adressage indirect en bit reverse est donné à la figure 20.1 pour le calcul de la FFT pour 8 points. Pour cela on charge dans INDX la valeur 4 et les adresses sont obtenues à partir de l’adresse de départ dans AR2 par ajout de INDX avec propagation de la retenue binaire de gauche à droite.

Instructions

Valeurs du registre AR2

lecture du tableau des x(i)

LAR AR2,#080h

080h

x(0) = (AR2)

MAR *,AR2

AR2= pointeur courant

SPLK INDX, #4

080h

LAC  *BR0+

x(0)

LAC  *BR0+

x(4)

LAC  *BR0+

x(2)

LAC  *BR0+

x(6)

LAC  *BR0+

x(1)

LAC  *BR0+

x(5)

LAC  *BR0+

x(3)

LAC  *BR0+

x(7)

Fig. 20.1 : Accès aux valeurs pour le calcul de la FFT sur 8 points.

Calcul de la FFT : (Fast Fourrier Transfrom)

Rappels : Le calcul du spectre en fréquence d’un signal e(t) se fait grace à la transformée de Fourrier notée E(f) qui est de la forme :

Exemple : la transformée de Fourrier d’un signal sinusoïdal de fréquence 10 Hz est donnée ci-dessous :


Le calcul numérique de la transformée de Fourrier ne peut se faire que sur un nombre d’échantillons fini et l’intégrale ne peut être qu’approximé par partie, ce qui nous donne la formule suivante appelée Transformée de Fourrier Discrète ou (TFD) :

avec M le nombre d’échantillons e(i)

et E(k) la valeur de la TFD à la fréquence k/(MTe).

Pour 1024 échantillons, et Te = 1ms (période d’échantillonnage), la fenêtre fera 1 s et il faudra calculer plus de 1 Millions de multiplications et accumulations pour obtenir les 1024 échantillons E(k) fréquentiels, et obtenir la trace fréquentielle du signal.

Pour des calculs en temps réel et sur des signaux de fréquences supérieures à 100Hz, ce calcul est trop long. On fait alors appel à la FFT (Fast Fourrier Transform) qui fait appel à l’entrecroisement temporel des échantillons comme vu à la figure 20.1.

Adressage immédiat :

Fig. 21 : Tableau récapitulatif des instructions utilisant l’adressage immédiat.

 

Dans ce cas l’opérande est codée dans l’instruction. Cette opérande peut être codée sur 8, 9, 13 bits dans le cas adressage immédiat court ou sur 16 bits dans le cas d’un adressage immédiat long (Cf figure 21).

 

Exemple :

ADD  #1234h ; addition de 1234h à l’accumulateur. Instruction codée sur 2*16 bits

LDP #6 ; DP Instruction codée sur 16 bits

SPLK #259, 8 ; (308h) Instruction codée sur 2*16 bits

Adressage court :

Dans l’exemple de la figure 22, l’opérande codé sur 8 bits est additionné à l’accumulateur.

 

Fig. 22 : Exemple d’adressage court.

Adressage long :

Remarque : il existe des instructions utilisant 2 opérandes, c’est le cas pour les instructions BLDD (BLock move from Data memory to Data memory), BLDP (BLock move from Data memory to Program memory) et BLPD (BLock move from Program memory to Data memory). Ces instructions sont utilisées pour rapatrier des données ou des instructions de la mémoire externe vers la mémoire interne pour accélérer les traitements ultérieurs.

Dans l’exemple de la figure 23, on utilise les 2 bus (programme et données) pour copier un mot à l’adresse 2345h vers l’adresse CE92h.

Fig. 23 : Exemple d’adressage immédiat utilisant 2 opérandes.

Adressage de registres dédiés :

Il existe 2 registres BMAR et DBMR dont l’utilisation revient à faire de l’adressage immédiat (c’est à dire lecture de la donnée sur le bus programme) avec l’avantage de coder l’instruction sur 1 mot au lieu de 2 pour un adressage immédiat long. L’utilisation de BMAR permet de changer la valeur de l’opérande en cours de programme, ce que l’adressage immédiat ne permet pas.

Dans l’exemple de la figure 24, on copie un mot placé à l’adresse pointée par BMAR vers l’adresse 12h à la page 19Dh(valeur de DP).

 

Fig. 24 : Exemple d’adressage immédiat utilisant un opérande et le registre BMAR.

Remarque : BMAR est le registre utilisé par l’ALU et DBMR est l’accumulateur de la PLU.

Exemple : DAT0 DAT0 OU DBMR

OPL  DAT0 ; DP = 6. DAT0 est à l’adresse 0 page 6. DBMR contient la valeur FFF0h

; et l’adresse 030h contient la valeur 01h

; Résultat : l’adresse 030h contient la valeur FFF1h



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 687
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved