INSTITUTO POLIT ´ ECNICO NACIONAL ESCUELA SUPERIOR DE MECANICA Y ELECTRICA ESIME (ZACATENCO) DEPARTAMENTO DE INGENIER ´ IA EN COMUNICACIONES Y ELECTRONICA Analizador de Espectro con DSP Tesis que presenta Jos´ e Luna Pardo Para Obtener el T´ ıtulo de Ingeniero en Comunicaciones y Electr´onica En la Especialidad de Ac´ ustica Director de la Tesis: Ing. Jos´ e de Jes´ us Negrete Redondo. Codirector: Dr. Maximino Pe˜ na Guerra. M´ exico D.F. Agosto 2011
87
Embed
INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE MECANICA Y … · 2017-08-07 · Mapeo en z de un filtro Pasa-Banda con dos polos y dos ceros. . . . . 36 2.17. Mariposa basica
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE MECANICA Y ELECTRICA
ESIME (ZACATENCO)
DEPARTAMENTO DE INGENIERIA EN COMUNICACIONES
Y ELECTRONICA
Analizador de Espectro
con DSP
Tesis que presenta
Jose Luna Pardo
Para Obtener el Tıtulo de
Ingeniero en Comunicaciones y Electronica
En la Especialidad de
Acustica
Director de la Tesis: Ing. Jose de Jesus Negrete Redondo.Codirector: Dr. Maximino Pena Guerra.
Mexico D.F. Agosto 2011
Trabajo de tesis que forma parte de los resultados obtenidos ennuestro proyecto de investigacion: KCM: Biblioteca de ASICsV HDL Para Procesamiento de Senales de Control Medico,con numero de registro CGPI:20090490 asignado por la Secre-tarıa de Investigacion y Posgrado del Instituto Politecnico Na-cional. Dicho proyecto fue realizado durante el ano del 2009 den-tro de las instalaciones del laboratorio de Acustica, y dirigidopor el Dr. Maximino Pena Guerrero.
ii
RESUMEN
Hoy en dıa el avance tecnologico requiere de mediciones mas precisas para el desa-
rrollo de equipo de mejor desempeno y mayor estabilidad. El mercado ofrece instru-
mentos de medicion de alto desempeno para analizar el sonido producido por una o
varias fuentes. Los dispositivos de analisis espectral analogicos son robustos, normal-
mente de aplicacion especıfica y caros. Por otra parte la construccion digital de di-
chos dispositivos requiere el conocimiento de microprocesadores y el conocimiento de
los algoritmos de procesamiento de senales digitales.
En esta tesis se presenta el diseno y construccion de un analizador de espectros
utilizando un Procesador Digital de senales (DSP) MC56F8323. El ambiente de desa-
rrollo ofrece herramientas especıficas para realizar dicha funcion, lo cual nos permite
tener un programa optimizado y eficiente para dicho proposito sin tener que progra-
mar los algoritmos de una forma manual. Ademas, la velocidad y prestaciones de di-
cho circuito integrado, nos ofrece una muy buena solucion a nuestro problema.
El resultado obtenido en una herramienta de hardware y software que permi-
te capturar y procesar una senal acustica para obtener su espectro. Ademas, al tener
el funcionamiento especıfico de este dispositivo, ofrece la base para nuevos proyectos
que utilicen un dispositivo de esta ındole para el procesamiento de senal.
1
Indice general
1. Introduccion 7
2. Consideraciones Teoricas. 10
2.1. Senales, sistemas y procesado de la senal . . . . . . . . . . . . . . . . 11
2.1.1. Elementos basicos de un sistema de procesado digital de senales 14
2.1.2. Senales en tiempo continuo frente a senales en tiempo discreto. 15
2.1.3. Senales continuas frente a senales discretas . . . . . . . . . . . 17
Un sistema cuya salida en el instante n depende de valores anteriores de la misma, se
denomina sistema recursivo.
2.4.6. Sistemas discretos descritos mediante ecuaciones endiferencias.
Un sistema lineal e invariante en el tiempo queda caracterizado por una rela-
cion de entrada-salida de la forma
y(n) =α∑
k=−α
x(k)h(n− k) (2.37)
En el caso de sistemas FIR, esta realizacion consistirıa en sumadores, multipli-
cadores y posiciones de memoria. En consecuencia, un sistema FIR se puede imple-
mentar basandose directamente en la convolucion.
Sin embargo, si el sistema es IIR, una implementacion practica basada en la
convolucion serıa imposible. Afortunadamente existe una manera practica y eficiente,
29
desde el punto de vista computacional, de realizar una familia de sistemas IIR. Den-
tro de la clase general de sistemas IIR, esta familia de sistemas discretos se describe
mediante ecuaciones en diferencias.
La forma general de una ecuacion en diferencias es
y(n) = −N∑k−1
aky(n− k) +M∑k=0
bkx(n− k) (2.38)
donde k representa un desplazamiento de la senal como lo muestra la figura 2.11 tan-
to para x(n) como para y(n).
Dado que los sistemas que estamos considerando son causales, no tendremos
terminos (n+ k).
Tambien podemos observar que si un sistema es recursivo tenemos valores
y(n−N) puesto que son los valores de la salida.
Figura 2.11: Desplazamiento dado por k.
Es necesario encontrar una forma explıcita de la salida y(n) de un sistema li-
neal invariante en el tiempo dada una ecuacion en diferencias de coeficientes constan-
tes lineal como relacion de entrada-salida del mismo.
Basicamente, el objetivo es determinar la salida del sistema y(n), n ≥ 0, para
una determinada entrada x(n), n ≥ 0, y un conjunto de condiciones iniciales. La solu-
cion dada por el metodo directo supone que la solucion total es la suma de dos partes:
y(n) = yh(n) + yp(n)
La parte yh(n) se conoce como solucion homogenea o complementaria, mientras que
yp(n) se denomina solucion particular.
30
El metodo alternativo para encontrar la solucion a la ecuacion en diferencias,
es por medio de la transformada z. La transformada z unilateral es una herramien-
ta muy efectiva para la solucion de ecuaciones en diferencias con condiciones iniciales
distintas de cero. Se consigue reduciendo la ecuacion en diferencias que relaciona las
dos senales en el dominio del tiempo a una ecuacion algebraica equivalente que rela-
ciona sus transformadas z unilaterales. Esta ecuacion se resuelve facilmente para ob-
tener la transformada de la senal deseada. La senal en el dominio del tiempo se ob-
tiene invirtiendo la transformada z resultante.
2.5. Filtros Digitales
El termino filtro se utiliza comunmente para describir un dispositivo que dis-
crimina, segun algun atributo de los objetos que se aplican a su entrada, aquello que
pasa a su traves. Por ejemplo, un filtro de aire permite que el aire pase a su traves,
evitando que las partıculas de polvo presentes en el aire lo atraviesen. Un filtro de
aceite realiza una funcion similar, con la excepcion de que el aceite es la sustancia
que se permite que pase a traves del filtro, mientras que las partıculas de suciedad se
recogen a la entrada, evitando que lo atraviesen.
Un sistema lineal e invariante en el tiempo tambien realiza un tipo de discrimi-
nacion o filtrado de las diferentes componentes en frecuencia de la entrada. La natu-
raleza de esta accion de filtrado viene determinada por las caracterısticas de la res-
puesta en frecuencia H(w), que a su vez depende de la eleccion de los parametros del
sistema. De este modo, eligiendo adecuadamente los coeficientes, podemos disenar fil-
tros selectivos en frecuencia que dejen pasar senales con componentes frecuenciales en
ciertas bandas, al tiempo que atenuen senales que contengan componentes frecuen-
ciales en otras bandas.
En general, un sistema lineal e invariante en el tiempo modifica el espectro de
la senal de entrada X(w), segun su respuesta en frecuencia H(w), para dar lugar a
una senal de salida con espectro Y (w) = H(w)X(w). En cierto sentido, H(w) actua
31
como funcion de ponderacion o funcion de conformacion espectral para las diferen-
tes componentes frecuenciales de la senal de entrada. Visto en este contexto, cual-
quier sistema lineal e invariante en el tiempo puede considerarse como un filtro de
conformacion espectral, aunque no bloquee necesariamente ninguna componente en
frecuencia. En consecuencia, los terminos sistema lineal e invariante en el tiempo
y filtro son sinonimos y, como tales, se intercambian habitualmente.
Se emplea el termino filtro para describir un sistema lineal e invariante en el
tiempo utilizado para realizar operaciones de conformacion espectral o filtrado selec-
tivo en frecuencia.
2.5.1. Caracterısticas de los filtros ideales
Los filtros se suelen clasificar segun sus caracterısticas en el dominio de la fre-
cuencia como paso bajo, paso alto, paso banda y de banda eliminada. Las caracterısti-
cas ideales de la respuesta en magnitud de estos tipos de filtros se representan en la Fi-
gura (2.12). Tal como se muestra, los filtros ideales tienen una ganancia constante en
la banda de paso, ganancia cero en la banda eliminada y su respuesta de fase es lineal.
En todo caso, estos filtros no son realizables, pero sirven como idealizacion ma-
tematica de los filtros practicos. Por ejemplo, el filtro paso bajo ideal tiene una res-
puesta impulsional
hlp(n) =senwcπn
πn(2.39)
Vemos que este filtro no es causal ni absolutamente sumable, por lo que es inestable.
Por tanto, este filtro ideal es fısicamente irrealizable. Sin embargo, su caracterıstica
de respuesta en frecuencia se puede aproximar mucho con filtros practicos y realiza-
bles fısicamente.
32
Figura 2.12: Respuesta en magnitud de algunos filtros discretos selectivos
2.5.2. Diseno de filtros digitales por el metodo de polos y ce-ros
De el analisis de funciones de transferencia con la transformada de Lapace pa-
ra circuitos analogicos, tenemos que para una senal continua r(t) podemos obtener la
senal muestreada utilizando
r∗(t) =1
T
α∑n=−α
r(t)e−jnwst (2.40)
y su transformada de Laplace
R∗(s) =α∑
k=0
r(kT )e−kTs (2.41)
33
Ahora que la senal esta en forma muestreada, se toma la transformada z en am-
bos miembros de la ecuacion mediante la sustitucion de z = eTs. Se tiene:
R(z) =α∑
k=0
r(kT )z−k (2.42)
Dado que s = σ+ jω se puede relacionar la funcion de transferencia en z con w
de tal forma que
z = eTs
= eT (σ+jω)
= eTσ[cos(Tω) + jsen(Tω)] (2.43)
en la figura 2.13 se muestra la relacion.
Figura 2.13: Mapeo en z de ω.
En una funcion de transferencia, los polos son los valores de z en donde el re-
sultado tiende a α; y los ceros son los valores de z donde el resultado es igual a 0. Su-
ponga que tiene la funcion de transferencia:
H(z) =4− z
(1− z)(2− z)(2.44)
Para z = 4, H(z) = 0. Por lo tanto z = 4 es un cero. Para z = 2 y z = 1, H(z) tien-
de a infinito, por lo tanto z = 2 y z = 1 son polos. En una grafica los ceros se repre-
sentan con × y los polos con .
34
El principio basico subyacente en el metodo de los polos y ceros es el de loca-
lizar los polos cerca de los puntos de la circunferencia unidad correspondientes a las
frecuencias que desean ser acentuadas, y situar los ceros cerca de aquellos puntos que
se corresponden con frecuencias que desean ser amortiguadas. Ademas, deben impo-
nerse las siguientes condiciones:
1. Todos los polos deben estar en el interior de la circunferencia unidad para que
el filtro sea estable. Sin embargo, los ceros pueden situarse en cualquier punto
del plano z.
2. Todos los ceros y polos complejos deben tener su conjugado correspondiente, de
manera que los coeficientes del filtro sean reales.
Filtro Pasa-Bajos.
Para un filtro Pasa-Bajos, los polos deben situarse cerca de los puntos de la cir-
cunferencia unidad correspondientes a las bajas frecuencias. La funcion de transfe-
rencia de un sistema Pasa-Bajos de un solo polo es
H(z) =1− a
1− az−1(2.45)
La colocacion de un cero en z = −1 atenua aun mas la respuesta del filtro pa-
ra altas frecuencias. Esto nos lleva a un filtro con funcion de transferencia
H(z) =1− a
2
1− z−1
1− az−1(2.46)
y con mapa de polos y ceros representado en la figura 2.14.
Filtro Pasa-Altos.
Se puede obtener filtros Pasa-Altos reflejando los polos y ceros de un filtro Pasa-
Bajos con respecto al eje imaginario del plano z. Ası, se obtiene la funcion de trans-
ferencia
H(z) =1− a
2
1− z−1
1 + az−1(2.47)
y con mapa de polos y ceros representado en la figura 2.15.
35
Figura 2.14: Mapeo en z de un filtro Pasa-Bajos con un polo y un cero.
Figura 2.15: Mapeo en z de un filtro Pasa-Altos con un polo y un cero.
Filtro Pasa-Banda.
Basicamente, el filtro Pasa-Banda debe contener uno o mas pares de polos com-
plejos conjugados cerca de la circunferencia unidad, en la vecindad de la banda de
frecuencias que constituye la banda de paso del filtro. Tiene una funcion de transfe-
rencia como
H(z) = G(z − 1)(z + 1)
(z − jr)(z + jr)(2.48)
donde se tiene un cero en z = 1 y otro en z = −1, y dos polos, uno en z = jr y el
otro en z = −jr. El mapeo en z de los polos y ceros se muestra en la figura 2.16.
Figura 2.16: Mapeo en z de un filtro Pasa-Banda con dos polos y dos ceros.
36
2.6. Analisis Espectral
Es bien sabido que se puede usar un prisma para descomponer la luz blanca (luz
solar) en los colores del arco iris. En un artıculo enviado en 1672 a la Royal Society,
Isaac Newton empleo el termino espectro para describir las bandas continuas de co-
lores producidas por este aparato. Para entender este fenomeno, Newton coloco otro
prisma invertido con respecto al primero y demostro que los colores volvıan a mez-
clarse para producir luz blanca. Insertando una ranura entre los dos prismas y blo-
queando la incidencia de uno o mas colores sobre el segundo prisma, mostro que la
luz vuelta a combinar ya no era blanca. Por tanto, la luz que pasa a traves del pri-
mer prisma es simplemente descompuesta en sus colores componentes sin ningun otro
cambio. Sin embargo, solo si volvemos a mezclar otra vez todos los colores obtenemos
la luz original. Mas tarde, Joseph Fraunhofer (1787-1826), cuando realizaba medicio-
nes de la luz emitida por el sol y las estrellas, descubrio que el espectro de la luz ob-
servada contenıa lıneas de colores diferentes. Unos anos despues, a mediados del siglo
XVIII, Gustav Kirchhoff y Robert Bunsen descubrieron que cada elemento quımico,
cuando era calentado hasta la incandescencia, radiaba su propio color de luz. Como
consecuencia, cada elemento quımico se puede identificar mediante sus propias lıneas
espectrales. De la fısica sabemos que cada color se corresponde con una frecuencia es-
pecıfica del espectro visible. De hecho, la descomposicion de la luz en sus colores es
una forma de analisis frecuencial.
El analisis frecuencial de una senal conlleva la separacion de la senal en sus com-
ponentes (sinusoidales) frecuenciales. En lugar de luz, nuestras formas de onda son
basicamente funciones temporales. El papel del prisma es desempenado por las he-
rramientas de analisis de Fourier: las series de Fourier y la transformada de Fourier.
Como en el caso de compuestos quımicos, formas de onda diferentes tienen diferen-
tes espectros. Por ello, el espectro provee una identidad o firma de la senal en el sen-
tido de que ninguna otra senal tiene el mismo espectro.
37
El objetivo basico al desarrollar herramientas de analisis frecuencial es propor-
cionar una representacion matematica y pictorica para las componentes frecuenciales
contenidas en una cierta senal. Como en la Fısica, el termino espectro se emplea al
referirse al contenido en frecuencia de una senal. El proceso de obtencion del espec-
tro de una senal dada, usando las herramientas matematicas basicas, se conoce co-
mo analisis frecuencial o espectral. A su vez, el proceso de determinacion del espec-
tro de una senal en la practica, basado en mediciones reales de la senal, se denomina
estimacion espectral. Esta distincion es muy importante. En un problema practico,
la senal que esta siendo analizada no conduce a una descripcion matematica exacta.
2.6.1. La transformada de Fourier Discreta (DFT).
La transformada de Fourier de una senal de energıa finita en tiempo discreto
x(n) se define como
X(w) =α∑
n=−α
x(n)e−jwn (2.49)
Fisicamente, X(w) representa el contenido en frecuencia de x(n).
Dado que el rango de frecuencias de senales en tiempo discreto se limita al in-
tervalo (−π, π) o (0, 2π), una senal en tiempo discreto puede tener componentes en
frecuencias separadas 2π/N radianes o f = 1/N ciclos. Esta propiedad se refleja en
la transformada de Fourier de la senal. De hecho, X(w) es periodica de periodo 2π.
En general, las muestras equiespaciadas en frecuencia X(2πk/N), k =
0, 1, ..., N − 1, no representan unıvocamente a la secuencia original x(n) cuando x(n)
tiene duracion finita. Al contrario, estas muestras se corresponden con una secuen-
cia periodica xp(n) de periodo N , donde xp(n) es una version con aliasing de x(n).
Cuando la secuencia x(n) es de duracion finita L ≤ N , entonces xp(n) es simplemen-
te una repeticion periodica de x(n). Una secuencia de duracion finita x(n) de longi-
tud L, es decir, x(n) = 0 para n < 0 y n ≥ L, tiene transformada de fourier
38
X(w) =L−1∑n=0
x(n)e−jwn 0 ≤ w ≤ 2π (2.50)
Cuando muestreamos X(w) en frecuencias equiespaciadas wk = 2πK/N , k =
0, 1, 2, ..., N − 1, donde N ≥ L, las muestras resultantes son
X(k) =N−1∑n=0
x(n)e−j2πkn/N k = 0, 1, 2, ..., N − 1 (2.51)
Dado que:
ez = ex+iy = ex[cosy + iseny] (2.52)
de esta forma podemos escribir la expresion (2.51) como:
X(k) =N−1∑n=0
x(n)[cos(2πkn/N)− j sen(2πkn/N)] k = 0, 1, 2, ..., N − 1 (2.53)
2.6.2. Calculo eficiente de la DFT: Algoritmo de diezmadoen tiempo
El desarrollo de algoritmos computacionalmente eficientes para la DFT es po-
sible adoptando la estrategia de ”divide y venceras”. Este metodo se basa en la des-
composicion de una DFT de N puntos en DFTs mas pequenas.
Para ilustrar las ideas basicas, considere el calculo de una DFT de N puntos,
donde N se puede representar como el producto de dos enteros, esto es,
N = LM (2.54)
La suposicion de que N no es un numero primo no es restrictiva, ya que pode-
mos rellenar cualquier secuencia con ceros para asegurar la factorizacion. Ahora se
puede almacenar la secuencia x(n), 0 ≤ n ≤ N − 1, tanto en una matriz unidimen-
sional indexada por n o en una matriz bidimensional indexada por l y m, donde,
0 ≤ l ≤ L− 1 y 0 ≤ m ≤ M − 1.
39
Suponga ahora que x(n) se lleva a la matriz rectangular x(l,m), y que X(k) se
lleva a la matriz rectangular correspondiente X(p, q). Entonces la DFT puede expre-
sarse como el sumatorio doble de los elementos de la matriz rectangular multiplica-
dos por los factores de fase correspondientes. Entonces,
X(p, q) =M−1∑m=0
L−1∑l=0
x(l,m)W(Mp+q)(mL+l)N (2.55)
Pero
W(Mp+q)(mL+l)N = WMLmp
N WmLqN WMpl
N W lqN (2.56)
Sin embargo, WNmpN = 1, WmqL
N = WmqN/L = Wmq
M , y WMplN = W pl
N/M = W plL .
Con estas simplificaciones, la expresion (2.51) se puede expresar como
X(p, q) =L−1∑l=0
W lq
N
[M−1∑m=0
x(l,m)WmqM
]W lp
L (2.57)
La expresion (2.57) implica el calculo de DFTs de longitudes M y L. Esta ac-
cion se puede dividir en tres pasos:
1. Primero, se calculan las DFTs de M puntos
F (l, q) ≡M−1∑m=0
x(l,m)WmqM , 0 ≤ q ≤ M − 1 (2.58)
Para cada una de las filas l = 0, 1, · · · , L− 1.
2. Segundo, se calcula la nueva matriz rectangular G(l, q) definida como
G(l, q) = W lqNF (l, q)
0 ≤ l ≤ L− 1
0 ≤ q ≤ M − 1(2.59)
3. Tercero, se calcula las DFTs de L puntos
X(p, q) =L−1∑l=0
G(l, q)W lpL (2.60)
Para cada columna q = 0, 1, · · · ,M − 1, de la matriz G(l, q).
40
Ahora, considere el calculo de la DFT de N = 2v mediante el metodo de ”divide
y Venceras”. Se escogeM = N/2 y L = 2. Esta seleccion da lugar a la division de la se-
cuencia de datos de N puntos en dos secuencias de datos de N/2 puntos, f1(n) y f2(n),
correspondientes a las muestras pares e impares de x(n), respectivamente, esto es,
f1(n) = x(2n)
f2(n) = x(2n+ 1), n = 0, 1, · · · , N
2− 1 (2.61)
Por lo tanto, f1(n) y f2(n) se obtienen diezmando x(n) por 2 y, en consecuencia,
el algoritmo para la DFT resultante se denomina algoritmo de diezmado en tiempo.
La DFT de N puntos puede expresarse ahora en terminos de las DFTs de las
secuencias diezmadas como sigue:
X(k) =N−1∑n=0
x(n)W knN k = 0, 1, · · · , N − 1 (2.62)
=∑n par
x(n)W knN +
∑n impar
x(n)W knN (2.63)
=
(N/2)−1∑m=0
x(2m)W 2mkN +
(N/2)−1∑m=0
x(2m+ 1)Wk(2m+1)N (2.64)
Pero W 2N = WN/2. Sustituyendo esta igualdad, (1.63) puede expresarse como
X(k) =
(N/2)−1∑m=0
f1(m)W kmN/2 +W k
N
(N/2)−1∑m=0
f2(m)W kmN/2 (2.65)
o
X(k) = F1(k) +W kNF2(k) k = 0, 1, · · · , N − 1 (2.66)
donde F1(k) y F2(k) son las DFTs de N/2 puntos de las secuencias f1(m) y f2(m),
respectivamente.
Puesto que F1(k) y F2(k) son periodicas, de periodo N/2, tenemos que F1(k +
N/2) = F1(k) y F2(k +N/2) = F2(k). Ademas, Wk+N/2N = −W k
N . De aquı que (2.66)
se pueda expresar como
X(k) = F1(k) +W kNF2(k) k = 0, 1, . . . ,
N
2− 1 (2.67)
X
(k +
N
2
)= F1(k)−W k
NF2(k) k = 0, 1, . . . ,N
2− 1 (2.68)
41
Habiendo realizado el diezmado en tiempo una vez, se puede repetir el proceso
para cada una de las secuencias f1(m) y f2(m). El diezmado de la secuencia de datos
se puede repetir una y otra vez hasta que las secuencias resultantes sean de un pun-
to. El calculo basico se obtiene con dos puntos, por ejemplo a y b, multiplicar b por
W rN , y sumar y restar el producto obtenido de a para obtener los nuevos puntos. Es-
te calculo basico se muestra en la Figura (2.17) y se denomina mariposa, dado que el
diagrama de flujo recuerda a una mariposa.
a
b
-1
Figura 2.17: Mariposa basica del algoritmo para la FFT de diezmado en el tiempo.
Se observa que para cada valor de k en la expresion (2.53), el calculo directo
de X(k) supone realizar N multiplicaciones complejas (4N multiplicaciones reales)
y N − 1 sumas complejas (4N − 2 sumas reales). En consecuencia, para calcular los
N valores de al DFT necesitamos N2 multiplicaciones complejas y N2 − N sumas
complejas. Por otro lado utilizando el algoritmo de diezmado en tiempo, se observa
que el calculo directo de F1(k) requiere (N/2)2 multiplicaciones complejas. La mis-
ma exigencia se aplica al calculo de F2(k). Ademas, se requieren N/2 multiplicacio-
nes complejas mas para calcular W kNF2(k). De aquı que el calculo de X(k) requiera
2(N/2) +N/2 = N2/2 +N/2 multiplicaciones complejas. El primer paso da lugar en
el numero de multiplicaciones de N2 a N2/2 + N/2, que equivale aproximadamen-
te a dividir por 2 el numero de multiplicaciones cuando N es grande. El algoritmo
de diezmado en tiempo para el calculo de la DFT es uno de los algoritmos FFT (del
ingles Fast Fourier Transform).
42
Capıtulo 3
Programacion del DSP
En este capıtulo se enumeran y describen brevemente las herramientas y dispo-
sitivos utilizados para la elaboracion del proyecto y su documentacion, ası como los
conceptos basicos para la programacion y funcionamiento del DSP.
3.1. Dispositivos
3.1.1. El MC56F8323
El MC56F8323 es miembro de la familia de controladores con microprocesador
568000E. Combina, en un solo circuito integrado, la potencia de procesado de un Di-
gital Signal Processor (DSP) y la funcionalidad de un microcontrolador con un con-
junto de perifericos flexibles para crear soluciones efectivas a muy bajo costo. A cau-
sa de su bajo costo, flexibilidad de perifericos y codigo de programa compacto, es uti-
lizado para muchas aplicaciones.
El microprocesador 56800E es de arquitectura Harvard con tres unidades de eje-
cucion funcionando en paralelo permitiendo hasta seis operaciones por ciclo de ins-
truccion. Este procesador es una unidad central de procesamiento de proposito gene-
ral disenado para procesar eficientemente senales digitales, ası como para realizar la
funcion de un controlador. El modelo de programacion del microprocesador, ası co-
mo el conjunto de sus instrucciones, permiten facilmente la generacion de codigo efi-
ciente y compacto. El conjunto de instrucciones es tambien muy eficiente para com-
43
piladores de C, permitiendo un desarrollo rapido, potente y compacto.
El 56F8323 incluye 32KB de memoria de programa flash y 8KB de memoria de
datos flash, ambas programables por el puerto JTAG, 4KB de memoria de programa
RAM y 8KB de memoria de datos RAM. Tambien tiene 8KB de memoria boot flash.
En este capıtulo se abordaran los temas especıficos para el desarrollo de esta te-
sis. Para mayores referencias buscar los documentos:
Nombre Numero de Parte DescripcionDescripcion detallada
56F8300 Peripheral MC56F8300UM de los perifericosUser Manual de los productos de
la familia 56F8300.Especificaciones
56F8323/56F8123 MC56F8323 electricas, informacionTechnical Data Sheet de perifericos
y del encapsulado.Resumen de la
56F8323 MC56F8323PB descripcion y diagramaProduct Brief a bloques del 56F8323
proscesador, memoria,perifericos e interfaces.Descripcion detallada
DSP56800E DSP56800ERM de la arquitecturaReference Manual DSP56800E, procesador
de 16 bits y set deinstrucciones
Tabla 3.1: Documentos de Referencia al MC56F8323.
3.1.2. Tarjeta de demostracion 56F8300DEMO con Progra-ma PuertoSerie
La 56F8300DEMO es una tarjeta de bajo costo que permite demostrar algunas
de las capacidades de la serie de controladores 56F8300 al permitir al usuario ejecu-
tar programas demostrativos, ası como tambien desarrollar sus propias aplicaciones
usando las herramientas gratuitas CodeWarrior. La tarjeta consiste en un controla-
dor 56F8323 con 60 MIPs; un microfono conectado al ADC; un altavoz; un sensor de
44
campo electrico; dos botones conectados a interrupciones externas; y 10 LEDs. Tam-
bien tiene cabezales (jumpers) para acceder a todos los perifericos del controlador. La
tarjeta no tiene un oscilador interno ası que el 56F8323 debe usar su oscilador interno.
Para mayor informacion sobre la tarjeta buscar el documento:
Numero de Parte Descripcion56F8300
MC56F8300DBUM Demonstration BoardUser Manual
Targeting 56F8300MC56F8300TUM Demonstration Board
User Manual
Tabla 3.2: Documentos de Referencia de la tarjeta 56F8300DEMO.
El programa PuertoSerie fue desarrollado en la herramienta CodeWarrior y car-
gado al controlador. El codigo del programa PuertoSerie comentado esta en el apendi-
ce A.
3.1.3. Computadora con Programa PuertoSerie2
Esta computadora es donde se tiene el programa que registra los datos de la tar-
jeta 56F8300DEMO y los grafica. Esta comunicacion entre la computadora y la tar-
jeta es por el puerto serie. El codigo PuertoSerie2 comentado esta en el apendice A.
3.2. Herramientas
3.2.1. El Code Warrior
El Code Warrior IDE consiste de un administrador de proyectos, una interface
grafica, compilador, linker, y un depurador, dentro de su ambiente de trabajo.
El Code Warrior IDE permite configurar las opciones para la generacion del
codigo, depurar y navegar por nuestro proyecto.
A diferencia de un ambiente de desarrollo en Lınea de Comandos, el Code Wa-
rrior IDE organiza todos los archivos relacionados al proyecto. De esta forma pode-
45
mos mirar y navegar por nuestro proyecto de una forma organizada y sencilla.
Instalacion
Para descargar el instalador vamos a http://www.freescale.com y buscamos
el instalador. Ahı tenemos varias Suites del CodeWarrior, como son la Profesional,
Estandar, Basic y Especial. Para este proyecto entramos a Suite Special y descarga-
mos la aplicacion que soporte a nuestro controlador. La Special Suite es gratuita pe-
ro tiene algunas limitaciones.
Processor Expert
Processor Expert (PE) es un entorno de desarrollo integrado (IDE) para el di-
seno, aplicacion, verificacion, optimizacion de las aplicaciones para microcontrolado-
res y forma parte del Code Warrior. Esta plataforma de desarrollo de alta producti-
vidad permite el uso eficiente de los microcontroladores y sus perifericos, permite la
construccion de soluciones portatiles, y ahorra tiempo y coste de desarrollo.
Processor Expert ha incorporado las definiciones internas de los microcontrola-
dores con todos sus perifericos en modulos configurables que proporcionan metodos
y eventos para interactuar con ellos. Una intuitiva y potente interfaz grafica le per-
mite al usuario definir el comportamiento deseado del microcontrolador al configurar
los modulos.
Para mas informacion sobre el Processor Expert y las herramientas relaciona-
das para el 56800/E, refierase a http://www.processorexpert.com.
3.2.2. C++/C#
Estos lenguajes fueron utilizados para el desarrollo de las aplicaciones que estan
en ejecucion en la computadora. Para mas informacion sobre estos lenguajes refiera-
se a http://www.microsoft.com/spain/visualstudio.
46
Figura 3.1: Figura donde se observa la configuracion grafica en ProcessorExpert.
3.3. Desarrollo
En esta seccion se explicara el desarrollo del sistema, ası como su funcionamien-
to.
3.3.1. Desarrollo del programa Puerto serie
El programa Puerto Serie, es la aplicacion que esta corriendo en el MC56F8323.
Este programa funciona de la siguiente forma:
1. El MC56F8323 espera un codigo de inicio de la computadora.
2. Al recibir el codigo correcto, se inicia un temporizador en el MC56F8323 que
lanza una interrupcion cada determinado tiempo.
3. El MC56F8323 espera la interrupcion y realiza una conversion A/D y guarda
el resultado en un bufer.
4. La operacion anterior se realiza 512 veces.
5. Una vez obtenidas las 512 muestras, se apaga el temporizador y se ejecuta la
FFT.
47
6. Se envıa el resultado a la computadora y nuevamente se espera el codigo de ini-
cio.
El MC56F8323 tiene perifericos que comparten los mismos pines, por lo tan-
to, lo primero que se hace es configurar el MC56F8323 para que sus pines esten lis-
tos para ser utilizados sin ningun conflicto. Esto se logra con la ayuda del Proces-
sor Expert. En el menu Menu - Processor Expert - View - Bean Selector.
En esta ventana se puede ver los Beans del dispositivo agrupado por funcion. Un
Bean es un periferico que puede verse como un componente encapsulado o modu-
lo. Se selecciona el bean AsynchroSerial que esta en la categorıa Communication−
Asynchronusserialcommunication. Este bean es el modulo que nos encapsula el
puerto serie del MC56F8323. Despues se configura el puerto de salida, la velocidad
de transmision, los bits de transmision, etcetera, todos los parametros que se beben
configurar en la pestana Propiedades de la ventana Bean Inspector. En esta venta-
na existe una pestana que se llama Methods. En esta pestana se ven todas las ac-
ciones que puede realizar el puerto serie, es decir, es lo que sabe hacer. Habilitamos
las funciones que se necesitan para la transmision y recepcion de datos. En la pes-
tana Events de la misma ventana, estan todos los eventos que el modulo del puerto
serie detecta, una vez que ocurre el evento, el modulo envıa una interrupcion al DSP
y el DSP realiza la rutina o funcion que esta asignada a dicha interrupcion. Ası que
en esta pestana habilitamos las interrupciones necesarias.
Con esto queda configurado el puerto serie para trabajar, ahora solo se necesi-
ta llamar desde el programa a las funciones del puerto para que realice alguna accion
y programar las rutinas que van a ejecutarse al presentarse una interrupcion. Afortu-
nadamente, el Processor Expert, genera el codigo necesario para que solo tengamos
de definir el cuerpo de las rutinas que atienden a las interrupciones, como lo mues-
tra la Figura (3.3). Este codigo se genera al seleccionar la funcion Generate code en
el menu Processor Expert y se ejecuta cuando el puerto serie recibe un caracter.
48
Figura 3.2: Figura donde se observa la ventana Bean Inspector.
El codigo generado para las interrupciones, se encuentra en el archivo Events.c
del proyecto.
#pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers' property */ /* is set to 'yes' (#pragma interrupt saveall is generated before the ISR) */void AS1_OnRxChar(void) /* Write your code here ... */
Figura 3.3: Figura donde se observa el codigo Generado por el Processor Expert.
Ahora, se hace lo mismo para los demas modulos necesarios. Se va a utilizar el
modulo TimerInt que envıa una interrupcion cada determinado tiempo para obtener
una muestra de la senal de entrada. En este caso vamos a programar el tiempo del
temporizador a 122µs o 31.25µs dependiendo si queremos utilizar el microfono de la
tarjeta demostrativa o el microfono externo. Esto es debido a que nuestra tarjeta de-
mostrativa tiene un filtro pasa bajos con frecuencia de corte de 4kHz y el microfono
externo tiene un filtro pasa bajos con frecuencia de corte de 16kHz. Como vimos en
el capıtulo 1, para muestrear correctamente:
49
Fmax =Fs
2=
1
2T
Fmax =1
2(122µs)
Fmax = 4.098kHzFmax =Fs
2=
1
2T
Fmax =1
2(31.25µsµs)
Fmax = 16.00kHz
(3.1)
De esta forma se cumple con los requerimientos para obtener un muestreado co-
rrecto.
Tambien es necesario el modulo ADC para obtener las muestras mencionadas
anteriormente seleccionando la entrada ANA0 si se utiliza el microfono de la tarje-
ta o ANA2 si se utiliza el microfono externo. Se van a necesitar tres librerıas del Co-
de Warrior tambien ubicadas en el Bean Inspector. La primera de ellas es DSP
MEM . Esta librerıa es para administrar la memoria de manera eficiente. La segunda
es DSP Func MFR que es una librerıa para realizar operaciones matematicas con
numeros fraccionales. La tecnica de usar numeros fraccionales se utiliza en sistemas
computacionales para realizar operaciones con numeros grandes, ya que estas opera-
ciones desbordarıan el registro del resultado de la operacion. Pensemos que tenemos
dos registros de cuatro bits de los cuales queremos obtener la multiplicacion de ellos
y guardarlo en un registro de cuatro bits como muestra la Figura (3.4).
0011 = 3
0011 = 3
1001 = 9
X
Figura 3.4: Ejemplo de una multiplicacion binaria sin desbordamiento.
En este caso no existe desbordamiento ya que el valor de la operacion no es ma-
yor que el valor maximo del registro de salida. Pensemos ahora en una operacion co-
50
mo se muestra en la Figura (3.5)
1111 = 15
1111 = 15
11100001 = 225
X
Desbordamiento
de bits.
Figura 3.5: Ejemplo de una multiplicacion binaria con desbordamiento.
En esta operacion existe desbordamiento para un registro de salida de 4 bits.
La forma de solucionar este problema es convertir los valores de los registros que se
multiplican a un numero menor que 1. La manera mas sencilla es dividir el valor en-
tre 2n, donde n es el numero de bits del registro. Dado que dividir entre 2 un numero
binario equivale a recorrer una posicion el punto decimal hacia la izquierda, entonces:
PuertoEvento->Interrup.SetEvent(); //Libera el evento que administra
//la funcion secundaria de datos
Esperar.Lock(); //Espera hasta que la funcion
//secundaria termine
Esperar.Unlock();
PuertoEvento->Interrup.PulseEvent();
return 0;
83
Bibliografıa
[1] John G. Proakis, Dimitris G. Manolakis. Tratamiento digital de senales., Prin-cipios, algoritmos y aplicaciones. 3a Edicion. PRENTICE HALL, Madrid, 1998
[2] Katsuhiko Ogata Ingenierıa de Control Moderna., 3a Edicion. PRENTICEHALL HISPANOAMERICANA, S.A.