You are on page 1of 63

5 Curso-Tratamiento Digital de Seal

Implementacin de Filtros Digitales

17/11/99

Realizacin de Filtros Digitales


Efectos de Cuantizacin
Implementacin Hardware de Filtros Digitales
Digital Signal Processors (DSP)

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Hay dos formas de realizar filtros digitales: Software o


Hardware. En los dos casos deberemos hacer un diagrama con
las operaciones a realizar. En software se habla de un
diagrama de flujo, mientras que en hardware es un diagrama
de bloques, que especifica los elementos del circuito y sus
interconexiones.
Una correcta eleccin del diagrama de bloques puede optimizar significativamente las prestaciones de la realizacin
(tiempo de computacin, memoria necesaria, minimizar los
efectos de cuantizacin, etc).

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Veamos algunas propiedades de los diagramas de bloques

17/11/99

Conexiones en cascada: La funcin de Transferencia global de una


conexin en cascada es el producto de las funciones de Transferencia
individuales.
Conexiones en paralelo: La funcin de Transferencia global de una
conexin en paralelo es la suma de las funciones de Transferencia
individuales.
Conexin en realimentacin: La salida se realimenta en la entrada
directamente o a travs de otros subsistema. La funcin de
Transferencia global viene dada por la relacin (ver figura):
G( z )
H T (z ) =
1 + G( z ) H ( z )

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


H1

H2

H 1H 2

Conexin de dos sistemas en Cascada

H1

H 1+ H 2

H2
Conexin en paralelo de dos sistemas

G
-

G
1+GH

H
Un sistema sencillo con realimentacin

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Los filtros digitales pueden realizarse usando elementos correspondientes a las operaciones de multiplicacin, adicin y
almacenaje de datos.
El almacenaje de un dato significa retrasar su uso una cantidad normalmente igual al periodo de muestreo. Este retraso se
representa mendiante z-1 (retraso de una unidad), z-2 (dos
unidades, etc).
x[n]

Ax[n]

Elemento Multiplicador

x[n]

z -1

x[n]

x[n-1]

Elemento Almacenador

x[n]y[n]

+
y[n]
Elemento Sumador

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Filtros FIR (MA): Son filtros no recursivos cuya funcin de Transferencia


HMA(z) y su correspondiente ecuacin diferencia y[n] son de la forma,
H MA (z ) = B0 + B1 z 1 ++ BM z M
y[n] = B0 x[n] + B1 x[n 1]++ BM x[n M ]
Este filtro puede realizarse utilizando el diagrama de la figura
x[n]

B0

y[n]
+

z -1
B1

z -1
B2

z -1
BM

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Filtros Autoregresivos: Son filtros recursivos cuya funcin de Transferencia HAR(z) y su correspondiente ecuacin diferencia y[n] son de la forma,
H AR (z ) =

1
1 + A1 z 1 ++ AN z N

y[n] = A1 y[n 1] AN y[n N ] + x[n]

Este filtro puede realizarse utilizando el diagrama de la figura,


x[n]

y[n]

z -1
+

-A1

z -1
+

-A2

z -1
-AN

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Filtros ARMA: Son la combinacin de los dos anteriores. Su funcin de


Transferencia y ecuacin
diferencia
son,
1
M
H (z ) =

B0 + B1 z ++ BM z

1 + A1 z 1 ++ AN z N

= H AR (z )H MA (z )

y[n] = A1 y[n 1] AN y[n N ] + B0 x[n]++ BM x[n M ]

El diagrama de filtro puede hacerse de varias formas,


x[n]

B0

+
+

y[n]

z -1

z -1
B1

+
+

-A 1

z -1

z -1
B2

+
+

-A 2

z -1

z -1
-A N

BM

HMA(z) HAR(z)
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


x[n]

B0

z -1
+

z -1

-A1

B1

z -1
+

y[n]

z -1

-A2

B2

z -1

z -1

-AN

BM

HAR(z)HMA(z)

Esta dos formas son lgicamente idnticas. Se denominan forma directa I.


Requieren el uso de (N+M) elementos de memoria, (N+M) sumadores y
(N+M+1) multiplicadores.
Esta ltima forma sugiere la eliminacin M elementos de memoria, ya que
estn repetidos. El diagrama resultante se denomina forma directa II.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


x[n]

B0

y[n]
+

z -1
+

-A 1

B1

z -1
+

-A 2

B2

Forma directa II

z -1

-A M

BM

z -1
-A N

De la forma directa II pasamos a la forma transpuesta o cannica. Consiste


en sustituir los nodos por sumas, las sumas por nodos, invertir el sentido
de las flechas y finalmente intercambiar los coeficientes y x[n] e y[n].

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

10

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


x[n]

B0

y[n]

z -1
B1

+
+

-A 1

-A 2

-A M

z -1
B2

+
+

Forma Transpuesta o
Cannica

z -1
BM

+
+

z -1
-A N

Esta forma da lugar a una realizacin con N elementos de memoria,


(N+M+1) multiplicadores y N sumadores.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

11

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales

Las funciones de Transferencia pueden representarse mediante sumas de


fracciones parciales (en paralelo), o mediante producto de factores (en
cascada).
Supongamos un funcin de Transferencia H(z), expresada como suma de
fracciones. Los pares de polos complejos conjugados deben ser combinaL
dos en trminos de 2 orden,
b1i z 1 + b0 i
N + 1
H (z ) = b0 +

2
+ a1i z 1 + 1
i =1 a2 i z

L = int
2

Esta funcin de Transferencia puede representarse a travs de la forma


directa II o de la forma Transpuesta, dando lugar a las formas Paralela II y
Paralela Transpuesta (Figura T13).
La funcin de Transferencia puede expresarse tambin como producto de
L
L z 2 + z 1 + 1
trminos,
2i
1i
H (z ) = 0 H i ( z ) = 0
i=0

i =0

2 i z 2 + 1i z 1 + 1

lo que da lugar a las formas en cascada, Cascada II y Cascada Transpuesta


(Figura T14).
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

12

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


b0

b0
b 01

b 01

z -1

z -1

x[n]
x[n]

+ -a 1 1

b 11

b 11

z -1

z -1

y[n]

-a 2 1

b 0L

b 0L

+ -a 1 L

z -1

z -1
b 1L

b 1L

-a 1 L

z -1
-a 2 L

17/11/99

y[n]

-a 2 1

-a 1 1

z -1

Paralelo II y Paralelo Transpuesta

-a 2 L

Captulo 10 : Implementacin de Filtros Digitales

13

5 Curso-Tratamiento Digital de Seal

Realizacin de Filtros Digitales


0

x[n]

+ - 1 1

z -1
1 1

+ - 1 L

1 L

z -1
- 2 1

y[n]

z -1

z -1
1 1

- 2 L

1 L

Forma en Cascada II
x[n]

1 1

0 1

z -1

z -1

- 1 1

1 L

z -1

z -1

- 2 1

0 L

y[n]

- 1 L

- 2 L

Forma en Cascada Transpuesta


17/11/99

Captulo 10 : Implementacin de Filtros Digitales

14

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Cada una de estas formas tienen sus ventajas e inconvenientes en el


momento de realizar el filtro. Uno de los problemas ms importantes que
debe tener en cuenta una realizacin son los efectos de cuantizacin.
Los efectos de cuantizacin se producen al tener obligatoriamente que
truncar (o cuantizar) los coeficientes del filtro y las seales de entrada y
salida. Esta cuantizacin puede dar lugar a que las caractersticas del filtro
realizado difieran de las especificaciones del filtro diseado.
Los efectos de cuantizacin deben ser tenidos muy en cuenta cuando el
diseo se realiza en microprocesadores con aritmtica de punto fijo (por
ejemplo, DSPs). En caso de utilizar micros de 32 bits con aritmtica en
punto flotante, los efectos de cuantizacin pueden ser despreciados.
Dividiremos los efectos de cuantizacin en dos partes: los debidos a la
cuantizacin de las seales (de entrada x[n] o de salida y[n], que incluyen
los errores de redondeo o truncamiento en las operaciones aritmticas) y
los debidos a la cuantizacin de los coeficientes.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

15

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Cuantizacin de seales : El efecto de cuantizar la seal puede estudiarse


como el efecto de aadir un error o una seal de ruido e[n] a la salida ideal
del filtro digital. Este ruido se considera como el efecto conjunto de varios
errores producidos en el procesamiento:
Error de cuantizacin en el convertidor A/D a la entrada del filtro.
Errores de redondeo o truncamiento en las operaciones (multiplicacio-nes,
sumas).
Error en la cuantizacin de la salida en el convertidor D/A (menos bits en la

salida que en las operaciones).


Errores de Truncamiento: Cuando se implementa un filtro en hardware (DSPs o
ASICs) suele ser habitual trabajar en un punto fijo ya que es considerablemente
ms barato en trminos de rea de silicio y complejidad en el diseo. Por ejemplo,
las variables del filtro (entradas, salidas y coeficientes) pueden estar cuantizadas en
16 bits. Al hacer una multiplicacin necesitaremos 32 bits, que es posteriormente
truncado de nuevo a 16 bits. Este tipo de error puede ser analizado mejor desde un
punto de vista estadstico. Supongamos que truncamos un nmero de (+1) bits a
(b+1) bits, tal y como indica la figura.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

16

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
s

a -1

a -2

a -1

a -2

...
...

a -b

a -

a -b

El error producido al truncar x es: t = Q(x)-x. El error es cero si todos los bits
rechazados son cero, y ser mximo si todos los bits rechazados son 1. El error

mximo es por tanto,


i
b

a
2
2
2
=
+
i
i =b +1

El error de truncamiento ser siempre negativo para nmeros en complemento de 2,


y su valor es -(2-b-2-) t 0 . Si suponemos que >>b,

2b t 0
A la hora de analizar los errores producidos por el truncamiento se recurre al
anlisis estadstico. Suponiendo una distribucin uniforme de los errores en el
rango (-2-b,0), la media del error es -2-(b+1) y su varianza es 2-b/12. Estos valores
son ciertos en caso de utilizar complemento de 2, lo cual es bastante habitual.
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

17

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

El anlisis se hace sumando una seal de ruido a la seal sin truncar. Esa seal de
error tiene la media y varianzas calculadas previamente.
u[n]

v[n]

v[n]

u[n]

v[n]

v[n]

e [n]

Los tipos de realizaciones estudiadas (en paralelo y cascada) tienen un impacto


parecido en los errores de truncamiento. Utilizando formas en cascada podemos
mejorar la varianza del ruido de truncamiento puede disminuirse emparejando
polos y ceros de acuerdo a ciertos criterios y modificando el orden al cual se
realizan las operaciones en cascada.
Una consecuencia de las operaciones aritmticas es el overflow, es decir cuando el
resultado de una operacin rebasa el mximo nmero admitido por una cierta
represenatacin digital. En tal caso la seal debe mantenerse en ese nivel mximo,
lo que produce fuertes distorsiones en las seales.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

18

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Una ventaja de la aritmtica de complemento de 2 es la mostrada en el siguiente


ejemplo. Se quiere hacer la suma 0.687510+0.812510-0.562510 con un cdigo
digital de 5 bits en complemento de 2. La suma de los dos primeros operando da
overflow. Sin embargo, si eliminamos el bit de signo y continuamos sumando el
resultado ser correcto:
01011+01101=11000 Eliminamos el bit de signo porque hay overflow 01000
01000+10111=01111 Lo que equivale a 0.9375, el resultado correcto.

Una forma de evitar el overflow multiplicar las operaciones por un factor que evite
el overflow. Este factor debe ser lgicamente menor que 1, lo que emperora
relacin seal ruido del filtro. Vimos en el captulo 5 que la relacin seal-ruido en
una seal cuantizada es, SNRQ = 10 log Ps + 10.8 20 log D + 6b
Ps es la potencia de la seal de entrada, D es el fondo de escala y b es el nmero de
bits. Ps es proporcional a la varianza de la seal, x2. Si multiplicamos la seal por
un factor A, la potencia de la seal ser A2x2. Sustituyendo en la ecuacin vemos
que si A>1, mejora la SNRQ, pero se corre el peligro de producir overflow. Por el
contrario, un valor de A<1, evita el overflow pero empeora la SNRQ.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

19

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Oscilaciones de ciclo lmite : Este tipo de inestabilidades se da en los


filtros IIR, debido a la realimentacin de la salida. Las oscilaciones de
ciclo lmite se denominan a menudo granulares, ya que dan lugar a
oscilaciones de pequea amplitud.
x[n]

y[n]
z -1

En el ejemplo del filtro de 1er orden de la figura. La ecuacin diferencia es


y [n] = Q( y [n 1]) + x[n]
Sin perder generalidad utilizamos una representacin digital de 5 bits con
signo y haremos redondeo en las operaciones en vez de truncamiento.
Veamos la respuesta del filtro a una entrada impulso x[0]=0.1101.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

20

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
=0.1011, y[-1] = 0

17/11/99

=1.1011, y[-1] = 0

y[n-1]

y[n]

y[n-1]

y[n]

0.1101

0.1101

0.10001111

0.1001

1.1000111

1.1001

0.01100011

0.0110

0.0110001

0.0110

0.01000010

0.0100

1.0100001

1.0100

0.00101100

0.0011

0.0010110

0.0011

0.00100001

0.0010

1.0010000

1.0010

0.00010110

0.0001

0.0001011

0.0001

0.00001011

0.0001

1.0000101

1.0001

0.00001011

0.0001

0.0000101

0.0001

Captulo 10 : Implementacin de Filtros Digitales

21

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Para los dos valores de se observa que cuando >0, la salida tiende a un valor
constante distinto de cero, mientras que si <0, la salida oscila entre dos valores.
Esto se debe a que el sistema tiene un polo efectivo en el crculo unidad. En este
caso el sistema tiene un polo en z=1 para >0, y en z=-1 para <0. Esto implica
y [n 1], > 0
Q ( y [n 1]) =
y [n 1], < 0
El error de cuantizacin debido al redondeo es
Q( y [n 1]) y [n 1]

, y sustituyendo la anterior expresin,


2

.
2(1 )
Con esta frmula tenemos delimitado el rango de variacin de los ciclos lmite. Por
tanto, utilizar un mayor nmero de bits de cuantizacin disminuye la amplitud del
ciclo lmite. Esto no es siempre posible, por lo que existen tcnicas de eliminacin
de los ciclos lmites basadas en realizaciones en espacio de estado.
y [n 1]

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

22

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
Cuantizacin de coeficientes : Trataremos de investigar el impacto de la
cuantizacin de los coeficientes del filtro en la funcin de Transferencia del
mismo.
Supongamos una funcin de Transferencia H(z)=1/(1+a1z -1+a2z -2), cuyos polos
complejos son p y p* cumplindose que a1= -2Re(p) y a2=|p|2. Por tanto,
cuantizar a1 significa cuantizar la parte real del polo, mientras que cuantizar a2
significa cuantizar el radio del polo. Esto se muestra en la figura.

Im(z)

-1
-1

R e (z)

17/11/99

El polo estar definido por la interseccin de las


lneas verticales y los crculos. Se pueden sacar dos
conclusiones:
En la vecindad de z= 1, los posibles polos estn
ms separados entre s. Se dice que estos polos son
muy sensibles a la cuantizacin.
Si muestreamos a una frecuencia mucho mayor
que la sealada por el teorema del muestreo, los
polos son empujados hacia z=1. Por tanto, aumentar la frecuencia de muestreo hace a los polos ms
sensibles a la cuantizacin.
Captulo 10 : Implementacin de Filtros Digitales

23

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

17/11/99

Para sistemas de mayor orden es previsible que la sensibilidad de los coeficientes vaya a peor, por lo que realizar filtros que contegan polos (filtros IIR)
de forma directa (formas directa I o II) no es aconsejable. Los coeficientes en
estas forman no nos dicen nada acerca de la situacin de sus polos y mucho
menos acerca de las consecuencias de su cuantizacin.
La solucin es, lgicamente, utilizar las formas Paralelo o Cascada para tener
un mayor control sobre la situacin de los polos al cuantizar.
Estudiamos ahora el efecto de la cuantizacin sobre los ceros. En el caso de
filtros FIR (compuesto exclusivamente por ceros), sabemos que se caracterizan por ser de fase lineal. Esto es debido a que los coeficientes son simtricos
(o asimtricos). Por tanto cuantizar los coeficientes no va a variar la linealidad
de fase del filtro.
Lo que si variar es la magnitud de la respuesta. Se puede demostrar que los
ceros de un filtro FIR o bien estn sobre la circunferencia de radio 1, o estn
en parejas con radios recprocos (ver figura T24). Por tanto, en los filtros FIR
lo normal es utilizar la forma directa (I o II). Tambin se podra utilizar la
forma en cascada pero se utiliza menos.
Captulo 10 : Implementacin de Filtros Digitales

24

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
4
3

El hecho de que los ceros en un filtro digital estn


sobre el crculo unidad, hace que los coeficientes
del numerador sean +1 -1, por lo que en las
formas en cascada se pueden ahorrar desde un 25 a
un 50% en multiplicaciones comparado con un
diseo en paralelo.

2
1
0
-1
-2
-3
-4
-4

-2

17/11/99

Los ceros en un filtro IIR son ms problemticos. Aqu no tenemos la seguridad


de que los coeficientes son simtricos, por lo que habr que tener las mismas
consideraciones que las explicadas en el caso de los polos. Aqu adems hay que
tener en cuenta el caso habitual en que varios ceros estn en z=1 (ver transformaciones bilineales), por lo que su cuantizacin no tendra efectos graves. Lo
ms normal es utilizar la forma en cascada, aunque se puede utilizar la forma en
paralelo siempre que no haya unas especificaciones demasiado exigentes.
Captulo 10 : Implementacin de Filtros Digitales

25

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Anlisis de cuantizacin de coeficientes en los filtros FIR.

M 1

La funcin de transferencia de un filtro FIR de orden M-1 es : H (z ) = h[n] z n


n =0
La cuantizacin de los coeficientes resulta en una nueva funcin de transferencia,
M 1

M 1

n =0

n =0

H (z ) = h[n] z n = (h[n]+ e[n]) z n = H (z ) + E (z )

Calculamos el lmite superior de la funcin de transferencia en el crculo unidad:

( ) = e[n] e

Ee

M 1
n =0

jn

M 1

e[n] e
n =0

jn

M 1

e[n]
n =0

En el peor caso en que todos los errores de redondeo sean mximos, el error del
filtro est acotado por
M
E e j
2
Este lmite es bastante pesimista. Un lmite ms realista se obtiene si suponemos
que la seal e[n] es una variable aleatoria con varianza e2. La varianza de E(ej)
se puede demostrar que es (e2 = 2/12),
sin M 2
sin M
2M 1
2
2
E ( ) = e M 1 +
E ( )
=
M 1 +
sin 12
sin
12

( )

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

26

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Haremos ahora un anlisis de sensibilidad de los polos y ceros de la


funcin de Transferencia H(z) a pequeas variaciones en los
coeficientes i y j del filtro diseado.
H (z ) =

m z m + m1 z m1 ++1 z + 0

n z n + n 1 z n 1 ++ 1 z + 0

Los polos vienen dados por las races del denominador y los polos por
las races del numerador:
N ( z ) = m z m + m1 z m1 ++1 z + 0 = 0
D( z ) = n z n + n 1 z n 1 + 1 z + 0 = 0
Desarrollaremos la sensibilidad de las races a la cuantizacin de los
coeficientes. El mtodo es aplicable tambin a los ceros. Los polos de
D(z) sonj, j=1,2,...,n, pero si uno de los coeficientes k vara en una
cantidad k, habr un cambio j en las races del polinomio.

D z , k = n z n + n 1 z n 1 ++ k z k ++ 1 z + 0 = 0
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

27

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Desarrollamos esta ltima expresin en una serie de Taylor alrededor


de los valores nominales j0 y k0:
D(z , k ) = D(k , k 0 ) +

D(z , k )
z

Particularizando para z=j0,


0 = 0+

D (z , k )
z

z = k
k = k 0

j +

z= j0

k +

D(z , k )
k

D(z , k )
k

k = k 0

z= j 0

z = k
k = k 0

k +

k = k 0

Determinamos la variacin de la raiz j debido a un cambio en k.

D z , k
j =

D z , k
z

j =

)
z = j 0

kj 0

( j 0 i )
n

i =1,i k

k = k 0

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

28

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

De la ecuacin anterior se puede sacar como conclusin

17/11/99

El coeficiente ms sensitivo ser siempre 0 (0).


La sensibilidad aumenta cuando las races se encuentran muy agrupadas,
incrementndose fuertemente si el orden del sistema n es grande.

Captulo 10 : Implementacin de Filtros Digitales

29

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin

Ejemplos en MATLAB
Dado el filtro digital IIR con Fs=25 KHz, cuyos coeficientes B y A son
>> B = [0.0280 -0.0850 0.1037 -0.0942 0.0782 0 -0.0782 0.0942 -0.1037 0.0850 0.0280]
>> A = [1.0000 -5.0041 12.5162 -20.3913 23.8604 -20.8072 13.6498 -6.6537 2.3175 0.5229 0.0594]
Analog(:) Prewarped(-) and Unwarped(--) Spectrum vs f in Hz
1.2

0.8

0.6

0.4

0.2

0
0

17/11/99

2000

4000

6000

8000

10000

12000

14000

Captulo 10 : Implementacin de Filtros Digitales

30

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
>> Bq = round(B*1000)/1000;
>> Aq = round(A*1000)/1000;
>> [H F]=freqz(Bq,Aq,500,25000);plot(F,abs(H));grid;
Respuesta del filtro cuantizado a 3 dgitos decimales

1.2

0.8

0.6

0.4

0.2

0
0

2000

4000

6000

8000

10000

12000

14000

Frecuencia (Hz)

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

31

5 Curso-Tratamiento Digital de Seal

Efectos de Cuantizacin
>> [Z P K]=tf2zp(B,A);
>> SOS = zp2sos(Z,P,K,down);SOSq=round(SOS*1000)/1000;M=size(SOS,1);
>> Ht=ones(500,1);for i=1:M;Bsosq=SOSq(i,1:3);Asosq=SOSq(i,4:6);[H
F]=freqz(Bsosq,Asosq,500,25000);Ht=H.*Ht;end;
>> plot(F,abs(Ht));grid;
Realizacin de filtro con Secciones de 2 Orden y
coeficientes cuantizados con 3 decimales
1.2

0.8

0.6

0.4

0.2

17/11/99

2000

4000

6000
8000
Frecuencia (Hz)

10000

12000

14000

Captulo 10 : Implementacin de Filtros Digitales

32

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Las estructuras ms simples para sumar y restar son las estructuras en serie. El tamao
del circuito es mnimo pero requiere de N ciclos de reloj para producir el resultado (N es
el tamao de los datos en bits). Sin embargo, un circuito tan pequeo (retrasos pequeos)
permite utilizar un reloj de muy alta frecuencia, lo cual compensa el hecho de necesitar
N ciclos.
CLR

CLR

CARRY
IN1
IN2

Full
Adder

Sumador Serie
17/11/99

CARRY
IN1
SUM

IN2

Full
Adder

DIFF

Restador Serie
Captulo 10 : Implementacin de Filtros Digitales

33

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Los sumadores (restadores) en paralelo ms sencillos son los que propagan las llevadas (carry
propagate o ripple carry) de un bit a otro. Como
contrapartida producen los retrasos ms largos.
B3

A3

B2

Ci

Full
Adder
Co

A2

B1

Ci

Full
Adder
Co

A1

B0

Ci

Full
Adder
Co

A0

B3 B2 B1 B0

5V

B3 B2 B1 B0

A3 A2 A1 A0

Ci

Sumador
4 bits

Half
Adder
Co

A3 A2 A1 A0

Co

S3 S2 S1 S0

C
S3

S2

S1

Sumador Paralelo (Carry Propagate)


17/11/99

S0

R3 R2 R1 R0

Restador Paralelo (Carry Propagate)


Captulo 10 : Implementacin de Filtros Digitales

34

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Existen varias formas de acelerar la realizacin de una suma de varios bits.


La ms conocida es el carry look-ahead. Aqu la llevada es de alguna
forma precalculada a partir de los bits de entrada, lo que acelera el clculo
de la suma pero aade ms transistores ( N2). Esto hace que para valores
grandes de N, el carry look-ahead no sea eficiente.
Co0 = Cg0
Co1 = Cg1 + Ci1 Cp1 = Cg1 + Co0 Cp1 = Cg1 + Cg0 Cp1

Co = A B + Ci ( A + B)
Cg = A B; Cp = A + B
Co = Cg + Ci Cp

Co2 = Cg2 + Ci2 Cp2 = Cg2 + Co1 Cp2 =

= Cg2 + Cg1 + Cg0 Cp1 Cp2


= Cg2 + Cg1 Cp2 + Cg0 Cp1 Cp2
Co3 = Cg3 + Ci3 Cp3 = Cg3 + Co2 Cp3 =

= Cg3 + Cg2 + Cg1 + Cg0 Cp1 Cp2 Cp3 =


= Cg3 + Cg2 Cp3 + Cg1 Cp2 Cp3 + Cg0 Cp1 Cp2 Cp3
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

35

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
B3 A3

B2 A2
C g2

C g1

C p2

B1 A1

B0 A0
C g0

C p1

S3

S2

S1

S0

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

36

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Carry Select Adders: Los datos se dividen en grupos de bits y se realizan


las sumas para cada uno de esos grupos en las dos condiciones posibles:
llevada inicial C=0 y C=1. Una vez obtenido el resultado de C, se elige el
resultado correcto mediante un multiplexor.
B[7:4]

A[7:4]

ADDER 4

B[3:0]

A[3:0]

ADDER 4

Co

ADDER 4

S[7:4]

17/11/99

S[3:0]

Captulo 10 : Implementacin de Filtros Digitales

37

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Una generalizacin de la estructura anterior se muestra en la siguiente


figura. Los bloques CS es un circuito combinatorial que realiza la funcin
c(k+1)m = c(k+1)m(0) + c(k+1)m(1) ckm
lgica,
donde c(k+1)m(0) es la llevada resultante cuando ckm=0, y c(k+1)m(1) es la
llevada resultante cuando ckm=1.
A[11:8]

c 12 (1)

B[11:8]

A[7:4]

c 8 (1)

ADDER 4

c 12 (0)

B[7:4]

A[3:0]

c 4 (1)

ADDER 4

c 8 (0)

c 8 (0)
c 4 (1)
c 4 (0)

c0

CS2

c0

ADDER 4

c 4 (0)

c 4 (1)
c 4 (0)
c0

c 8 (1)

B[3:0]

CS1

CS3
c4

c8

c 12

17/11/99

S[11:8]

S[7:4]

c0

S[3:0]

Captulo 10 : Implementacin de Filtros Digitales

38

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Carry Save Adder (CSA): Se utilizan para sumar un gran nmero de


operandos. La estructura bsica del CSA est formada por N FAs :
u n-1

vn-1

w n-1

FA
cn

s n-1

u1

v1

w1

FA
c2

u0

v0

w0

FA
s1

c1

s0

La suma de tres operandos queda convertida en la suma de dos. Lo nico


que hay que hacer es multiplicar por 2 el vector C (desplazar un bit a la
izda):
U+V+W=S+2C
Cuando hay ms de tres operandos se utilizan los CSA hasta que solo
queden dos operandos. En este momento se hace una suma normal por
cualquiera de los procedimientos descritos anteriormente.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

39

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
A8

A7

A6

A5

A4

A3

CSA

A1

CSA

CSA
C

A2

CSA
S

CSA
C

CSA
C

CPA

Los retrasos son mucho menores


ya que en los CSA no hay propagacin de la llevada.
Al hacer el desplazamiento hacia
la izquierda con valores negativos
en complemento de 2 debe hacerse la extensin de signo para
producir resultados correctos.
Otras formas de hacer sumas de
varios operandos se muestra en
las figuras de la pgina siguiente.

SA

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

40

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Ak

Ak

CSA

CPA
CLK
CLR

CLK
CLR

REG

REG
CPA
SA
SA

La figura de la izquierda muestra el circuito ms sencillo formado por un sumador


carry propagate y un registro. El hardware es mnimo pero las prestaciones
tambin (la frecuencia del reloj debe ser pequea para permitir que el CPA termine
la suma). La otra figura muestra un circuito ms complejo pero ms rpido. Consta
de un CSA, un registro de 2N bits y un CPA. La frecuencia del reloj podr ser
bastante alta ya que el CSA solo tiene los retrasos debidos a un sumador completo
de un bit.

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

41

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Multiplicadores de nmeros positivos

P7

A3 B3
P6

A3 B2
A2 B3
P5

A3B1
A2B2
A1B3
P4

A3
B3
A3B0
A2B1
A1B2
A0B3
p3

A2
B2
A2B0
A1B1
A0B2

A1
B1
A1 B0
A0 B1

A0
B0
A0B0

P2

P1

P0

El Multiplicador ms sencillo es el llamado Ripple Carry Multiplier, que se deriva de


la figura anterior. La estructura a que da lugar es bastante regular (formada por la repeticin de una celda compuesta por una puerta AND y un FA) pero requiere la propagacin de la llevada y de las sumas parciales a travs de todo el circuito. Las zonas sombreadas de la figura son las correspondientes a las celdas que no tienen porqu ser FA.
Para una multiplicacin de dos nmeros de N y M bits respectivamente se necesitan NM
puertas AND, (N+M-2) semisumadores (HA) y (NM-N-M+1) FAs. El retraso en el
clculo de la multiplicacin es aproximadamente 4 veces el retraso de un sumador de N
bits.
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

42

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Ripple Carry Multiplier
s'

s'

A3

A2

A1
0

A0
0

B0

B
c'
c

c'
s

FA
c

B1
s
0

B2
0

B3
0

P7

17/11/99

P6

P5

P4

P3

P2

P1

P0

Captulo 10 : Implementacin de Filtros Digitales

43

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Carry Save Multipliers
A3

La propagacin de la llevada se realiza desde


una fila a otra posterior y no entre celdas de la
misma fila, por lo que hay que hacer una suma
final. El retraso en el clculo es ~ 3 veces el 0
retraso de un sumador de N bits.

A2
0

A1
0

A0
0

0
B0

B1

0
B2

0
B3

ADDER
P7

17/11/99

P6

P5

P4

P3

P2

P1

P0

Captulo 10 : Implementacin de Filtros Digitales

44

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Wallace Tree
Los productos parciales se calculan todos a la vez en la primera etapa. Luego esos
productos parciales se suman con una carry save adder. Se utilizan para valores
grandes de N y el retraso depende del logaritmo de N.
A

Multiply Modules

CSA Array

CPA
P

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

45

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Arquitecturas Standard de Multiplicadores
Multiplicand
Shift Left
64 bits

64-bit ALU

Multiplier
Shift Right
32 bits

Control

Product
Write
64 bits

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

46

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Arquitecturas Standard de Multiplicadores

Multiplicand
32 bits

32-bit ALU

Multiplier
Shift Right
32 bits

Product

Shift Right

Control

Write

64 bits

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

47

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Arquitecturas Standard de Multiplicadores

Multiplicand
32 bits

32-bit ALU

Product

Shift Right

Control

Write

64 bits

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

48

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware
Multiplicadores de nmeros con signo
Algoritmo de Booth
El algoritmo de Booth est basado en una representacin digital denominada
Signed Digit (SD). Para nmeros en base 2, la representacin SD de un dgito
tiene 3 posibles valores (0, 1 y -1), por lo que existe una redundancia (los nmeros
se pueden representar de varias formas). Por ejemplo, el valor -9 (10111), se puede
representar de las siguientes formas con SD de 5 bits:
0
0
0
1
1
1
1

1
1
1
0
1
1
1

0
0
1
1
0
0
1

0
1
1
1
0
1
1

1
1
1
1
1
1
1

=
=
=
=
=
=
=

8
8
8
16
16
16
16

1
2
4
+4
+8
+8
+8

+1
A=
+ 2 +1
+ 2 +1
1
2 +1
4 + 2 +1

an 1 2

n 1

n2

+ ai 2i
i =0

De todas estas representaciones, existe una con el menor nmero de valores


distintos de 0 (forma cannica).

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

49

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Un nmero digital se convierte a SD en forma cannica (CSD) observando


cadenas de 1s en la representacin digital normal (complemento de 2).
Una cadena de 1s puede convertirse a CSD de la siguiente forma:
0 0 1 1 1 1 1 1 0 0 --> 0 1 0 0 0 0 0 1 0 0
1 1 1 1 1 0 0 --> 0 0 0 0 1 0 0

Utilizando esta recodificacin, podemos modificar la forma de multiplicar.


Supongamos que queremos multiplicar A (an-1,,a0) por B, los pasos a
realizar son los siguientes:

17/11/99

Si ai=0 y ai-1=0, sumar 0 a P


Si ai=0 y ai-1=1, sumar B a P
Si ai=1 y ai-1=0, resta B de P
Si ai=1 y ai-1=1, suma 0 a P

Captulo 10 : Implementacin de Filtros Digitales

50

5 Curso-Tratamiento Digital de Seal

Implementacin Hardware

Ejemplo: Multiplicar -6 (1010) por -5 (1011)

P
0000
0000
0000
+0101
0101
0010
+1011
1101
1110
+0101
0011
0001

17/11/99

A
1010
1010
0101
0101
1010

a0=a-1=0, sumar 0
Desplazar un bit a la izquierda
a0=0,a-1=1, restar B (1011)
Desplazar un bit a la izquierda
a0=1,a-1=0, sumar B (1011)

1010
1101

Desplazar un bit a la izquierda (extensin de signo)


a0=0,a-1=1, restar B (1011)

1101
1110

Desplazar un bit a la izquierda

Captulo 10 : Implementacin de Filtros Digitales

51

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


Qu distingue a un DSP de otros micros de propsito general?

17/11/99

ALU flexible y rpida: las operaciones estandard (bit a bit, suma, etc),
multiplicaciones, multiplicaciones con acumulacin y desplazamientos
arbitrarios deben ser realizados en un ciclo de reloj.
Rango dinmico extendido para multiplicaciones+acumulacin, de
forma que no ocurra overflow.
Carga de operandos en un ciclo de reloj, lo que significa un direccionamiento flexible para varias memorias de datos.
Hardware especfico que permita el almacenamiento circular.
No son necesarias instrucciones adicionales (condiciones, comparaciones) para bucles y saltos.

Captulo 10 : Implementacin de Filtros Digitales

52

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

6WDWXV

2SFRGH

3URFHVVLQJ
8QLW

&RQWURO
8QLW

5HVXOWV
2SHUDQGV

'DWD
%XV
,QVWUXFWLRQV

'DWD

$GGUHVV

'DWDDQG
3URJUDP
0HPRU\

$UTXLWHFWXUDGH9RQ1HXPDQQ
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

53

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


Arquitectura Harvard

6WDWXV

2SFRGH

$ULWKPHWLF
8QLW

'DWD

'DWD$GGUHVV

'DWD
0HPRU\

,QVWUXFWLRQ

&RQWURO
8QLW

17/11/99

,QVWUXFWLRQ$GGUHVV

3URJUDP
0HPRU\

Captulo 10 : Implementacin de Filtros Digitales

54

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

,QVWUXFWLRQ6HTXHQFHU

$GGUHVV*HQHUDWLRQ8QLW

,QVWUXFWLRQ0HPRU\

'DWD0HPRU\

,QVWUXFWLRQ5HJLVWHU

'DWD3DWK
3URFHVVLQJ8QLW

,QVWUXFWLRQ'HFRGHU

,QVWUXFWLRQ6WUHDP

17/11/99

'DWD6WUHDP

Captulo 10 : Implementacin de Filtros Digitales

55

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


$*8

$*8

$*8

'DWD
0HPRU\

'DWD
0HPRU\

'DWD
0HPRU\

'DWD %XV

'DWDSDWK

'DWDSDWK

3URFHVDPLHQWRFRQXQR\GRVEXVHV

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

56

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


'DWD;

'DWD<

6KLIW

6KLIW

'DWD<

'DWD;

$UUD\0XOWLSOLHU

$UUD\0XOWLSOLHU
6KLIW

$/8

$/8

6KLIW

6KLIW

08;

08;

5HJLVWHU
$/8

6KLIW

6KLIW

5HJLVWHU

'DWDSDWKFRQ0$& 0XOWLSO\DQG$&FXPXODWH \$/8

6KLIW

'DWDSDWKEDVDGRHQXQDFRPELQDFLyQGH0XOWLSOLFDGRU
\$/8
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

57

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


*OREDO%XV

08;
/HQJWK5HJLVWHU

0RGXOR5HJLVWHU

$GGUHVV5HJLVWHU

$/8
0RGXOR/RJLF

%LW5HYHUVH

$GGUHVV

*HQHUDFLyQGHGLUHFFLRQHVHQXQ'63

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

58

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


Arquitectura del ADSP2101
,QVWUXFWLRQ
5HJLVWHU

$GGUHVV
*HQHUDWRU
 

3URJUDP
&RXQWHU

3URJUDP
0HPRU\
65$0 RU
520

'DWD
0HPRU\
65$0

$GGUHVV
,QVWUXFWLRQV
&DFKH 0HPRU\ "

'DWD

17/11/99

5HJLVWHU

5HJLVWHU

5HJLVWHU

$/8

0$&

6+,)7

5HJLVWHU

5HJLVWHU

5HJLVWHU

,2

,2
%XV

Captulo 10 : Implementacin de Filtros Digitales

59

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors


3URJUDP
0HPRU\
3URJUDP
6HTXHQFHU

520

3URJUDP
'DWD
0HPRU\
65$0

'DWD
0HPRU\
65$0

([WHUQDO
$GGUHVV
%XV

$GGUHVV

$GGUHVV
*HQHUDWRU
,QVWUXFWLRQV

'DWDSDWK
$/808/$&&

'DWD

,2

([WHUQDO
'DWD
%XV

,2 %XV

'LDJUDPDGH%ORTXHVGHO706&
17/11/99

Captulo 10 : Implementacin de Filtros Digitales

60

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

61

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

62

5 Curso-Tratamiento Digital de Seal

Digital Signal Processors

17/11/99

Captulo 10 : Implementacin de Filtros Digitales

63