You are on page 1of 16

Laborator 1 Utilizarea procesoarelor Motorola 56300 1

LABORATOR 1. UTILIZAREA PROCESOARELOR DIN


FAMILIA MOTOROLA 56300

1.1 Utilizarea simulatorului/debuggerului

Interfaa grafic a simulatorului conine meniuri, ferestre i butoane pentru


comenzile mai des utilizate.
La pornirea simulatorului trebuie:
Selectat i configurat procesorul DSP utilizat;
Selectat calea de acces la fiierele cu care se lucreaz;
Deschise o serie de ferestre pentru vizualizarea memoriei de date, a
programului dezasamblat, a registrelor interne etc.
Date alte comenzi sau setri funcie de programul ce urmeaz a fi
simulat.

1.1.1 Selectarea i configurarea DSP-ului utilizat

Se face n meniul MODIFY-DEVICE.


Selectarea device-ului curent se face n
sub-meniul SET DEFAULT prin alegerea din
list. n general Dv0 este folosit.
Acesta trebuie configurat n sub-meniul
CONFIGURE:
2 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

TYPE - Care DSP este utilizat


ON - Device-ul e activat
OFF - Device-ul e suspendat
Selecteaz temporar
device-ul REMOVE - Device-ul e
care va fi dezactivat
configurat

Tipul de DSP utilizat

1.1.2 Setarea directorului de lucru

Se face n meniul FILE-PATH.


Pentru fiecare device selectat ca
mai sus, SET seteaz directorul curent
(sau de lucru) care va fi folosit pentru
orice operaie cu fiiere.
ADD selecteaz alte ci
alternative unde se pot afla fiiere de lucru.

Directorul
curent
(selectat)

Selecteaz Listez directoarele


directorul aflate la un nivel
curent superior
Laborator 1 Utilizarea procesoarelor Motorola 56300 3

1.1.3 ncrcarea programelor

Se face cu comanda LOAD-MEMORY COFF


Fiierele cu extensia cld se pot ncrca
n memoria de program a DSP-ului i pot fi
executate.

Deschiderea ferestrelor de program, memorie, registre etc.


Se face n meniul WINDOWS. Acesta ofer accesul la ferestrele care
permit monitorizarea i controlul dezvoltrii programelor. Aceste ferestre
afieaz informaii cum ar fi coninutul registrelor i a memoriei i sunt
actualizate automat la fiecare pauz n execuie.

Urmrirea execuiei programului dezasamblat


Se face n fereastra ASSEMBLY.
Se pot seta / dezactiva / terge breakpointuri. Se pot edita
instruciunile.
Se poate ajusta Codul binar Operanzii sunt decodificai i
dimensiunea coloanei dezasamblat interpretai ca referine la
simboluri
Urmtoarea
instruciune este
marcat cu rou
Adresa de unde se
ncepe afiarea. Pot
fi folosite nume de
fiiere, numere de
linii, etichete sau
Dublu-click pe adrese
adres sau
etichet seteaz Sunt afiate Se pot edita instruciunile
sau terge un etichetele liniilor printr-un click. Enter
breakpoint. de program salveaz modificarea.
4 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

1.1.4 Afiarea coninutului registrelor interne

Se face n fereastra REGISTER. Pot fi afiate registrele


nucleului (registre de adrese, ALU, PC etc.) sau registrele altor
periferice.
Pentru a schimba coninutul unui registru se poate da un click pe registru,
iar valoarea editat se salveaz cu Enter.

1.1.5 Afiarea coninutului memoriei

Meniul WINDOWS-MEMORY permite deschiderea


unor ferestre care afieaz zone diferite din spaiul de memorie.
Pot fi afiate memoria de date x, y sau de program p, etc.
Coninutul
Spaiul de
memoriei n
memorie afiat
formatul curent

Click pentru
editare.
Enter schimb
valoarea

Valoarea editat
trebuie dat n
formatul curent

1.1.6 Schimbarea formatului de reprezentare a numerelor


Meniul MODIFY-RADIX-SET
DISPLAY specific formatul folosit cnd
sunt vizualizai regisrele sau memoria.
Fiecare registru sau locaie de memorie
poate avea propriul format de reprezentare
(zecimal, hexazecimal, fracionar sau binar).
Laborator 1 Utilizarea procesoarelor Motorola 56300 5

Selecteaz
Alege spaiul de
formatul memorie
care va fi
utilizat Adresa de
nceput

Selecteaz
Adresa de
unul sau
sfrit
mai multe
registre (cu
Schimbarea formatului poate fi aplicat unor
CTRL)
registre i unei zone de memorie simultan

1.2 Exemple de reprezentare a datelor

1.2.1 Reprezentarea numerelor ntregi fr semn pe 4 bii

Zecimal Hexazecimal Binar


0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
6 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

1.2.2 Reprezentarea numerelor ntregi cu semn n complement fa de 2

Bitul cel mai semnificativ (MSB) este bitul


2 B 2 B 1 20
de semn S. Ceilali bii reprezint puteri ale lui 2.
S NTREG . B 1
B B-1 0 i = 2 B s + 2i bi (1.1)
i =0
Virgula
zecimal
Mai jos este dat un tabel pentru reprezentarea
n complement fa de 2 pe B + 1 = 4 bii.

Zecimal Binar
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
-8 1000
-7 1001
-6 1010
-5 1011
-4 1100
-3 1101
-2 1110
-1 1111

Exemplu: 0011 = 23 0 + ( 20 1 + 21 1 + 22 0 ) = 3

Reprezentarea binar n complement fa de 2 a numerelor negative se


poate obine i pornind de la numrul binar pozitiv prin negarea biilor i
adunarea lui 1 la bitul cel mai puin semnificativ.

Exemplu: 3 = 0011 + 1 = 1100 + 1 = 1101


Laborator 1 Utilizarea procesoarelor Motorola 56300 7

1.2.3 Reprezentarea numerelor fracionare cu semn n complementul lui 2

Bitul de semn S este tot MSB. Ceilali bii


20.21 2 B
reprezint puteri negative ale lui 2.
S. FRACIE B

B B-1 0 f = 20 s + 2 i bB i (1.2)
i =1

Virgula Mai jos este dat un tabel pentru reprezentarea


zecimal
fracionar n complement fa de 2 pe B + 1 = 4 bii.

Fracionar Binar Hexa


0 0000 0
0.125 0001 1
0.250 0010 2
0.375 0011 3
0.500 0100 4
0.625 0101 5
0.750 0110 6
0.875 0111 7
-1 1000 8
-0.875 1001 9
-0.750 1010 A
-0.625 1011 B
-0.500 1100 C
-0.375 1101 D
-0.250 1110 E
-0.125 1111 F

O formul de calcul a numrului fracionar pornind de la reprezentarea


binar se poate obine mprind numrul ntreg i corespunztor reprezentrii
binare n complement fa de 2 pe B + 1 bii la 2 B :
i B B 1
B B 1 B
f = B = 2 s + 2 bi 2 = 2 s + 2 bi = 2 s + 2 k bB k (1.3)
i 0 iB 0

2 i =0 i =0 k =1

Exemplu: 0.375 = 0011 = 3/ 23 = 3/ 8


0.750 = 1010 = (6) / 23 = 1 + 2 / 8
8 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

Invers, reprezentarea binar corespunztoare numrului fracionar dat se


poate obine nmulind numrul fracionar cu 2 B i reprezentnd n complement
fa de 2 cu semn partea ntreag a rezultatului:
Exemplu: 0.375 23 0.375 = 3 = 0011
0.750 23 ( 1 + 0.25 ) = 8 + 2 = 1010

Observaii:
Nu orice numr fracionar poate fi reprezentat pe un numr finit de bii.
De exemplu numrul 0.3 reprezentat pe B + 1 = 4 bii este reprezentat
trunchiat:
0.3 23 0.3 = 2.4 = 0010 = 0.25
Valoarea maxim de reprezentare a unui numr fracionar este 1 (n
modul). Astfel la adunare (sau scdere) se poate depi formatul de
reprezentare (overflow):
0.75+ 0110+
0.50 0100
1.25 1010 = 0.75
Laborator 1 Utilizarea procesoarelor Motorola 56300 9

1.3 Prezentarea arhitecturii DSP56300 i a blocurilor funcionale

n figura 1.1. este prezentat schema bloc a procesorului DSP56311.


Unitatea central (nucleul) procesorului conine:
Unitatea aritmetico logic de date (Data ALU),
Unitatea de generare a adreselor (AGU),
Unitatea de control a programului (PCU),
Unitatea de acces direct la memorie (DMA).
Memoria intern mprit n trei zone:
Zona memoriei de program (P),
Dou zone de memorie de date (X i Y).
Perifericele i Coprocesorul de filtrare (EFCOP)

Figura 1.1. Sschema bloc a procesorului DSP56311


10 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

1.4 Unitatea aritmetico-logic pentru date (DALU)

X DATA BUS

Y DATA BUS

P DATA BUS

24 24

X0

X1
OPERAND IMEDIAT
Y0

Y1

24 24

MUX MULTIPLICARE
56

REGISTRE PIPELINE REGISTRE PIPELINE REG PIPELINE

48
UNITATEA PRELUCRARE
PE BIT I DE IFTARE

UNITATEA DE 56
ACUMULARE
I ROTUNJIRE
56

56

IFTARE A(56)

ACUMULATOR B(56)

56 56 56 56

IFTARE/LIMITARE

24

24

Figura 1.2. Schema bloc a unitii aritmetice i logice pentru date (DALU)
Laborator 1 Utilizarea procesoarelor Motorola 56300 11

Pentru programator sunt accesibile urmtoarele registre ALU:

DAT A ALU
X REGISTRE DE INT R ARE Y
47 0 47 0
X1 X0 Y1 Y0
23 0 23 0 23 0 23 0
DAT A ALU
REGISTRE ACUM UL ATO R
A B
55 55
* A2 A1 A0 * B2 B1 B0
23 7 0 23 0 23 0 23 7 0 23 0 23 0
*Citii ca bii de extensie de sem n.

Figura 1.3. Modelul programatorului pentru DALU

Procesorul folosete reprezentarea fracionar n complement fa de doi


cu semn a datelor pentru toate operaiile ALU. Instruciunile de adunare, scdere
i nmulire sunt:
ADD S,D S+DD
S - sursa: registru: B/A,X,Y,X0,Y0,X1,Y1
valoare imediat: #$xx, #$xxxxxx
D - destinaia: acumulator: A/B

SUB S,D DS D
S - sursa: registru: B/A,X,Y,X0,Y0,X1,Y1
valoare imediat: #$xx, #$xxxxxx
D - destinaia: acumulator: A/B

MPY ()S1,S2,D S1 S 2 D
S1, S2 - surse: registre: X0,Y0,X1,Y1
D - destinaia: acumulator: A,B
MPY ()S,#n,D S 2n D
S - sursa: registre: X0,Y0,X1,Y1
#n valoare imediat <24
D - destinaia: acumulator: A,B
12 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

n cazul nmulirii cu o constant (operand aflat n cmpul instruciunii) se


folosete:
MPYI ()#xxxxxx,S,D # xxxxxx S D
S - sursa: registre: X0,Y0,X1,Y1
#xxxxxx valoare imediat pe 16 bii
D - destinaia: acumulator: A,B

O instruciune special este nmulirea cu acumulare. La valoarea


existent n acumulator se adun rezultatul nmulirii.
MAC ()S1,S2,D D S1 S 2 D
S1, S2 - surse: registre: X0,Y0,X1,Y1
D - destinaia: acumulator: A,B

Tot n cadrul ALU de date se pot face deplasri (shiftri) ale valorii aflate
n acumulator. Exist deplasare aritmetic i deplasare logic. Deplasarea
aritmetic nseamn c se pstreaz informaia de semn, spre deosebire de
deplasarea logic unde se realizeaz o deplasare a tuturor biilor. Deplasarea la
stnga cu un bit nseamn nmulirea cu 2, deplasarea la dreapta cu un bit
nseamn mprire la 2. Deplasarea cu B bii nseamn nmulirea (sau
mprirea) cu 2 B .

ASL D deplasare aritmetic la stnga cu un bit


ASL #ii,S,D deplasare aritmetic la stnga cu #ii bii
ASL S1,S,D deplasare aritmetic la stnga numrul de bii
specificai n S1
S - sursa: acumulator: A,B
D - destinaia: acumulator: A,B
S1 registru control X0,X1,Y0,Y1,A1,B1
#ii ntreg fr semn pe 6 bii ntre 0 i 40.
Laborator 1 Utilizarea procesoarelor Motorola 56300 13

Sintaxa este similar pentru instruciunea ASR reprezentnd deplasarea


aritmetic la dreapta.

Pentru transferul imediat al datelor direct n registrele ALU se folosete


instruciunea MOVE. Adresarea imediat este specificat cu caracterul #.

MOVE S,D
S - sursa: valoare cu semn pe 8 bii: #$xx
valoare cu semn pe 24 bii: #$xxxxxx
D - destinaia: registru: X,Y,X0,Y0,X1,Y1
acumulator: A,B,A0,A1,B0,B1

Formatul de reprezentare al operanzilor din instruciunea MOVE poate fi:


Hexazecimal #$a5
Fracionar #0.5
Binar #%1101
n funcie de precizia operandului exist dou situaii:
#< Adresare imediat scurt pentru operanzi pe 8 bii. Datele sunt scrise
n registrul destinaie, aliniate la stnga (n primii 8 MSB).
#> Adresare imediat lung pentru operanzi pe 24 de bii. Datele sunt
scrise n registrul destinaie, aliniate la dreapta.

De exemplu:
move #$6,x0
Valoarea $6 este considerat pe 8 bii i este echivalent cu:
move #<$6,x0 Registrul x0 va fi: $ 060000
Dac vrem s form reprezentarea numrului 6 pe 24 de bii se folosete:
move #>$6,x0 Registrul x0 va fi: $ 000006
n al doilea caz instruciunea MOVE ocup dou cuvinte n memoria de
program.
14 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

1.4.1 Adunarea i nmulirea numerelor fracionare

Exerciiul 1:
S se adune numerele 0.75 i 0.25.

Reprezentate hexazecimal n complement fa de 2 pe 24 de bii numerele


devin: 0.75 $600000 i 0.25 $200000.
Programul este urmtorul:

move #>$600000,x0 ; 0.75 este ncrcat n registrul x0


move #>$200000,a ; 0.25 este ncrcat n acumulatorul a
add x0,a ; a = a + x0.

Pentru rularea programului direct n simulator trebuie urmate etapele:


setat device-ul 56311.
deschise ferestrele ASSEMBLY i REGISTER (CORE).
se modific n format fracionar valorile afiate n registrele ALU (x0,
a, etc.) cu MODIFY-RADIX-SET DISPLAY.
n fereastra ASSEMBLY se scriu cele 3 instruciuni de mai sus
ncepnd de la adresa c00000.
pentru rularea programului registrul PC trebuie s aib valoarea
$c00000 (instruciunea curent).
se ruleaz instruciune cu instruciune apsnd pe butonul STEP.
se completeaz programul cu urmtoarele linii:
move a,y0
move a1,y1

Explicai diferenele.

Exerciiul 2:
S se modifice programul anterior pentru a aduna numerele -0.75 i 0.25.
De ce se modific registrul a2 dup efectuarea adunrii?
Laborator 1 Utilizarea procesoarelor Motorola 56300 15

Exerciiul 3:
S se nmuleasc numerele -0.5 i 0.25.

move #-0.5,x0 ; -0.5 este ncrcat n x0


move #0.25,y0 ; 0.25 este ncrcat n y0
mpy x0,y0,a ; a = x0*y0

1.4.2 nmulirea numerelor complexe

CR + jCI = ( AR + jAI ) ( BR + jBI )


Prile real i imaginar ale rezultatului se calculeaz astfel:
CR = AR BR AI BI
CI = AR BI + AI BR
Exerciiul 4:
S se efectueze nmulirea numerelor complexe 0.5 + j 0.2 i 0.4 + j 0.1:
Stabilii ce registre de date pot fi folosite pentru stocarea prilor reale i
imaginare ale operanzilor.
Se poate folosi instruciunea mac pentru un calcul mai eficient?
Verificai rezultatul: ( 0.5 + j 0.2 ) ( 0.4 + j 0.1) = 0.18 + j 0.13 .

1.4.3 Operaii aritmetice cu numere ntregi

Dei datele sunt reprezentate sub forma fracionar n registrele ALU,


DSP56300 poate efectua operaii cu ntregi. Aceasta deoarece rezultatele adunrii
i scderii sunt echivalente att pentru numerele fracionare ct i pentru
numerele ntregi. Totui, cnd este vorba de nmulire sau de mprire
reprezentarea numerelor fracionare difer de a numerelor ntregi. De exemplu,
pentru nmulirea numerelor ntregi, datele sunt aliniate la dreapta i virgula
16 APLICAII ALE PROCESOARELOR DE SEMNAL N COMUNICAII

zecimal este considerat la dreapta LSB. Deoarece rezultatul nmulirii este


aliniat la dreapta, rezult extensia la doi bii de semn cum se arat n figur.

NMULIREA NUMERELOR CU SEMN N x N > 2N 1 BII

INTREG FRACIONAL
S S S S

NMULIRE CU SEMN NMULIRE CU SEMN

S S MSP LSP S MSP LSP 0

REZULTAT 2N 1 REZULTAT 2N 1
EXTENSIE DE SEMN COMPLETARE CU ZERO
2N BII 2N BII

Figura 1.4. Diferena ntre nmulirea n format ntreg i fracionar

Pentru nmulirea numerelor fracionare, datele sunt aliniate la stnga,


cu virgula dup bitul de semn. Rezultatul nmulirii este de asemenea aliniat la
stnga i se adaug un zero la LSB pentru completarea celor 2N bii.
Rezultatul corect al nmulirii numerelor ntregi se obine prin deplasarea
(shiftarea) aritmetic la dreapta cu un bit a rezultatului nmulirii fracionare.

Exerciiul 5:
S se nmuleasc numerele 4 i 8.

move #>$000004,x0
move #>$000008,y0
mpy x0,y0,a ; a = x0*a0
asr a ; a = a/2

Schimbai formatul de reprezentare a lui a0 n zecimal i verificai rezultatul.

You might also like