- familia 56300 - capitolul 3 procesor motorola 56300.pdf · pentru aplica ţ ii dsp cum ar fi: ......

44
Capitolul 3 – Procesoarele DSP Motorola 56300 31 CAPITOLUL 3 PROCESOARELE DSP MOTOROLA - FAMILIA 56300 - 3.1 INTRODUCERE Familia de procesoare Motorola DSP 56300 este prezentată în Figura 3.1-1. Figura 3.1-1 Familia de procesoare Motorola DSP 56300 Procesoarele digitale de semnal DSP56311 şi DSP56307 sunt folosite în special în telecomunicaţii. Ca si celelalte componente din familia Aplicaţii ale procesoarelor de semnal în comunicaţii 32 DSP56300, aceste dispozitive au evoluat din nucleul DSP56000 Motorola şi păstrează coduri compatibile. DSP56307 şi DSP56311, datorită memoriei mari integrate în chip şi a coprocesorului, destinat în special operaţiilor de filtrare, sunt foarte potrivite pentru aplicaţii DSP cum ar fi: - eliminarea ecoului; - procesarea benzii de baza; - codarea si decodarea vocii. Coprocesorul procesează algoritmi de filtrare în paralel cu funcţionarea nucleului. Memoria RAM mare din interiorul chipurilor elimină stările de aşteptare, permite funcţionarea pe mai multe canale, îmbunătăţeşte performantele aplicaţiilor, şi reduce consumul de putere. Principalele caracteristici ale procesorului DSP56307 sunt 170 MIPS, 100 Core MIPS EFCOP (coprocesor cu filtrare îmbunătăţită) 100 MIPS 64K cuvinte (24-bit) on-chip SRAM memoria de program: 16K, 24K, 32K, 40K sau 48K memoria de date: 48K, 40K, 32K, 24K sau 16K mai multe porturi: 2 porturi ESSI, portul SCI, interfaţa HI08, 6 canale DMA Principalele caracteristici pentru procesorul DSP56311 sunt: 255 MIPS, 150 Core MIPS; EFCOP (coprocesor de filtrare) 150 MIPS; memoria de program: 32K, 48K, 64K, 80K sau 96K; memoria de date: 96K, 80K, 64K, 48K sau 32K; 2 porturi ESSI, port SCI, interfaţa HI08, 6 canale DMA.

Upload: others

Post on 27-Oct-2019

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 31

CAPITOLUL 3

PROCESOARELE DSP MOTOROLA

- FAMILIA 56300 -

3.1 INTRODUCERE

Familia de procesoare Motorola DSP 56300 este prezentată în Figura

3.1-1.

Figura 3.1-1 Familia de procesoare Motorola DSP 56300

Procesoarele digitale de semnal DSP56311 şi DSP56307 sunt folosite

în special în telecomunicaţii. Ca si celelalte componente din familia

Aplicaţii ale procesoarelor de semnal în comunicaţii32

DSP56300, aceste dispozitive au evoluat din nucleul DSP56000 Motorola şi

păstrează coduri compatibile.

DSP56307 şi DSP56311, datorită memoriei mari integrate în chip şi a

coprocesorului, destinat în special operaţiilor de filtrare, sunt foarte potrivite

pentru aplicaţii DSP cum ar fi:

- eliminarea ecoului;

- procesarea benzii de baza;

- codarea si decodarea vocii.

Coprocesorul procesează algoritmi de filtrare în paralel cu funcţionarea

nucleului. Memoria RAM mare din interiorul chipurilor elimină stările de

aşteptare, permite funcţionarea pe mai multe canale, îmbunătăţeşte

performantele aplicaţiilor, şi reduce consumul de putere.

Principalele caracteristici ale procesorului DSP56307 sunt

• 170 MIPS, 100 Core MIPS

• EFCOP (coprocesor cu filtrare îmbunătăţită) 100 MIPS

• 64K cuvinte (24-bit) on-chip SRAM

• memoria de program: 16K, 24K, 32K, 40K sau 48K

• memoria de date: 48K, 40K, 32K, 24K sau 16K

• mai multe porturi: 2 porturi ESSI, portul SCI, interfaţa HI08, 6 canale

DMA

Principalele caracteristici pentru procesorul DSP56311 sunt:

• 255 MIPS, 150 Core MIPS;

• EFCOP (coprocesor de filtrare) 150 MIPS;

• memoria de program: 32K, 48K, 64K, 80K sau 96K;

• memoria de date: 96K, 80K, 64K, 48K sau 32K;

• 2 porturi ESSI, port SCI, interfaţa HI08, 6 canale DMA.

Page 2: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 33

Prezentăm două priviri de ansamblu pentru blocurile funcţionale la

DSP563xx.

Pentru privirea de ansamblu 1 apar:

1. Zona perifericelor (Peripheral Expansion Area)

2. Zona memoriei (Memory Expansion Area);

3. Nucleul (DSP56300 Core).

Figura 3.1-2 Privirea de ansamblu 1

Zona perifericelor (Peripheral Expansion Area)

• Coprocesorul - Enhanced Filter Coprocessor (EFCOP);

• Portul de comunicaţie serială - Serial Communications Interface (SCI)

port;

• Timerul - Triple Timer Module;

• Interfaţa HI08 - Host Interface (HI08) port;

Aplicaţii ale procesoarelor de semnal în comunicaţii34

• Porturile de comunicaţie serială sincronă - Dual Enhanced Synchronous

Serial Interface (ESSI) ports;

• Pinii I/O - 34 user-configurable General-Purpose I/O (GPIO) pins.

Figura 3.1-3 Privirea de ansamblu 2

Zona memoriei (Memory Expansion Area)

• 128K de cuvinte RAM;

• Memoria de program P: până la 96K x 24 biţi;

• Memoria de date X: până la 48K x 24 biţi;

• Memoria de date Y: până la 48K x 24 biţi;

• Până la 12M cuvinte de memorie externă pentru memoria de program – P

şi date X, Y.

Page 3: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 35

Figura 3.1-4 Nucleul

NUCLEUL (DSP56300 CORE)

• Unitatea aritmetică şi logică - Data Arithmetic Logic Unit (ALU);

• Unitatea de Generare a adreselor Address Generation Unit (AGU);

• Memoria portului A - Port A Memory Expansion;

• Memoria ROM;

• Program Control Unit – Program Control Unit (PCU);

• Controlerul DMA - Direct Memory Access (DMA) Controller;

• Oscilatorul - Phase Lock Loop (PLL) Clock Oscillator;

• Emulatorul - On-Chip Emulator.

Aplicaţii ale procesoarelor de semnal în comunicaţii36

3.2 UNITATEA ARITMETICĂ ŞI LOGICĂ (ALU)

Registrele ALU sunt (Figura 3-5):

a) de intrare: X(X1,X0) şi Y(Y1,Y0), cu lungime 48(24,24);

b) acumulatori: A(A2,A1,A0) şi B(B2,B2,B0) cu lungime 56(8,24,24).

47 0 47 0

23 0 23 0 23 0 23 0

55 0 55 0

23 7 0 23 0 23 0 23 7 0 23 0 23 0

*Citiţi ca biţi de extensie de semn.

X1 X0 Y0Y1

B1 B0A1 A0* A2 * B2

DATA ALUREGISTRE ACUMULATOR

DATA ALUREGISTRE DE INTRAREX Y

A B

Figura 3-5 Registrele ALU

În Figura 3-6 este prezentată structura ALU.

DSP56300 foloseşte reprezentarea fracţionară pentru toate operaţiile

ALU.

Virgula zecimală este aliniată la stânga (după bitul de semn).

Pentru a păstra alinierea la virgulă, datele pe 24 de biţi sunt scrise în

partea cea mai semnificativă a acumulatorului (A1 sau B1) iar A0 sau B0 vor

fi 0.

La scrierea operanzilor în acumulator se realizează extensia de semn în

registrele A2 sau B2.

Page 4: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 37

X0

X1

Y0

Y1

MULTIPLICARE

REGISTRE PIPELINE

MUX

REG PIPELINEREGISTRE PIPELINE

UNITATEA PRELUCRARE

PE BIT ŞI DE SHIFTARE

UNITATEA DE

ACUMULARE

ŞI ROTUNJIRE

ŞIFTARE

ACUMULATOR

A(56)

B(56)

SHIFTARE/LIMITARE

Y DATA BUS

P DATA BUS

24 24

X DATA BUS

OPERAND IMEDIAT

24 24

56

48

56

56

56

56 56 56

24

56

24

Figura 3-6 ALU

Rezultatele adunării şi scăderii sunt echivalente atât pentru numerele

fracţionare cât şi pentru numerele întregi.

Aplicaţii ale procesoarelor de semnal în comunicaţii38

La înmulţire sau la împărţire reprezentarea numerelor fracţionare diferă

de a numerelor întregi. Pentru înmulţirea numerelor întregi, datele sunt

aliniate la dreapta şi virgula zecimală este considerată la dreapta LSB.

Deoarece rezultatul înmulţirii este aliniat la dreapta, rezultă extensia la

doi biţi de semn. Pentru înmulţirea numerelor fracţionare, datele sunt aliniate

la stânga, cu virgula după bitul de semn.

Rezultatul înmulţirii este de asemenea aliniat la stânga şi se adaugă un

zero la LSB pentru completarea celor 2N biţi.

Rezultatul corect al înmulţirii numerelor întregi se obţine prin

deplasarea (shiftarea) aritmetică la dreapta cu un bit a rezultatului înmulţirii

fracţionare.

ÎNMULŢIREA NUMERELOR CU SEMN N x N –> 2N – 1 BIŢI

S

INTREG FRACŢIONAL

S

REZULTAT 2N – 1EXTENSIE DE SEMN

2N BIŢI

ÎNMULŢIRE CU SEMN

S MSP LSPS

S S

REZULTAT 2N – 1COMPLETARE CU ZERO

2N BIŢI

ÎNMULŢIRE CU SEMN

S MSP LSP 0

Figura 3-7 Înmulţirea numerelor întregi

Unitatea de înmulţire-acumulare (MAC UNIT)

Datele de intrare în MAC pot fi numai din registrele X sau Y.

Unitatea efectuează înmulţiri pe 24 x 24 biţi în format fracţionar,

operanzi cu sau fără semn.

Rezultatul înmulţirii este adunat la acumulatorul destinaţie

(instrucţiunea MAC).

Page 5: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 39

Dacă se foloseşte instrucţiunea MPY, acumulatorul este şters şi apoi se

scrie rezultatul înmulţirii.

Dacă rezultatul înmulţirii (56 biţi) este stocat ca operand pe 24 de biţi

LSP poate fi trunchiat sau rotunjit (rotunjirea cu instrucţiunile MACR,

MPYR, MACRI, MPYRI). Rotunjirea poate fi convergentă sau în

complement faţă de 2.

La stocarea în acumulator rezultatul înmulţirii poate fi saturat astfel ca

acesta să intre în 48 de biţi (fără a se mai folosi extensia acumulatorului A2

sau B2).

Înmulţirea cu acumulare

MAC (±)S1,S2,D 1 2D S S D± ⋅ →

S1, S2 - surse: registre: X0,Y0, X1,Y1

D - destinaţia: acumulator: A, B

MAC (±)S,#n,D 2 nD S D−± ⋅ →

S - sursa: registre: X0,Y0,X1,Y1

#n valoare imediată <23

D - destinaţia: acumulator: A,B

Înmulţirea

MPY (±)S1,S2,D 1 2S S D± ⋅ →

S1, S2 - surse: registre: X0,Y0,X1,Y1

D - destinaţia: acumulator: A,B

MPY (±)S,#n,D 2 nS D−± ⋅ →

S - sursa: registre: X0,Y0, X1,Y1

#n valoare imediată <23

D - destinaţia: acumulator: A,B

Aplicaţii ale procesoarelor de semnal în comunicaţii40

Înmulţirea cu acumulare cu operand imediat

MACI (±)#xxxx,S,D #D xxxx S D± ⋅ →

S - sursa: registre: X0,Y0, X1,Y1

#xxxx valoare imediată pe 24 biţi

D - destinaţia: acumulator: A, B

Înmulţirea cu operand imediat

MPYI (±)#xxxx,S,D # xxxx S D± ⋅ →

S - sursa: registre: X0, Y0, X1, Y1

#xxxx valoare imediată pe 24 biţi

D - destinaţia: acumulator: A, B

EXEMPLU:

Înmulţirea numerelor complexe se face conform formulei:

( ) ( )R I R I R IC jC A jA B jB+ = + ⋅ +

Rezultă:

R R R I I

I R I I R

C A B A BC A B A B

= ⋅ − ⋅= ⋅ + ⋅

Putem lua un exemplu numeric:

( ) ( )0.5 0.2 0.4 0.1 0.18 0.13j j j+ ⋅ + = +

Vom iniţializa registrele de date ale ALU astfel:

x1 x0 y1 y0

0.5RA = 0.4RB = 0.2IA = 0.1IB =

Rezultatul va fi obţinut în registrele acumulator astfel:

a b

0.18RC = 0.13IC =

Page 6: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 41

Programul în limbaj de asamblare este următorul:

move #0.5,x1 x1 x0move #0.4,x0 0.5 0.4move #0.2,y1 y1 y0move #0.1,y0 0.2 0.1

ampy x0,x1,a 0.2mac -y0,y1,a 0.2 + (-0.02) = 0.18 bmpy y0,x1,b 0.05mac x0,y1,b 0.05 + 0.08 = 0.13

Registrele acumulator A şi B

Sunt registrele de 56 de biţi, fiecare registru acumulator constă din trei

registre concatenate A2:A1:A0 sau B2:B1:B0. Oricare din cele 6 registre

menţionate pot fi scrise/citite pe magistrala de date X sau Y.

Dacă se doreşte transferul întregului acumulator pe magistrala X sau Y,

cei 56 de biţi din acumulator sunt shiftaţi/limitaţi la 24 de biţi.

Registrele acumulator sunt folosite ca:

- destinaţie pentru înmulţire şi operaţii logice;

- sursă / destinaţie pentru adunare şi deplasări.

Adunarea

ADD S,D S D D+ →

S - sursa: registru: B/A, X, Y, X0, Y0, X1, Y1

valoare imediată: #$xx, #$xxxxxx

D - destinaţia: acumulator: A/B

Aplicaţii ale procesoarelor de semnal în comunicaţii42

Scăderea

SUB S,D D S D− →

S - sursa: registru: B/A, X, Y, X0, Y0, X1, Y1

valoare imediată: #$xx, #$xxxxxx

D - destinaţia: acumulator: A/B

Un tip special de instrucţiuni sunt cele de înmulţire / împărţire cu 2 a

acumulatorului şi adunarea / scăderea unui operand. Aceste instrucţiuni sunt

utile în implementarea eficientă a fluturilor pentru decimare în timp la

algoritmii FFT.

Deplasarea la stânga şi acumularea

ADDL S,D 2S D D+ ⋅ →

Deplasarea la dreapta şi acumularea

ADDR S,D / 2S D D+ →

Deplasarea la stânga şi scăderea

SUBL S,D 2 D S D⋅ − →

Deplasarea la dreapta şi scăderea

SUBR S,D / 2D S D− →

S - sursa: acumulator: B/A

D - destinaţia: acumulator: A/B

Page 7: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 43

EXEMPLU:

Să considerăm funcţia de transfer:

1 * 1 * 1 * 2 1 2 2

1 1 1( )

(1 )(1 ) 1 ( ) 1 2Re{ } | |H z

pz p z p p z p pz p z p z− − − − − −= = =− − − + + − +

Ieşirea ( )y n poate fi calculată astfel:

2( ) 2Re{ } ( 1) | | ( 2) ( )y n p y n p y n x n= − − − +

Pentru un exemplu numeric:

0.8 0.5p j= − .

Avem

2| | 0.64 0.25 0.89p = + =

( ) 2 0.8 ( 1) 0.89 ( 2) ( )y n y n y n x n= ⋅ − − − +

Considerăm că avem în registrele y0, y1 şi b stările filtrului:

y1 y0 b

( 2)y n − ( 1)y n − ( )x n

Deoarece termenul 2Re{ }p are valori supraunitare nu putem stoca

direct valoarea 1.6 în registrul x0.

x1 x02| | 0.89p = Re{ } 0.8p =

Programul va calcula ieşirea ( )y n folosind instrucţiunea addl astfel:

mac x0,y0,a ; 0.8 ( 1)a y n= −

mac -x1,y1,b ; ( ) 0.89 ( 2)b x n y n= − −

addl b,a ; 2 ( )a a b y n= + ⇒

Aplicaţii ale procesoarelor de semnal în comunicaţii44

3.3 UNITATEA LOGICĂ ŞI DE DEPLASARE

Conţine un registru de deplasare pe 56 de biţi, bidirecţional, multi-bit şi

unitatea de procesare logică. Operaţiile efectuate sunt:

- deplasare stânga / dreapta multi-bit aritmetică şi logică;

- rotaţie cu 1 bit stânga / dreapta;

- extragerea, inserţia, concatenarea unui câmp de biţi;

- normalizarea acumulatorului;

- operaţii logice.

Deplasare aritmetică la stânga

ASL D cu un bit

ASL S1,S2,D cu mai mulţi biţi

Deplasare aritmetică la dreapta

ASR D cu un bit

ASR S1,S2,D cu mai mulţi biţi

S1 - număr de biţi: registru: X0,Y0,X1,Y1,A1,B1 sau

valoare imediată pe 6 biţi: #n

S2 - sursa: acumulator: A,B

D - destinaţia: acumulator: A,B

Page 8: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 45

EXEMPLU:

asl #7,a,b

asr x0,a,b

Deplasare logică la stânga

LSL D cu un bit

LSL S,D cu mai mulţi biţi

Deplasare logică la dreapta

LSR D cu un bit

LSR S,D cu mai mulţi biţi

S - număr de biţi: registru: X0, Y0, X1, Y1, A1,B1

valoare imediată pe 6 biţi: #n

D - destinaţia: acumulator: A, B

Aplicaţii ale procesoarelor de semnal în comunicaţii46

EXEMPLU:

lsl #7,a

lsr x0,b

Rotaţie la stânga cu un bit

ROL D

D: acumulator A,B

Rotaţie la dreapta cu un bit

ROR D

D: acumulator A,B

Page 9: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 47

Normalizarea acumulatorului

• pasul 1: se numără câţi biţi de 0 sau de 1 consecutivi sunt în acumulator

începând de la MSB (bitul 55);

• pasul 2: se scade acest număr din 9 şi se scrie rezultatul în MSP a

acumulatorului destinaţie (A1 sau B1). Acest rezultat este în intervalul –47,

+8;

• pasul 3: se shiftează aritmetic acumulatorul, la dreapta dacă operandul e

pozitiv, sau la stânga dacă e negativ, cu numărul de biţi egal cu diferenţă

anterioară.

CLB S,D D = 9 nr. MSB de 0 sau de 1din S

S - sursa: acumulator: A/B

D - destinaţia: MSP acumulator: B/A

Normalizarea acumulatorului

NORMF S,D dacă S[23]=0 atunci ASR S,D altfel ASL –S,D

S - sursa: registru: X0,Y0,X1,Y1,A1,B1

D - destinaţia: acumulator: A,B

EXEMPLU:

Înaintea execuţiei După execuţie

clb a,b A: $20:0000:0000 B: $00:0007:0000

normf b1,a A: $20:0000:0000 A: $00:4000:0000

Aplicaţii ale procesoarelor de semnal în comunicaţii48

Manipularea câmpurilor de date

EXEMPLU:

extract b1,a,a

EXEMPLU:

insert b1,x0,a

EXEMPLU:

merge x0,b

Page 10: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 49

Instrucţiuni logice

Şi logic

AND S,D [47 24] [47 24]S D D• − → −

S - sursa: registru: X0,Y0, X1,Y1

valoare imediată: #$xx, #$xxxxxx

D - destinaţia: acumulator: A/B

Sau logic

OR S,D [47 24] [47 24]S D D+ − → −

S - sursa: registru: X0, Y0, X1, Y1

valoare imediată: #$xx, #$xxxxxx

D - destinaţia: acumulator: A/B

Nu logic

NOT D [47 24] [47 24]D D− → −

D - destinaţia: acumulator: A/B

Sau exclusiv

EOR S,D [47 24] [47 24]S D D⊕ − → −

S - sursa: registru: X0, Y0, X1, Y1

valoare imediată: #$xx, #$xxxxxx

D - destinaţia: acumulator: A/B

Aplicaţii ale procesoarelor de semnal în comunicaţii50

EXEMPLU: Conversia din binar în cod Gray

Două numere consecutive scrise în codul Gray diferă printr-un singur

bit.

Binar Gray Binar Gray

0000 0000 1000 1100

0001 0001 1001 1101

0010 0011 1010 1111

0011 0010 1011 1110

0100 0110 1100 1010

0101 0111 1101 1011

0110 0101 1110 1001

0111 0100 1111 1011

Obţinerea numărului în cod Gray se face cu operaţia sau-exclusiv între

numărul scris în binar şi numărul binar deplasat (shiftat la dreapta) cu un bit.

De exemplu: codul Gray pentru numărul 0110:

0110 EOR 0011 = 0101

Pseudocodul programului este:

for (b=0,b<N,b++)

{ a = b;

x0 = a;

a = lsr a;

a = x0 eor a;

}

Valoarea binară care trebuie convertită este scrisă din acumulatorul b în

a cu instrucţiunea tfr b,a care utilizează magistrala internă ALU (56 biţi).

Page 11: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 51

Registrul x0 este folosit ca registru temporar pentru a păstra valoarea

lui a1.

Instrucţiunea lsr a efectuează deplasarea logică la dreapta cu un bit a

registrului a1 (biţii 47-24).

Instrucţiunea eor x0,a efectuează operaţia sau-exclusiv între x0 şi a1 iar

rezultatul este în a1.

Valoarea binară din b este incrementată (x1=1) şi se continuă cu

următoarea valoare binară.

Etichetă Instr. OperanziMagistrala de

date XMagistralade date Y

Cicluriceas

clr b #>1,x1 1

do #N,_endtst 5

tfr b,a 1

lsr a a1,x0 2 i’lock

eor x0,a 1

add x1,b a1,x:output 2 i’lock

_endt

TOTAL 6N+6

Unitatea de Scalare şi Limitare

Datele transferate din acumulator spre magistralele de date XDB sau

YDB trec prin aceste unităţi de scalare şi limitare.

Scalarea se poate face în funcţie de biţii S1 şi S0 din Status Register

(SR) astfel:

• S1=1, S0=0 în sus – shiftează data la stânga cu un bit.

• S1=0, S0=1 în jos – shiftează data la dreapta cu un bit.

• S1=0, S0=0 nu se efectuează scalarea – datele trec nemodificate.

Aplicaţii ale procesoarelor de semnal în comunicaţii52

Scalarea se face automat asupra datelor pe 24 de biţi transferate pe

magistrală, fără a afecta rezultatul din acumulator.

Limitarea apare dacă vrem să transferăm pe magistrala XDB sau YDB

(de 24 de biţi) operanzi din acumulator reprezentaţi pe 56 de biţi (care

folosesc şi cei 8 biţi de extensie). Nu apare limitarea dacă operanzii transferaţi

sunt din A1, A0, B1, B0.

Sunt două unităţi de scalare-limitare ceea ce permite transferul pe XDB

şi YDB prin limitarea a doi operanzi simultan sau limitarea unui operand la

48 de biţi.

Valorile la care sunt limitaţi operanzii ce depăşesc numărul de biţi ai

magistralei de date sunt:

• $7FFFFF – pentru valori pozitive pe 24 de biţi

• $7FFFFF FFFFFF – pentru valori pozitive pe 48 de biţi

• $800000 – pentru valori negative pe 24 de biţi

• $800000 000000 – pentru valori negative pe 48 de biţi

Operaţia de limitare nu afectează conţinutul acumulatorului, spre

deosebire de operaţia de saturare aritmetică.

EXEMPLU:

Fără limitare Cu limitare

A2 A1 A0 A2 A1 A00000 10000…0 00000…0 = 1 0000 10000…0 00000…0 = 1

move a1,x0 move a,x0

X0 10000…0 = –1 X0 01111…1 = 0.999999Eroarea = 2 Eroarea = 0.000001

Page 12: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 53

Saturarea aritmetică

Acest mod este setat de bitul SM din Status Register (SR). Rezultatul

oricărei operaţii aritmetice este limitat la 48 de biţi în acumulator.

Acest mod foloseşte algoritmilor care nu lucrează cu extensia

acumulatorului (A2 sau B2) obţinându-se un rezultat saturat la 48 de biţi.

Saturarea se efectuează în funcţie de trei biţi: EXT[7], EXT[0] din

partea extinsă a acumulatorului şi bitul cel mai semnificativ al lui A1 sau B1:

MSP[23].

EXT[7] EXT[0] MSP[23] ACUMULATOR

0 0 0 neschimbat

0 0 1 $00 7FFFFF FFFFFF

0 1 0 $00 7FFFFF FFFFFF

0 1 1 $00 7FFFFF FFFFFF

1 0 0 $FF 800000 000000

1 0 1 $FF 800000 000000

1 1 0 $FF 800000 000000

1 1 1 neschimbat

Modurile de rotunjire

Instrucţiunile care efectuează operaţii de rotunjire a rezultatului din

acumulator pe 24 de biţi sunt:

• MACR, MACRI – înmulţire cu acumulare şi rotunjire.

• MPYR, MPYRI – înmulţire cu rotunjire.

• RND – rotunjirea valorii din acumulator.

Unitatea ALU de date efectuează rotunjirea porţiunii superioare MSP a

acumulatorului în funcţie de conţinutul părţii inferioare LSP a acumulatorului.

Aplicaţii ale procesoarelor de semnal în comunicaţii54

Sunt două tipuri de rotunjiri în funcţie de bitul Rounding Mode (RM) din

porţiunea EMR a Status Register:

• rotunjire convergentă (rotunjire la numărul par).

X X X …X X X0100 011XXX…XXXX X..XX A2 A1 A0

CAZUL I: DACĂ A0< $800000 (1/2), ATUNCI ROTUNJEŞTE ÎN JOS (NU SE ADUNĂ NIMIC)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

0

X X X …X X X0100 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

X X X …X X X0100 1110XX….XXXX X..XX A2 A1 A0

CAZUL II: DACĂ A0> $800000 (1/2), ATUNCI ROTUNJEŞTE ÎN SUS (ADUNĂ 1 LA A1)

ÎNANTEA ROTUNJIRII

55 48 47 24 23 0

1

X X X …X X X0101 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

X X X …X X X0100 10000…….000X X..XX A2 A1 A0

CAZUL III: DACĂ A0= $800000 (1/2), ŞI LSB A1=0, ATUNCI ROTUNJEŞTE ÎN JOS (NU ADUNĂ NIMIC)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

0

X X X …X X X0100 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

X X X …X X X0101 10000………000X X..XX A2 A1 A0

CAZUL IV: DACĂ A0= $800000 (1/2), ŞI LSB A1=1, ATUNCI ROTUNJEŞTE ÎN SUS (ADUNĂ 1 LA A1)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

1

X X X …X X X0110 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

Page 13: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 55

• rotunjire în complement faţă de 2.

X X X …XXX0100 011XXX…XXXX X..XX A2 A1 A0

CAZUL I: DACĂ A0< $800000 (1/2), ATUNCI ROTUNJEŞTE ÎN JOS (NU SE ADUNĂ NIMIC)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

0

X X X …X X X0100 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

X X X …X X X0100 1110XX….XXXX X..XX A2 A1 A0

CAZUL II: DACĂ A0> $800000 (1/2), ATUNCI ROTUNJEŞTE ÎN SUS (ADUNĂ 1 LA A1)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

1

X X X …X X X0101 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

X X X …X X X0100 10000…….000X X..XX A2 A1 A0

CAZUL III: DACĂ A0= $800000 (1/2), ŞI LSB A1=0, ATUNCI ROTUNJEŞTE ÎN SUS (ADUNĂ 1 LA A1)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

1

X X X …X X X0101 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

X X X …X X X0101 10000………000X X..XX A2 A1 A0

CAZUL IV: DACĂ A0= $800000 (1/2), ŞI LSB A1=1, ATUNCI ROTUNJEŞTE ÎN SUS (ADUNĂ 1 LA A1)

ÎNAINTEA ROTUNJIRII

55 48 47 24 23 0

1

X X X …X X X0110 000…………000X X..XX A2 A1 A0*

DUPĂ ROTUNJIRE

55 48 47 24 23 0

Aplicaţii ale procesoarelor de semnal în comunicaţii56

3.4 UNITATEA DE GENERARE A ADRESELOR (AGU)

Unitatea de generare a adreselor este prezentată în Figura 3.3-1.

N0 M0

N1 M1N2 M2N3 M3

R0 R4

R1 R5R2 R6R3 R7

M4 N4

M5 N5M6 N6M7 N7

EI

Multiplexor Triplu

ALUAdrese

ALUAdrese

Magistrala de date globale

Magistrala de date de program

XAB YAB PAB

ALU adrese primare ALU adrese secundare

Figura 3.3-1 Unitatea de generare a adreselor DSP 56300

AGU calculează adresa efectivă pentru adresarea operanzilor în

memorie.

Sunt realizate patru tipuri de calcule aritmetice:

- liniar;

- modulo;

- modulo cu revenire la adresa de bază;

- bit-reversed.

AGU este compusă din două părţi, fiecare având o unitate aritmetico-

logică de adrese şi patru grupe de registre.

Page 14: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 57

Fiecare grup conţine trei tipuri de registre:

• Rn - registru de adresă;

• Nn - registru ofset;

• Mn - registru de modificare.

Registre R, N şi M sunt tratate împreună (de exemplu numai N2 şi M2

sunt folosiţi pentru actualizarea adresei din R2). Cele două ALU pot genera

două adrese pe 24 de biţi într-un singur ciclu instrucţiune pentru adresarea pe

magistralele XAB, YAB, sau o adresă pentru PAB. Spaţiul de memorie

adresabil este de 16M cuvinte, pentru fiecare zonă de memorie (X, Y, P).

Fiecare unitate ALU de adrese conţine:

a) un sumator de ofset pe 24 de biţi care adună la registrul adresă R:

• plus unu;

• minus unu;

• conţinutul registrului ofset N corespunzător;

• minus ofsetul N.

b) un sumator modulo care adună rezultatul primului sumator la valoarea

modulo (M sau minus M) conţinută în registrul modificator M.

c) un sumator cu transport invers care adună la registrul R (cu transport de

la MSB la LSB):

• plus unu;

• minus unu;

• conţinutul registrului ofset N corespunzător;

• minus ofsetul N.

Printr-un test logic se selectează ieşirea sumatorului ce va fi folosită

drept adresă efectivă şi actualizarea registrului R.

Aplicaţii ale procesoarelor de semnal în comunicaţii58

Modelul de Programare AGU

Pentru programator, AGU reprezintă trei grupuri de 8 registre care pot

fi folosiţi atât ca registre temporare de date cât şi ca pointeri pentru adresarea

indirectă (Figura 3.3-2).

Fiecare registru de adresare R are asociat un registru ofset N şi un

registru modificator M.

Registrele R sunt utilizate la calculul adresei efective a operanzilor în

memorie.

Registre N sunt folosite pentru furnizarea unui ofset pentru actualizarea

adresei.

Registre M selectează tipul de actualizare aritmetică a adresei.

R7R6R5R4R3R2R1R0EP

N7N6N5N4N3N2N1N0

M7M6M5M4M3M2M1M0

23 0 23 0 23 0

Registre adresă Registre ofset Registre modificator

Setul secundar

Setul primar

Figura 3.3-2 Modelul de Programare AGU

La transferul paralel al datelor din memoria X şi Y registre de adresă

trebuie folosite separat:

- pentru transferul din memoria X - registrele R0 - R3;

- pentru transferul din memoria Y - registrele R4 - R7.

Page 15: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 59

Moduri de Adresare

Se specifică dacă operanzii sunt în registre şi / sau în locaţii din

memorie şi oferă adresa acestora.

Familia DSP56300 oferă patru moduri principale de adresare:

- adresare directă cu registru;

- adresare indirectă cu registru;

- adresare relativă la PC;

- alte adresări speciale (adresare imediată, adresare absolută, etc.).

Adresare directă cu registru

Operandul este în unul din registre

- de date: A2, A1, A0, B2, B1, B0, X1, X0, Y1, Y0;

- de adrese: R0-R7, N0-N7, M0-M7;

- de control: OMR, SR, PC, VBA, LA, LC, SP

EXEMPLU:

Adresare cu registru de date

move x0,a1 X X X X X X 8 7 6 5 4 3

X X X X X X X X X X X XX X

X1 X0

A2 A1 A0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X 8 7 6 5 4 3

8 7 6 5 4 3 X X X X X XX X

X1 X0

A2 A1 A0

EXEMPLU:

Adresare cu registru de adrese

move a,n7

X X X X X X

1 2 3 4 5 6 7 8 9 a b c0 0

N7

A2 A1 A0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

1 2 3 4 5 6

1 2 3 4 5 6 7 8 9 a b c0 0

N7

A2 A1 A0

Aplicaţii ale procesoarelor de semnal în comunicaţii60

Adresare indirectă cu registru

Un registru adresă Rn este folosit pentru a indica adresa operandului în

memorie. Pot fi efectuate operaţii aritmetice asupra adresei înainte sau după

execuţia instrucţiunii. Registrul ofset Nn asociat registrului adresă Rn indică

valoarea care va fi adunată la Rn. Registrul modificator Mn indică tipul

operaţiei aritmetice care urmează să fie efectuată când este actualizat Rn.

Pentru adresare liniară M=$FFFFFF.

EXEMPLU:

Fără actualizare (Rn)

move a1,x:(r0)

1 2 3 4 5 6 X X X X X XX X A2 A1 A0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

1 2 3 4 5 6 X X X X X XX X A2 A1 A0

::

X X X X X X::

0 0 1 0 0 0

X X X X X X

F F F F F F

Memoria X:

23 0

$ 1000

R0

N0

M0

::

1 2 3 4 5 6::

0 0 1 0 0 0

X X X X X X

F F F F F F

Memoria X:

23 0

$ 1000

R0

N0

M0

EXEMPLU:

Postincrementare cu o unitate (Rn)+

move b0,y:(r1)+

X X X X X X 1 2 3 4 5 6X X B2 B1 B0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X 1 2 3 4 5 6X X B2 B1 B0

::

X X X X X X:

0 0 2 0 0 0

X X X X X X

F F F F F F

Memoria Y:

23 0

$ 2000

R1

N1

M1

:X X X XX X

1 2 3 4 5 6:

0 0 2 0 0 1

X X X X X X

F F F F F F

Memoria Y:

23 0

$ 2000

R1

N1

M1

$ 2001

Page 16: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 61

EXEMPLU:

Postdecrementare cu o unitate (Rn)–

move y0,y:(r2)–

X X X X X X F E D C B A Y1 Y0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X F E D C B A Y1 Y0

:X X X X X X

::

0 0 3 0 0 0

X X X X X X

F F F F F F

Memoria Y:

23 0

$ 3000

R2

N2

M2

:F E D C B AX X X X X X

:

0 0 2 F F F

X X X X X X

F F F F F F

Memoria Y:

23 0

$ 2FFF

R2

N1

M1

$ 3000

EXEMPLU:

Postincrementare cu ofset (Rn)+Nn

move x1,x:(r4)+n4

9 8 7 6 5 4 X X X X X X X1 X0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

9 8 7 6 5 4 X X X X X X X1 X0

::::

0 0 5 0 0 0

0 0 0 0 0 4

F F F F F F

Memoria X:

23 0

$ 5000

R4

N4

M4

X X X X X::

0 0 5 0 0 4

0 0 0 0 0 4

F F F F F F

Memoria X:

23 0

$ 5000

R4

N4

M4

$ 5004

X X X X X 9 8 7 6 5 4

Aplicaţii ale procesoarelor de semnal în comunicaţii62

EXEMPLU:

Postdecrementare cu ofset (Rn)–Nn

move x:(r5)–n5,a0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

4 5 6 7 8 9:::

0 0 6 0 0 0

0 0 0 0 0 5

F F F F F F

Memoria X:

23 0$ 6000

R5

N5

M5

4 5 6 7 8 9::

0 0 5 F F B

0 0 0 0 0 5

F F F F F F

Memoria X:

23 0

$ 5FFB

R5

N5

M5

$ 6000

: :

X X X X X X X X X X X XX X A2 A1 A0

0 0 0 0 0 0 4 5 6 7 8 90 0 A2 A1 A0

: X X X X X

EXEMPLU:

Predecrementare cu o unitate –(Rn)

move x:–(r3),b

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

:X X X X X X

1 2 1 2 1 2:

0 0 4 0 0 0

X X X X X X

F F F F F F

Memoria X:

23 0

$ 4000

R3

N3

M3

:X X X X X X

1 2 1 2 1 2:

0 0 3 F F F

X X X X X X

F F F F F F

Memoria X:

23 0

$ 3FFF

R3

N3

M3

$ 4000

X X X X X X X X X X X XX X B2 B1 B0

1 2 1 2 1 2 0 0 0 0 0 00 0 B2 B1 B0

Page 17: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 63

EXEMPLU:

Deplasament scurt (Rn+#nn)

move a,x:(r0+#<$07)

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X:::

0 0 2 0 0 0

X X X X X X

F F F F F F

Memoria X:

23 0$ 2000

R0

N0

M0

1 2 3 4 5 6:::

0 0 2 0 0 0

X X X X X X

F F F F F F

Memoria X:

23 0

$ 2000

R0

N0

M0

$ 2007

: :

1 2 3 4 5 6 0 0 0 0 0 00 0 A2 A1 A0

1 2 3 4 5 6 0 0 0 0 0 00 0 A2 A1 A0

X X X X X X X X X X X$ 2000

EXEMPLU:

Deplasament lung (Rn+#nnnnnn)

move y:(r1+#>$123456),x0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

a b c d e f:::

0 0 0 0 0 0

X X X X X X

F F F F F F

Memoria Y:

23 0$ 123456

R1

N1

M1

a b c d e f:::

0 0 0 0 0 0

X X X X X X

F F F F F F

Memoria Y:

23 0

$ 0000000

R1

N1

M1

$ 123456

: :

X X X X X XX0

a b c d e fX0

X X X X X X X X X X X$ 000000

Aplicaţii ale procesoarelor de semnal în comunicaţii64

EXEMPLU:

Indexare cu ofset (Rn+Nn)

move y0,x:(r6+n6)

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

:X X X X X X

::

0 0 7 0 0 0

0 0 0 0 0 3

F F F F F F

Memoria Y:

23 0

$ 7003

R6

N6

M6

:A B C D E F

:

0 0 7 0 0 0

0 0 0 0 0 3

F F F F F F

Memoria Y:

23 0

$ 7000

R6

N6

M6

$ 7003

X X X X X X X X X X X X: :

X X X X X X A B C D E F Y1 Y0

X X X X X X A B C D E F X1 X0

$ 7000

Moduri speciale de adresare

Acestea nu folosesc un registru pentru a specifica adresa operandului.

Operandul sau adresa acestuia sunt conţinute în codul instrucţiunii.

Adresare imediată.

Acest mod de adresare indică un operand pe 24 biţi în cadrul

instrucţiunii.

EXEMPLU:

Date în acumulator pe 24 biţi

move #$123456,a0ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X XX X A2 A1 A0

X X X X X X 1 2 3 4 5 6X X A2 A1 A0

Page 18: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 65

EXEMPLU:

Date pozitive în acumulator pe 56 biţi

move #$654321,aÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X XX X A2 A1 A0

6 5 4 3 2 1 0 0 0 0 0 00 0 A2 A1 A0

EXEMPLU:

Date negative în acumulator pe 56 biţi

move #$876543,bÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X XX X B2 B1 B0

8 7 6 5 4 3 0 0 0 0 0 0F F B2 B1 B0

Adresare imediată cu date scurte.

Operandul este pe 8 sau 12 biţi.

EXEMPLU:

Date scurte în registru pe 24 biţi

move #$FE,y1ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X X Y1 Y0

F E 0 0 0 0 X X X X X X Y1 Y0

EXEMPLU:

Date scurte în acumulator 24 biţi

move #$FE,a1ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X XX X A2 A1 A0

0 0 0 0 F E X X X X X XX X A2 A1 A0

EXEMPLU:

Date scurte pozitive în acumulator 56 biţi

move #$34,aÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X XX X A2 A1 A0

3 4 0 0 0 0 0 0 0 0 0 00 0 A2 A1 A0

Aplicaţii ale procesoarelor de semnal în comunicaţii66

EXEMPLU:

Date scurte negative în acumulator 56 biţi

move #$87,bÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X X X X X X XX X B2 B1 B0

8 7 0 0 0 0 0 0 0 0 0 0F F B2 B1 B0

Dacă destinaţia este A2, A1, A0, B2, B1, B0, R0-R7, N0-N7 atunci

operandul imediat pe 8 biţi este tratat ca un întreg fără semn.

Dacă destinaţia este X1, X0, Y1, Y0, A, B atunci operandul imediat pe

8 biţi este tratat ca un număr fracţionar cu semn.

Adresare absolută.

Adresa operandului este conţinută în codul instrucţiunii.

EXEMPLU:

Adresare absolută lungă (adresa pe 24 biţi)

move y:$1000,b0

X X X X X X X X X X X XX X B2 B1 B0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

X X X X X X 7 6 5 4 3 2X X B2 B1 B0

:7 6 5 4 3 2

:

Memoria Y:

23 0

$ 1000:

7 6 5 4 3 2:

Memoria Y:

23 0

$ 1000

EXEMPLU:

Adresare absolută scurtă (adresa pe 6 biţi)

move a1,x:$21

7 6 5 4 3 2 X X X X X XX X A2 A1 A0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

7 6 5 4 3 2 X X X X X XX X A2 A1 A0

::

X X X X X X::

Memoria X:

23 0

$ 000021

::

7 6 5 4 3 2::

Memoria X:

23 0$ 00003F

$ 000000

Domeniupentru

adresareabsolutăscurtă

$ 000021

$ 00003F

$ 000000

Page 19: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 67

Adresarea absolută scurtă foloseşte o adresă de 6 biţi în codul

instrucţiunii completată cu zerouri.

Este posibilă adresarea primelor 64 cuvinte din memorie (vectori de

întrerupere etc.)

Adresare I/O scurtă.

Acest mod foloseşte o adresă de 6 biţi în codul instrucţiunii completată

cu unu. Sunt adresate ultimele 64 cuvinte din memorie.

EXEMPLU:

movep a1,x:$fffffd

A B C D E F X X X X X XX X A2 A1 A0

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

A B C D E F X X X X X XX X A2 A1 A0

::

X X X X X X::

Memoria X:

23 0

$ FFFFFD

::

A B C D E F::

Memoria X:

23 0$ FFFFFF

$ FFFFC0

Spaţiul pentruadresareaabsolută

scurtă I/O

$ FFFFFD

$ FFFFFF

$ FFFFC0

Adresare scurtă pentru salt.

Acest mod foloseşte o adresă de 12 biţi în codul instrucţiunii pentru

saltul în program. PC este modificat cu această adresă completata cu zero.

Sunt adresate ultimele 4096 cuvinte.

Aplicaţii ale procesoarelor de semnal în comunicaţii68

EXEMPLU:

jmp <$123

ÎNAINTEA EXECUŢIEI DUPĂ EXECUŢIE

::

jmp $0123::

Memoria P:

23 0

$ 000000

Memoria P:

23 0

$ 000FFF

Spaţiu deadresă pentru

salt scurt

:::::::::::::

::::::::::

Instr. următ.Instr. următ.

::::::

$001FF9

$ 000000

$ 000FFF

PC

$000123PC

Adresare relativă la PC (Program Counter)

Adresa operandului este obţinută adunând un deplasament la adresa

instrucţiunii curente aflată în PC. Deplasamentul poate fi:

• scurt (9 biţi), conţinut în codul instrucţiunii.

• lung (24 biţi), conţinut în cuvântul extensie din codul instrucţiunii.

• conţinutul unui registru R.

Moduri de Modificare a Adresei

Registrele de modificare Mn definesc tipul de operaţie aritmetică a

adresării care urmează a fi efectuată şi permite utilizatorului să creeze diferite

structuri de date în memorie cum ar fi:

• liste (FIFO).

Page 20: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 69

• linii de întârziere.

• buffere circulare.

• stive (LIFO).

• cadre în ordinea inversă a biţilor pentru FFT.

Tabelul de mai jos arată modurile de calcul a adresei în funcţie de valoarea

scrisă în Mn.

Registrul modificator Mn Modul de calcul al adresei

$XX0000 În ordinea inversată a biţilor (Bit-Reverse)

$XX0001 Modulo 2

$XX0002 Modulo 3

: :

$XX7FFE Modulo 32767 (215–1)

$XX7FFF Modulo 32768 (215)

$XX8001 Modulo 2 de la adresa de bază

$XX8003 Modulo 4 de la adresa de bază

$XX8007 Modulo 8 de la adresa de bază

: :

$XX9FFF Modulo 213 de la adresa de bază

$XXBFFF Modulo 214 de la adresa de bază

$XXFFFF Liniar (Modulo 224)

Aplicaţii ale procesoarelor de semnal în comunicaţii70

Modificarea liniară

Mn=$FFFFFF

Calculul adresei se face liniar pe 24 de biţi

Se poate folosi incrementarea, decrementarea sau ofsetul din registrul

Nn pentru calculul adresei.

EXEMPLU:

move x0, y:(r0)+n0

Registrulincrement

No$0000C3(195)

$0000B4(180)

Adresa de start $0000A5(165)

$0000D2(210

Memoria Y

Adresa de start:

$0000A5(165)R0

Increment:

$00000F(15)N0

Adresare liniară:

$FFFFFFM0

Modificarea modulo

Calculul adresei se face modulo M, forţând adresa să rămână într-un

interval de lungime M.

Page 21: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 71

EXEMPLU:

move x0, x:(r0)+n0

Incrementul înregistrul N0

210 ($0000D2)

195 ($0000C3)

180 ($0000B4)

Adresa de start 165 ($0000A5)

135 ($000087)

Modululîn registrul

M0

Adresa dinregistrul

R0

Mj ≥2Lower Bound 128 ($000080)

XX…XX00…00 →← j

Limita maximă 217 ($0000D9)XX…XX00…00 + M -1

→← j

Adresa de start

R0 165 ($0000A5)

Increment

N0 15 ($00000F)

Modulo M=90

M0 89 ($000089)

Reguli pentru obţinerea unui cadru adresat circular:

• Valoarea scrisă în registrul modificator: 1M= −Mn

• Adresa de bază trebuie aleasă o putere a lui 2 care să îndeplinească

condiţia: 2 j M≥ . Astfel adresa de bază are j zerouri LSB.

• Adresa de sfârşit este: 2 1j M+ −

• Adresa iniţială din R nu trebuie neapărat să fie adresa de bază a cadrului,

putând fi oriunde în cadrul domeniului de adrese.

• Adresa de bază a cadrului sau cea de sfârşit nu sunt stocate. Numai

lungimea este scrisă în Mn. Adresa de bază este determinată de adresa

scrisă în Rn (anulând ultimii j biţi).

Aplicaţii ale procesoarelor de semnal în comunicaţii72

Acest tip de modificare a adresei este utilă în crearea de:

• liste circulare.

• linii de întârziere.

• cadre de eşantioane pe care se efectuează decimarea, interpolarea şi

generare de sinusoide.

Dacă adresarea circulară este folosită cu ofset (registrul N), acesta nu

trebuie să depăşească valoarea M.

O excepţie este cazul în care 2 jN p= ⋅ este un multiplu al lungimii

cadrului, adresa rezultată va avea aceeaşi poziţie relativă în bufferul de ordin

p.

Principalele aplicaţii sunt filtrarea IIR prin structuri paralele.

Modificarea modulo cu revenire la adresa de bază

Este cazul în care bitul 15 din registrul M este 1.

Depăşirea adresei maxime a cadrului va forţa adresa să ajungă la adresa

de bază, iar decrementarea sub adresa minime va duce adresa la adresa

maximă a cadrului.

Se foloseşte doar în cazul adresării cu ofset.

Modificarea în ordinea inversă a biţilor

Mn=$000000

Modificarea adresei este realizată hardware prin incrementarea şi

propagarea transportului în sens invers, de la MSB la LSB ai adresei.

Este echivalent cu inversarea ordinii biţilor registrelor Rn şi Nn,

adunarea ofsetului la adresă şi, reinversând ordinea biţilor, obţinerea

rezultatului.

Page 22: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 73

Acest mod de adresare este util în calculul FFT la adresarea factorilor

de rotaţie dintr-un cadru de lungime 2kN = sau a ordonării datelor (decimare

în timp etc.).

Pentru un cadru de lungime 2kN = rezultă că ultimii k biţi ai adresei

vor trebui inversaţi.

Pentru aceasta registrul Nn trebuie să aibă valoarea 12k−=Nn .

Adresa de bază a secvenţei de intrare trebuie să fie putere întreagă a lui

2 îndeplinind condiţia 2m N≥ .

EXEMPLU:

M0 = $000000 R0 = $000008 N0 = 4 = 23–1

O secvenţă de intrare de 8 elemente are adresa de bază $8 = 1000.

Ultimii trei LSB ai adresei vor fi: 000,001,002,...,111.

Adresasecvenţeiiniţiale

Secvenţainiţială

Modificareaadresei cu

transport invers

Secvenţareordonată

$8 = 1000 #0.0 R0 = 1000 +N0 = 0100

$8 #0.0

$9 = 1001 #0.1 R0 = 1100 + 0100

$C #0.4

$A = 1010 #0.2 R0 = 1010 + 0100

$A #0.2

$B = 1011 #0.3 R0 = 1110 + 0100

$E #0.6

$C = 1100 #0.4 R0 = 1001 + 0100

$9 #0.1

$D = 1101 #0.5 R0 = 1101 + 0100

$D #0.5

$E = 1110 #0.6 R0 = 1011 + 0100

$B #0.3

$F = 1111 #0.7 R0 = 1111 + 0100

$F #0.7

Aplicaţii ale procesoarelor de semnal în comunicaţii74

EXEMPLU:

Adresade start

Indexulîn cadru

Increment

Bit Reverse

R0 3072 ($000C00) ( 0)

N0 512 ($000C00)

M0 0 ($000000)

move x:(r0)+n0, x0

R0 3584 ($000E00) (512)

move x:(r0)+n0, x0

R0 3328 ($000D00) (256)

move x:(r0)+n0, x0

R0 3840 ($000F00) (768)

Nk ≥2Adresa minimă 3072 ($000C00)

XX…XX00…00 →← k

Limita maximă 4095 ($000FFF)XX…XX11…11 →←k

CadruFFT delungimeN=1024

Memoria X

Instrucţiuni de transfer paralel al datelor

Este posibil transferul paralel al datelor pe magistralele de date X şi Y.

Aceasta permite operaţiilor ALU să fie efectuate în paralel cu transferul

datelor într-un singur ciclu de ceas.

Sunt permise transferuri paralele: de la registru la registru, de la

registru la memorie şi de la memorie la registru.

Page 23: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 75

Pot fi specificate două adrese efective independente în transferul paralel

al datelor dacă una din adrese foloseşte bancul inferior al registrelor de adrese

(r0-r3) iar cealaltă adresă, bancul superior de registre (r4-r7).

EXEMPLU:

Transferuri în paralel

instrucţiune operanzisursa 1 →

destinaţia 1

sursa 2 →

destinaţia 2

add x0,a a,x:(r0)+n0 y:(r4)– ,y0

Pot fi:

1. Operaţii ALU

2. Operaţii logice

3. Rotunjiri convergente

Sunt suportate:

1. Coduri condiţionale

Pot fi:

1. Până la două transferuri de date

2. Două moduri de adresare diferite

3. Acces la memoria X, Y, L, XY.

Sunt suportate:

1. Scalarea

2. Limitarea

3. Extensie de semn sau completarea cu

zeroruri a acumulatorului

4. Două surse identice

5. NU E PERMISĂ aceeaşi destinaţie

Aplicaţii ale procesoarelor de semnal în comunicaţii76

EXEMPLU:

Transferuri în paralel cu instrucţiuni aritmetice

Instrucţiunesursa 1 →

destinaţia 1

sursa 2 →

destinaţia 2

Transfer cu date imediate add a,b #$44,a1Transfer între registre add x0,a a1,y0Actualizare registru adresă add y1,a (r0)+n0Transfer cu memoria X sau Y add x1,b b,x:$100Transfer cu registre şi cu

memoria X sau Yadd y0,a a,x1 y:(r2)–,y0

Transfer cu memoria L add x,a a10,L:$300Transfer cu memoria X şi Y add y,b b,x:(r3)+n3 y:(r7)+n7,y1

mac x0,y0,a x:(r0)+,x0 y:(r4)–,y0Instrucţiuni de multiplicare şi

adunare macr –y0,y0,b x1,x:(r1)+ b,y:(r5)–

Page 24: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 77

3.5 UNITATEA DE CONTROL AL PROGRAMULUI (PCU)

PCU efectuează încărcarea şi decodificarea instrucţiunilor, controlul

ciclurilor DO şi REP şi procesarea situaţiilor de excepţie într-un cadru de

execuţie pe şapte niveluri pipeline.

Arhitectura PCU este formată din trei blocuri:

GDB PDB PAB GDB

Cereri de ÎntrerupereRESET

CONTROLER DEÎNTRERUPERE APROGRAMULUI

CONTROLER DEDECODIFICARE APROGRAMULUI

GENERATORDE ADRESE

DE PROGRAM

Controler de întrerupere a programului (Program Interrupt Controller)

- arbitrează toate cererile de întrerupere (interne sau externe) şi

generează adresa vectorului de întrerupere corespunzătoare.

Controler de decodificare a Programului (Program Decode Controller)

- decodifică cei 24 de biţi de instrucţiune încărcaţi într-un latch şi

generează toate semnalele de control pipeline.

Generator de adrese de program (Program Address Generator)

- conţine tot hardware-ul necesar pentru generarea adreselor de program,

stiva sistemului şi controlul ciclurilor.

Aplicaţii ale procesoarelor de semnal în comunicaţii78

Facilităţile oferite de PCU sunt:

• Moduri de adresare optimizate pentru aplicaţiile DSP;

• Controler pentru cache de instrucţiuni;

• Extensia stivei sistemului;

• Cicluri DO suprapuse;

• Revenire rapidă din întreruperi.

Operaţiile Pipeline

Arhitectura organizată pe şapte niveluri de pipeline permite execuţia

majorităţii instrucţiunilor la o rată de o instrucţiune pe ciclu de ceas.

PreFetch

Nivelul pipeline Descrierea operaţiilor

PreFetch I • Generarea adresei pentru instrucţiune

• Incrementarea PC

PreFetch II • Instrucţiunea este citită din memorie

Decodificare

Nivelul pipeline Descrierea operaţiilor

Decodificare • Decodificarea instrucţiunii

Generarea Adreselor

Nivelul pipeline Descrierea operaţiilor

Address Gen I • Generarea adresei pentru operaţii de transfer a

datelor

Address Gen II • Actualizarea pointerului de adresă

Page 25: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 79

Execuţie

Nivelul pipeline Descrierea operaţiilor

Execuţie I • Citirea operanzilor sursă pentru înmulţire sau

adunare

• Citirea registrelor sursă pentru scrierea în memorie

• Înmulţirea

• Scrierea registrelor destinaţie pentru citirea din

memorie

Execuţie II • Citirea operanzilor sursă pentru adunare dacă aceştia

au fost scrişi într-o operaţie ALU precedentă

• Adunarea

• Scrierea rezultatului adunării în registrul destinaţie

• Scrierea rezultatului înmulţirii în registrul destinaţie

Aplicaţii ale procesoarelor de semnal în comunicaţii80

Unele instrucţiuni necesită un timp suplimentar de execuţie şi anume:

• Toate instrucţiunile care ocupă două cuvinte de memorie.

• Instrucţiunile care folosesc un mod de adresare care necesită mai mult de

un ciclu pentru calculul adresei.

• Instrucţiunile care provoacă o schimbare în cursul programului.

Operaţiile pipeline ale PCU rămân ascunse utilizatorului, uşurând

programarea.

Hardware-ul prezent în fiecare unitate de execuţie a procesorului

detectează orice conflict pipeline şi opreşte desfăşurarea pipeline până când

rezultatele instrucţiunii precedente sunt disponibile pentru instrucţiunea

următoare.

Programatorul poate reduce întârzierile în pipeline şi îmbunătăţi viteza

de execuţie prin modificări adecvate ale programului.

Întârzieri datorate operaţiilor aritmetice

Apar când se încearcă citirea din acumulator dacă acelaşi acumulator

este destinaţia instrucţiunii aritmetice anterioare. Se poate introduce o altă

instrucţiune între cele două.

mac x0,y0,amove a1,x:(r0)+

mac x0,y0,a

mac x1,y1,bmove a1,x:(r0)+

Întârzieri datorate transferurilor de date

Apar când registrul sursă al unei instrucţiuni move este registrul

destinaţie al instrucţiunii move anterioare. Se poate introduce o altă

instrucţiune între cele două.

Page 26: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 81

move y(r1)+,a1move a,x:(r0)+

move y(r1)+,a1

mac x1,y1,bmove a,x:(r0)+

Întârzieri datorate generării adreselor

Apar când o instrucţiune move foloseşte pentru generarea sau

calcularea adresei drept pointer unul din registrele de adresă R0-R7 şi una

din ultimele trei instrucţiuni modifică tripletul de registre R, N, M respectiv.

Se introduc până la trei instrucţiuni nop.

move $123456,r1move a,x:(r1)+ ; se introduc 3 instrucţiuni nop

Modelul de Programare PCU:

23 0 48 SSH 2423 SSL 0 23 0 0

CONTOR PROGRAM (PC) CONTOR CICLURI (LC)

23 16 15 8 7 0 23 16 15 8 7 0

REGISTRU MOD OPERARE (OMR) REGISTRU DE STARE (SR)

23 0 STIVA SISTEMULUI 4 0

REGISTRU ADRESĂ CICLU (LA) CONTOR STIVĂ (SC)

23 87 0 23 6 5 4 3 0 23 0

ADRESA DE BAZĂ A VECTORULUI INDICATOR STIVĂ (SP) DIMENSIUNEA STIVEI (SZ)DE ÎNTRERUPERI (VBA)

* BIŢII SUNT 0

SCS EOM COM

*

EMR MR CCR

Aplicaţii ale procesoarelor de semnal în comunicaţii82

Contor program (Program Counter)

Registru pe 24 de biţi care păstrează adresa din memoria de program a

instrucţiunii curente.

Este salvat în stivă

• la începerea unui ciclu hardware;

• la apelul unei subrutine;

• în cazul unei întreruperi lungi.

Contor ciclu (Loop Counter)

Contor pe 24 de biţi care specifică de câte ori este repetat un ciclu (DO

sau REP). Este stocat în stivă de instrucţiunea DO şi scos din stivă la sfârşitul

ciclului sau la ENDDO.

Registrul adresei de sfârşit de ciclu (Loop Address)

Registru pe 24 de biţi care indică adresa ultimei instrucţiuni din ciclu.

Este stocat în stivă de instrucţiunea DO şi scos din stivă la sfârşitul ciclului

sau la ENDDO.

Adresa de bază a vectorului de întreruperi (Vector Base Address)

Registru pe 24 de biţi (cu ultimii 8 LSB zero) care păstrează adresa de

bază a vectorului de întreruperi.

Stiva sistemului (System Stack)

Zonă de memorie de 16cuvinte pe 48 biţi împărţită în două zone (pe 24

biţi fiecare):

• System Stack High (SSH).

• System Stack Low (SSL).

Page 27: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 83

Funcţiile stivei:

• păstrează adresa de revenire (PC) şi registrul de stare (SR) la apelul

unei subrutine.

• păstrează LA, LC, PC şi SR la efectuarea ciclurilor.

• păstrează variabile la apeluri de subrutine.

Stiva poate fi folosită pentru implementarea de cicluri suprapuse

deoarece la iniţierea unui ciclu hardware sunt stocate automat în stivă LA,

LC, PC şi SR anterioare, iar la terminarea ciclului acestea sunt restabilite

(permiţând continuarea unui eventual ciclu anterior).

endlp – 1

SYSTEM STACK (Registru adresa de salt)

(Contor ciclu)

(Registru de stare)

(Contor Program)

Comparator 0

LF=1 (Fanion ciclu) DO #count,endlp

PC

Ciclu

(Ultima LAInstructiune)

endlp instr

UNITATEA DE CONTROL AL PROGRAMULUI

COMPARATOR STIVA DE SISTEM 0

SP =

-1

(Contor ciclu) 15 ieşire la LC=1

LA

PC

LCSR

LA LC PC SR

instrinstrinstr:::::instrinstr

Aplicaţii ale procesoarelor de semnal în comunicaţii84

Dacă nu se realizează extensia stivei, se pot implementa 7 cicluri DO

suprapuse, 15 apeluri de subrutine sau 15 deserviri de întreruperi lungi, sau

combinaţii între ele.

La apelul unei subrutine (JSR) adresa de revenire (PC) este scrisă în

SSH iar registrul de stare (SR) este scris în SSL.

La revenirea din subrutină (RTS) numai PC este scris din stivă, SR

rămânând nemodificat.

La revenirea din subrutina de întrerupere (RTI), atât PC cât şi SR

sunt rescrise din stivă.

Extensia stivei poate fi activată de Stack Extension Enable (SEN),

bitul 20 din OMR.

Stack Extension Pointer (EP) aflat în AGU păstrează adresa din

memoria de date a extensiei de stivă.

Stack Size Register (SZ) determină numărul locaţiilor de memorie

alocate pentru extensia stivei în memoria de date.

Stack Counter Register (SC)

Registru pe 5 biţi folosit pentru a monitoriza câte intrări în stivă sunt

folosite.

Registrul indicator de stivă (Stack Pointer Register)

Registru care indică vârful stivei şi eventualele condiţii de eroare.

Ultimii 4 biţi sunt incrementaţi/decrementaţi la fiecare scriere/citire din

stivă.

Biţii 4 şi 5 indică posibile erori de tipul stivă goală sau plină precum şi

depăşirea limitelor stivei.

Page 28: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 85

23 6 5 4 3 0

Indicator stivă Fanion Eroare-Stivă/P4 Fanion stivă goală/P5 P[23:6]

P[23:6] UF/P5 SE/P4 P[3:0]

Registrul de stare (Status Register)

Registru de 24 de biţi alcătuit din 3 părţi:

• Extended Mode Register (EMR)

• Mode Register (MR)

• Condition Code Register (CCR)

CP1 – Nivel Prioritate Bit 1 LF – Fanion buclă DO S – Bit scalare

CP0 – Nivel Prioritate Bit 0 DM – Înmulţire precizie dublă L – Limitare

RM – Mod de rotunjire SC – Copatibilitate 16-Biţi E – Extensie

SM – Saturare aritmetică S1 – Mod de scalare Bit 1 U – Nenormalizat

CE – Activare cache instr. S0 – Mod de scalare Bit 0 N – Negativ

SA – Aritmetică pe 16 biţi I1 – Mascare întreruperi Bit 1 Z – Zero

FV – Fanion DO-Forever I0 – Mascare întreruperi Bit 0 V – Depăşire

C – Depăşire

Registrul de condiţii (Condition Code Register)

Registru de control care defineşte rezultatele calculelor aritmetice

anterioare.

Biţii CCR sunt afectaţi de operaţii ALU, transferuri paralele sau

instrucţiuni care fac referire directă la acest registru.

Aplicaţii ale procesoarelor de semnal în comunicaţii86

Mode Register şi Extended Mode Register

Sunt registre de control care definesc starea curentă a sistemului.

Biţii MR şi EMR sunt afectaţi de resetarea procesorului, întreruperi,

DO, ENDDO, RTI şi alte instrucţiuni care modifică biţii din acest registru.

Instrucţiuni de ciclare

Repetarea unei instrucţiuni de n ori

REP n

n: valoarea aflată la o adresă efectivă sau absolută;

orice registru intern;

valoare imediată pe 8 biţi: #xxx;

Valoarea n este scrisă în LC şi decrementată la fiecare repetare a

instrucţiunii până când LC = 1.

Pentru instrucţiunea repetată se face fetch o singură dată, aceasta

rămânând în registrul de instrucţiune până la terminarea ciclului. De aceea

instrucţiunea REP este neîntreruptibilă.

Dacă LC este 0 instrucţiunea este repetată de 65536 ori.

Repetarea de n ori a instrucţiunilor aflate până la eticheta label

DO n,label

n: valoarea aflată la o adresă efectivă sau absolută;

orice registru intern;

valoare imediată pe 8 biţi: #xxx;

label: adresă absolută.

Page 29: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 87

Pentru fiecare instrucţiune din ciclu face fetch de fiecare dată. De

aceea instrucţiunea DO este întreruptibilă.

Ciclurile DO pot fi suprapuse (efectuarea unui ciclu în interiorul altuia).

Adresa sfârşitului ciclului este calculată (şi scrisă în LA) prin evaluarea

adresei etichetei label şi scăzând unu (pentru cazul în care ultima instrucţiune

ocupă două cuvinte de memorie). De aceea eticheta sfârşitului de ciclu trebuie

să reprezinte adresa instrucţiunii de după ciclu.

Repetarea de n ori a instrucţiunilor aflate până la adresa PC+val

DOR n,val

n: valoarea aflată la o adresă efectivă sau absolută;

orice registru intern;

valoare imediată pe 8 biţi: #xxx;

val: valoarea relativă adunată la PC reprezentând

sfârşitul ciclului adresă absolută.

Repetarea continuă a instrucţiunilor aflate până la adresa etichetă

DO FOREVER,label

Repetarea continuă a instrucţiunilor aflate până la adresa PC+val

DOR FOREVER,val

Ieşirea din ciclurile DO, DOR, DO FOREVER, DOR FOREVER se

face cu instrucţiunile:

ENDDO se iese din ciclul curent înainte ca LC să ajungă la 1.

BRKcc se iese din ciclul curent dacă se îndeplineşte condiţia cc.

Aplicaţii ale procesoarelor de semnal în comunicaţii88

Condiţiile testate la execuţia instrucţiunilor condiţionale se determină

din biţii din registrul CCR (Condition Code Register) pe baza unor ecuaţii

prezentate mai jos:

Codul Condiţional Semnificaţia ‘cc’ Condiţia

CC(HS) Carry Clear (Higher or Same) C = 0

CS(LO) Carry Set (Lower) C = 1

EC Extension Clear E = 0

EQ EQual Z = 1

ES Extension Set E = 1

GE Greater than Equal N ⊕ V = 0

GT Greater Than Z + (N ⊕ V) = 0

LC Limit Clear L = 0

LE Less than or Equal Z + (N ⊕ V) = 0

LS Limit Set L = 1

LT Less Than N ⊕ V = 1

MI Minus N = 1

NE Not Equal Z = 0

NR NoRmalized Z + (U • E) = 1

PL PLus N = 0

NN Not Normalized Z + (U • E) = 1

Unde:

+ reprezintă operatorul SAU

⊕ reprezintă operatorul SAU-EXCLUSIV

• reprezintă operatorul ŞI

Page 30: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 89

Alte instrucţiuni de control al programului

Aplicaţii ale procesoarelor de semnal în comunicaţii90

Page 31: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 91

EXEMPLE DE PROGRAME:

Calculul sumei de produse

Să se realizeze programul care calculează suma de produse (convoluţie

sau corelaţie):

1

0

( ) ( ) ( )N

ks n x k y n k

=

= −∑

Pseudocodul pentru acest program este:

s(n)=0;

for (k=0,k<N,k++)

s(n) = s(n) + x(k) * y((n-k)%N);

În limbaj de asamblare suma se poate calcula repetând instrucţiunea

mac într-un ciclu do astfel:

...

clr a

do #N,_end

...

mac x0,y0,a

_end

• suma se calculează în acumulatorul a care se iniţializează cu 0.

• instrucţiunea mac calculează x0*y0 şi adună la valoarea din a.

În registrele de date x0 şi y0 trebuie transferaţi din memorie operanzii

( )x k şi ( )y n k− :

• avem nevoie de două registre de adresă r0 şi r4 care să fie

iniţializate cu adresele de start ale celor două şiruri şi să indice pe

parcurs adresa elementului ( )x k respectiv ( )y n k− din şir.

Aplicaţii ale procesoarelor de semnal în comunicaţii92

• considerăm stocate în memorie şirurile de N valori ( )x k şi ( )y n k− ;

Registru adresă Memoria X Memoria Y

r0 (0)x

r4 ( )y n

• se va folosi modificarea modulo N a adresei pentru ca la sfârşitul

ciclului, registrele r0 şi r4 să indice adresele de unde s-a pornit.

• registrul de adresă r0 este incrementat pentru următorul ( )x k .

• registrul r4 este decrementat pentru ( )y n k− .

Etichetă Instr. OperanziMagistralade date X

Magistralade date Y

Cicluriceas

N equ 14 0

org x:0 0

x_addr dsm N 0

org y:0 0

y_addr dsm N 0

org p:$100 0

move #x_addr,r0 1

move #N-1,m0 1

move #y_addr,r4 1

move m0,m4 1

clr a 1

do #N,_end 5

move x:(r0)+,x0 1

move y:(r4)-,y0 1

mac x0,y0,a 1

_end

TOTAL 3N+10

Page 32: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 93

Optimizarea programului.

Optimizarea programului se poate face prin utilizarea transferurilor

paralele şi a instrucţiunii rep care repetă de N ori o singură instrucţiune.

Cele două instrucţiuni de transfer care se efectuau înaintea înmulţirii cu

acumulare pot fi efectuate în paralel cu aceasta. Diferenţa este că transferul

operanzilor din memorie în registre se face după citirea operanzilor din

registrele x0 şi y0 şi începerea efectuării înmulţirii. De aceea pentru prima

înmulţire din ciclu, operanzii trebuie iniţializaţi înaintea ciclului (în paralel cu

ştergerea acumulatorului, de exemplu).

Etichetă Instr. OperanziMagistralade date X

Magistralade date Y

Cicluriceas

...

clr A x:(r0)+,x0 y:(r4)-,y0 1

rep #N-1 5

mac X0,y0,a x:(r0)+,x0 y:(r4)-,y0 1

macr X0,y0,a 1

TOTAL N+6

Ciclul este efectuat de 1N − ori pentru ca numărul transferurilor din memorie

să fie egale cu N. Ultima înmulţire şi acumulare se face în afara ciclului

folosind şi rotunjirea rezultatului pe 24 de biţi.

Aplicaţii ale procesoarelor de semnal în comunicaţii94

Calculul valorii unui polinom

Să se realizeze programul care calculează polinomul:

1

0

( ) ( )N

k

kp x a k x

=

= ⋅∑

Pseudocodul pentru acest program este:

x_k = x;

p(x) = a(0);

for (k=1,k<N,k++)

{ p(x) = p(x) + a(k) * x_k;

x_k = x_k * x;

}

• registrul de adresă r0 este iniţializat cu adresa coeficienţilor ( )a k .

• valoarea lui x este păstrată în registrul y1.

• calculul lui kx se face păstrând pe 1kx − în registrul x0 şi înmulţind

această valoarea cu valoarea lui x din registrul y1.

• noua valoare kx se transferă apoi în registrul x0 pentru următoarea

iteraţie.

• polinomul se calculează în acumulatorul a cu instrucţiunea

mac y0,x0,a. La valoarea anterioară din a se adună produsul între

coeficientul ( )a k din registrul y0 şi kx din registrul x0.

Page 33: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 95

Etichetă Instr. OperanziMagistralade date X

Magistralade date Y

Cicluriceas

N equ 10 0

org x:0 0

a_addr dsm N 0

org p:$100 0

move #a_adr,r0 1

move x:#val_x,y1 1

move x:(r0)+,a 1

move x:(r0)+,y0 1

move y1,x0 1

do #N-1,_end 5

mac y0,x0,a x:(r0)+,y0 1

mpyr x0,y1,b 1

move b,x0 2 i’lock

_end

TOTAL 4N+6

• deoarece rezultatul înmulţirii 1kx x− ⋅ este în acumulatorul b, acesta

trebuie transferat în registrul x0 (o instrucţiune de transfer

suplimentară).

• deoarece registrul sursă de transfer b este acelaşi cu destinaţia

instrucţiunii anterioare de înmulţire, apare o întârziere de o

instrucţiune în execuţia programului (transfer stall).

Aplicaţii ale procesoarelor de semnal în comunicaţii96

Optimizarea programului.

Se poate efectua în avans calculul 1kx x− ⋅ astfel ca transferul din b să

nu se facă pentru valoarea calculată în instrucţiunea anterioară, ci în paralel cu

aceasta (deci pentru valoarea din b înaintea înmulţirii).

Etichetă Instr. OperanziMagistralade date X

Magistralade date Y

Cicluriceas

move #a_adr,r0 1

move x:#val_x,x0 1

move x:(r0)+,a 1

mpyr x0,x0,b x:(r0)+,y0 1

move b,y1 2 i’lock

do #N-1,_end 5

mac y0,x0,a x:(r0)+,y0 1

mpyr y1,x0,b b,x0 1

_end

macr y0,x0,a 1

TOTAL 2N+10

Succesiunea operaţiilor este:

x0 = x

a = a(0)

b = x2 y0 = a(1)

y1 = b = x2

a = a(1) * x + a(0) y0 = a(2)

b = x2 * x = x3 x0 = x2

a = a + a(2) * x2 y0 = a(3)

b = x2 * x2 = x4 x0 = x3

a = a + a(3) * x3 y0 = a(4)

b = x2 * x3 = x5 x0 = x4

Page 34: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 97

Sortarea unui vector prin selecţie directă

Algoritmul sortează elementele unui vector aflate în memoria X. Sortarea este

efectuată “in place” (în aceeaşi zonă de memorie) şi nu necesită memorie

suplimentară.

Algoritmul caută minimul elementelor ne-sortate din vector pe care îl schimbă

cu primul element de după secvenţa sortată.

Timpul de execuţie este proporţional cu pătratul numărului de elemente din

vector şi este constant chiar dacă vectorul este deja ordonat crescător,

descrescător sau elementele sunt în ordine aleatoare.

iniţializării = 0j = 0

a>b

a = bk = j

j = j + 1

NU

DA

a = data[i]

j = i + 1k = i

b = data[j]

data[k] = data[i]data[i] = a

i = i + 1

Aplicaţii ale procesoarelor de semnal în comunicaţii98

Registre folosite:

• indexul elementelor: r0 = j , r1 = k , r2 = i

• ciclul de căutare a minimului (numărul de elemente nesortate): r4 = j.

Instrucţiunea cmp b,a face diferenţa între a şi b şi modifică biţii de

condiţii din CCR în funcţie de rezultatul scăderii. Dacă a – b < 0 bitul n = 1.

Instrucţiunea tge y0,a r0,r1 transferă valoarea din y0 în a şi valoarea

din r0 în r1 dacă rezultatul comparaţiei anterioare este mai mare sau egal ca

0.

move #N_ITEMS,r4

move #ARRAY,r2

move #-2,n1

nop

do #N_ITEMS-1,_loop2

lua (r2)+,r0

nop

nop

move x:(r2),a y:(r4)-,b

move x:(r0)+,b

move r0,r1

do r4,_loop1

cmp b,a x:(r0)+,b b,y0

tge y0,a r0,r1

_loop1

nop

move x:(r2),y0

move a,x:(r2)+

move y0,x:(r1+n1)

_loop2

Page 35: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 99

Instrucţiunea IFcc

Execută instrucţiunea aritmetică dacă este îndeplinită condiţia din IFcc

(bazată pe operaţia anterioară). Altfel nu se execută instrucţiunea ALU.

move #>2,a ; a = 2

move #>1,x0 ; x0 = 1

add x0,a ; a = 2 + 1 = 3

sub x0,a ifne ; dacă rezultatul anterior

; nu e 0 se scade x0 din a

move #>-2,a ; a = -2

move x0,b ; b = 1

addl a,b ; b = 2*b + a = 0

sub x0,a ifne ; rezultatul anterior e 0

; nu se executa scaderea

nop

Instrucţiunea DEBUGcc

Dacă este îndeplinită condiţia se intră în modul “debug” (depanare) şi

se asteaptă o comandă OnCE (“run” sau “step” din debugger).

move y0,a ; init a

neg a ; a = -a

add y0,a ; a = 0

debugeq ; opreste executia si asteapta

nop ; comanda OnCE (run sau step)

Aplicaţii ale procesoarelor de semnal în comunicaţii100

Instrucţiunea BRKcc

Se iese condiţionat din ciclu do (dacă este îndeplinită condiţia cc).

a y0

a a – 1

a = 0? NU

LC = 1 NULC--

DABRKeqZ=0

DA

do #loop_c,loop1

loop1

move #>3,a ; init accumulator

do #6,loop1 ; init ciclu (LC = 6)

sub #1,a ; decrementare acumulator

brkeq ; iese din ciclu daca a=0

nop ; ultimele trei linii din cilu

nop ; nu trebuie sa contina brkcc

nop ; (conflict pipeline)

loop1

nop

Page 36: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 101

3.6 CONTROLERUL DMA (DIRECT MEMORY ACCESS)

Controlerul de acces direct la memorie (DMA) asigură transferul de

date între memoria internă şi/sau externă sau dispozitive de I/O în orice

combinaţie fără nici o intervenţie externă.

Deoarece există magistrale de date şi adrese dedicate DMA, precum şi

datorită modului de împărţire a memoriei interne rezulta că operaţiile de acces

direct la memorie nu interferă cu restul operaţiilor ce au loc în interiorul

DSP56300.

Unitatea de interfaţă cu magistrala (BIU) primeşte comenzile necesare

de la controlerul DMA şi poate prelucra activităţile externe cu maximum de

flexibilitate şi performanţă.

Controlerul DMA are 6 canale, fiecare cu setul propriu de registre

mapate în zona memoriei interne de I/O.

Tipurile de transfer de date efectuate de controlerul DMA sunt:

Sursa / destinaţia transferuluiNumărul minim de cicluri de ceas

pentru transferul unui cuvânt

Memorie internă → Memorie internă 2

Memorie externă ↔ Memorie internă 2 + timp acces memoria externă

Memorie externă → Memorie internă 2 + timp acces memoria externă

Memorie internă ↔ Porturi I/O 2

Memorie externă ↔ Porturi I/O 2 + timp acces memoria externă

Porturi I/O → Porturi I/O 2

Aplicaţii ale procesoarelor de semnal în comunicaţii102

Transferul de date pentru un singur canal ocupă minimum 2 tacturi de

ceas pentru un singur cuvânt.

Numărul de tacturi de ceas per transfer poate fi mai mare dacă există un

conflict între activitatea DMA şi nucleul DSP56300 (de exemplu dacă ambele

accesează aceiaşi 1/4K de RAM intern în acelaşi tact de ceas, sau dacă ambele

vor să acceseze memoria externă).

Controlerul de DMA are 6 canale identice. Fiecare canal are 6 registre

dedicate:

• DSRi – registrul sursa DMA pentru canalul i care conţine adresa de bază

a sursei următorului transfer DMA.

• DDRi – registrul destinaţie DMA pentru canalul i care conţine adresa de

bază a destinaţiei următorului transfer DMA.

• DCOi – registrul contor DMA pentru canalul i care conţine numărul de

transferuri DMA rămase de executat.

• DCRi – registrul de control DMA pentru canalul i care conţine biţii

necesari controlului operaţiilor de pe canal.

Mai sunt 5 registre nededicate:

• 4 registre DMA de ofset (DOR0, DOR1, DOR2, DOR3) care conţin

ofseturile pentru adrese ce vor putea fi folosite de orice canal, dacă este

necesar, folosind modurile de adresare specifice.

• un registru read-only de stare DMA (DSTR).

Page 37: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 103

Registrul de control DMA (DCR)

Aplicaţii ale procesoarelor de semnal în comunicaţii104

Registrul contor DMA (DCO)

Modul A – un singur contor (transfer unidimensional).

23 0

DCO

Numărul de transferuri este egal cu DCO+1. Înainte de fiecare transfer

DMA, registrul DCO este testat astfel:

• DCO > 0 – este iniţiat transferul de la adresa sursă, DCO este decrementat

şi registrul de adresă DSR este actualizat în funcţie de modul de adresare a

sursei din registrul de control DCR.

• DCO = 0 – ultimul transfer este iniţiat de la adresa sursă, registrul de

adresă este actualizat şi DCO este încărcat cu valoarea iniţială.

Înaintea transferului După transfer

DSR DCO Adresa sursă atransferului

DSR DCO

S 5 S S+1 4

S+1 4 S+1 S+2 3

S+2 3 S+2 S+3 2

S+3 2 S+3 S+4 1

S+4 1 S+4 S+5 0

S+5 0 S+5 S+6 5

În exemplul de mai sus am considerat că adresa sursă este modificată

(incrementată) în timpul transferului. Acelaşi lucru se poate întâmpla şi cu

adresa destinaţie a transferului în funcţie de modul de adresare destinaţie din

registrul de control DCR

Page 38: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 105

Transferuri DMA multidimensionale

DMA-ul este capabil de transferuri de date aflate în structuri complexe.

Modul de adresare al sursei sau destinaţiei poate fi bi sau tridimensional (2D

sau 3D).

Transferul bidimensional (2D)

Pentru transferul 2D, numărătorul DCO este divizat în DCOL şi

DCOH.

Modul B – două contoare (transfer bidimensional):

23 12 11 0

DCOH DCOL

Un registru de ofset DOR este folosit pentru a calcula saltul de adresă.

Adresa transferului DMA este conţinută de registrul de adrese (DSRi

sau DDRi).

Acest mod este util în transferuri bidimensionale (de exemplu liniile

unei matrice). Înainte de fiecare transfer DMA, registrele DCOH şi DCOL

sunt testate dacă au ajuns la 0 astfel:

• DCOH > 0 şi DCOL > 0 – este iniţiat transferul de la adresa sursă, DCOL

este decrementat şi registrul de adresă DSR este incrementat.

• DCOH > 0 şi DCOL = 0 – este iniţiat transferul de la adresa sursă,

registrul de adresă DSR este incrementat cu valoarea aflată într-un registru

ofset DOR asociat transferului bidimensional în registrul de control,

DCOH este decrementat şi DCOL este încărcat cu valoarea iniţială.

• DCOH = 0 şi DCOL = 0 – ultimul transfer este iniţiat de la adresa sursă,

registrul de adresă este actualizat şi DCOH şi DCOL sunt încărcate cu

valorile iniţiale. Odată cu acest ultim transfer de bloc de date, DMA-ul ori

Aplicaţii ale procesoarelor de semnal în comunicaţii106

încetează să mai execute orice operaţie, ori aşteaptă o nouă declanşare a

transferului.

Înaintea transferului După transfer

DSR DCOH:L Adresa sursă atransferului

DSR DCOH:L

S 1:2 S S+1 1:1

S+1 1:1 S+1 S+2 1:0

S+2 1:0 S+2 S+O+2 0:2

S+O+2 0:2 S+3 S+O+3 0:1

S+O+3 0:1 S+4 S+O+4 0:0

S+O+4 0:0 S+5 S+2O+4 1:2

Numărul total de transferuri efectuat este (DCOH + 1) x (DCOL + 1).

EXEMPLU:

Salt cu ofset

Transfer liniar 2D

Page 39: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 107

Transferul tridimensional (3D)

Pentru transferul 3D, registrul contor este împărţit în trei registre

DCOH, DCOM şi DCOL, având dimensiuni diferite.

Modurile C, D, E – trei contoare (transfer tridimensional):

23 12 11 6 5 0

DCOH DCOM DCOL

23 18 17 6 5 0

DCOH DCOM DCOL

23 18 17 12 11 0

DCOH DCOM DCOL

Acest mod de transfer utilizează 2 registre de ofset pentru calculul

adresei de salt.

Înainte de fiecare transfer DMA, registrele contor sunt testate dacă au

ajuns la 0 şi se efectuează următoarele operaţii:

• DCOH > 0, DCOM > 0 şi DCOL > 0 – este iniţiat transferul de la adresa

sursă, DCOL este decrementat şi registrul de adresă este incrementat.

• DCOH > 0, DCOM > 0 şi DCOL = 0 – este iniţiat transferul de la adresa

sursă, registrul de adresă este incrementat cu valoarea aflată în primul

registru ofset DOR specificat pentru transferul 3D în registrul de control,

DCOM este decrementat şi DCOL este încărcat cu valoarea iniţială.

• DCOH > 0, DCOM = 0 şi DCOL = 0 – este iniţiat transferul de la adresa

sursă, registrul de adresă este incrementat cu valoarea aflată în al doilea

registru ofset DOR specificat pentru transferul 3D în registrul de control,

DCOH este decrementat şi DCOM şi DCOL sunt încărcate cu valorile

iniţiale.

• DCOH = 0, DCOM = 0 şi DCOL = 0 – ultimul transfer este iniţiat de la

adresa sursă, registrul de adresă este incrementat cu al doilea ofset şi

Aplicaţii ale procesoarelor de semnal în comunicaţii108

DCOH, DCOM şi DCOL sunt încărcate cu valorile iniţiale. După acest

ultim transfer, DMA-ul aşteaptă o nouă declanşare.

Înaintea transferului După transfer

DSR DCO Adresa sursă atransferului

DSR DCO

S 1:1:2 S S+1 1:1:1

S+1 1:1:1 S+1 S+2 1:1:0

S+2 1:1:0 S+2 S+O0+2 1:0:2

S+O0+2 1:0:2 S+O0+2 S+O0+3 1:0:1

S+O0+3 1:0:1 S+O0+3 S+O0+4 1:0:0

S+O0+4 1:0:0 S+O0+4 S+O0+O1+4 0:1:2

S+O0+O1+4 0:1:2 S+O0+O1+4 S+O0+O1+5 0:1:1

S+O0+O1+5 0:1:1 S+O0+O1+5 S+O0+O1+6 0:1:0

S+O0+O1+6 0:1:0 S+O0+O1+6 S+2O0+O1+6 0:0:2

S+2O0+O1+6 0:0:2 S+2O0+O1+6 S+2O0+O1+7 0:0:1

S+2O0+O1+7 0:0:1 S+2O0+O1+7 S+2O0+O1+8 0:0:0

S+2O0+O1+8 0:0:0 S+2O0+O1+8 S+2O0+2O1+9 1:1:2

Numărul total de transferuri este (DCOH+1)x(DCOM+1)x(DCOL+1).

Page 40: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 109

EXEMPLU:

Salt cu ofsetul 1

Salt cuofsetul 1

Salt cuofsetul 1

Salt cuofsetul 1

Salt cuofsetul 1

Salt cuofsetul 1

Salt cu ofsetul 2

Transfer 3D 2D

Registrul de stare DMA (DSTR)

23 22 21 20 19 18 17 16 15 14 13 12

11 10 9 8 7 6 5 4 3 2 1 0

DCH2 DCH1 DCH0 DACT DTD5 DTD4 DTD3 DTD2 DTD1 DTD0

• Biţii DCH indică ce canal DMA este activ (000 – 101 reprezintă canalele

DMA 0 - 5).

• Bitul DACT indică dacă există cel puţin un canal DMA activ.

• Biţii DTDi indică transfer terminat pe canalul i şi sunt setaţi la transferarea

ultimului cuvânt la destinaţie.

Aplicaţii ale procesoarelor de semnal în comunicaţii110

Exemple de folosire a DMA

În aceste exemple se foloseşte un singur canal DMA fără interferenţe

din alte surse, cum ar fi alte canale DMA, conflicte cu nucleul DSP56300 etc.

Transferul de la memoria de date x la y

Următorul program foloseşte canalul 0 al DMA pentru a transfera liniar

un bloc de N cuvinte din memoria interna X in memoria interna Y:

movep #source_addr,x:M_DSR0 ;adresa sursă

movep #dest_addr,x:M_DDR0 ;adresa destinaţie

movep #(N-1),x:M_DCO0 ;se vor efectua N transferuri

movep #%100110000000001011010100,x:M_DCR0

nop

nop

jclr #0,x:M_DSTR,* ;interogarea lui DTD0

În acest program, în DSR0 este înscrisă adresa primei valori ce

urmează să fie transferată.

Nu este necesar să specificăm că adresa este internă. Partea hardware a

DMA evaluează această informaţie în mod automat în concordanţă cu harta

memoriei.

Numărul N de transferuri de efectuat este (DCO+1), deci valoarea

scrisă în DCO0 este N-1.

Conţinutul registrului de control DCR0 este următorul:

• DE = 1 începe un transfer DMA.

• DIE = 0 dezafectează întreruperea către procesor la sfârşitul unui bloc.

• DTM = 011 transferul blocului este activat software de DE prin setarea

bitului DE.

Page 41: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 111

• DPR = 00 nivel de prioritate zero (cel mai mic).

• DCON = 0 modul continuu nu este activat.

• DRS = 00000 in modul activat software acest câmp este ignorat.

• D3D = 0 mod ne-tridimensional.

• DAM = 101101 adresa sursă este post incrementată cu 1 (adresare

liniară), adresa destinaţie este de asemenea incrementată în mod liniar.

• DDS = 01 destinaţia este în memoria Y.

• DSS = 00 sursa în memoria X.

În acest exemplu, nucleul procesorului este inactiv în timpul în care

DMA-ul transferă blocurile de date.

Programul testează bitul DTD0 al acestui canal şi continuă execuţia

programului după ce DMA termină de transferat datele.

Datorită structurii de tip pipeline a execuţiei şi deoarece procesorul

interoghează bitul DTD0 până când acesta este egal cu 0, programul trebuie

să aştepte 2 cicluri de ceas până ce DE este scris iar DTD0 este resetat la

începutul blocului de transfer pentru a indica ocuparea canalului.

O altă opţiune este aceea de a interoga bitul DACT (bitul 8) din DSTR

până ce acesta este setat. Acest bit indică daca pe orice canal DMA se

efectuează un transfer de date. Programul trebuie să aştepte 3 cicluri de ceas

(3 instrucţiuni NOP) până când acest bit este setat şi poate fi interogat.

Transferul datelor de la portul ESSI

Canalul DMA5 este programat pentru a recepţiona date de la un port

periferic ESSI.

Aplicaţii ale procesoarelor de semnal în comunicaţii112

În acest caz adresa sursă trebuie să fie în modul "fără actualizare"

deoarece DMA-ul citeşte registrul de recepţie de date mapat la o adresă fixă

în memoria perifericelor.

Datele sunt transferate într-un buffer de tip circular în memoria X

internă. Buffer-ul circular este implementat folosind adresarea liniară; la

terminarea transferului este generată o întrerupere iar adresa destinaţie este

reiniţializată.

În acest exemplu se ignoră conţinutul contorului DCO5, care este însă

folosit pentru generarea unei întreruperi pentru a se face saltul la începutul

buffer-ului după ce acesta este umplut.

M_RX1 equ $ffffa8 ;registrul de recepţie ESSI1

movep #M_RX1,x:M_DSR5 ;adresa sursă

movep #$int_addr,x:M_DDR5 ;adresa destinaţie

movep #(N-1),x:M_DCO5 ;buffer circular de lungime N

movep #111011100110001011000000,x:M_DCR5

;transferul cuvintelor declanşat de ESSI1 Rx

;din memoria X fără actualizare in X act. liniara

;DE nu este şters la terminarea blocului

;intreruperea este generata la sfarsitul blocului

;prioritatea canalului este 3 (nu conteaza aici)

...

;rutina intreruperii terminării transferului pe DMA5

I_DMA5

movep #$int_addr,x:M_DDR5

;se modifică adresa de inceput a buffer-ului

;realizând o adresare circulară

Page 42: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 113

Exemple pentru realizarea altor moduri de adresare cu DMA

Adresare circulară folosind transferul 2D

Se transferă un cuvânt de date pe cerere până la sfârşitul cadrului

circular, după aceea se efectuează un salt înapoi (registru de ofset are valoare

negativă) la începutul cadrului.

M_RX1 equ $ffffa8 ;registrul de recepţie

ESSI1

movep #-(N-1),x:M_DOR0 ;offset de salt inapoi

movep #M_RX1,x:M_DSR5 ;adresa destinatie

movep #int_addr,x:M_DDR5 ;adresa de inceput buffer

movep #$(fff000+(N-1)),x:M_DCO5

movep #$ae6040,x:M_DCR5

;transferul declansat de ESSI1 Rx

;x no update -> x 2D cu DOR0

;DE nu este resetat la sfarsitul blocului de date

;intreruperea nu este generata

;prioritate canal: 3 (nu conteaza aici)

În acest exemplu registrul contor DCO5 este încărcat cu N-1 în DCOL şi cu

$fff în DCOH pentru un număr total mare de transferuri.

Transfer cu ofset echidistant

Modul de adresare postincrementare cu ofset Nn care are sintaxa

(Rn)+Nn poate fi folosit, de exemplu, pentru a efectua o decimare a datelor.

Folosind DMA-ul pentru a efectua aceeaşi operaţie se poate elibera

registrul Rn.

Transfer 3D 2D

Aplicaţii ale procesoarelor de semnal în comunicaţii114

Se programează canalul DMA pentru transfer 2D cu DCOL=0. La

fiecare transfer, registrul de adrese este modificat cu ofsetul N aflat în

registrul de ofset DORi.

Programând acelaşi canal pentru transfer 3D cu DCOH=0 si DCOL=0,

dar cu DCOM>0 şi DORi=N (ofset) şi DORj=–(N*DCOM) se

implementează un buffer circular care efectuează un algoritm de decimare

asemănător (modul de adresare rezultat este similar cu cel rezultat în urma

folosirii adresării ((Rn) + Nn) mod Mn.

Operarea cu mai multe canale DMA

Deoarece un canal DMA poate fi controlat din 32 de surse, transferuri

DMA multiple pot fi efectuate în serie sau paralel.

Orice canal poate fi controlat de întreruperi venite din 32 de surse:

• 4 externe (IRQA, IRQB, IRQC şi IRQD),

• 22 de evenimente sosite de la periferice,

• 6 moduri "sfârşit de transfer pe canalul A declanşează transferul pe canalul

B".

Ultimele 6 moduri sunt folositoare în cazul în care 2 transferuri

trebuiesc efectuate secvenţial, adică un canal DMA efectuează un transfer,

timp în care celuilalt canal i se setează toţi parametrii necesari pentru un al

doilea transfer.

Când primul transfer s-a efectuat, începe al doilea, iar primul DMA este

setat pentru un nou transfer programat să înceapă când al doilea canal DMA

termină transferul.

Page 43: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 115

EXEMPLU: Compresia imaginilor color

În televiziunea în culori fiecare pixel este reprezentat prin 3 octeţi

corespunzători culorilor roşu, verde, albastru.

În sistemul PAL reprezentarea RGB este transformată într-o

reprezentare YUV în care Y este luminanţa iar U si V sunt componentele de

crominanţă, conform ecuaţiilor:

Y = 0.299*R + 0.587*G + 0.114*B

U = (B – Y) / 2.03

V = (R – Y) / 1.14

Folosind sistemul YUV se poate ajunge la o compresie de 50% fără a

se reduce calitatea imaginii.

Datele sunt stocate conform standardului MPEG în cuvinte de 16 biţi

conform următoarei hărţi de memorie:

ADRESA DATA

000000 Y00, Y01

000001 Y02, Y03

000002 U0, V0

000003 Y10, Y11

000004 Y12, Y13

000005 U1, V1

Aplicaţii ale procesoarelor de semnal în comunicaţii116

Y00 Y01

Y02 Y03

U0 V0

Y10 Y11

Y12 Y13

U1 V1

Y20 Y21

Y22 Y23

U2 V2

Y30 Y31

Y32 Y33

Memoriasistemului

Y00 Y01

U0 V0

Y10 Y11

U1 V1

Y20 Y21

U2 V2

Y30 Y31

Memoria video(o linie de imagine)

Primul canal DMA transferă datele din Y00, Y01 deoarece acestea

diferă de structura celorlalte.

Al doilea canal DMA este declanşat de primul şi transferă din 2D în

liniar când DCOL=1 (o incrementare şi un salt).

Priorităţi între canale

Fiecare canal DMA are un nivel de prioritate definit de biţii DPR1,

DPR0 din DCR al canalului respectiv. Nivelul poate fi 0, 1, 2 sau 3.

Prorităţile sunt necesare deoarece un singur canal DMA poate efectua

un transfer într-un ciclu de ceas deoarece există o singură magistrală DMA de

adrese (DAB).

În cazul în care canalele DMA active au priorităţi diferite atunci

canalul cu prioritatea cea mai mare efectuează transferul, celelalte canale

aşteaptă.

Page 44: - FAMILIA 56300 - CAPITOLUL 3 procesor Motorola 56300.pdf · pentru aplica ţ ii DSP cum ar fi: ... iunea MAC). Capitolul 3 – Procesoarele DSP Motorola 56300 39 Dac ă se folose

Capitolul 3 – Procesoarele DSP Motorola 56300 117

Dacă sunt două canale active cu aceeaşi prioritate se foloseşte o

metodă în care fiecare canal transferă cate un cuvânt periodic. Acest

algoritm denumit "round-robin" nu asigură că numărul de cuvinte transferate

de canalul A este egal cu cele transferate de B în acelaşi timp. Aceasta

deoarece un al treilea canal cu o prioritate mai mare poate interveni, iar

sistemul nu îşi aminteşte care canal a efectuat ultimul transfer înainte de

intervenţie.

EXEMPLU:

0 0 0 1 0 1 2 2 2 3 2 3 4 4 4 4 4 2 3 5 2 3 5 2 3 5 3 5 3 5 3 5 5 5 0 1 0 1 0 1 1 1 1

↑ ↑ ↑ ↑ ↑ ↑ ↓ ↓ ↓ ↓ ↓ ↓

Sta

rt C

h0

Sta

rt C

h1

Sta

rt C

h2

Sta

rt C

h3

Sta

rt C

h4

Sta

rt C

h5E

nd C

h4

End

Ch2

End

Ch3

End

Ch5

End

Ch0

End

Ch1

Round robin

În acest exemplu:

• Canalele 0 şi 1 au prioritatea 0

• Canalele 2, 3 şi 5 au prioritatea 1

• Canalul 4 are prioritatea 2.

Modul de transfer continuu

Un canal DMA poate lucra în modul continuu dacă bitul DCON din

registrul de control al canalului respectiv este setat.

Celelalte canale cu aceeaşi prioritate nu pot interveni până când nu se

termină transferul unui bloc întreg sau a unei linii.

Canalele cu prioritate mai mare întrerup transferul canalului chiar

dacă acesta este în modul continuu.

Aplicaţii ale procesoarelor de semnal în comunicaţii118

EXEMPLU:

0 0 0 1 0 1 2 2 2 3 2 3 4 4 4 4 4 2 3 5 5 5 5 5 5 5 5 2 3 2 3 3 3 3 0 1 0 1 0 1 1 1 1

↑ ↑ ↑ ↑ ↑ ↑ ↓ ↓ ↓ ↓ ↓ ↓

Sta

rt C

h0

Sta

rt C

h1

Sta

rt C

h2

Sta

rt C

h3

Sta

rt C

h4

Sta

rt C

h5E

nd C

h4

End

Ch5

End

Ch2

End

Ch3

End

Ch0

End

Ch1

Modul continuu

În acest exemplu

• canalele 2, 3 şi 5 au prioritatea 1;

• canalul 5 este setat în modul continuu.