Sunteți pe pagina 1din 23

PROCESOARE NUMERICE

DE SEMNAL

CURS 4
Arhitectura procesoarelor
BlackFin.
Instruciuni ASM
Toma tefan-Adrian (cpt. dr. ing.)
Lector universitar (CS III)
Academia Tehnic Miltiar

Cuprins






Arhitectura procesoarelor BlackFin


Nucleul de calcul BlackFin, structur, regitri
Operaii numerice n ASM
Operaii de adresare n ASM

Micro Signal Architecture

Companii: Analog Devices i Intel


Optimizarea performanelor: vitez mare
de calcul i consum redus de putere
Model unificat de tip DSP i
microcontroler
Prelucrare semnale cu utilizatorul (de
interfa) i semnale de tip multimedia
(audio, video)
Management dinamic al puterii:
modificare frecven de lucru i nivel
tensiune

Familia BlackFin

Procesoare de tip embedded pentru semnale de tip


audio, video, comunicaii
Modele reprezentative :
BF535 350Mhz @ 1,6 V
BF 532, BF 533 i BF 561(dual core) 750 Mhz @1,45 V
(anul 2003)
BF 534, BF 536 i BF 537 - prezint suplimentar controler
de reea (Ethernet) integrat

Familia BlackFin

interfa paralel (PPI


Parallel Peripheral
Interface)
interfa serial (SPI
Serial Peripheral
Interface)
porturi seriale (SPORT
Serial Port)
circuite de temporizare de
uz general (timers)
porturi intrare/ieire de uz
general (GPIO)
controler DMA (Direct
Memory Access)

Familia BlackFin - Nucleul de calcul

Motor dual de
multiplicare i
acumulare (MAC)
Set de instruciuni RISC
(reduce-instructionset computer)
Capacitate de prelucrare
a semnalelor
multimedia

Familia BlackFin - Nucleul de calcul

Familia BlackFin - UAC


Dou multiplicatoare pe 16 bii;
Dou acumulatoare pe 40 bii (ACC0 i ACC1), fiecare compus
din (A0.L, A0.H), i respectiv (A1.L, A1.H) +
+ 8 bii de extensie (A0.X, A1.X);
Dou uniti aritmetice i logice (ALU) pe 40 de bii care
execut operaii de multiplicare/ acumulare;

Patru ALU pe 8 bii pt. semnale video, operaii de adunare,


scdere, funcii logice (AND, OR, XOR, NOT);
O unitate de deplasare pe 40 de bii (barrel shifter);
8 regitri de date (R0 R7) pe 32 bii sau 16 regitri pe 16 bii
independeni (R0.L R7.L i R0.H R7.H).

Operaii aritmetice n ASM

Adunare/scdere pe 16 bii
31

16

0
L

31
H

16

R1
0
R2

+
31

16
H

0
R3

R3.H = R1.L+R2.H (ns);

Adunare/scdere dual pe 32 bii

Operaii aritmetice n ASM


Adunare/scdere quad pe 16 bii

31

16

31

16

R1
R2

+ -

- +
R3

R3 = R1 +|-R2, R4 = R1-|+R2;

R4

Operaii aritmetice n ASM

Operaii logice pe 32 de bii:


R3=R1 & R2;
R3=R1 | R2;
R3= ~ R1;
R3=R1 ^ R2;

(operaie AND)
(operaie OR)
(operaie NOT)
(operaie XOR)

Operaii aritmetice n ASM


Operaie simpl pe 32 de bii
31

R1
R2

+
31

R3
R3 = R1+R2;

Operaii aritmetice n ASM


Operaie dual pe 32 de bii
31

31

R1

R1

R2

R2

R4
R3 = R1+R2, R4 = R1-R2;

R3

Operaii aritmetice n ASM


Operaii simple de multiplicare pe 16 bii
15

L
31

R1

16

R2

31

R3
R3 = R1.L*R2.H;

Operaii aritmetice n ASM


Operaii simple de multiplicare cu acumulare pe 16 bii
15

R1
R2

+
31

A0.H

A0.L

A0 += R1.L*R2.L;

Operaii aritmetice n ASM


Operaii duale de multiplicare cu acumulare pe 16
bii folosind 2 acumulatori
H

R1

R2

A0

A1

R3
31

16

R3.H=(A1-=R1.H*R2.H),R3.L=(A0+=R1.L*R2.L);

Familia BlackFin - UAA

Operaii aritmetice pentru generarea


adreselor
Adresarea se face la nivel de octet (Byte) n general
La nivel de cuvnt (16 sau 32 bii) : regitrii de
adresare (pointers): P0 P5
Unitatea de adresare conine:
DAG0 i DAG1 Data Address Generators (pot lucra
simultan)
Regitri adres de uz general pe 32 de bii (P0 P5);
Regitri pe 32 de bii pentru generare de adrese:

Regitri de tip index (I0-I3)


Regitri de modificare (M0-M3)
Regitri de adres a bazei (B0-B3)
Regitri de lungime a buffer-elor circulare
(L0-L3)

Operaii aritmetice pentru generarea


adreselor
Adresare indirect (little endian): ex. R0=[P0];

Operaii aritmetice pentru generarea


adreselor

Adresare indirect cu acces al datelor pe 8 i 16 bii


R0 = W[P0] (z); R0 are valoarea 0x0000 A114.
R0=B[P0] (z); R0 are valoarea 0x0000 0014
Adresare cu post modificare
R0=[P0++]; P0 are valoarea 0XFF8 0004.
!!! Incrementarea se realizeaz n funcie de tipul de date transferate
!!!

Operaii aritmetice pentru generarea


adreselor
Buffer circular: 0xFF80 0000 - 0xFF80 002B (44 octei
sau 11 cuvinte pe 32 bii)
Iniializri:
registrul de baz B0=0xFF80 0000;
registrul de index iniializat cu aceeai valoare I0=0xFF80 0000;
lungimea buffer-ului circular L0=44;
registrul de modificare M0=16; octei (4 cuvinte)

Operaii aritmetice pentru generarea


adreselor
Se efectueaz 4 accesri ale buffer-ului circular:

R0= [I0++M0];
R1= [I0++M0];
R2= [I0++M0];
R3= [I0++M0];
R3= [I0++M0];

// Acces 1
// Acces 2
// Acces 3
// Acces 4
// Acces 5