Вы находитесь на странице: 1из 89

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
Jose Luna Pardo
Para Obtener el Ttulo de
Ingeniero en Comunicaciones y Electronica
En la Especialidad de
Ac ustica
Director de la Tesis: Ing. Jose de Jes us Negrete Redondo.
Codirector: Dr. Maximino Pe na Guerra.
Mexico D.F. Agosto 2011
Trabajo de tesis que forma parte de los resultados obtenidos en
nuestro proyecto de investigacion: KCM: Biblioteca de ASICs
V HDL Para Procesamiento de Se nales de Control M edico,
con n umero de registro CGPI:20090490 asignado por la Secre-
tara de Investigaci on y Posgrado del Instituto Politecnico Na-
cional. Dicho proyecto fue realizado durante el a no del 2009 den-
tro de las instalaciones del laboratorio de Ac ustica, y dirigido
por el Dr. Maximino Pe na Guerrero.
ii
Agradecimientos
Agradezco a Dios por sus bendiciones que han permitido que llege a este mo-
mento en mi vida, agradezco a mis padres y hermanos por su apoyo incondicional ba-
jo cualquier circunstancia y quiero hacer un reconocimiento especial a mis profesores
Ing. Jose de Jes us Negrete Redondo y Dr. Maximino Pe na Guerra quienes me ayuda-
ron de una forma poco com un, instuyendome no solo en el aspecto academico, sino
tambien en la senda de la vida cotidiana.
Gracias.
Jos

e Luna Pardo.
iii
Y miro Dios la tierra, y he aqu que estaba corrompida;
porque toda carne haba corrompido su camino sobre la
tierra.
Genesis 6:12
... Toda carne es como hierba, Y toda la gloria del hom-
bre como or de la hierba. La hierba se seca, y la or se
cae; Mas la palabra del Se nor permanece para siempre...
1 Pedro 1:24-25
Porque de tal manera amo Dios al mundo, que ha dado
a su Hijo unigenito, para que todo aquel que en el cree,
no se pierda, mas tenga vida eterna.
Juan 3:16
... Si los muertos no resucitan, comamos y bebamos, por-
que ma nana moriremos....
1 Corintios 15:32
iv
RESUMEN
Hoy en da el avance tecnologico requiere de mediciones mas precisas para el desa-
rrollo de equipo de mejor desempe no y mayor estabilidad. El mercado ofrece instru-
mentos de medicion de alto desempe no para analizar el sonido producido por una o
varias fuentes. Los dispositivos de analisis espectral analogicos son robustos, normal-
mente de aplicacion especca 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 se nales digitales.
En esta tesis se presenta el dise no y construccion de un analizador de espectros
utilizando un Procesador Digital de se nales (DSP) MC56F8323. El ambiente de desa-
rrollo ofrece herramientas especcas para realizar dicha funcion, lo cual nos permite
tener un programa optimizado y eciente 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 se nal ac ustica para obtener su espectro. Ademas, al tener
el funcionamiento especco de este dispositivo, ofrece la base para nuevos proyectos
que utilicen un dispositivo de esta ndole para el procesamiento de se nal.
1

Indice general
1. Introduccion 7
2. Consideraciones Te oricas. 10
2.1. Se nales, sistemas y procesado de la se nal . . . . . . . . . . . . . . . . 11
2.1.1. Elementos basicos de un sistema de procesado digital de se nales 14
2.1.2. Se nales en tiempo continuo frente a se nales en tiempo discreto. 15
2.1.3. Se nales continuas frente a se nales discretas . . . . . . . . . . . 17
2.2. Se nales sinusoidales en tiempo discreto . . . . . . . . . . . . . . . . . 18
2.3. Consideraciones para la conversion analogico-digital . . . . . . . . . . 19
2.3.1. Muestreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.2. Cuantizaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.3. Codicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4. Analisis de sistemas discretos lineales invariantes en el tiempo . . . . 23
2.4.1. Clasicacion de los sistemas discretos . . . . . . . . . . . . . . 24
2.4.2. Descomposicion de una se nal discreta en impulsos. . . . . . . . 25
2.4.3. Respuesta de un sistema LTI a entradas arbitrarias: la convolucion 27
2.4.4. Sistemas con respuesta impulsional de duracion nita e innita 28
2.4.5. Sistemas discretos recursivos y no recursivos . . . . . . . . . . 28
2.4.6. Sistemas discretos descritos mediante ecuaciones en diferencias. 29
2.5. Filtros Digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.1. Caractersticas de los ltros ideales . . . . . . . . . . . . . . . 32
2.5.2. Dise no de ltros digitales por el metodo de polos y ceros . . . 33
2.6. Analisis Espectral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2
2.6.1. La transformada de Fourier Discreta (DFT). . . . . . . . . . . 38
2.6.2. Calculo eciente de la DFT: Algoritmo de diezmado en tiempo 39
3. Programacion del DSP 43
3.1. Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.1. El MC56F8323 . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.2. Tarjeta de demostracion 56F8300DEMO con Programa Puer-
toSerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.1.3. Computadora con Programa PuertoSerie2 . . . . . . . . . . . 45
3.2. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.1. El Code Warrior . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.2. C++/C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.1. Desarrollo del programa Puerto serie . . . . . . . . . . . . . . 47
3.3.2. Desarrollo del programa Puerto Serie 2. . . . . . . . . . . . . . 52
3.3.3. Desarrollo del programa Sistema Discreto. . . . . . . . . . . . 52
4. Pruebas y resultados 54
5. Conclusiones y Trabajos Futuros. 59
5.1. Especicaciones Tecnicas . . . . . . . . . . . . . . . . . . . . . . . . . 67
A. Codigo de Programas Comentado 68
A.1. Programa PuertoSerie . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.1.1. Archivo Events.c . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.1.2. Archivo PuertoSerie.c . . . . . . . . . . . . . . . . . . . . . . . 70
A.2. Programa PuertoSerie2 . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3

Indice de guras
2.1. Ejemplo de una se nal de voz . . . . . . . . . . . . . . . . . . . . . . . 12
2.2. Procesado de se nal analogica. . . . . . . . . . . . . . . . . . . . . . . 14
2.3. Diagrama de bloques de un sistema digital de procesado de se nales. . 15
2.4. Representaci on graca de la se nal en tiempo discreto . . . . . . . . . 16
2.5. Se nal digital con cuatro valores de amplitud . . . . . . . . . . . . . . 17
2.6. Ejemplo de una se nal sinusoidal en tiempo discreto. . . . . . . . . . . 19
2.7. Partes basicas de un conversor analogico-digital (A/D). . . . . . . . . 19
2.8. Muestreo periodico de una se nal analogica. . . . . . . . . . . . . . . . 20
2.9. Ilustracion del aliasing. . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.10. Multiplicacion de una se nal x(n) con un inpulso unitario desplazado. 26
2.11. Desplazamiento dado por k. . . . . . . . . . . . . . . . . . . . . . . . 30
2.12. Respuesta en magnitud de algunos ltros discretos selectivos . . . . . 33
2.13. Mapeo en z de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.14. Mapeo en z de un ltro Pasa-Bajos con un polo y un cero. . . . . . . 36
2.15. Mapeo en z de un ltro Pasa-Altos con un polo y un cero. . . . . . . 36
2.16. Mapeo en z de un ltro Pasa-Banda con dos polos y dos ceros. . . . . 36
2.17. Mariposa basica del algoritmo para la FFT de diezmado en el tiempo. 42
3.1. Figura donde se observa la conguracion graca en ProcessorExpert. 47
3.2. Figura donde se observa la ventana Bean Inspector. . . . . . . . . . 49
3.3. Figura donde se observa el codigo Generado por el Processor Expert. 49
3.4. Ejemplo de una multiplicaci on binaria sin desbordamiento. . . . . . . 50
3.5. Ejemplo de una multiplicaci on binaria con desbordamiento. . . . . . . 51
4
3.6. Ejemplo de pantalla de Sistema Discreto. . . . . . . . . . . . . . . . . 53
4.1. Interface del programa PuertoSerie2. . . . . . . . . . . . . . . . . . . 54
4.2. Respuesta del circuito a 500hz. . . . . . . . . . . . . . . . . . . . . . 55
4.3. Respuesta del circuito a 1000hz. . . . . . . . . . . . . . . . . . . . . . 55
4.4. Respuesta del circuito a 500hz + 1000hz + 2000hz. . . . . . . . . . . 56
4.5. Respuesta del circuito a 3KHz, 7KHz y 10KHz. . . . . . . . . . . . . 56
4.6. Interface del programa SistemaDiscreto. . . . . . . . . . . . . . . . . 57
4.7. Resultado de aplicar un ltro pasa banda a la se nal de entrada. . . . 57
4.8. Resultado de aplicar un ltro pasa altos a la se nal de entrada. . . . . 58
4.9. Resultado de aplicar un ltro pasa bajos a la se nal de entrada. . . . . 58
5.1. Respuesta del equipo X-230 a la Prueba 1 . . . . . . . . . . . . . . . 60
5.2. Respuesta del equipo LC-650 a la Prueba 1 . . . . . . . . . . . . . . . 60
5.3. Respuesta del equipo X-230 a la Prueba 2 . . . . . . . . . . . . . . . 61
5.4. Respuesta del equipo LC-650 a la Prueba 2 . . . . . . . . . . . . . . . 61
5.5. Respuesta del equipo X-230 a la Prueba 3 . . . . . . . . . . . . . . . 61
5.6. Respuesta del equipo LC-650 a la Prueba 3 . . . . . . . . . . . . . . . 62
5.7. Respuesta del equipo X-230 a la Prueba 4 . . . . . . . . . . . . . . . 62
5.8. Respuesta del equipo LC-650 a la Prueba 4 . . . . . . . . . . . . . . . 62
5.9. Respuesta del bae VS-15X a la Prueba 1 . . . . . . . . . . . . . . . 63
5.10. Respuesta del bae armado a la Prueba 1 . . . . . . . . . . . . . . . . 63
5.11. Respuesta del bae VS-15X a la Prueba 2 . . . . . . . . . . . . . . . 64
5.12. Respuesta del bae armado a la Prueba 2 . . . . . . . . . . . . . . . . 64
5.13. Respuesta del bae VS-15X a la Prueba 3 . . . . . . . . . . . . . . . 64
5.14. Respuesta del bae armado a la Prueba 3 . . . . . . . . . . . . . . . . 65
5.15. Respuesta del bae VS-15X a la Prueba 4 . . . . . . . . . . . . . . . 65
5.16. Respuesta del bae armado a la Prueba 4 . . . . . . . . . . . . . . . . 65
5

Indice de tablas
3.1. Documentos de Referencia al MC56F8323. . . . . . . . . . . . . . . . 44
3.2. Documentos de Referencia de la tarjeta 56F8300DEMO. . . . . . . . 45
6
Captulo 1
Introduccion
Debido al interes que existe en el campo de la Ac ustica, es necesario realizar me-
diciones que puedan expresar el comportamiento de un equipo de audio, en cuanto a
frecuencia y amplitud se reere. Dichas mediciones deben ser concretas, almacenables
y comparables para poder tener una idea clara de como se comporta el equipo y co-
mo se transforma el sonido. Es cierto que el odo tiene la capacidad de poder realizar
mediciones y entender lo que esta sucediendo con el sonido, pero es necesario un odo
educado para realizar las mediciones, y ademas, la misma persona tendra que reali-
zar todas las mediciones para poder hacer una comparacion util. Es por eso la nece-
sidad de tener equipo que realice mediciones que permitan comparar estos parame-
tros de interes para poder entender el comportamiento del equipo de audio.
Esta necesidad nacio al tener un equipo de audio del cual se desconoce su com-
portamiento en frecuencia, ademas, no existan parametros o mediciones reales que
nos pudieran hacer ver si el equipo estaba en buen estado o ya con el tiempo se ha re-
ducido su rendimiento. Sera interesante poder realizar mediciones de un equipo nue-
vo, guardar sus curvas de respuesta y despues de un tiempo volver a tomar medicio-
nes y saber en que se ha demeritado el equipo o si sigue en buen estado. Sera difcil
recordar de odo como se escuchaba el equipo cuando estaba nuevo.
Un analizador de espectro sera un buen equipo de medicion para dar solucion
en gran parte a esta necesidad, pero el equipo que existe en el mercado es muy ca-
7
ro y normalmente de aplicacion especica, con lo cual no se puede adaptar facilmen-
te a soluciones y proyectos personales, sino que se depende de lo que ofrece el merca-
do. De ah nace la intenci on de fabricar equipos de medicion para dar solucion a di-
chos problemas.
El rapido desarrollo de los microcontroladores, ha permitido pensar en desarro-
llar equipo de medicion de buen desempe no y bajo costo, esto se debe a que los nue-
vos microcontroladores que tienen la capacidad de realizar los calculos necesarios pa-
ra esta funcion no son costosos. La dicultad es aprender a utilizarlos y tener el cono-
cimiento del analisis digital de se nales para programar los algoritmos de procesado de
se nal. Es cierto que el conocimiento de analisis digital no es tan estudiado como lo es el
analisis analogico, sin embargo, al entender el funcionamiento de un sistema en tiempo
continuo, se puede entender el funcionamiento en tiempo discreto. Se puede suponer,
que esa es la razon por la cual dar mayor enfasis en el estudio de sistemas analogicos.
En esta tesis se busco desarrollar un sistema de hardware y software que mida
el espectro de una se nal. Se le dio solucion a este problema con un DSP que es como
un microcontrolador pero con mas potencia de procesado y funciones especicas para
procesado de se nal. Lo primero fue tener el conocimiento de los principios basicos de
los sistemas en tiempo discreto. Se estudio acerca de la descomposicion de una se nal
en impulsos, acerca de la convoluci on, sistemas discretos descritos por ecuaciones de
diferencias, ltros digitales, DFT, etc. Se hicieron ejemplos en papel para comprobar
y observar lo aprendido, sin embargo, los algoritmos de procesado digital conllevan a
un n umero muy grande de operaciones que en muchos casos son recursivas. Hacer es-
to a mano conlleva a perder mucho tiempo en estar realizando calculos repetitivos y,
ademas, un margen de error muy alto al realizar tantos calculos. Fue por esa razon,
el crear una herramienta que permitiera probar los algoritmos estudiados y ver rapi-
damente los resultados con un margen de error mnimo. Se desarrollo un programa
para la computadora donde se le pueden cargar las funciones de lenguaje C que dan
solucion a los algoritmos de procesado digital. Esta herramienta surgio como un ex-
8
tra para el problema principal, pero resulto muy eciente para el aprendizaje de los
sistemas discretos.
En los Captulos siguientes se ver a el desarrollo completo de lo platicado ante-
riormente y esta distribuido de la siguiente forma:
Capitulo 2: Habla del marco teorico para el desarrollo del sistema. Es un com-
pendio de los conocimientos teoricos basicos para el procesado de se nal en tiempo
discreto. Entre los datos mas importantes, se habla de como se debe muestrear una
se nal para procesarla y como calcular la DFT (Transformada de Fourier Discreta) de
forma directa y con el algoritmo de diezmado en tiempo.
Capitulo 3 Habla de los dispositivos o Hardware utilizados para el desarrollo del
sistema, las herramientas de software utilizadas para la programacion del microcon-
trolador y la computadora, y el desarrollo de los programas para el microcontrolador
y la computadora, as como su funcionamiento.
Capitulo 4 Muestra los resultados obtenidos de lo desarrollado en esta tesis.
Capitulo 5 son las conclusiones y algunas ideas para implementar este sistema
en otros proyectos.
9
Captulo 2
Consideraciones Te oricas.
El procesado digital de se nales es un area de la ciencia y la ingeniera que se
ha desarrollado rapidamente durante los ultimos 30 a nos. Este rapido desarrollo es
el resultado de los avances tecnologicos tanto en los ordenadores digitales como en la
fabricacion de circuitos integrados. Los ordenadores digitales y el hardware asociado
hace tres decadas eran relativamente grandes y caros y, como consecuencia, su uso se
limitaba a aplicaciones de proposito general en tiempo no real, tanto cientcas como
comerciales. El rapido desarrollo de la tecnologa de circuitos integrados, empezan-
do por la integracion a media escala (MSI, medium-scale integration) y continuando
con la integracion a gran escala (LSI, large-scale integration), y ahora, la integracion
a muy gran escala (VLSI, very-large-scale integration) de circuitos electronicos inte-
grados ha estimulado el desarrollo de ordenadores digitales mas potentes, peque nos,
rapidos y baratos y de hardware digital de proposito general. Estos circuitos digita-
les y relativamente rapidos han hecho posible construir sistemas digitales altamente
sosticados, capaces de realizar funciones y tareas del procesado de se nal digital que
normalmente eran demasiado difciles y/o caras con circuitera o sistemas de proce-
sado de se nales analogicas. De aqu que muchas de las tareas del procesado de se nal
que convencionalmente se realizaban analogicamente se realicen hoy mediante hard-
ware digital, mas barato y a menudo mas able.
Los circuitos digitales no solo dan lugar a sistemas para el procesado de se nales
10
mas baratos y ables sino que tambien tienen otras ventajas. En particular, el pro-
cesado de se nal digital permite operaciones programables. Por medio de software se
pueden modicar facilmente las funciones de procesado de se nal para que sean reali-
zadas por el hardware. Por tanto, el hardware digital y el software asociado propor-
cionan un mayor grado de exibilidad en el dise no de sistemas. Ademas, normalmen-
te se consigue mayor precision con el hardware digital y el software en comparacion
con los circuitos analogicos y los sistemas de procesado de se nales analogicas.
En este captulo se abordaran los temas teoricos para el desarrollo de esta tesis.
2.1. Se nales, sistemas y procesado de la se nal
Una se nal se dene como una cantidad fsica que varia con el tiempo, el espa-
cio o cualquier otra variable o variables independientes. Matematicamente, se descri-
be una se nal como una funcion de una o mas variables independientes. Por ejemplo
las funciones
s
1
(t) = 5t (2.1)
s
2
(t) = 20t
2
(2.2)
describen dos se nales, una que varia linealmente con la variable independiente t (tiem-
po) y una segunda que varia cuadraticamente con t. Como otro ejemplo considere la
funcion
s(x, y) = 3x + 2xy + 10y
2
(2.3)
Esta funcion describe una se nal con dos variables independientes x y y que pueden
representar las coordenadas espaciales en un plano. Las se nales descritas en 2.1, 2.2
y 2.3 pertenecen a las clases de se nales que quedan perfectamente denidas especi-
cando la dependencia funcional con la variable independiente. Sin embargo, existen
casos en los que dicha relacion funcional es desconocida o demasiado complicada co-
mo para tener utilidad practica.
11
Por ejemplo, una se nal de voz como la que se muestra en la Figura (2.1) no se
puede describir funcionalmente mediante expresiones como la (2.1) o (2.2) . En gene-
ral, un segmento de voz puede representarse con un alto grado de exactitud como la
suma de varias sinusoides de diferentes amplitudes y frecuencias, esto es, como

N
i
A
i
(t)sen[2F
i
(t)t +
i
(t)] (2.4)
donde {A
i
(t)}, {F
i
(t)}, y {
i
(t)} son los conjuntos (probablemente variables con el
tiempo) de amplitudes, frecuencias y fases, respectivamente, de las sinusoides. De he-
cho, una manera de interpretar la informacion o el mensaje contenido en un segmen-
to corto de una se nal de voz es medir las amplitudes, frecuencias y fases contenidas
en el segmento corto de se nal.
Figura 2.1: Ejemplo de una se nal de voz
Asociados a las se nales naturales se encuentran los medios con los que se gene-
ran. Por ejemplo, las se nales de voz se generan al forzar el paso del aire a traves de
las cuerdas vocales. Por lo tanto, la forma en que se generan las se nales se encuen-
tra asociada con un sistema que responde ante un estmulo o fuerza. En una se nal
de voz, el sistema esta constituido por las cuerdas vocales y el tracto bucal. El esti-
mulo en combinacion con el sistema se llama fuente de se nal.
Un sistema se puede denir tambien como un dispositivo fsico que realiza una
operacion sobre una se nal. Por ejemplo, un ltro que se usa para reducir el ruido y
las interferencias que corrompen la se nal conteniendo la informacion deseada se de-
12
nomina sistema.
Cuando se hace pasar una se nal a traves de un sistema, como en el caso del l-
trado, se dice que se ha procesado la se nal. En este caso, el procesado de la se nal im-
plica la separacion de la se nal deseada del ruido y la interferencia. En general, el sis-
tema se caracteriza por el tipo de operacion que realiza sobre la se nal. Por ejemplo,
si la operacion que realiza es lineal, el sistema se denomina lineal, si la operacion es
no lineal, el sistema se dice no lineal, etc. Tales operaciones se denominan habitual-
mente como procesado de se nal.
Es conveniente ampliar la denicion de sistema para incluir no solo dispositivos
fsicos, sino tambien realizaciones software de operaciones sobre una se nal. En el pro-
cesado digital de se nales en un ordenador, las operaciones realizadas sobre una se nal
constan de varias operaciones matematicas especicadas por un programa software.
En este caso, el programa representa una implementaci on del sistema en software.
Alternativamente, el procesado digital de la se nal se puede efectuar mediante hard-
ware digital (circuitos logicos) congurado para ejecutar las operaciones deseadas es-
pecicas. En un sentido mas amplio, un sistema digital se puede implementar como
una combinaci on de hardware digital y software, cada uno de los cuales desempe na
su propio conjunto de funciones.
Dado que muchas de las se nales que se encuentran en las practica son analogi-
cas, tambien debemos de considerar el problema de convertir una se nal analogica en
una digital para su procesado. Las operaciones realizadas por los sistemas digitales
se pueden especicar a menudo matematicamente. El metodo, o conjunto de reglas
para implementar el sistema mediante un programa que ejecuta las operaciones ma-
tematicas correspondientes se denomina algoritmo.
13
2.1.1. Elementos basicos de un sistema de procesado digital
de se nales
La mayor parte de las se nales que aparecen en los ambitos de la ciencia y la in-
geniera son de naturaleza analogica, es decir, las se nales son funciones de una varia-
ble continua, como el tiempo o el espacio y normalmente toman valores en un ran-
go continuo. Tales se nales pueden ser procesadas directamente por sistemas analogi-
cos adecuados(como ltros o analizadores de frecuencia o multiplicadores de frecuen-
cia) con el proposito de cambiar sus caractersticas o extraer cualquier informacion
deseada. En tal caso, se dice que la se nal ha sido procesada directamente en forma
analogica, como se ilustra en la Figura (2.2). Tanto la se nal de entrada como la de
salida estan en forma analogica.
El procesado digital de se nales proporciona un metodo alternativo para proce-
sar una se nal analogica, como se muestra en la Figura (2.3). Para realizar el procesa-
do digitalmente, se necesita una interfaz entre la se nal analogica y el procesador di-
gital. Este interfaz se denomina conversor anal ogico digital (A/D). La salida del
conversor analogico-digital es una se nal adecuada como entrada al procesador digital.
Figura 2.2: Procesado de se nal analogica.
El procesador digital de se nales puede ser un gran ordenador digital programa-
ble o un peque no microprocesador programado para realizar las operaciones deseadas
sobre la se nal de entrada. Tambien puede ser un procesador digital cableado congu-
rado para efectuar un conjunto de operaciones sobre la se nal de entrada. Las maqui-
nas programables proporcionan la exibilidad de cambiar las operaciones de procesa-
do de se nales mediante un cambio de software. En consecuencia, los procesadores de
se nales programables son de uso muy frecuente. Por otro lado, cuando las operacio-
14
nes de procesado de se nales estan bien denidas, se puede optimizar la implementa-
cion cableada de las operaciones, resultando un procesador mas barato y, habitual-
mente, mas rapido que su equivalente programable. En aplicaciones donde la salida
digital del procesador digital de se nales se ha de entregar en forma analogica, como
en comunicaciones digitales, debemos proporcionar otro interfaz desde el dominio di-
gital al analogico. Tal interfaz de denomina conversor digital/anal ogico (D/A). De
este modo, la se nal se entrega al usuario en forma analogica, como se ilustra en el dia-
grama de bloques de la Figura (2.3). No obstante, existen otras aplicaciones practi-
cas que requieren analisis de se nales en las que la informacion deseada se encuentra
en formato digital y no se requiere ning un conversor D/A.
Figura 2.3: Diagrama de bloques de un sistema digital de procesado de se nales.
2.1.2. Se nales en tiempo continuo frente a se nales en tiempo
discreto.
Las se nales en tiempo continuo o se nales analogicas estan denidas para to-
dos los valores del tiempo y pueden tomar cualquier valor en el intervalo continuo(a,
b), donde a puede ser y b puede ser . Matematicamente, estas se nales se des-
criben como funciones continuas de variable continua. Las se nales en tiempo discre-
to estan denidas solo para ciertos valores del tiempo. Estos instantes de tiempo
no necesitan estar equidistantes, aunque en la practica se utilizan normalmente ins-
tantes equiespaciados conforme a intereses computacionales y matematicos. La se nal
x(t
n
) = e
|t
n
|
, n = 0, 1, 2, ... constituye un ejemplo de una se nal discreta. Si usa-
mos el ndice n como la variable independiente que representa los instantes de tiem-
15
po, la se nal pasa a ser una funcion de una variable entera (es decir, una secuencia de
n umeros). Por lo tanto, una se nal en tiempo discreto se puede representar matemati-
camente como una secuencia de numeros reales o complejos. Para destacar la natura-
leza discreta de una se nal denotaremos dicha se nal como x(n) en vez de como x(t). Si
los instantes de tiempo t
n
estan equiespaciados (es decir, t
n
= nT), tambien de usa-
ra la notacion x(nT). Por ejemplo la secuencia
x(n) =
{
0.8
n
, si n 0
0, enotro caso
(2.5)
es una se nal en tiempo discreto cuya representacion graca se muestra en la Figura
(2.4).
En la practica las se nales en tiempo discreto pueden originarse de dos maneras:
1. Eligiendo valores de una se nal analogica en determinados instantes de tiempo.
Este proceso se denomina muestreo. Todos los aparatos de medida que propor-
cionan medidas en instantes de tiempo regulares generan se nales en tiempo dis-
creto. Por ejemplo, la se nal x(n) de la Fig. 1.4 se puede obtener muestreando
la se nal analogica x(t) = 0.8
t
, t 0 y x(t) = 0, t < 0, una vez cada segundo.
2. Acumulando una variable a lo largo de un determinado periodo de tiempo. Por
ejemplo, el n umero de coches que pasan por una determinada calle en una hora.
Figura 2.4: Representaci on graca de la se nal en tiempo discreto
x(n) = 0.8
n
para n > 0 y x(n) = 0 para n < 0
16
2.1.3. Se nales continuas frente a se nales discretas
El valor de una se nal, en tiempo continuo o discreto, puede ser continuo o dis-
creto. Si una se nal toma todos los valores posibles en un intervalo tanto nito como
innito, se dice que es continua. Por el contrario, si toma valores de un conjunto nito
de valores se dice que es discreta. Normalmente, estos valores son equidistantes y por
tanto pueden expresarse como un m ultiplo de la distancia entre dos valores sucesivos.
Una se nal en tiempo discreto, que toma valores en un conjunto discreto se denomina
se nal digital. La Figura (2.5) muestra una se nal digital con cuatro valores posibles.
Para que una se nal pueda ser procesada digitalmente ha de ser en tiempo dis-
creto y tomar valores discretos (es decir, ha de ser una se nal digital). Si la se nal a
procesar es analogica, se convierte a digital muestre andola en el tiempo y obtenien-
do por tanto una se nal en tiempo discreto y posteriormente cuantificando sus va-
lores en un conjunto discreto. El proceso de convertir una se nal continua en discre-
ta, se denomina cuantificaci on y es basicamente un proceso de aproximaci on. Pue-
de lograrse por redondeo o truncamiento. Por ejemplo, si los valores permitidos en la
se nal digital son enteros, digamos del 0 al 15, la se nal continua sera cuanticada a es-
tos valores. As, el valor 8.58 se aproximara por 8, si el proceso de cuanticaci on se
basa en el truncamiento, y por 9, si se basa en redondear al entero mas proximo.
Figura 2.5: Se nal digital con cuatro valores de amplitud
17
2.2. Se nales sinusoidales en tiempo discreto
Una se nal sinusoidal en tiempo discreto puede expresarse como
x(n) = Acos(wn +), < n < (2.6)
donde n es una variable entera, denominada numero de muestra, A es la amplitud de
la sinusoide, w es la frecuencia en radianes por muestra, y es la fase en radianes.
Si, en lugar de w, utilizamos la variable de frecuencia f denida por
w 2f (2.7)
la relacion (1.7) se convierte en
x(n) = Acos(2fn + ), < n < (2.8)
La frecuencia f tiene dimensiones de ciclos por muestra. La gura 2.6 muestra
una sinusoide en tiempo discreto.
En contraste con las sinusoides en tiempo continuo, las sinusoides en tiempo
discreto estan caracterizadas por las propiedades siguientes:
1. Una sinusoide en tiempo discreto es periodica solo si su frecuencia f es un n ume-
ro racional.
2. Las sinusoides en tiempo discreto cuyas frecuencias estan separadas por un
m ultiplo entero de 2, son identicas. Por otro lado, las secuencias de dos sinu-
soides cualesquiera de frecuencias en el rango w o 1/2 f 1/2
son unicas.
3. La mayor tasa de oscilacion en una sinusoide en tiempo discreto se alcanza cuan-
do w = (o w = ) o, equivalentemente, f = 1/2 (o f = 1/2).
18
Figura 2.6: Ejemplo de una se nal sinusoidal en tiempo discreto.
2.3. Consideraciones para la conversion analogico-
digital
La mayora de las se nales de interes practico son analogicas. Para procesar es-
tas se nales por medios digitales es necesario convertirlas a formato digital. Este pro-
cedimiento se denomina conversi on anal ogico digital (A/D).
Conceptualmente, se puede ver la conversi on A/D como un proceso de tres pa-
sos. Este proceso se ilustra en la gura 2.7.
Figura 2.7: Partes basicas de un conversor analogico-digital (A/D).
1. Muestreo.
2. Cuantificaci on.
3. Codificaci on.
19
2.3.1. Muestreo
Esta es la conversion de una se nal en tiempo continuo a una se nal en tiempo
discreto obtenida tomando muestrasde la se nal en tiempo continuo en instantes de
tiempo discreto. Existen muchas maneras de muestrear una se nal. Se ce nira la discu-
sion al muestreo peri odico o uniforme, que es el tipo de muestreo mas usado en la
practica. Este de describe mediante la relacion
x(n) = x
a
(nT), < n < (2.9)
donde x(n) es la se nal en tiempo discreto obtenida tomando muestras de la se nal
analogica x
a
(t) cada T segundos. Este proceso se ilustra en la Figura (2.8). El in-
tervalo de tiempo T entre dos muestras sucesivas se denomina periodo de muestreo
o intervalo de muestreo, y su recproco 1/T = F
s
se llama velocidad de muestreo
(muestras por segundo) o frecuencia de muestreo (hertzios).
Figura 2.8: Muestreo periodico de una se nal analogica.
El muestreo periodico establece una relacion entre las variables t y n de tiem-
po continuo y tiempo discreto, respectivamente. De hecho, estas variables se relacio-
nan linealmente a traves del periodo de muestreo T o, equivalentemente, a traves de
la velocidad de muestreo F
s
= 1/T, como
t = nT =
n
F
s
(2.10)
20
Como consecuencia de la expresion (2.10), existe una relacion entre la variable F
(o ) de las se nales analogicas y la variable frecuencia f (o ) de las se nales en tiem-
po discreto.
f =
F
F
s
(2.11)
= T (2.12)
Dado que la frecuencia maxima de una se nal en tiempo discreto es = o
f = 1/2, los valores maximos de F y para una velocidad de muestreo F
s
son
F
max
=
F
s
2
=
1
2T
(2.13)

max
= F
s
=

T
(2.14)
Frecuencias superiores a F
S
/2
Cualquier secuencia que resulte de una sinusoide con una frecuencia | |> , o
| f |> 1/2 tiene una secuencia identica obtenida a partir de una se nal sinusoidal de
frecuencia | |< . Debido a esta similitud, denominamos a la sinusoide que tiene la
frecuencia | |> un alias de la sinusoide correspondiente de frecuencia | |< .
Por esta razon consideramos todas las frecuencias | |> , o | f |> 1/2 como alias. Si
en una se nal muestreada tenemos una o varias componentes sinusoidales con frecuen-
cia superior a F
s
/2 tendramos el mismo n umero de alias y no se podra distinguir
unvocamente la sinusoide componente de la se nal. Esto se muestra en la Figura (2.9).
Teorema del muestreo.
Si la frecuencia mas alta contenida en una se nal analogica x
a
(t) es F
max
= B y la
se nal se muestrea a una velocidad F
s
> 2F
max
2B, entonces x
a
(t) se puede recupe-
rar totalmente a partir de sus muestras mediante la siguiente funcion de interpolacion
g(t) =
sen2Bt
2Bt
(2.15)
21
Figura 2.9: Ilustracion del aliasing.
2.3.2. Cuantizaci on
El proceso de convertir una se nal en tiempo discreto de amplitud continua en
una se nal digital, expresando cada muestra por medio de un n umero nito (en vez
de innito) de dgitos, se denomina cuantificaci on. El error cometido al represen-
tar la se nal de valor continuo por un conjunto nito de valores discretos se denomi-
na error de cuantificaci on o ruido de cuantificaci on
Denotaremos la operacion de cuanticaci on de las muestras x(n) como Q[x(n)]
y utilizaremos x
q
(n) para designar la secuencia de muestras cuanticadas a la salida
del cuanticador.
x
q
(n) = Q[x(n)](2.16)
por tanto, el error de cuanticaci on de una secuencia e
q
(n) se dene como la diferen-
cia entre el valor cuanticado y el de la muestra original
e
q
(n) = x
q
(n) x(n) (2.17)
2.3.3. Codicacion
El proceso de codicacion es como se va a almacenar los n umeros de la cuanti-
zacion. En el caso de una codicacion binaria, si disponemos de L niveles en la cuan-
22
tizacion, necesitaremos una longitud de palabra de b bits
2
b
L (2.18)
2.4. Analisis de sistemas discretos lineales inva-
riantes en el tiempo
En concreto, un sistema discreto es un dispositivo que opera sobre una
exitaci on o se nal de entrada en tiempo discreto seg un una regla preestablecida para
generar otra se nal en tiempo discreto denominada salida o respuesta del sistema. Se
dice que la se nal x(n) es transformada por el sistema en y(n), y se expresa la rela-
cion general entre x(n) e y(n) como
y(n) [x(n)] (2.19)
o, de forma alternativa
x(n)

y(n) (2.20)
donde el smbolo denota la transformacion o procesado realizado por el sistema so-
bre x(n) para producir la se nal de salida y(n).
Existen dos metodos basicos para el analisis del comportamiento o respuesta de
un sistema lineal a una determinada se nal de entrada. Un metodo se basa en obtener
la solucion de la ecuacion de entrada-salida que tiene una forma general
y(n) =
N

k1
a
k
y(n k) +
M

k=0
b
k
x(n k) (2.21)
donde {a
k
} y {b
k
} son parametros constantes que especican el sistema y son inde-
pendientes de x(n) e y(n). La relacion entrada-salida dada en la expresion (2.21) se
denomina ecuacion en diferencias y representa una de las maneras de caracterizar el
comportamiento de un sistema discreto LTI (del ingles Linear Time Invariant).
El segundo metodo se basa en descomponer dicha se nal de entrada en se nales
elementales. Entonces, usando la propiedad de linealidad del sistema, se suman las
23
respuestas del sistema a cada una de las se nales elementales para obtener la respues-
ta del sistema a la se nal de entrada global.
2.4.1. Clasicacion de los sistemas discretos
Sistemas estaticos y sistemas dinamicos
Un sistema en tiempo discreto se denomina est atico o sin memoria si su sali-
da en cualquier instante n depende a lo sumo de la muestra de entrada en ese mis-
mo instante, pero no de las muestras pasadas o futuras de la entrada. En cualquier
otro caso, se dice que el sistema es din amico o con memoria. Si la salida de un siste-
ma en el instante n esta determinada completamente por las muestras de entrada en
el intervalo de n N a n(N 0), se dice que el sistema tiene memoria de duracion
N. si N = 0, el sistema es estatico. Si 0 < N < , se dice que tiene memoria finita,
mientras que si N = , se dice que tiene memoria infinita.
Sistemas invariantes en el tiempo y sistemas variantes en el tiempo
Teorema. Un sistema en reposo es invariante en el tiempo o
invariante a desplazamientos si y solo si
x(n)

y(n) (2.22)
implica que
x(n k)

y(n k) (2.23)
para toda se nal de entrada x(n) y todo desplazamiento temporal de k.
Sistemas lineales y no lineales
Un sistema lineal es aquel que satisface el principio de superposici on.
Teorema. Un sistema es lineal si y solo si
[a
1
x
1
(n) + a
2
x
2
(n)] = a
1
[x
1
(n)] + a
2
[x
2
(n)] (2.24)
24
para cualesquiera secuencias arbitrarias de entrada x
1
(n) y x
2
(n), y cualesquiera cons-
tantes arbitrarias a
1
y a
2
.
Sistemas causales y no causales
Teorema. Se dice que un sistema es causal si la salida del sistema en cualquier
instante n (es decir y(n)) depende solo de las entradas presentes y pasadas pero no
de las futuras.
Sistemas estables frente a sistemas inestables
Teorema. Se dice que un sistema es estable si y solo si toda entrada acotada
produce una salida acotada.
Matematicamente el acotamiento de las secuencias de entrada-salida, x(n) e
y(n), se traduce en la existencia de un par de n umeros nitos, digamos M
x
y M
y
, ta-
les que
| x(n) | M
x
< | y(n) | M
y
< (2.25)
para todo n.
2.4.2. Descomposicion de una se nal discreta en impulsos.
Supongamos que tenemos una se nal arbitraria x(n) que queremos expresar co-
mo la suma de impulsos unitarios. Escogemos las se nales elementales x
k
(n) como
x
k
(n) = (n k) (2.26)
donde k representa el retraso del impulso unitario. Para poder manejar una se nal ar-
bitraria x(n) que puede tener innitos valores, el conjunto de impulsos unitarios de-
be ser tambien innito, para contener el n umero innito de desplazamientos.
Supongamos ahora que multiplicamos las secuencias x(n) y (n k). Dado que
(n k) es cero en todos los puntos excepto en n = k, donde vale uno, el resultado
de esta multiplicacion es otra secuencia que vale cero en todos los puntos excepto en
25
n = k donde vale x(k), como se ilustra en la Fig. 2.10. Por tanto,
x(n)(n k) = x(k)(n k) (2.27)
Figura 2.10: Multiplicacion de una se nal x(n) con un inpulso unitario desplazado.
En consecuencia, si repetimos esta multiplicacion para todos los posibles des-
plazamientos, < k < , y sumamos el resultado de todas estas multiplicaciones,
obtendremos una se nal igual a la secuencia original x(n), es decir,
x(n) =

k=
x(k)(n k) (2.28)
de esta forma se podra expresar la secuencia
x 0 1 2 3
x(n) 7 5 4 3
26
como la suma ponderada de impulsos unitarios
x(n) = 7(n) + 5(n 1) + 4(n 2) + 3(n 3) (2.29)
y obtenemos la se nal descompuesta en se nales elementales.
2.4.3. Respuesta de un sistema LTI a entradas arbitrarias: la
convolucion
Primero, se denota la respuesta del sistema y(n, k) a un impulso unitario en el
instante n = k mediante el smbolo especial h(n, k), < k < . Es decir,
y(n, k) h(n, k) = [(n k)] (2.30)
En la expresion (2.30) observamos que n es el ndice temporal y k indica la posicion
del impulso o instante en el que el impulso unitario es distinto de cero. Si el impulso
a la entrada del sistema se escala una cierta cantidad c
k
x(k), la respuesta del sis-
tema quedara escalada por la misma cantidad, esto es,
c
k
h(n, k) = x(k)h(n, k) (2.31)
Finalmente, si la entrada es la se nal arbitraria x(n) expresada como la suma ponde-
rada de impulsos
x(n) =

k=
x(k)(n k) (2.32)
entonces la respuesta del sistema es la correspondiente suma ponderada de respues-
tas a los impulsos, es decir,
y(n) = [x(n)] =
[

k=
x(k)(n k)
]
=

k=
x(k)[(n k)] (2.33)
=

k=
x(k)h(n, k)
27
Si, ademas, el sistema es invariante en el tiempo, la formula 2.33 se simplica a
y(n) =

k=
x(k)h(n k) (2.34)
La formula 2.34 que da la respuesta y(n) del sistema LTI como funcion de la se nal de
entrada x(n) y de la respuesta impulsional h(n) se denomina convoluci on.
2.4.4. Sistemas con respuesta impulsional de duracion nita
e innita
Es conveniente subdividir los sistemas lineales invariantes en el tiempo en aque-
llos que tienen una respuesta impulsional de duracion nita (FIR, nite-duration im-
pulse response) y los que tienen una respuesta impulsional de duracion innita (IIR,
innite-duration impulse response). As, pues, un sistema FIR tiene una respuesta
implulsional que es cero fuera de un determinado intervalo nito tal que
h(n) = 0 n < 0 y n M
la convoluci on para este tipo de sistemas se simplica seg un
y(n) =
M1

k=0
x(k)h(n k)
Por el contrario, un sistema lineal invariante en el tiempo IIR tiene una respues-
ta impulsional de duracion innita. Su salida, seg un la formula de la convolucion, es
y(n) =

k=0
x(k)h(n k)
2.4.5. Sistemas discretos recursivos y no recursivos
Existen muchos sistemas, en los que es, o bien necesario, o bien conveniente, ex-
presar la salida del sistema no solo en terminos de los valores presentes y pasados de
la se nal sino tambien en funcion de los valores pasados de la propia se nal de salida.
El siguiente problema ilustra este hecho.
28
Suponga que quiere calcular la media acumulativa de una se nal x(n) en el in-
tervalo 0 k n, denida como
y(n) =
1
n + 1
n

k=0
x(k) n = 0, 1, . . . (2.35)
Como se desprende de 2.35, el calculo de y(n) requiere el almacenamiento de todas
las muestras de x(k) para 0 k n.
Sin embargo, una manera mas eciente de calcular y(n) se basara en utilizar la
salida anterior y(n k). Reordenando 2.35 obtenemos
(n + 1)y(n) =
n1

k=0
x(k) + x(n)
= ny(n 1) +x(n)
de aqu
y(n) =
n
n + 1
y(n 1) +
1
n + 1
x(n) (2.36)
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 en
diferencias.
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 consistira 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 sera imposible. Afortunadamente existe una manera practica y eciente,
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

k1
a
k
y(n k) +
M

k=0
b
k
x(n k) (2.38)
donde k representa un desplazamiento de la se nal como lo muestra la gura 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 explcita de la salida y(n) de un sistema li-
neal invariante en el tiempo dada una ecuacion en diferencias de coecientes 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) = y
h
(n) + yp(n)
La parte y
h
(n) se conoce como solucion homog enea o complementaria, mientras que
y
p
(n) se denomina soluci on 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 se nales 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 se nal deseada. La se nal en el dominio del tiempo se ob-
tiene invirtiendo la transformada z resultante.
2.5. Filtros Digitales
El termino filtro se utiliza com unmente para describir un dispositivo que dis-
crimina, seg un alg un atributo de los objetos que se aplican a su entrada, aquello que
pasa a su traves. Por ejemplo, un ltro de aire permite que el aire pase a su traves,
evitando que las partculas de polvo presentes en el aire lo atraviesen. Un ltro de
aceite realiza una funcion similar, con la excepcion de que el aceite es la sustancia
que se permite que pase a traves del ltro, mientras que las partculas 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 ltrado de las diferentes componentes en frecuencia de la entrada. La natu-
raleza de esta accion de ltrado viene determinada por las caractersticas 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 coecientes, podemos dise nar l-
tros selectivos en frecuencia que dejen pasar se nales con componentes frecuenciales en
ciertas bandas, al tiempo que aten uen se nales que contengan componentes frecuen-
ciales en otras bandas.
En general, un sistema lineal e invariante en el tiempo modica el espectro de
la se nal de entrada X(w), seg un su respuesta en frecuencia H(w), para dar lugar a
una se nal de salida con espectro Y (w) = H(w)X(w). En cierto sentido, H(w) act ua
31
como funci on de ponderaci on o funcion de conformaci on espectral para las diferen-
tes componentes frecuenciales de la se nal de entrada. Visto en este contexto, cual-
quier sistema lineal e invariante en el tiempo puede considerarse como un ltro 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 ltrado selec-
tivo en frecuencia.
2.5.1. Caractersticas de los ltros ideales
Los ltros se suelen clasicar seg un sus caractersticas en el dominio de la fre-
cuencia como paso bajo, paso alto, paso banda y de banda eliminada. Las caractersti-
cas ideales de la respuesta en magnitud de estos tipos de ltros se representan en la Fi-
gura (2.12). Tal como se muestra, los ltros 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 ltros no son realizables, pero sirven como idealizacion ma-
tematica de los ltros practicos. Por ejemplo, el ltro paso bajo ideal tiene una res-
puesta impulsional
h
lp
(n) =
senw
c
n
n
(2.39)
Vemos que este ltro no es causal ni absolutamente sumable, por lo que es inestable.
Por tanto, este ltro ideal es fsicamente irrealizable. Sin embargo, su caracterstica
de respuesta en frecuencia se puede aproximar mucho con ltros practicos y realiza-
bles fsicamente.
32
Figura 2.12: Respuesta en magnitud de algunos ltros discretos selectivos
2.5.2. Dise no de ltros 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 se nal continua r(t) podemos obtener la
se nal muestreada utilizando
r

(t) =
1
T

n=
r(t)e
jnw
s
t
(2.40)
y su transformada de Laplace
R

(s) =

k=0
r(kT)e
kTs
(2.41)
33
Ahora que la se nal esta en forma muestreada, se toma la transformada z en am-
bos miembros de la ecuacion mediante la sustitucion de z = e
Ts
. 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 = e
Ts
= e
T(+j)
= e
T
[cos(T) + jsen(T)] (2.43)
en la gura 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 innito, por lo tanto z = 2 y z = 1 son polos. En una graca 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 ltro 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 coecientes del ltro sean reales.
Filtro Pasa-Bajos.
Para un ltro 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 aten ua a un mas la respuesta del ltro pa-
ra altas frecuencias. Esto nos lleva a un ltro 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 gura 2.14.
Filtro Pasa-Altos.
Se puede obtener ltros Pasa-Altos reejando los polos y ceros de un ltro 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 gura 2.15.
35
Figura 2.14: Mapeo en z de un ltro Pasa-Bajos con un polo y un cero.
Figura 2.15: Mapeo en z de un ltro Pasa-Altos con un polo y un cero.
Filtro Pasa-Banda.
Basicamente, el ltro 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 ltro. 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 gura 2.16.
Figura 2.16: Mapeo en z de un ltro 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 artculo 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 volvan 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 ning un 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 contena lneas de colores diferentes. Unos a nos despues, a mediados del siglo
XVIII, Gustav Kirchho y Robert Bunsen descubrieron que cada elemento qumico,
cuando era calentado hasta la incandescencia, radiaba su propio color de luz. Como
consecuencia, cada elemento qumico se puede identicar mediante sus propias lneas
espectrales. De la fsica sabemos que cada color se corresponde con una frecuencia es-
pecca del espectro visible. De hecho, la descomposicion de la luz en sus colores es
una forma de analisis frecuencial.
El analisis frecuencial de una se nal conlleva la separacion de la se nal en sus com-
ponentes (sinusoidales) frecuenciales. En lugar de luz, nuestras formas de onda son
basicamente funciones temporales. El papel del prisma es desempe nado por las he-
rramientas de analisis de Fourier: las series de Fourier y la transformada de Fourier.
Como en el caso de compuestos qumicos, formas de onda diferentes tienen diferen-
tes espectros. Por ello, el espectro provee una identidad o rma de la se nal en el sen-
tido de que ninguna otra se nal tiene el mismo espectro.
37
El objetivo basico al desarrollar herramientas de analisis frecuencial es propor-
cionar una representaci on matematica y pictorica para las componentes frecuenciales
contenidas en una cierta se nal. Como en la Fsica, el termino espectro se emplea al
referirse al contenido en frecuencia de una se nal. El proceso de obtencion del espec-
tro de una se nal 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 se nal en la practica, basado en mediciones reales de la se nal, se denomina
estimacion espectral. Esta distincion es muy importante. En un problema practico,
la se nal 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 se nal de energa nita en tiempo discreto
x(n) se dene 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 se nales en tiempo discreto se limita al in-
tervalo (, ) o (0, 2), una se nal en tiempo discreto puede tener componentes en
frecuencias separadas 2/N radianes o f = 1/N ciclos. Esta propiedad se reeja en
la transformada de Fourier de la se nal. De hecho, X(w) es periodica de periodo 2.
En general, las muestras equiespaciadas en frecuencia X(2k/N), k =
0, 1, ..., N 1, no representan unvocamente a la secuencia original x(n) cuando x(n)
tiene duracion nita. Al contrario, estas muestras se corresponden con una secuen-
cia periodica x
p
(n) de periodo N, donde x
p
(n) es una version con aliasing de x(n).
Cuando la secuencia x(n) es de duracion nita L N, entonces x
p
(n) es simplemen-
te una repeticion periodica de x(n). Una secuencia de duracion nita x(n) de longi-
tud L, es decir, x(n) = 0 para n < 0 y n L, tiene transformada de fourier
38
X(w) =
L1

n=0
x(n)e
jwn
0 w 2 (2.50)
Cuando muestreamos X(w) en frecuencias equiespaciadas w
k
= 2K/N, k =
0, 1, 2, ..., N 1, donde N L, las muestras resultantes son
X(k) =
N1

n=0
x(n)e
j2kn/N
k = 0, 1, 2, ..., N 1 (2.51)
Dado que:
e
z
= e
x+iy
= e
x
[cosy +iseny] (2.52)
de esta forma podemos escribir la expresion (2.51) como:
X(k) =
N1

n=0
x(n)[cos(2kn/N) j sen(2kn/N)] k = 0, 1, 2, ..., N 1 (2.53)
2.6.2. Calculo eciente de la DFT: Algoritmo de diezmado
en tiempo
El desarrollo de algoritmos computacionalmente ecientes 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 peque nas.
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 n umero 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) =
M1

m=0
L1

l=0
x(l, m)W
(Mp+q)(mL+l)
N
(2.55)
Pero
W
(Mp+q)(mL+l)
N
= W
MLmp
N
W
mLq
N
W
Mpl
N
W
lq
N
(2.56)
Sin embargo, W
Nmp
N
= 1, W
mqL
N
= W
mq
N/L
= W
mq
M
, y W
Mpl
N
= W
pl
N/M
= W
pl
L
.
Con estas simplicaciones, la expresion (2.51) se puede expresar como
X(p, q) =
L1

l=0
{
W
lq
N
[
M1

m=0
x(l, m)W
mq
M
]}
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)
M1

m=0
x(l, m)W
mq
M
, 0 q M 1 (2.58)
Para cada una de las las l = 0, 1, , L 1.
2. Segundo, se calcula la nueva matriz rectangular G(l, q) denida como
G(l, q) = W
lq
N
F(l, q)
0 l L 1
0 q M 1
(2.59)
3. Tercero, se calcula las DFTs de L puntos
X(p, q) =
L1

l=0
G(l, q)W
lp
L
(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 = 2
v
mediante el metodo de divide
y Venceras. Se escoge M = 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, f
1
(n) y f
2
(n),
correspondientes a las muestras pares e impares de x(n), respectivamente, esto es,
f
1
(n) = x(2n)
f
2
(n) = x(2n + 1)
, n = 0, 1, ,
N
2
1 (2.61)
Por lo tanto, f
1
(n) y f
2
(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) =
N1

n=0
x(n)W
kn
N
k = 0, 1, , N 1 (2.62)
=

npar
x(n)W
kn
N
+

nimpar
x(n)W
kn
N
(2.63)
=
(N/2)1

m=0
x(2m)W
2mk
N
+
(N/2)1

m=0
x(2m + 1)W
k(2m+1)
N
(2.64)
Pero W
2
N
= W
N/2
. Sustituyendo esta igualdad, (1.63) puede expresarse como
X(k) =
(N/2)1

m=0
f
1
(m)W
km
N/2
+ W
k
N
(N/2)1

m=0
f
2
(m)W
km
N/2
(2.65)
o
X(k) = F
1
(k) + W
k
N
F
2
(k) k = 0, 1, , N 1 (2.66)
donde F
1
(k) y F
2
(k) son las DFTs de N/2 puntos de las secuencias f
1
(m) y f
2
(m),
respectivamente.
Puesto que F
1
(k) y F
2
(k) son periodicas, de periodo N/2, tenemos que F
1
(k +
N/2) = F
1
(k) y F
2
(k +N/2) = F
2
(k). Ademas, W
k+N/2
N
= W
k
N
. De aqu que (2.66)
se pueda expresar como
X(k) = F
1
(k) + W
k
N
F
2
(k) k = 0, 1, . . . ,
N
2
1 (2.67)
X
(
k +
N
2
)
= F
1
(k) W
k
N
F
2
(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 f
1
(m) y f
2
(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
r
N
, 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 ujo 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 N
2
multiplicaciones complejas y N
2
N sumas
complejas. Por otro lado utilizando el algoritmo de diezmado en tiempo, se observa
que el calculo directo de F
1
(k) requiere (N/2)
2
multiplicaciones complejas. La mis-
ma exigencia se aplica al calculo de F
2
(k). Ademas, se requieren N/2 multiplicacio-
nes complejas mas para calcular W
k
N
F
2
(k). De aqu que el calculo de X(k) requiera
2(N/2) +N/2 = N
2
/2 +N/2 multiplicaciones complejas. El primer paso da lugar en
el numero de multiplicaciones de N
2
a N
2
/2 + N/2, que equivale aproximadamen-
te a dividir por 2 el n umero 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
Captulo 3
Programacion del DSP
En este captulo 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 exibles para crear soluciones efectivas a muy bajo costo. A cau-
sa de su bajo costo, exibilidad 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 dise nado para procesar ecientemente se nales 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 e-
ciente y compacto. El conjunto de instrucciones es tambien muy eciente para com-
43
piladores de C, permitiendo un desarrollo rapido, potente y compacto.
El 56F8323 incluye 32KB de memoria de programa ash y 8KB de memoria de
datos ash, 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 ash.
En este captulo se abordaran los temas especcos para el desarrollo de esta te-
sis. Para mayores referencias buscar los documentos:
Nombre N umero de Parte Descripcion
Descripcion detallada
56F8300 Peripheral MC56F8300UM de los perifericos
User Manual de los productos de
la familia 56F8300.
Especicaciones
56F8323/56F8123 MC56F8323 electricas, informacion
Technical Data Sheet de perifericos
y del encapsulado.
Resumen de la
56F8323 MC56F8323PB descripcion y diagrama
Product Brief a bloques del 56F8323
proscesador, memoria,
perifericos e interfaces.
Descripcion detallada
DSP56800E DSP56800ERM de la arquitectura
Reference Manual DSP56800E, procesador
de 16 bits y set de
instrucciones
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 Descripcion
56F8300
MC56F8300DBUM Demonstration Board
User Manual
Targeting 56F8300
MC56F8300TUM 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 graca. 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
graca, compilador, linker, y un depurador, dentro de su ambiente de trabajo.
El Code Warrior IDE permite congurar las opciones para la generacion del
codigo, depurar y navegar por nuestro proyecto.
A diferencia de un ambiente de desarrollo en Lnea 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-
se no, aplicacion, vericaci on, optimizacion de las aplicaciones para microcontrolado-
res y forma parte del Code Warrior. Esta plataforma de desarrollo de alta producti-
vidad permite el uso eciente de los microcontroladores y sus perifericos, permite la
construccion de soluciones portatiles, y ahorra tiempo y coste de desarrollo.
Processor Expert ha incorporado las deniciones internas de los microcontrola-
dores con todos sus perifericos en modulos congurables que proporcionan metodos
y eventos para interactuar con ellos. Una intuitiva y potente interfaz graca le per-
mite al usuario denir el comportamiento deseado del microcontrolador al congurar
los modulos.
Para mas informacion sobre el Processor Expert y las herramientas relaciona-
das para el 56800/E, reerase 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 reera-
se a http://www.microsoft.com/spain/visualstudio.
46
Figura 3.1: Figura donde se observa la conguracion graca 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 conversi on A/D y guarda
el resultado en un b ufer.
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 enva 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 congurar el MC56F8323 para que sus pines esten lis-
tos para ser utilizados sin ning un conicto. Esto se logra con la ayuda del Proces-
sor Expert. En el men u 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 categora Communication
Asynchronusserialcommunication. Este bean es el modulo que nos encapsula el
puerto serie del MC56F8323. Despues se congura el puerto de salida, la velocidad
de transmision, los bits de transmision, etcetera, todos los parametros que se beben
congurar en la pesta na Propiedades de la ventana Bean Inspector. En esta venta-
na existe una pesta na que se llama Methods. En esta pesta na 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-
ta na Events de la misma ventana, estan todos los eventos que el modulo del puerto
serie detecta, una vez que ocurre el evento, el modulo enva una interrupcion al DSP
y el DSP realiza la rutina o funcion que esta asignada a dicha interrupcion. As que
en esta pesta na habilitamos las interrupciones necesarias.
Con esto queda congurado 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 denir 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 men u 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.
#pragmainterruptcalled/*Commentthislineiftheappropriate
'Interruptpreserveregisters'property*/
/*issetto'yes'(#pragmainterrupt
saveallisgeneratedbeforetheISR)*/
voidAS1_OnRxChar(void)
{
/*Writeyourcodehere...*/
}
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 enva una interrupcion cada determinado tiempo para obtener
una muestra de la se nal de entrada. En este caso vamos a programar el tiempo del
temporizador a 122s o 31.25s 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 ltro pasa bajos con frecuencia de corte de 4kHz y el microfono
externo tiene un ltro pasa bajos con frecuencia de corte de 16kHz. Como vimos en
el captulo 1, para muestrear correctamente:
49
F
max
=
F
s
2
=
1
2T
F
max
=
1
2(122s)
F
max
= 4.098kHzF
max
=
F
s
2
=
1
2T
F
max
=
1
2(31.25ss)
F
max
= 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 libreras del Co-
de Warrior tambien ubicadas en el Bean Inspector. La primera de ellas es DSP
MEM. Esta librera es para administrar la memoria de manera eciente. La segunda
es DSP Func MFR que es una librera para realizar operaciones matematicas con
n umeros fraccionales. La tecnica de usar n umeros fraccionales se utiliza en sistemas
computacionales para realizar operaciones con n umeros grandes, ya que estas opera-
ciones desbordaran el registro del resultado de la operacion. Pensemos que tenemos
dos registros de cuatro bits de los cuales queremos obtener la multiplicaci on 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
debits.
Figura 3.5: Ejemplo de una multiplicaci on 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 n umero menor que 1. La manera mas sencilla es dividir el valor en-
tre 2
n
, donde n es el n umero de bits del registro. Dado que dividir entre 2 un n umero
binario equivale a recorrer una posicion el punto decimal hacia la izquierda, entonces:
Decimal 15 = 0.9375 2
n
Binario 1111 = 0.1111 2
n
(3.2)
De esta forma, al multiplicar los dos registros el resultado es:
Registro1 = 1111 = 0.1111(2
n
)
X
Registro2 = 1111 = 0.1111(2
n
)
Resultado = 0.1110(2
2n
)
Decimal = 0.875(2
2n
) = 224
(3.3)
Con esto podemos ver que los bits menos signicativos son los que se pierden,
y el resultado es bastante aproximado al valor real.
La tercera librera se llama DSP Func DFR. Esta librera tiene las funcio-
nes necesarias para realizar la FFT de una forma optimizada, de tal forma que con
pocas instrucciones podemos calcularla.
As fue como se desarrollo el programa Puerto Serie que esta grabado en el DSP.
En el apendice A se muestra el programa detallado.
51
3.3.2. Desarrollo del programa Puerto Serie 2.
El programa puerto serie 2, es el programa que corre en la computadora, el cual
tiene la funcion de comunicarse con el DSP para que inicie una medicion y recibe los
datos del DSP para mostrarlos en una ventana. Este programa fue desarrollado usan-
do Visual Studio 2003 con las clases que provee MFC. MFC son las siglas de Micro-
soft Foundation Class que es un conjunto de clases que provee un acceso mas senci-
llo a las API de Windows, por lo cual fue mas sencillo programar esta aplicacion.
El funcionamiento de este programa es de esta forma:
1. Se acciona un boton que le manda al DSP el codigo de inicio al DSP.
2. El programa espera que se realice la DFT en el DSP, el cual manda la informa-
cion a la computadora.
3. La computadora graca el resultado en pantalla.
Para el desarrollo de este programa se creo una clase que controla el puerto se-
rie. De esta forma se puede reutilizar este codigo en otra aplicacion. Se planteo un
protocolo de transmision en el cual de la computadora se envan solo dos Bytes co-
mo codigo de inicio al DSP y el DSP manda la informacion en dos bloques. El primer
bloque enva el n umero de bytes que enva el DSP y el segundo bloque enva todos
los datos del resultado de la FFT. En el programa esta predeterminado este n umero
de recepcion a 256 bytes, debido a que la DFT se realiza con 512 muestras.
3.3.3. Desarrollo del programa Sistema Discreto.
El programa Sistema Discreto, es una aplicacion que se desarrollo para testear
los algoritmos programados en C. Esta aplicacion fue desarrollada en lenguaje C#
debido a la facilidad de utilizar el ambiente graco del Sistema Operativo Windows,
pero los algoritmos estan programados en lenguaje C y estan vinculados a la aplica-
cion como un Ensamblado Administrado. Esto fue as para tener mayor portabilidad
de los algoritmos.
52
Esta aplicacion tiene una funcion de usuario que genera una se nal que es la su-
ma de 31 se nales senoidales la cual es la se nal de entrada (cuadro superior izquier-
do). Se determino que la frecuencia maxima sera 200hz, es por eso que esta se nal es-
ta muestreada cada 2.5 10
3
seg para que la se nal maxima sea muestreada 2 veces.
Las se nales que se suman estan espaciadas cada 6.25hz para que los coecientes de
la DFT esten bien denidos como se observa en el cuadro inferior izquierdo. Se pro-
gramaron varios ltros para observar su resultado. El primero fue muestrear un ltro
RC simple y aplicar la convolucion con la se nal de entrada, despues se describieron 3
ltros por ecuacion de diferencias (pasabajos, pasabanda y pasaaltos) y un ltro por
convolucion utilizando la funcion sinc. El cuadro superior derecho muestra la se nal
de salida y el cuadro inferior derecho muestra la DFT de la salida.
Figura 3.6: Ejemplo de pantalla de Sistema Discreto.
53
Captulo 4
Pruebas y resultados
En este captulo se ver an las pruebas y resultados que se obtuvieron de lo desa-
rrollado en esta tesis.
En la Figura(4.1) se muestra la interface graca del programa PuertoSerie2, que
es el programa que se esta ejecutando en la computadora. Se puede observar un es-
pacio donde se graca la FFT al centro. En el men u se tiene la opcion conguracion
donde se selecciona el puerto a conectar (COM1, COM2, etc.). El boton Conectar
(esquina inferior izquierda) sirve para conectarnos al puerto y el boton Inicio manda
el codigo para que el DSP realice la toma de muestras, la FFT y mande los datos a
la computadora. El cuadro de texto junto con el boton (esquina inferior derecha) sir-
ven para la escala en y, con lo cual se puede ver la graca con Zoom en y.
Figura 4.1: Interface del programa PuertoSerie2.
Primero observaremos los resultados obtenidos con el microfono de la tarjeta.
54
En la Figura (4.2) se muestra el resultado obtenido al aplicar una se nal de de prue-
ba al circuito y su FFT. La se nal es un tono puro de 500 hz y fue creada con un pro-
grama llamado Audacity. Esta graca presenta en el eje x la frecuencia y en el eje y
la magnitud de la componente de frecuencia. La amplitud esta normalizada a 1.
Figura 4.2: Respuesta del circuito a 500hz.
Se aplico otra se nal de prueba al circuito y la Figura (4.3) muestra el resultado
obtenido. La se nal es un tono puro de 1000 hz generado con el mismo programa Au-
dacity. Se puede observar que la magnitud esta al doble de distancia que la magni-
tud de 500 hz en la Figura (4.2) debido a que la frecuencia, que es el eje x, esta gra-
cada linealmente.
Figura 4.3: Respuesta del circuito a 1000hz.
Una vez mas se aplico una se nal de prueba al circuito y la Figura (4.4) mues-
tra el resultado obtenido. La se nal es la suma de tres tonos puros de 500 hz, 1000 hz
y 2000 hz generados con el mismo programa Audacity. Se puede observar las diferen-
tes frecuencias gracadas en el lugar correspondiente con un poco de Derrame. El
derrame son las frecuencias adyacentes a la frecuencia principal. Esto se da debido a
55
muchos factores, como son, el rango dinamico del microfono que capta la se nal, el al-
tavoz que reproduce la se nal, el ruido del ambiente, etc.
Figura 4.4: Respuesta del circuito a 500hz + 1000hz + 2000hz.
Ahora veremos el resultado obtenido con el microfono externo. En la Figura (4.5)
se muestra el resultado al aplicar tres tonos puros de 3KHz, 7KHz y 10KHz al circuito.
Figura 4.5: Respuesta del circuito a 3KHz, 7KHz y 10KHz.
Ahora veremos el resultado obtenido del programa SistemaDiscreto. La Figura
(4.6) muestra la interface principal del programa SistemaDiscreto. Se observan cua-
tro cuadros y unos botones a la derecha. El cuadro superior izquierdo es la se nal de
entrada, el cuadro inferior izquierdo es la DFT de la se nal de entrada, el cuadro su-
perior derecho es la se nal de salida y el cuadro inferior derecho es la DFT de la se nal
de salida. Los botones sirven para realizar la operacion correspondiente.
56
Entrada
Entrada
DFT
Salida
Salida
DFT
Operacin
Figura 4.6: Interface del programa SistemaDiscreto.
Al presionar el boton Equ.Dif. se genera la se nal de entrada que es la suma
de 31 se nales senoidales espaciadas en frecuencia cada 6.25hz y es muestreada cada
2.5 10
3
seg, con lo cual tiene una frecuencia maxima de 200hz para cumplir el teo-
rema del muestreo. Esto se muestra en la Figura(4.7). La DFT es de 64 muestras con
lo cual nos da 31 divisiones claras en frecuencia en pasos de 6.25hz.
El ltro aplicado en la Figura(4.7), es un ltro pasa banda por el metodo de
ecuacion de diferencias. Se puede observar que en el centro la amplitud de los coe-
cientes de la DFT es mayor y se disminuye hacia las orillas.
Figura 4.7: Resultado de aplicar un ltro pasa banda a la se nal de entrada.
Con la misma se nal de entrada se aplico un ltro pasaaltos y el resultado se
muestra en la Figura (4.8). Es un ltro pasaaltos por el metodo de ecuacion de dife-
rencias. Se puede observar que la se nal de salida es diferente a la se nal de entrada y
los coecientes de la DFT son mas grandes en la orilla derecha que son las frecuen-
cias mas altas.
Finalmente se aplico un ltro pasa bajos por el metodo de ecuacion de diferen-
57
Figura 4.8: Resultado de aplicar un ltro pasa altos a la se nal de entrada.
cias y el resultado se muestra en la Figura (4.9).
Figura 4.9: Resultado de aplicar un ltro pasa bajos a la se nal de entrada.
58
Captulo 5
Conclusiones y Trabajos Futuros.
En conclusion se observo el funcionamiento de los algoritmos FFT. Se pudo
comprobar que verdaderamente nos da el mismo resultado que al realizar el calcu-
lo directamente. Se estudio el tratamiento de se nales de una forma digital y fue muy
interesante el poder desarrollar los sistemas digitales que tratan las se nales y ver su
comportamiento. Con los algoritmos FFT se a desarrollado una herramienta en hard-
ware y software que nos permite analizar el espectro de una se nal hasta una frecuen-
cia maxima de 4KHz con el microfono de la tarjeta y hasta 16KHz con el microfono
externo. Fue necesario hacer un circuito que acondicionara el voltaje de salida del
microfono para ser capturado por el microcontrolador.
Para dar solucion al problema de obtener la respuesta en frecuencia de unos equi-
pos de audio adquiridos, se hicieron 4 pruebas distintas a cada equipo. Las pruebas
consisten en aplicar se nales de entrada a los equipos y, con el analizador de espectro,
medir su respuesta en frecuencia. La primera prueba es una se nal de entrada que es
el resultado de la suma de tonos puros de 1KHz, 3KHz, 5KHz, 7KHz, 9KHz, 11KHZ
y 13KHz. La segunda prueba es una se nal de entrada que es la suma de las frecuen-
cias 2KHz, 4KHz, 6KHz, 8KHz, 10KHz, 12KHZ y 14KHz. Para la tercera prueba se
utilizaron las frecuencias de 1KHz, 2KHz, 3KHz, 4KHz, 5KHz, 6KHZ y 7KHz y pa-
ra la cuarta prueba las frecuencias de 2KHz, 3KHz, 10KHz, 11KHz, 12KHz, 13KHZ
y 14KHz. Todas las se nales de prueba estan compuestas por tonos puros para reali-
59
zar un analisis preciso y con el menor derrame posible.
En primera instancia, se midieron los altavoces de dos equipos de audio que
estan hechos, principalmente, para conectarse a la computadora. Los datos obtenidos
reejaron datos interesantes que muestran las diferencias, en cuanto a frecuencia se
reere, de estos equipos de sonido.
En la Figura (5.1) se muestra la respuesta del equipo al aplicarle la Prueba 1.
Esta se nal fue reproducida por un equipo de audio marca Logitech modelo X-230.
Se puede observar que tiene una respuesta en frecuencia aproximadamente constan-
te hasta los 9KHz. Despues se observa una atenuaci on en las frecuencias mas altas.
Figura 5.1: Respuesta del equipo X-230 a la Prueba 1
La Figura (5.2) muestra la respuesta de un equipo de audio sin marca modelo
LC-650 al aplicarle la Prueba 1. Se puede ver claramente que su respuesta no es bue-
na, inclusive, la frecuencia de 9KHz no sale en el espectro.
Figura 5.2: Respuesta del equipo LC-650 a la Prueba 1
Se aplico la Prueba 2 a los mismos equipos y la Figura (5.3) muestra la respues-
ta del equipo X-230. Se puede ver que tiene una respuesta en frecuencia aproximada-
60
mente constante hasta los 8KHz, despues se aten ua la respuesta.
Figura 5.3: Respuesta del equipo X-230 a la Prueba 2
El equipo LC-650 tuvo la respuesta que se muestra en la Figura (5.4) a la Prue-
ba 2. Se observa que no tiene una buena respuesta en frecuencia.
Figura 5.4: Respuesta del equipo LC-650 a la Prueba 2
Al aplicar la Prueba 3 a equipo X-230, se obtuvo la respuesta mostrada en la
Figura (5.5). Se puede observar que la respuesta obtenida es coherente con las res-
puestas obtenidas a las otras pruebas.
Figura 5.5: Respuesta del equipo X-230 a la Prueba 3
La Figura (5.6) muestra la respuesta del equipoLC-650 a la prueba 3.
61
Figura 5.6: Respuesta del equipo LC-650 a la Prueba 3
Al realizar la ultima prueba, el X-230 obtuvo la respuesta mostrada en la Figu-
ra (5.7).
Figura 5.7: Respuesta del equipo X-230 a la Prueba 4
El equipo LC-650 obtuvo la se nal mostrada en la Figura (5.8). Se puede obser-
var que existen tonos que no estan contemplados en la se nal de prueba. Esto puede
ser debido a que el plastico del equipo vibra a estas frecuencias (frecuencia de reso-
nancia) o a otros factores.
Figura 5.8: Respuesta del equipo LC-650 a la Prueba 4
En segunda instancia, se midieron dos baes que son utilizados para sonorizar
localidades donde se predica el evangelio. Las localidades son varias y en lugares ce-
62
rrados y abiertos. Al conectar el equipo de audio se escuchaba un tanto desagrada-
ble pero no se tena la forma de saber la razon. Se analizaron estos baes y se obtu-
vieron resultados interesantes.
Al analizar un bae marca Wharfedale Pro modelo VS-15X se obtuvo la res-
puesta que se muestra en la Figura (5.9) con la Prueba 1.
Figura 5.9: Respuesta del bae VS-15X a la Prueba 1
El otro bae es armado y no tiene marca, as que lo llamaremos armado. Su res-
puesta a la Prueba 1 se muestra en la Figura (5.10). Se puede observar que ambos
baes tienen a 3KHz un coeciente alto y de 5KHz en adelante una atenuacion con-
siderable. El bae armado practicamente no reproduce la frecuencia de 5KHz y las
altas frecuencias no salen en el espectro de ning un bae.
Figura 5.10: Respuesta del bae armado a la Prueba 1
La Prueba 2 produjo la respuesta mostrada en la Figura (5.11) en el bae VS-
15X. Se observa que despues de los 4KHz la atenuacion es mayor.
En el bae armado la Prueba 2 produjo la respuesta mostrada en la Figura
(5.12). Se puede observar que la amplitud en frecuencias altas es irregular, algunas
63
Figura 5.11: Respuesta del bae VS-15X a la Prueba 2
estan bajas y otras altas.
Figura 5.12: Respuesta del bae armado a la Prueba 2
Al aplicar la Prueba 3 al bae VS-15X se obtuvo la respuesta mostrada en la
Figura (5.13). Se observa que la amplitud a 2KHz y 3Khz estan muy altas y despues
de 4KHz de aten uan bastante.
Figura 5.13: Respuesta del bae VS-15X a la Prueba 3
La Prueba 3 produjo la respuesta mostrada en la Figura (5.14). Se observa que
la amplitud de 1KHz y 3KHz estan altas y las amplitudes de 4KHz en adelante estan
bajas.
64
Figura 5.14: Respuesta del bae armado a la Prueba 3
Por ultimo, el bae VS-15x obtuvo la respuesta mostrada en la Figura (5.15). Se
observa que la amplitud de las frecuencias altas es peque na comparada con las otras.
Figura 5.15: Respuesta del bae VS-15X a la Prueba 4
La Prueba 4 produjo la respuesta mostrada en la Figura (5.16) en el bae ar-
mado. Se observa que la amplitud 3KHz esta alta y la amplitud en frecuencias altas
es muy irregular.
Figura 5.16: Respuesta del bae armado a la Prueba 4
Debido a estos resultados, en el ecualizador del amplicador se atenu o la ban-
da proxima a los 3KHz y el resultado obtenido fue bastante mejor al sonorizar.
65
Dentro del desarrollo de esta tesis se presentaron varios problemas que detuvie-
ron el desarrollo. Lo primero fue el hecho de que los dispositivos (microcontrolador,
dispositivos de montaje supercial, etc.) se tuvieron que comprar en el extranjero.
Tambien hubo problemas para controlar el puerto serie de la computadora. Otro pro-
blema que surgio, fue el hecho de dise nar un circuito para que acondicionara la sa-
lida del microfono externo al microcontrolador y en las mediciones existio el proble-
ma de no tener un lugar adecuado para realizarlas, sin embargo, las mediciones fue-
ron bastante utiles.
En un futuro se podran crear mas pruebas que nos den mayor capacidad de dis-
cernir como realizar una mejor sonorizacion. Utilizar elementos de mayor precision,
como osciladores de cristal, para tener una respuesta mas exacta. Mejorar el progra-
ma que corre en la computadora para realizar analisis mas completos o, utilizar este
proyecto para otros nes.
66
5.1. Especicaciones Tecnicas
1. Voltaje de entrada: ..................... 0 a 3.3 Volts
2. Resolucion en voltaje: ................ 0.80566 mVolts
3. Frecuencia de muestreo:
a) Microfono de la tarjeta ............ 122 seg
b) Microfono externo ................... 31.25 seg
4. Codicacion: ................................ 12 bits
5. Respuesta en frecuencia:
a) Microfono de la tarjeta ............ 4 KHz
b) Microfono externo ................... 16 KHz
6. Resolucion en frecuencia:
a) Microfono de la tarjeta ........... 15.625 Hz
b) Microfono externo ................... 62.25 Hz
7. Costo ............................................. $ 1,500.00 pesos
67
Apendice A
Codigo de Programas Comentado
En este anexo se presenta el codigo comentado de las funciones principales de
PuertoSerie y PuertoSerie2, sin poner el codigo generado automaticamente por los
IDE que se usaron para desarrollar dichos programas.
A.1. Programa PuertoSerie
A.1.1. Archivo Events.c
#pragma interrupt called
//Funcion que recibe los datos que vienen de la computadora
//para ver si es el codigo de inicio.
void AS1_OnFullRxBuf(void)
{
extern unsigned int Dato;
word NoData;
AS1_TComData Ptr;
Rx_NegVal();
AS1_RecvBlock(&Ptr,2,&NoData);
memcpy(&Dato,&Ptr,2);
68
Rx_NegVal();
}
#pragma interrupt called
//Funcion que se ejecuta cada que el temporizador lanza
//una interrupcion. Despues de 512 muestras pone otro
//codigo para que se ejecute la DFT
void TI1_OnInterrupt(void)
{
extern unsigned int Fd;
extern unsigned int Dato;
extern unsigned int Fd2;
if(Fd<512)
{
AD1_Measure(FALSE);
Fd2++;
}
else
{
TI1_DisableEvent();
TI1_Disable();
Dato=3;
}
}
#pragma interrupt called
//Funcion que lanza el modulo ADC cuando termina la conversion
69
void AD1_OnEnd(void)
{
extern Frac16 Conv[512];
extern unsigned int Fd;
extern Frac16 B_Dato;
extern Frac16 M_Dato;
extern Calibracion;
unsigned int Inte;
Frac16 X_Dato;
if(Calibracion)
{
AD1_GetValue(&Inte);
Conv[Fd] =(Frac16)Inte;
}
else
{
AD1_GetValue(&Inte);
X_Dato=(Frac16)Inte;
Conv[Fd]=add(mult(M_Dato,X_Dato),B_Dato);
Conv[Fd]=shl(Conv[Fd],1);
}
Fd++;
}
A.1.2. Archivo PuertoSerie.c
#define ConstCal 16384
#define ConstCal1 24568
70
unsigned int Dato;
unsigned int Fd;
unsigned int Fd2;
Frac16 Conv[512];
unsigned int j;
int fgh;
Frac16 pX[512];
Frac16 pZZ[512];
//Variables Calibracion
Frac16 Cal_H;
Frac16 Cal_L;
Frac16 Cal_Aux;
Frac16 M_Dato;
Frac16 B_Dato;
int ICal;
bool Calibracion;
//
void FFT(void);
void CalADC(void);
//Funcion principal
void main(void)
{
/* Write your local variable definition here */
unsigned char *num;
71
/*** Processor Expert internal initialization. DONT REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/
AD1_Enable();
CalADC();
TI1_Disable();
Dato=0;
Fd=0;
Fd2=0;
Calibracion=FALSE;
num=(unsigned char *)&j;
//Ciclo del programa que esta en espera de los codigos
//correspondientes
for(;;)
{
if(Dato==1)
{
Fd=0;
Fd2=0;
TI1_EnableEvent();
TI1_Enable();
Dato=0;
Tx_PutVal(TRUE);
}
if(Dato==2)
72
{
TI1_DisableEvent();
TI1_Disable();
Tx_PutVal(FALSE);
Dato=0;
}
if(Dato==3)
{
Fd=0;
Fd2=0;
Tx_PutVal(FALSE); //Funcion de operacion de datos
FFT();
Dato=0;
}
}
}
//Funcion que realiza la DFT
void FFT(void)
{
int i;
dfr16_tRFFTStruct *pRFFT;
dfr16_sInplaceCRFFT *pZ ;
Result res;
UInt16 options = FFT_SCALE_RESULTS_BY_N;
Frac16 Multi;
Frac16 Multr;
Frac16 Fk;
73
unsigned char *Snd;
unsigned char Aux;
Snd=(unsigned char *)&Fk;
pZ=(dfr16_sInplaceCRFFT*) pZZ;
for (i=0; i <512; i++) //Nt
{
pX[i] = Conv[i];
}
/* Call FFT Create function */
pRFFT = DFR1_dfr16RFFTCreate(512, options);//Nt
if (pRFFT == NULL)
{
asm(debug);
}
else
{
asm(nop);
}
res = DFR1_dfr16RFFT(pRFFT, &pX[0], pZ);
asm(nop);
asm(nop);
dfr16RFFTDestroy(pRFFT);
//calculo de vector y envio de datos
74
AS1_SendChar(0x00);
for(i=0;i<256;i++)//N/2
{
Multr=mult(pZZ[i*2],pZZ[i*2]);
Multi=mult(pZZ[(i*2)+1],pZZ[(i*2)+1]);
Fk=mfr16Sqrt(Multi+Multr);
Aux=*(Snd+1);
AS1_SendChar(Aux);
}
}
//Funcion que calibra le modulo ADC del DSP
void CalADC(void)
{
Calibracion=TRUE;
AD1_SetChanOffset(0,3); //Multiplicado por 8
Fd=0;
setReg(ADCA_CAL,0x01);
AD1_Measure(FALSE);
while(Fd==0)
{
asm(nop);
}
Cal_L=(Frac16)Conv[0];
for(ICal=0;ICal<4;ICal++)
{
Fd=0;
75
AD1_Measure(FALSE);
while(Fd==0)
{
asm(nop);
}
Cal_L=shr(Cal_L,1)+shr((Frac16)Conv[0],1);
}
Fd=0;
setReg(ADCA_CAL,0x03);
AD1_Measure(FALSE);
while(Fd==0)
{
asm(nop);
}
Cal_H=(Frac16)Conv[0];
for(ICal=0;ICal<4;ICal++)
{
Fd=0;
AD1_Measure(FALSE);
while(Fd==0)
{
asm(nop);
}
Cal_H=shr(Cal_H,1)+shr((Frac16)Conv[0],1);
}
setReg(ADCA_CAL,0x00);
Cal_L=Cal_H-Cal_L;
Cal_Aux=ConstCal;
76
Cal_Aux=shr(Cal_Aux,1); //asegurar X<y para division
M_Dato=div_s(Cal_Aux,Cal_L); //x2 Valor real
Cal_Aux=ConstCal1;
Cal_Aux=shr(Cal_Aux,1);
B_Dato=sub(Cal_Aux,mult(M_Dato,Cal_H));
//B_Dato=shl(B_Dato,1);
Calibracion=FALSE;
}
/* END PuertoSerie */
A.2. Programa PuertoSerie2
//Funcion que se ejecuta cuando se pulsa en boton conectar
//se conecta al puerto serie y lanza un proceso que sincroniza
//el proceso primario con el proceso que controla al puerto
//serie, o desconecta el puerto.
void CPuertoSerial2View::OnBnClickedButton1()
{
if(PuertoCom.Estado==false)
{
PuertoCom.AbrirPuerto(NombrePuerto,9600);
if(PuertoCom.Estado==true)
SetDlgItemText(IDC_BUTTON1,"Desconectar");
AfxBeginThread(Event,this);
}
else
77
{
PuertoCom.CerrarPuerto();
SetDlgItemText(IDC_BUTTON1,"Conectar");
}
}
//Funcion que ejecuta el nuevo proceso para sincronizar el
//proceso primario con el puerto serie
UINT Event(LPVOID pParam)
{
CPuertoSerial2View *PuertoEvento;
PuertoEvento=(CPuertoSerial2View *) pParam;
CSingleLock Esperar(&(PuertoEvento->PuertoCom.Interrup));
while(PuertoEvento->PuertoCom.Estado)
{
Esperar.Lock();
PuertoEvento->RxPro.SetPos(1);
if(PuertoEvento->PuertoCom.Estado)
{
PuertoEvento->PostMessage(ON_DATA);
PuertoEvento->PuertoCom.AInterrup.SetEvent();
Esperar.Unlock();
PuertoEvento->RxPro.SetPos(2);
}
else
78
{
Esperar.Unlock();
}
}
return 0;
}
//Funcion que lanza el codigo de inicio al DSP
void CPuertoSerial2View::OnBnClickedButton3()
{
TransmitCommChar(PuertoCom.h_PuertoSerie,1);
TransmitCommChar(PuertoCom.h_PuertoSerie,0);
}
//Funcion que abre el puerto serie y lanza un proceso que esta a la
//espera de los datos del DSP
bool CPuertoSerie::AbrirPuerto(CString Puerto, unsigned int Velocidad)
{
int Mascara;
DCB Confi;
int Conf;
COMMTIMEOUTS TiempoComm;
h_PuertoSerie=CreateFile(Puerto,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
79
NULL);
if(h_PuertoSerie==INVALID_HANDLE_VALUE)
{
Estado=false;
Error(GetLastError());
return false;
}
else
{
Estado=true;
}
Mascara=SetCommMask(h_PuertoSerie,EV_RXCHAR);
if(Mascara==0)
{
Error(GetLastError());
return false;
}
Conf=GetCommState(h_PuertoSerie,&Confi);
if(Conf==0)
{
Error(GetLastError());
return false;
}
Confi.BaudRate=CBR_57600;
Confi.fBinary=true;
80
Confi.fParity=false;
Confi.fOutxCtsFlow=false;
Confi.fOutxDsrFlow=false;
Confi.fDtrControl=DTR_CONTROL_DISABLE;
Confi.fDsrSensitivity=false;
Confi.fOutX=false;
Confi.fInX=false;
Confi.fRtsControl=RTS_CONTROL_DISABLE;
Confi.ByteSize=8;
Confi.Parity=NOPARITY;
Confi.StopBits=ONESTOPBIT;
Conf=SetCommState(h_PuertoSerie,&Confi);
if(Conf==0)
{
Error(GetLastError());
return false;
}
TiempoComm.ReadIntervalTimeout=100;
TiempoComm.ReadTotalTimeoutMultiplier=256;
TiempoComm.ReadTotalTimeoutConstant=200;
TiempoComm.WriteTotalTimeoutMultiplier=2;
TiempoComm.WriteTotalTimeoutConstant=20;
SetCommTimeouts(h_PuertoSerie,&TiempoComm);
AfxBeginThread(Eventos,this);
return false;
81
}
//Funcion que ejecuta el proceso que recibe los datos y sincroniza con
//el proceso primario
UINT Eventos(LPVOID pParam)
{
CPuertoSerie *PuertoEvento;
PuertoEvento=(CPuertoSerie *) pParam;
OVERLAPPED Evento={0,0,0,0,0};
DWORD NumEvento;
Evento.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
CSingleLock Esperar(&(PuertoEvento->AInterrup));
while(PuertoEvento->Estado)
{
NumEvento=0;
WaitForSingleObject(Evento.hEvent,100);
WaitCommEvent(PuertoEvento->h_PuertoSerie,&NumEvento,&Evento);
if(NumEvento==EV_RXCHAR)
{
SetCommMask(PuertoEvento->h_PuertoSerie,EV_CTS);
CString Aux;
PuertoEvento->Leer(1);
if(PuertoEvento->BufLectura[0]==0)
{
PuertoEvento->Leer(256); //Numero estandard de Bits
82
}
PurgeComm(PuertoEvento->h_PuertoSerie,PURGE_RXCLEAR);
SetCommMask(PuertoEvento->h_PuertoSerie,EV_RXCHAR);
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
Bibliografa
[1] John G. Proakis, Dimitris G. Manolakis. Tratamiento digital de se nales., Prin-
cipios, algoritmos y aplicaciones. 3
a
Edicion. Prentice Hall, Madrid, 1998
[2] Katsuhiko Ogata Ingeniera de Control Moderna., 3
a
Edicion. Prentice Hall His-
panoamericana, S.A. Mexico, 1998
[3] Robert F.Coughlin, Frederick F. Driscoll Amplicadores operacionales y circui-
tos integrados lineales., Prentice Hall, Mexico, 1999
[4] http://www.freescale.com/
56F8300 Peripheral User Manual (MC56F8300UM.pdf)
56F8323/56F8123 Technical Data Sheet (MC56F8323.pdf)
56F8323 Product Brief (MC56F8323PB.pdf)
DSP56800E Reference Manual (DSP56800ERM.pdf)
56F8300 Demonstration Board (MC56F8300DBUM.pdf)
[5] http://www.microsoft.com/spain/visualstudio
84

85

Вам также может понравиться