Sunteți pe pagina 1din 9

Utilizarea aritmeticii distribuite n prelucrarea numeric a semnalelor

Din capitolul precedent a rezultat c filtrarea numeric presupune operaii de adunare i


nmulire cu constante. Procesoarele numerice de semnal efectueaz aceste operaii pe
rnd, utiliznd de regul o singur unitate aritmetic. Dac este nevoie de o vitez mai
mare, fiecare operaie din schem ar trebui realizat de cte o structur hardware
corespunztoare. Avem n acest caz o schem cu aritmetic concentrat, n sensul c
multiplicatoarele i sumatoarele sunt concentrate n anumite noduri ale reelei. Aceast
soluie presupune o mare complexitate hardware, n special din cauza nmulitoarelor.
Principiul aritmeticii distribuite permite realizarea unui compromis rezonabil ntre
complexitatea aritmetic i viteza de lucru, fiind soluia preferat de implementare n
cazul unor structuri de flexibile, cum sunt ariile logice programabile (FPGA), precum i
n cazul realizrii unor circuite specializate pentru anumite aplicaii (ASIC) .
Principiul aritmeticii distribuite
Dup cum s-a vzut realizarea unei filtrri numerice presupune efectuarea unei operaii
de tipul
N 1

y (n ) = a k x(n k )
k =0

pentru un filtru FIR, sau


y (n ) =

M 1

N 1

k =0

k =1

bk x(n k ) a k y(n k )

Oricare din cele dou formule presupune efectuarea unei sume de produse, n fiecare
produs un factor fiind constant (a k , bk ) , iar cellalt, variabil (x(n k ), y (n k )) .
Operaiile de mai sus pot fi reprezentate ca nite produse scalare, ntre un vector fix,
T
T
c = [c1 , c 2 ,K , c L ] i unul variabil, u = [u1 , u 2 , K , u L ] , adic
L

v = cT u = ck u k
k =1

Vom considera componentele vectorului u reprezentate cu virgul fix, n


complement fa de doi, pe B+1 bii,
B

u k = 2 u k(0 ) + 2 i u k(i ) , u k(i ) {0,1}


0

i =1

aa nct produsul scalar devine


L
B

v = ck 2 0 u k(0 ) + 2 i u k(i )
k =1
i =1

n aritmetica distribuit vom specula dou din caracteristicile produsului scalar de mai
sus:
Unul din operanzi este constant (c);
Cellalt este variabil, dar fiind reprezentat n virgul fix cu un numr finit de bii, ia
un numr finit de valori.
Acesta observaii vor conduce la posibilitatea utilizrii unor memorii i a renunrii la
nmulitoare.

Pentru c k dai, fiecare din termenii sumei este o funcie de B+1 variabile binare,
u k(i ) , i = 0,1,K , B . n consecin, fiecare termen al sumei poate lua un set finit de 2 B +1

valori ce pot fi stocate ntr-o memorie, avnd pe liniile de adres aplicate mrimile u k(i ) .
n acest fel nmulitoarele pot fi realizate cu ajutorul unor memorii, toate nmulirile fiind
realizate ntr-un singur tact, dup care urmeaz o arie de sumatoare. Capacitatea de
memorie necesar este de L 2 B +1 cuvinte. Cea mai rapid realizare se obine ns
cumulnd n memorie i operaiile de adunare. Acest lucru se realizeaz simplu,
observnd c v este de fapt o funcie de L(B + 1) variabile binare, deci poate lua valori
ntr-o mulime finit de 2 L ( B +1) elemente. Altfel spus, toate rezultatele posibile pot fi
stocate ntr-o memorie, cu 2 L ( B +1) cuvinte, avnd pe liniile de adres
u k(i ) , i = 0,1, K, B, k = 1, K , L .
Oricare din cele dou variante de mai sus presupune o memorie necesar de o
capacitate foarte mare n cazul unor filtre de lungime mare. Principiul aritmeticii
distribuite permite realizarea unui compromis ntre viteza de lucru i complexitatea
schemei, exprimat n special prin memoria necesar.
Vom rescrie expresia lui v sub forma
L

k =1

i =1

k =1

v = 2 0 c k u k(0 ) + 2 i c k u k(i )
Dar

c u ( ) = F (u ( ) , u ( ) ,K, u ( ) ) = F (u ( ) )
L

k =1

unde

i
k

i
2

u (i ) = u1(i ) , u 2(i ) , K , u L(i )


aa nct

( )

i
L

( )

v = 2 0 F u ( 0 ) + 2 i F u ( i )
i =1

( )

(1)

Funcia F u (i ) depinde ns de L argumente binare, aa nct toate valorile ei pot


fi stocate ntr-o memorie cu 2 L cuvinte.
O schem de realizare a produsului scalar este dat n figura 1.
Blocurile notate cu P/S sunt registre de deplasare care realizeaz conversia paralel serie.
Biii ce constituie cuvintele u k sunt generai pe rnd n B+1 tacte, ncepnd cu bitul cel
mai puin semnificativ. Vom nota cu TB , TB 1 , K , T0 aceste tacte. Ansamblul notat cu UP
este o unitate de prelucrare, avnd drept intrri L argumente binare i funcionnd n B+1
tacte. n primul tact (TB ) are loc ncrcarea paralel a operanzilor variabili nregistrele
P/S, cu bitul cel mai puin semnificativ n dreapta. n urmtoarele B tacte registrele
efectueaz deplasare serie spre dreapta. Blocul notat este o unitate aritmetic; ea
efectueaz adunarea sau scderea operanzilor, A B , n funcie de semnalul A / S .
Unitatea efectueaz scdere numai n ultimul tact, deci A / S = T0 . Blocul notat 2 1
realizeaz mprirea cu doi (deplasare spre dreapta cu o unitate, cu copierea bitului de
semn pe poziia cea mai semnificativ). R1, R2 i R3 sunt registre de memorie. n R3

este memorat valoarea 0 care este selectat de multiplexorul MUX n primul tact, TB , ca
operand pentru sumator. R1 stocheaz ieirea unitii aritmetice dup fiecare tact, deci
dup primul tact, F u ( B ) , dup al doilea, F u ( B 1) + 2 1 F u ( B ) , dup al treilea
F u ( B 2 ) + 2 1 F u ( B 1) + 2 2 F u ( B ) i aa mai departe. n registrul R2 se stocheaz
rezultatul final. Schema prezentat necesit o memorie de 2 L cuvinte i realizeaz
calculul produsului scalar n B+1 tacte. Fie Te perioada tactului. Pe durata unui tact se
realizeaz o citire din memorie, o operaie de adunare/scdere i o stocare ntr-unul din
registrele R1 sau R2. n consecin, Te este limitat inferior, Te t ACC + t C + t R , unde t ACC
este timpul de acces al memoriei, t C este timpul necesar unitii aritmetice, iar t R timpul
de propagare al registrului R1/2. Timpul total pentru calculul unui produs scalar este deci
t t = (B + 1)Te (B + 1)(t ACC + t C + t R ) .

u2

u1
P/S

( )
)
( )

(i )

u1

P/S

. . .
(i )

u2

( )

uL
P/S

(i )

UP

TB

uL

R3
M
U
X

MEM

( )

F u (i )

B
A/S

2 1

R1
R2

v
Fig. 1
Metod de reducere a memoriei
Vom prezenta n continuare o modalitate de reducere la jumtate a memoriei.
Evident, putem scrie
L
1
1 L
1 L
v = (v ( v )) = v = c k u k c k ( u k ) = c k (u k ( u k ))
2
2 k =1
k =1
2 k =1

Dar n aritmetica n complement fa de 2,


B

u k = 2 0 u k(0 ) + 2 i u k(i ) + 2 B
k =1

unde supralinierea reprezint negare logic a variabilei


wk(i ) = u k(i ) u k(i ) , i = 1, K, B, wk(0 ) = u k(0 ) u k(0 )
i rezult
L
L
1 L B
1
1
B
v = c k 2 i wk(i ) 2 B = 2 i c k wk(i ) 2 B c k
2 k =1 i =0
k =1 2
k =1 2
i =0
Vom nota

binare.

Vom

nota

w (i ) = w1(i ) , w2(i ) , K , wL(i )


i vom introduce funciile
L
L
1
1
G w (i ) = c k wk(i ) , G (0 ) = c k
k =1 2
k =1 2
aa nct rmne
T

( )

( )

v = 2 i G w (i ) + 2 B G (0)
i =0

S observm ns c noile variabile se bucur de proprietatea


wk(i ) { 1,1}, i = 0, K , B, k = 1, K , L

( )

( )

i c G w (i ) = G w (i ) . n consecin, funciile G w (i ) pot lua 2 L valori, ntre care


2 L 1 valori absolute distincte, restul fiind opusele primelor. Dar
wk(i ) , v1(i ) = 0
(i )
(i )
(i )
(i )
v1 v k v1 v k = (i )
(i )
wk , v1 = 1

L
L
1
1
1
1

Dac v1(i ) = 0 , G w (i ) = c1 + c k wk(i ) = c1 + c k v1(i ) v k(i ) v1(i ) v k(i )


2
k =2 2
k =2 2
2

( )

Notnd s k(i ) = v1(i ) v k(i ) , k = 2, K , L i s (i )


acest caz,
L
1
1
G w (i ) = Q s (i ) = c1 + c k s k(i ) s k(i )
k =2 2
2

( )

( )

Dac v1(i ) = 1 ,

= s 2(i ) , K , s L(i )

, i = 0,K , B , observm c n

L
L
1
1
1
1

c1 + c k wk(i ) = c1 + c k wk(i ) =
2
k =2 2
k =2 2
2

L
L
1
1
1
1

= c1 + c k v1(i ) v k(i ) v1(i ) v k(i ) = c1 + c k s k(i ) s k(i ) = Q s (i )


k =2 2
k =2 2
2
2

( )

G w (i ) =

( )

Schema corespunztoare este dat n figura 2. n memorie se stocheaz cele 2 L 1 valori


ale funciilor Q s (i ) , deci capacitatea memoriei se njumtete. n registrul R3 se afl

( )

( )

valoarea niial G(0). n primul tact, TB , sumatorul efectueaz operaia Q s ( B ) + G (0 ) .


n al doilea tact, TB 1 , se calculeaz Q s ( B 1) + 2 1 Q s ( B ) + G (0 ) i aa mai departe.

u2

u1

. . .

( ( )

uL
UP

P/S

(i )

u1

P/S

u 2(i )

P/S

TB

u L(i )

R3

s 2(i )
.
.
.

M
U
X

MEM
s L(i )

( )

Q s (i )
T0

A/S

2 1

R1
R2

v
Fig. 2

Realizarea unui compromis ntre vitez i capacitatea memoriei


n schemele precedente, se prelucra n fiecare tact cte un singur bit provenit de la
fiecare din argumente. De aceea, calculul unui produs scalar necesita B+1 tacte
elementare. Vom da n continuare o metod n care se prelucreaz mai muli bii n
fiecare tact.
Vom porni de la relaia (1) n care pentru uniformitate vom scrie
B

( )

v = 2 i sgn (i )F u (i )
i =0

unde
1, i = 0
sgn (i ) =
1, i > 0
i vom exprima indicele de nsumare sub forma
B +1
B +1
i=
r + s, r = 0, K , D 1, s = 0, K,
1
D
D

iar D este un divizor al lui B+1. Expresia devine


B +1
1
D 1 D

v=

B +1
r
D

r =0 s =0

D 1

= 2

B +1
B +1 D 1
r
D

r =0

s =0

B +1

B +1
D r + s
2 sgn
r + s F u
=

B +1

B +1
r+s
2 s sgn
r + s F u D

Se observ ns imediat c suma


vr =

B +1
1
D

s =0

B +1

B +1
D r + s
2 sgn
r + s F u
, r = 0, K , D 1

reprezint
(s )

ur = u
v0 =

B +1

r+s

B +1
1
D

2
s =0

v1 =

operaie

de

tipul

(2)

aplicat

unor

cuvinte

de

B +1
D

bii

, r = 0,K , D 1 ,

( )

sgn (s )F u (0s )

B +1
1
D

s =0

( )

F u1( s )

v D 1 =

B +1
1
D

2
s =0

F u (Ds) 1

Fiecare din aceste D expresii poate fi calculat cu ajutorul schemei din figura 1 sau din
figura 2. Se observ c exceptnd prima expresie, nu mai este necesar comutarea
sumatorului pe scdere.
Rezultatele sunt apoi nmulite cu diferite puteri ale lui 2 1 , ceea ce presupune nite
simple deplasri i se adun,
D 1

v = 2
r =0

B +1
r
D

vr

O schem bloc este dat n Fig. 3. Blocurile notate cu UP sunt uniti de prelucrare
realizate pe baza schemelor din figura 1 sau 2. Fiecare din registrele de deplasare de B+1
bii care realizeaz serializarea, P/S, din schemele precedente se nlocuiete cu cte un
B +1
B +1
bloc de D asemenea registre de
bii. Unitile de prelucrare lucreaz pe
bii,
D
D
B +1
deci sunt necesare
tacte elementare pentru calculul variabilelor v r . Sumatorul de D
D
cuvinte de la ieirea schemei este n realitate un bloc de sumatoare de cte dou cuvinte.
D
Practic, ieirile unitilor de prelucrare se grupeaz n
perechi care se nsumeaz. Pe
2

D
D
ieiri obinute n primul nivel se grupeaz n
perechi care
2
4
se nsumeaz i aa mai departe.

un al doilea nivel, cele

u 0(i,1)
P/S
0.1

u1(,i1)

P/S
1.1

u1

.
.
.

.
.
.

UP0

.
.
.

UP1

v0

v1
2

B =1
D

u D(i )1,1

P/S
D-1.1

.
.
.

.
.
.

u 0(i,)L
P/S
0.L
0.1

uL

u1(,iL)

P/S
1.L
.
.
.

u D(i )1, L

.
.
.

UPD-1

P/S
D-1.L
Fig. 3

v D 1
2

( D 1)

B =1
D

Vor rezulta n total log 2 D nivele de nsumare, unde x este cel mai mic
ntreg mai mare sau egal cu x. Va rezulta un timp total de prelucrare

tt =

B +1
Te + log 2 D .
D

Memoria necesar unei uniti elementare este de 2 L cuvinte dac se folosete


schema din figura 1 sau de 2 L 1 cuvinte n cazul schemei din figura 2, rezultnd o
memorie total de D 2 L sau D 2 L 1 cuvinte deci de D ori mai mare dect n cazurile
precedente. Durata unui tact elementar este limitat inferior de aceleai elemente ca n
schema din figura 1. Dac cel de-al doilea termen din expresia de mai sus este neglijabil
n raport cu primul, se obine o reducere a de D ori a timpului de prelucrare.
mai mare ca n schemele precedente.
Cazurile extreme sunt D=1 i D=B+1. n cazul D=1 se obine schema din figura 1
sau aceea din figura 2, care necesit un timp t t = (B + 1)Te i o memorie de 2 L sau 2 L 1
cuvinte. n cazul D=B+1, vor exista B+1 uniti de prelucrare de cte un bit fiecare.
Timpul de lucru este t t = Te + log 2 (B + 1)t C , deci calculul se face ntr-un tact, dar
memoria necesar este de (B + 1)2 L sau (B + 1)2 L 1 cuvinte.
Este posibil eliminarea ariei de sumatoare cu preul mririi memoriei. Observnd c
ansamblul de D uniti de prelucrare primete n fiecare tact un numr de LD argumente
binare, acesta poate fi nlocuit cu o singur unitate avnd o memorie de 2 LD sau
B +1
2 ( L 1)D cuvinte. n acest fel, timpul de prelucrare se reduce la t t =
Te .
D
Spre deosebire de schemele din figurile 1-2, care prelucrau un bit/tact, schema din
figura 3 lucreaz cu D bii/tact.
Exemplu
Vom prezenta realizarea unui filtru IIR cu funcia de transfer
b0 + b1 z 1 + b2 z 2
H (z ) =
1 + a1 z 1 + a 2 z 2
Va trebui deci realizat operaia
2

k =0

k =1

y (n ) = bk x(n k ) a k y (n k )
Este un produs scalar ntre vectorul constant
T
c = [b0 , b1 , b2 , a1 , a 2 ]
i vectorul variabil
T
u = [x(n ), x(n 1), x(n 2), y (n 1), y (n 2)]
n figura 4 este dat o schem de realizare pornind de la aceea din figura 1. Se
remarc faptul c grupul de registre de conversie paralel-serie se divizeaz n dou
grupuri. Primul grup conine eantioanele x(n ), x(n 1), x(n 2) . Dintre cele trei registre,
numai primul se ncarc paralel, pe tactul TB , grupul de registre funcionnd ca o linie de
ntrziere. Al doilea grup conine eantioanele y (n 1), y (n 2) . Primul din cele dou

registre ale grupului este ncrcat paralel, simultan cu registrul ce conine x(n ) .
Serializarea are loc n urmtoarele tacte.
Schema funcioneaz dup principiul n bit ntr-un tact, aa nct , dac se
lucreaz cu B+1=12 bii, timpul de prelucrare a unui eation este de 12Te . Memoria
necesar este de 2 5 = 32 cuvinte i poate fi redus la jumtate, dac se utilizeaz varianta
din schema 2.

x(n )
x (i ) (n )

P/S

P/S

x (i ) (n 1)

P/S

x (i ) (n 2 )

UP

TB
R3
M
U
X

MEM

P/S
y

(i )

(n 2)

( )

P/S
y

(i )

F u (i )

(n 1)

B
A/S

2 1

R1
R2
y (n )

Fig. 4