Está en la página 1de 64

Proyecto Terminal I y II

Aplicacin de un procesador digital de seales TMS320C5X (Transformada Rpida de Fourier)

Asesor: Agustn Surez Fernndez Licenciatura: Ingeniera en Electrnica rea de concentracin: Computacin Alumnos: Joel Blancas Contreras Matrcula: 92224090 Enrique Meixueiro Martnez Matrcula: 94317156

10 de Octubre de 2008

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 2 de 63

INDICE
PROYECTO TERMINAL I Y II ...............................................................................................................................................1 INDICE ...............................................................................................................................................................................3 OBJETIVO .........................................................................................................................................................................4 INTRODUCCION ..............................................................................................................................................................5 CAPITULO 1 ANTECEDENTES......................................................................................................................................6 DESARROLLO DEL PROCESAMIENTO DIGITAL DE SEALES...............................................................................6 VENTAJAS DE TRABAJAR CON SEALES DIGITALES ............................................................................................8 Programabilidad .........................................................................................................................................................9 Estabilidad..................................................................................................................................................................9 Redundancia ...............................................................................................................................................................9 Una ms fcil implantacin de algoritmos adaptables...............................................................................................10 Cdigo de correccin de errores ...............................................................................................................................10 Funciones especiales.................................................................................................................................................12 Transmisin de datos y almacenamiento....................................................................................................................12 Compresin de datos .................................................................................................................................................14 Los sistemas DSP prcticos .......................................................................................................................................15 DSP en los sistemas de control ..................................................................................................................................16 Las capacidades crecientes del VLSI analgico.........................................................................................................16 Hacia el progreso del amplificador operacional ideal.................................................. Error! Marcador no definido. RESUMEN........................................................................................................................................................................16 CONCEPTOS MATEMTICOS ....................................................................................................................................18 SERIES DE FOURIER .........................................................................................................................................................18 TRANSFORMADA DE FOURIER ..........................................................................................................................................19 Propiedades de la Transformada de Fourier: ............................................................................................................20 MUESTREO .....................................................................................................................................................................21 Teorema del muestreo: ..............................................................................................................................................21 Cuantizacin .............................................................................................................................................................22 Transformada Discreta Transformada Discreta de Fourier .......................................................................................23 Transformada Discreta inversa (IDFT),.....................................................................................................................25 TRANSFORMADA RPIDA DE FOURIER FFT (FAST FOURIER TRANSFORM)...........................................................................25 MODULO DE DESARROLLO .......................................................................................................................................31 DESCRIPCION GENERAL DEL STARTER KIT ..........................................................................................................31 INTRODUCCIN .........................................................................................................................................................32 HARDWARE.................................................................................................................................................................34 SOFTWARE..................................................................................................................................................................34 CONEXIONES PARA L MDULO DSK. ...................................................................................................................34 INSTALACION DEL SOFTWARE................................................................................................................................35 INICIO DE LA TARJETA DSK .....................................................................................................................................36 DESCRIPCION DEL ENSAMBLADOR DSK................................................................................................................38 DESCRIPCION DEL DEPURADOR DSK .....................................................................................................................39 ENSAMBLADOR DSK .................................................................................................................................................44 CODIFICACIN DE LA FFT PARA UN TMS320C .....................................................................................................49 REFERENCIAS................................................................................................................................................................60

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 3 de 63

Objetivo
Aprender la arquitectura, conjunto de instrucciones y circuitos de interfase de los procesadores digitales de seales de la familia TMS320C5X a fin de aplicarlos, en el procesamiento de seales. A travs del desarrollo de la Transformada Rpida de Fourier en un STARTER KIT con un DSP standard TMS320C50 de punto fijo.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 4 de 63

INTRODUCCION Que es un Procesador Digital de Seales? Nuestro ambiente esta lleno de seales que nosotros sentimos, por ejemplo: el sonido, la temperatura y la luz. En el caso del sonido usamos nuestros odos para convertir las ondas a impulsos elctricos dentro de nuestro cerebro. Para la luz usamos nuestros ojos para enfocar las imgenes dentro de nuestra retina la cual se convierte a seales elctricas que son enviadas a nuestro cerebro. Nuestro cerebro analizara la luz para identificar colores, formas, intensidad, etc. Una vez que la informacin es analizada nos servir para reconocer objetos, distancias, sonidos, etc. Por supuesto que nuestro cuerpo esta provisto con cinco categoras de sensores: tacto, vista, gusto, olfato y odo y una extremamente poderosa computadora, nuestro cerebro. Podemos tomar muchas decisiones por nuestros sentidos, pero hay mucho casos donde podemos querer que una mquina tome decisiones basndose en sus propios sentidos de alguna variable ambiental. Es relativamente fcil adaptar a una mquina con sensores que conviertan la variable a una seal elctrica, la parte difcil viene cuando una computadora electrnica acte como nuestro cerebro. Nuestro cerebro trabaja con representaciones elctricas de seales de variable continuas como la intensidad del sonido, presin etc. Estas seales de variables continuas son conocidas como seales analgicas. Nuestro cerebro puede ser considerado como una extremadamente poderosa computadora analgica. Aunque podemos construir computadoras analgicas, usamos mas la computadoras digitales tal como la PC. Estas son excelentes para aplicaciones de procesamiento numrico como las base de datos hojas de clculo, pero ella no son muy buenas para el procesamiento de seales de variables continuas las cuales son las que conforman nuestro mundo. Nuestros odos, ojos, y piel convierten las seales a energa elctrica que pasa a travs de nuestro sistema nervioso hasta llegar a nuestro cerebro. Nosotros podemos usar sensores para convertir la presin, temperatura, sonido etc. en seales elctricas de la misma manera, pero todava tenemos que cambiar estas seales elctricas a nmeros para que puedan ser pasadas a una computadora digital y as procesarlas. Este proceso de conversin se llama analgico a digital, o conversin A/D. El proceso que aplicado a las seales es llevado a cabo por la computadora digital y esta a su vez llamado procesamiento digital de seales, DSP para abreviar. En los sistemas DSP modernos un simple circuito integrado de microcomputadora especialmente diseado para el procesamiento digital de seales es actualmente usado. Estos circuitos integrados especiales son conocidos como procesadores de seales digitales, o DSP s para abreviar. Una vez que la seal ha sido procesada por el DSP, esta tiene una forma de secuencias de nmeros y puede ser convertida en viceversa a una seal analgica. Este proceso es llamado digital a analgico, conversin D/A.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 5 de 63

CAPITULO 1 ANTECEDENTES
DESARROLLO DEL PROCESAMIENTO DIGITAL DE SEALES No es una forma normal de apreciacin que el desarrollo del procesamiento digital de seales empez por que los diseadores de sistemas de procesamiento analgico de seales deseaban simular sus prototipos antes de construirlos. La herramienta obvia para hacer las simulaciones fue la computadora digital, y as fue como empez el desarrollo digital de seales. De esta manera los pioneros empezaron a trabajar, aunque en 1950 y cerca a 1960 tenan poca idea de que su trabajo podra expandirse a una mayor rea de la tecnologa digital electrnica, fue en 1980 cuando tuvo un mayor auge. El procesamiento digital de seales estuvo dependiente de las computadoras digitales y de la mayora de las matemticas o algoritmos que han sido desarrollados desde 1950. Una vez que estos algoritmos han sido establecidos, los diseadores empiezan a ver cual puede implementarse mas efectivamente para la arquitectura de una computadora. El objetivo original fue producir simulaciones que se ejecutaran en un tiempo aceptable. No esta claro cuando se cambio la idea de usar las computadoras digitales para procesamiento de seales reales (en lugar de simulaciones), pero una vez que se hizo el objetivo cambio completamente. Esto hizo que se crearan DSP s de tiempo real, sistemas que tenan que completar todos lo requerimientos operacin en un corto tiempo, lo suficiente para operar en forma continua sin interrupciones. Los sistemas anteriores tenan solo la habilidad de almacenar la forma de onda en memoria para un posterior procesamiento, es decir un procesamiento en tiempo no real. ALGORITMOS PARA EL DSP El modelo matemtico bsico de las seales continuas esta basado en las transformadas de Laplace y Fourier, los cuales datan del siglo XIX. En 1822 Jean Baptiste Joseph, Barn de Fourier publico un monumental estudio a cerca del flujo del calor el cual estaba desarrollado en series de Fourier. Las series de Fourier tienen muchas aplicaciones dentro de la ciencia y es la herramienta principal para el anlisis de seales. La transformada de Fourier (o integral de Fourier) es una simple extensin de las series de Fourier. Las series de Fourier se aplican a seales peridicas y la transformada de Fourier se aplica a seales aperidicas. Al igual que la transforma de Fourier la transformada de Laplace tiene aplicaciones en muchos campos, pero en lo que nos concierne por una simple extensin y una adecuada interpretacin la transformada de Laplace viene siendo la transformada Z. La tcnica de la transformada Z no es nueva y puede remontarse a 1730 cuando De Moivre introdujo el concepto de la funcin generadora en la teora de probabilidad. El advenimiento de las computadoras digitales en 1940 incremento el uso y la aplicacin de la transformada Z la cual construye el bloque bsico de los filtros digitales. Como con la transformada de Laplace, la transformada de Fourier tiene una forma equivalente para seales digitales. La transformada discreta de Fourier se popularizo durante las dcadas de 1940 y 1950 como un desarrollo para mquinas de computo digital, pero fue mas como una demanda computacional. En 1965 apareci un artculo denominado Un algoritmo para las mquinas de computo de las series complejas de Aplicacin de un procesador digital de seales TMS320C5X Pgina 6 de 63

Fourier por Cooley y Tukey refinando la DFT (Discrete Fast Fourier Transform). Ellos exponan algunas propiedades especiales y producan un nuevo algoritmo conocido como la transformada rpida de Fourier (FFT: Fast Fourier Transform), el cual reduca dramticamente el nmero de multiplicaciones en el clculo. Tal como veremos, las multiplicaciones son un significativo cuello de botella en los clculos de muchos algoritmos para DSP. Discutiremos con mayor detalle la transformada discreta y rpida de Fourier en el captulo II. ARQUITECTURA DE COMPUTADORA PARA UN DSP En el procesamiento de seales en tiempo real lo que nos interesa es la cantidad de procesamiento que se puede hacer antes de que un nuevo dato llegue, eso es lo ideal. Los sistemas de los DSP anteriores fueron construidos usando componentes comunes para hacer registros, sumadores y multiplicadores. La operacin de multiplicacin fue vista rpidamente como el factor que limita el rendimiento de estas computadoras. La institucin que se dedico a investigar a los DSP fueron los Laboratorios Lincoln. El FDP (Fast Digital Processor) Lincoln fue completado en 1971 y tuvo un tiempo de multiplicacin de 600 nanosegundos, pero fue implementado usando 10,000 circuitos integrados separados! Un sistema bastante complejo tratando de usar las operaciones paralelas de la arquitectura secuencial de Von Neumann. El LSP/2 Lincoln fue construido de la experiencia adquirida con el FDP y usando una arquitectura similar al principio de la computadora Harvard 1 de 1940. Pero usando una arquitectura paralela inherente, resultando una computadora DSP cuatro veces ms rpida que el FDP y con una tercera parte de los circuitos integrados usados en el FDP. A mediados de 1970, las investigaciones conducidas por otras instituciones desarrollaron computadoras para procesamiento digital de seales incluso con velocidades del orden de los 200 ns, todos con caractersticas nicas. Estas mquinas fueron por supuesto capaces de realizar procesamiento de seales en tiempo real, pero eran muy voluminosas y caras, y por lo tanto nada comerciales. Sin embargo la estructura bsica de la computadora DSP haba sido creada, pero tena que esperar a que la tecnologa de los semiconductores llegara. Si una computadora DSP se poda se implementar con por IC s, mejor an un simple dispositivo, se abra un gran mundo comercial por explotar. IMPLEMENTACION DEL DSP CON CIRCUITOS INTEGRADOS Durante todo 1970, la tecnologa de los circuitos integrados tuvo fuertes transformaciones que aumentaron su complejidad. Con la demanda de la hambrienta tecnologa de las mquinas militares en los Estados Unidos y la gradual aparicin de productos electrnicos para el consumidor hubo una gran iniciativa en reducir la caracterstica del tamao e incrementar la rapidez de los dispositivos y mejorar el proceso de tecnologa. El proceso de tecnologa escogido a finales de 1970 fue NMOS ( N-channel Metal Oxide Semiconductor), el cual trabajaba con cinco volts de potencia y poda ser implementado en una superficie de 5 micrones, soportando un densidad de dispositivos de mas 100,000 transistores. En los dos primeros aos de 1980, cuatro circuito integrados DSP s individuales estaban disponibles. La distincin de obtener el primer circuito integrado DSP individual le fue otorgada a American Microsystems Inc. (AMI) S2811, aunque es un punto a discutir. El 2920 de Intel y el mPD7720 de Nippon Electric Company (NEC) Aplicacin de un procesador digital de seales TMS320C5X Pgina 7 de 63

estuvieron disponibles alrededor del mismo tiempo. Ligeramente mas tarde, en 1982, Texas Instruments introdujo el TMS32010 y el circuito integrado DSP individual hizo su tan esperada llegada. Todos los anteriores dispositivos DSP usaban la arquitectura Harvard separando la memoria de datos y la memoria de programa. Esto permite que la instruccin de un programa y la palabra de un dato estn apuntados o accesados al mismo tiempo. La eficiencia de un DSP en tiempo real depende del flujo de datos de entrada y salida en el procesador. Usando la arquitectura Harvard significa que el flujo de datos no necesita ser interrumpida por el flujo de lectura de instrucciones. El diagrama de bloques del TMS32010 en Figura 1.1 muestra la separacin de la memoria de programa y datos y una modificacin dando un cruce de las rutas entre los dos espacios de memoria. Esto es por que el TMS32010 se refiri usualmente a tener una modificacin de la arquitectura Harvard. Con la introduccin del corazn del DSP con las facilidades de muchas de las facilidades de las computadoras comunes, Texas Instruments movi el procesamiento digital de seales a una nueva era. No fue mucho el tiempo que fue casi imposible disear sistemas y escribir software para el DSP. El TMS32020 tuvo un lenguaje ensamblador, herramientas de evaluacin y un emulador que poda ser usado en cualquier microcomputadora. Con los subsecuentes desarrollos de mayor velocidad, mayor capacidad de simulacin, depuradores, compiladores de C, etc. para DSP s. Estos han sido movidos al flujo principal de los diseos de sistemas de microcomputadoras. Pero la historia no termina aqu. El florecimiento de la industria de las computadoras personales ha hecho una demanda de crecimiento histrica. Los procesos de tecnologa han mejorado significativamente, por ejemplo la introduccin y desarrollo del CMOS hizo que la geometra de los dispositivos se redujera a 0.5 micrones. Que no solo permiti una mayor densidad de transistores y compuertas, sino que redujo el tiempo de retardo para cada compuerta y consecuentemente ciclos de reloj ms rpidos con mayor flujo de datos a travs del procesador. En 1994 esto signific que se pudieran ver circuito integrados DSP s individuales con alrededor de 4,000,000 de transistores con velocidades de 40ns para 32 bits con punto flotante. VENTAJAS DE TRABAJAR CON SEALES DIGITALES Hay muchas ventajas en el uso de tcnicas digitales para el propsito general del procesamiento de seales. Incluso estas ventajas tambin aplican a las aplicaciones ms especficas, pero hay tambin algunas funciones que pueden ser mejoradas por los DSP que no puede llevarse a cabo en los sistemas analgicos. Las ventajas de usar tcnicas digitales en el proceso de sealizacin caen en varios rangos de categoras: en programacin, estabilidad, la redundancia, facilidad de implantar y adaptar algoritmos y la habilidad para llevar a cabo cdigos de correccin de errores y funciones especiales como los filtros de fase lineales. Tambin se puede considerar la transmisin de datos, almacenamiento y condensacin, reas dnde el proceso digital tiene ventajas significantes sobre el procesamiento anlogo. Mirando esta lista el DSP parece ser la panacea universal. Desafortunadamente la vida no es tan fcil. Hay algunas reas en que una solucin analgica es preferible. Analicemos la ventajas que ofrece un DSP, y as poder decidir cuando usarlos y cuando decidirnos por una solucin analgica. Aplicacin de un procesador digital de seales TMS320C5X Pgina 8 de 63

Programabilidad Actualmente las computadoras podemos usarlas para programar, como procesadores de palabras, o bien, como consolas de juego en pocos segundos. La tecnologa del microprocesador da la misma ventaja a un sistema de proceso de sealizacin digital. Es posible disear una configuracin de hardware que puede ser programada para realizar una variedad muy grande de tareas de proceso de sealizacin, simplemente cargando un software diferente. Por ejemplo, un filtro digital puede reprogramarse de un paso bajo a un paso alto sin cambiar el hardware. En un sistema analgico esto mismo implicara cambiar completamente el sistema original. En muchos casos no hay ninguna necesidad de reprogramar un sistema, slo actualizar su funcionamiento. Los ejemplos podran incluir sistemas gua de proyectiles, usados en circunstancias de combate, donde pueden encontrarse deficiencias no encontrado en los ensayos. La habilidad de realizar estas alteraciones por la sustitucin simple de un solo dispositivo de memoria es una ventaja significante del DSP. Estabilidad Cuando nos enfocamos en el campo de mejora (es decir, cmo los sistemas se comportan durante un perodo de tiempo en uso) la situacin se pone aun peor. Los componentes, incluso las resistencias, los condensadores y los amplificadores operacionales cambian sus caractersticas con los cambios de temperatura. Esto significa que un circuito analgico puede funcionar muy diferente a una temperatura de 0C que a una de 700C. De nuevo, los circuitos digitales no mostrarn ninguna variacin con la temperatura a lo largo de su rango de operacin garantizada. Una tercera forma de variabilidad que afecta los circuitos analgicos es el envejecimiento del componente. Los condensadores son en particular propensos al envejecimiento del material del dielctrico. Esto causar un cambio en la impedancia y alterar la conducta del circuito. Las compensaciones tienen que ser construidas en el circuito para permitir al componente, variaciones termales y viejas. Esto puede complicar el diseo del proceso y comprometer la actuacin del circuito global. Poniendo todo esto en perspectiva, hay muchos miles de sistemas analgicos en uso que pueden ser cambiados por el procesamiento de sealizacin, problemas que por ningn motivo significan que son inconquistables. No obstante ellos existen y el uso de un procesador de seales digital quita estas variables. Adems, pueden programarse los circuitos DSP incluso para descubrir y compensar los cambios en las partes analgicas y mecnicas de un sistema completo. Redundancia

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 9 de 63

Los sistemas digitales son inherentemente redundantes. Si consulta a quinientas computadoras digitales para realizar una sucesin de sumas, todas ellas proporcionan la misma respuesta, exactamente la misma respuesta. Si usted aplica una seal a quinientos circuitos analgicos, construidos usando componentes de especificacin idntica, usted no recibir la misma salida ciertamente de cada circuito. La razn para esto es muy simple - hay una gama de comportamientos de componentes en los sistemas analgicos. Las resistencias tienen una especificacin de tolerancia, normalmente 5% de su valor, pero los componentes ms caros pueden tener una 2% o 1% tolerancia. Los condensadores tpicos tienen una tolerancia de 20% o peor. Semejantemente, los circuitos analgicos (o lineales) semiconductor tienen un rango de especificacin intrnseco que garantiza su operacin, pero las variaciones naturales en el proceso industrial significarn que su actuacin precisa vara de dispositivo a dispositivo. Esto significa que es imposible de predecir la conducta precisa de un sistema analgico. La consecuencia de esto es que, si se requiere un funcionamiento de precisin, es necesario ajustar la actuacin de cada sistema construido, incluyendo resistencias inconstantes o condensadores en el sistema diseo y ajustarlos durante la prueba de la calibracin. Una ms fcil implantacin de algoritmos adaptables Hace varios aos se desarrollaron los sistemas de DSP qu podra cancelar algo del ruido dentro de la cabina del piloto de un automvil, un helicptero o un aeroplano. En el caso del automvil, el ruido que se elimina se causa originalmente por el motor y las resonancias de los tableros debidas a las vibraciones del motor. El sistema de cancelacin de ruido toma la velocidad del motor como una referencia e intenta producir una seal anti-ruido para cancelar el ruido de la cabina del piloto. Hay micrfonos en cada cabecera que determinan el xito del esfuerzo. Basado en los cambios detectados por los micrfonos, el sistema cambia las caractersticas del 'antiruido' hasta que se logre la reduccin mejor posible del ruido. Cuando hay cambios en la velocidad del motor, el sistema se adapta una vez ms a la nueva velocidad del motor. Un sistema DSP puede adaptar fcilmente a algn cambio en las variables medioambientales. El algoritmo adaptable simplemente calcula los nuevos parmetros requeridos y los guarda en memoria, sobre escribiendo los valores anteriores. Algunos niveles muy bsicos de adaptacin son posible de implantar con los sistemas analgicos, pero el cambio completo de un juego complejo de caractersticas de filtrado (como el usado en la cancelacin del ruido) est ms all del alcance prctico del procesamiento de seales analgico. Cdigo de correccin de errores La aplicacin de deteccin y correccin de errores cuando se recuperan o se transmiten datos es sumamente vital. Los discos compactos y mdems demuestran el alcance de la aplicacin de cdigos de deteccin y correccin de errores. Aplicacin de un procesador digital de seales TMS320C5X Pgina 10 de 63

Sistemas de transmisin y recuperacin de datos sufren de varias formas de error. En el caso del disco compacto son: el dao de la superficie, defectos industriales o una desalineacin mecnica. En el caso de un mdem puede ser el ruido o puede haber eco en la lnea, sobre todo donde si sta es una lnea telefnica analgica.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 11 de 63

Con la informacin en una forma digital o binaria se puede construir fcilmente dentro de los datos una cadena adicional 'redundante' de bits que se usa para detectar cuando un error ha ocurrido en los datos principales. En los algoritmos de los sistemas ms sofisticados se aplican cadenas 'redundantes' de bits que permitirn reconstruir la informacin de datos originales. El primer caso puede ser nada ms comprobar la paridad, el segundo involucrar tcnicas ms complejas como los cdigos del bloque y correccin de errores. Este un tema muy tcnico que se cubre en textos sobre transmisin de datos digitales. Funciones especiales Hay algunas tcnicas valiosas en el procesamiento de seales que no pueden realizarse por los sistemas analgicos. El ejemplo clsico es el de filtros de fase lineal. Un filtro de respuesta de impulso finito digital con el cual conjugar la simetra de coeficientes iguales sobre el punto medio poseer una contestacin de fase lineal con la frecuencia. Otro tipo de filtro que puede llevarse a cabo fcilmente digitalmente es un filtro de muesca con un paso de corte. Es casi imposible de crear los filtros analgicos similares. Los sistemas de control proporcionan ejemplos extensos que slo pueden realizarse con las tcnicas digitales. Un ejemplo es conocido como un controlador de rendimiento. stos se usan en situaciones dnde se requiere un tiempo muy rpido asentamiento. Los controladores digitales tambin pueden inferir la velocidad de salida de un codificador. Otra caracterstica importante es la compresin de datos en la transmisin y almacenamiento digital. La compresin no es posible con el proceso del signo analgico. Transmisin de datos y almacenamiento Aunque algunos 'expertos no estn de acuerdo, para la mayora de las personas, el ataque del reproductor de Discos Compactos (el CD) trajo la calidad de alta fidelidad a los hogares. El disco de vinilo negro con sus clics, estallidos, el siseo, etc. est depositndose gradualmente al museo. Est claro que la fidelidad del medio digital es mayor que la de uno analgico. La habilidad para introducir errores por un reproductor de discos (por ejemplo hace clic y estallidos) es bien conocida. Caso contrario de un reproductor de CD, a menos que reciba un golpe mecnico severo, habr relativamente pocos errores, y aqullos que hay, pueden corregirse digitalmente, sin la prdida de fidelidad. Nosotros estamos considerando aqu varios factores como: la proporcin de la seal a ruido, proteccin del error, descubrimiento y recuperacin, la compresin de datos, etc. Aplicacin de un procesador digital de seales TMS320C5X Pgina 12 de 63

El tema es digno de un captulo, o incluso un libro entero. Se dar una apreciacin global breve de algunas las diferencias entre las seales analgicas y digitales. Continuando con el ejemplo de sistemas De alta fidelidad domsticos, miremos la proporcin de la seal a ruido. El trmino es por si mismo explcito, lo que es importante es la cantidad mxima de seales por una cantidad mnima de ruido. Si escuchamos el proceso de reproduccin de msica del disco a travs de amplificador poderoso, nosotros podemos comparar la actuacin del ruido de audio digital y analgico. Tomando el sistema digital primero, habr algn nivel de ruido en cualquier Disco Compacto, causado por algo llamado el error de cuantizacin. Esto se explicar con detalle en Captulo 2 y por el momento no pondremos nfasis en l. Una vez el disco est dentro del reproductor un Lser es usado para leer la cadena de informacin digital en la superficie del disco. Se habr de introducir un ruido en esta fase en forma de errores de datos causado por un reproductor de baja calidad, dao del disco, un brincoteo mecnico del lser, o una alineacin errnea. Debido a un cdigo especial agregado a la informacin de msica, muchos de estos errores pueden corregirse por un dispositivo DSP especial dentro del reproductor. En trminos simples, la seal de msica en el CD original tiene una longitud de palabra de 16 bits. Para mantener la exactitud muchos clculos intermedios se almacenan en al menos 32-bits de precisin. Con un apropiado sobre muestro, 20 bits pueden ser usados para representar una forma de onda al convertirla a su forma analgica. No hay ninguna prdida de informacin causada por el proceso digital de la seal. Tambin se puede deducir ruido causado por una corrupcin de la informacin digital. En los circuitos digitales, hay slo dos posibles estados, uno lgico 1' o cero lgico 0'. En los sistemas de 5 volts la diferencia entre los dos es tpicamente un mnimo de 3 volts. La nica manera en que la seal puede corromperse mientras se est transmitiendo en su forma digital, es por la introduccin de un ruido drstico, causando que un lgico sea interpretado como una lgico o viceversa. Esto no pasa en cualquier dise de circuito competente. Una vez que todo el proceso este completo, la seal de msica digital se pasa a un circuito especial que lo convierte a una seal analgica, para que pueda amplificarse convencionalmente. El proceso de la conversin digital a analgico no recrea una forma de onda analgica perfecta, y se requiere alguna filtracin analgica normalmente antes de que la seal pueda pasarse a un amplificador. Esta fase de la filtracin analgica se considera como tcnicas indeseables, y muchas como la interpolacin o sobre muestreo se llevan a cabo por DSPs dentro del reproductor del CD, para reducir o eliminar la necesidad de la filtracin analgica. La salida del convertidor de digital a analgico es de 2 volts de amplitud, y requiere slo un control de volumen pasivo y un amplificacin de potencia. Aplicacin de un procesador digital de seales TMS320C5X Pgina 13 de 63

Ahora nosotros nos volvemos al omnipresente disco de vinilo LONG-PLAY (LP). El proceso de manufactura industrial involucra el uso de sub-masters para prensar los discos de vinilo. stos se desgastan durante su uso y tienen una vida finita. Pueden presentarse pequeas claras diferencias del master de metal original en esta fase. Hay una cantidad extensa de problemas con el material de vinilo (usado para los LPs) que es muy propensa a daarse bin pueda ser por su manejo, por una aguja defectuosa o malas condiciones de guardado. Hay tambin una tendencia para la superficie se impregne de carga electrosttica que puede descargarse cuando pase travs de la aguja. No hay ningn mecanismo de deteccin o recuperacin de errores para ruidos subsecuentes generados. Hay una inmensa serie de diseos diferentes de cartuchos disponibles, para convertir la seal mecnica (las ranuras) sobre el disco en energa elctrica. Incluso un odo relativamente inexperto puede detectar significantes diferencias entre modelos de cartuchos. La exactitud con que la conversin es hecha es claramente cuestionable. Los cartuchos tpicos producen una salida de 1 a 2 millivolts, en el caso del ms pequeo movimiento magntico de los cartuchos la salida es no lineal con frecuencia y requiere tanto ecualizacin como amplificacin. La seal del cartucho se lleva por un cable coaxial al ecualizador / amplificador. El cable Coaxial proporciona buen (aunque no perfecto) aislamiento de la interferencia externa. Sin embargo, el ruido ser inevitablemente, introducido dentro del ecualizador / amplificador a travs de la potencia proporcionada al circuito, la diafona de la seal, la ecualizacin inexacta, y as sucesivamente. El mensaje que viene de esta simple comparacin es: que la informacin digital es ms robusta que la informacin analgica. Se tienen algunos problemas en relacin con el proceso de conversin analgico a digital y viceversa, pero con la atencin suficiente a simples principios, stos pueden minimizarse. Compresin de datos La explicacin para las razones del por qu de la compresin, es que las imgenes y otros tipos datos importantes causan un costo muy alto para su transmisin, y hacen la compresin necesaria para el procesamiento en tiempo real. Los satlites, fibras pticas y cables son todo caros de instalar y mantener. El objetivo es por consiguiente conseguir el mximo de informacin transferida en una mnima cantidad de tiempo. En todos los ejemplos de compresin analgica un poco de informacin se pierde. Un ejemplo tpico es la limitacin del ancho de banda aplicado a las lneas telefnicas analgicas para poder hacer llamadas simultneas. Esto limita la contestacin de frecuencia eficazmente a 3kHz. Con la transmisin de datos digital o almacenamiento, hay dos formas de compresin, sin prdida y mnima perdida. En la compresin de sin perdida, cuando el informacin Aplicacin de un procesador digital de seales TMS320C5X Pgina 14 de 63

se restaura est inalterada de la versin original. En la condensacin de mnima perdida hay algn nivel de prdida de informacin, normalmente a un detalle fino. En compresin de conferencias e imgenes, un poco de degradacin en la calidad, puede ser bastante aceptable al espectador u oyente. Cuando los datos son financieros u otro tipo de dato de importancia es implicado, obviamente ningn cambio puede permitirse. Los sistemas DSP prcticos Aunque se introducen nuevos, y ms rpidos dispositivos DSP regularmente, hay todava un lmite en el procesamiento que se puede hacer en tiempo real. Este lmite se pone claro cuando el costo del sistema toma consideracin. Los nuevos desarrollos con procesos paralelos para DSP han movido su rendimiento dentro nuevas reas, pero slo puede justificarse donde el costo se incrementa. Entonces qu puede hacerse con un DSP y a qu costo? Nosotros ya hemos visto algunos ejemplos de las aplicaciones con DSP: el reproductor de Disco Compacto, el control de ruido en los automviles, etc. El precio en tienda es de 100 dlares por un reproductor CD esto demuestra que el DSP no es una tecnologa cara. El dispositivo DSP requerido para un sistema adaptable de control de ruido costara por debajo de los 10 dlares y el costo es ms bajo para un solo dispositivo DSP. Para ejemplificar que puede hacerse con los dispositivos de DSP existentes, estudiaremos brevemente cinco generaciones de la familia de TMS32O de Texas Instruments (TI). No es necesario profundizar en los rasgos de cada generacin. Por ahora slo recuerda que la primera (TMS32OC1x), segunda (TMS32OC2x) y quinta (TMS32OCSx) generacin son dispositivos de punto fijo de 16-bits y que la tercera (TMS32OC3X) y cuarta (TMS32OC4x) generacin son dispositivos de punto flotante de 32-bits. El precio no es posible de indicar con precisin en este texto, pero es importante reconocer que su costo efectivo por stos dispositivos, particularmente dispositivos TI de punto fijo cuesta menos de un dlar por MIPS (Millones de Instrucciones Por Segundo). La tabla siguiente muestra algunas aplicaciones comerciales tpicas para cada generacin de la familia TMS32O TMS320C1x
Decodificadores de DTMF Codecs ADPCM Y LPC Instrumentos musicales Juguetes Controladores de Disco Duro Modems V.2x

TMS320C2x

TMS320C5x

TMS320C3x

TMS320C4x
Radar Animacin realidad virtual Sistemas procesamiento paralelo Reconocimiento imgenes de de de

Vocoders y Audio Codec MPEG Suspensin Activa ecualizadores GSM Controladores de Vocoders LD-CELP Vocoders IS54 y JDC Videophones servomotores Vocoders ADPCM con Sistemas de correo cancelacin de eco Mquinas de voz contestadoras Sistemas de alta Mquinas de FAX fidelidad Aceleradores de grficos 3D

Aunque esta lista es impresionante, hay limitaciones qu un simple circuito integrado DSP puede hacer. No podemos tener todava controlador de voz infalible o un altavoz de reconocimiento de voz independiente, aunque por cunto tiempo ms? El TMS32OC4O ha trado el verdadero procesamiento paralelo al mundo del DSP. La Aplicacin de un procesador digital de seales TMS320C5X Pgina 15 de 63

desventaja es que hay todava una liga cerrada entre costo y rendimiento del sistema, con muchas aplicaciones simplemente difciles de costear. Sin embargo, como la tecnologa del semiconductor continua en trminos de rendimiento por dlar. La penetracin del DSP dentro del mercado del consumidor ha ayudado a la baja del precio de dispositivos DSP, igualmente el desarrollo de DSPs de procesamiento en paralelo han permitido a los sistemas de DSP una actuacin con el ms alto rendimiento. El alcance de aplicaciones DSP est ensanchando as a ambos fines, en escala de rendimiento, y cuestin de costo por componente. DSP en los sistemas de control Un importante incremento en el rea de aplicaciones para DSP est en los sistemas del control. Hay muchos rasgos de los sistemas digitales que los hacen deseables para el control. Los procesadores digitales de seales han trado ahora el tipo de muestro y el procesamiento en tiempo real que pueden incrementar el alcance de control digital. A pesar de la creciente popularidad del control digital, las soluciones analgicas han persistido por mucho tiempo en el rea de control ms que en otras reas. La razn es simple, estas aplicaciones de control son soluciones de propsito general que procesan formas distintas de seales. Los sistemas analgicos dan eficazmente un muestro de proporciones infinitas y es infinitamente inconstante. Los sistemas digitales deben tener una proporcin finita de muestro y un nmero finito de niveles de salidas. Esto tiene implicaciones importantes en la actuacin del sistema de control y la estabilidad. Sin embargo, pueden superarse las limitaciones de control con diseos cuidadosos, y muchos dispositivos de la familia TMS32O se usan ahora en una ancha variedad de sistemas de control (Los alcances del control digital son muy extensos y estn fuera del alcance de este texto). Las capacidades crecientes del VLSI analgico La euforia y extrapolacin de la emergencia de la tecnologa digital al comienzo de 1980 hicieron parecer que los nicos componentes analgicos que se necesitaran seran el amplificador operacional 'ideal' (el op-amp) y acompaado de un convertidor analgico digital multi-bit (ADC) sin errores de conversin. Con un ancho de banda de ganancia infinito, cero ruido y caractersticas de DC impecables el op-amp sera configurable para amplificar e igualar la seal originada de cualquier transductor. Con un tiempo de conversin cero y un gran nmero de bits en resolucin, los ADC presentaran una seal limpia al procesador digital de sealas. Resumen Las ms significantes mejoras se han hecho en el campo analgico durante los ltimos diez aos. Este perodo tambin ha visto el aumento masivo del uso de sistemas y dispositivos DSP para resolver una serie entera de problemas. Las ventajas del procesamiento digital de seales es muy poderosa y no es improbable que habr cualquier un gran resurgimiento de procesamiento analgico de propsito general en el futuro cercano. Se est viendo que los circuitos analgicos que se usan Aplicacin de un procesador digital de seales TMS320C5X Pgina 16 de 63

extensivamente en cooperacin con el DSP en el mismo diseo, a menudo proporcionar algunas funciones de bsicas pre-procesamiento. Tambin est claro DSP tienen limitaciones de ancho de banda relacionadas a tiempo de ciclos del procesador y a la complejidad de los algoritmos, los circuitos analgicos pueden ser aplicados a seales con muy grandes anchos de banda. Estos continuar manejando una demanda para mejorar los dispositivos analgicos en las aplicaciones como la comunicacin mvil. En ambos dominios analgicos y digitales est claro que cualquier nuevo avance de tecnologa se adopta vidamente en los usuarios y en las demandas nuevas de los sistemas, esto contina estimulando a los diseadores de dispositivos. Nosotros podemos observarlos en las comunicaciones mviles, Televisin de alta definicin, los videfonos, etc., manteniendo un desafo significante para los convertidores de datos y componentes analgicos y digitales durante los prximos aos venideros.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 17 de 63

CONCEPTOS MATEMTICOS
En la Ingeniera de comunicaciones, para la transmisin de seales es fundamental el Anlisis Espectral ya sea que se use el espacio libre o bien un cable como medio de transmisin; as varias seales pueden enviarse por el mismo canal de comunicacin, optimizando ste. Para lo cual nos auxiliamos de las siguientes herramientas matemticas: Series de Fourier Las series de Fourier describen seales peridicas como una combinacin de seales armnicas (sinusoides). Con esta herramienta podemos analizar una seal peridica en trminos de su contenido frecuencial o espectro. Nos permitir establecer la dualidad entre tiempo y frecuencia, de forma que operaciones realizadas en el dominio temporal tienen su dual en el dominio frecuencial. Forma trigonomtrica de las series de Fourier: se pretende describir una funcin peridica xp(t) de periodo T (frecuencia fundamental fo=1/T , wo=2pfo ). ao + a1 cos(w o t ) +... a k cos( kw o t ) +...+b1 sen(w o t ) + bk sen( kw o t ) +... 2 a x p (t ) = o + a k cos( kw o t ) +bk sen( kw o t ) 2 k =1 x p (t ) =

En forma exponencial:

x p (t ) =

k = -

X [ k ]exp( jkw t )
s o

ja = cosa j sen a Se ha empleado la ecuacin de Euler: e

Se demuestra

X s[k ] =

Clculo de los coeficientes Relacin de Parseval

1 (a - jbk ) 2 k 1 X s [ k ] = x p (t ) exp( - jkw 0 t )dt TT


1 2 2 x P (t )dt = X s [ k ] TT k = -

Px =

La potencia contenida en una seal puede evaluarse a partir de los coeficientes de su correspondiente serie de Fourier.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 18 de 63

Espectro de seales peridicas: Los coeficientes Xs[k] son los coeficientes espectrales de la seal xp(t). La grfica de esos coeficientes en funcin del ndice armnico k de las frecuencias kwo se denomina espectro. Hay dos tipos de grficos , uno de magnitud con los coeficientes | Xs[k] | y otro de la fase de Xs[k]. La funcin | Xs[k] | as como la fase de Xs[k] son funciones discretas de la frecuencia. Es importante saber cuantos armnicos sern necesarios para reconstruir una seal dada. Para ello utilizaremos la relacin de Parseval. Un parmetro importante en la reconstruccin de seales es la velocidad de convergencia, o lo que es lo mismo la velocidad a la cual los coeficientes de Fourier tienden a 0.

Transformada de Fourier Queremos ampliar el concepto de series de Fourier a seales no peridicas. Podemos visualizar una seal no peridica como una seal continua de periodo infinito: El espaciado entre frecuencias se aproxima a 0 y es por tanto una funcin continua. La seal pasa a ser de potencia a seal de energa. Los coeficientes Xs[k] son 0. Ya no es un indicador del contenido espectral de la seal.

Se define la Transformada de Fourier de x(t) como:


x ( f ) = lim T X s [ k ] =
T

x(t ) exp(- j2pft )dt

Relacin entre las Series y la Transformada de Fourier: X(w) es la funcin envolvente de Xs[k]. Si muestreamos X(w) a intervalos f0, la funcin resultante es el espectro de una seal peridica de periodo T0=1/f0. Es decir, muestrear en el dominio frecuencial se corresponde con seales peridicas en el dominio temporal. X ( f ) = T X s [ k ]k f0 = f
X s[k ] = X( f ) T
f =k f0

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 19 de 63

Transformada Inversa de Fourier para una funcin X(w):


x (t ) =

X ( f ) exp( j2pft )df

Propiedades de la Transformada de Fourier: Superposicin Derivada F {x ' (t ) }= jwX (w )

F {ax (t ) + by (t ) = aX (w ) + bY (w ) }

F x n (t ) = ( jw ) n X (w ) F {- j 2ptx (t ) = 2pX ' (w ) }

En el tiempo Integral Escalado Desplazamiento

F (- j 2pt ) n x (t ) = (2p ) n X n (w )

1 t F x(t )dt = X (w ) + pX (0)d (w ) jw -


F {x(at ) }= 1 w X a a

F {x (t - a ) } e - jwa X (w ) = F e j 2pat x(t ) = X ( f - a )

Convolucin Parseval

F {x (t ) * y (t ) = X (w )Y (w ) } 1 [X (w ) * Y (w ) F {x (t ) y (t ) } = 2p
2 x (t )dt =

1 2 X (w ) dw p-

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 20 de 63

Muestreo El muestreo digital de una seal analgica trae consigo una discretizacin tanto en el dominio temporal como en el de la amplitud. Hay varias formas de describir matemticamente el proceso de discretizacin temporal de una seal continua en el tiempo. Nos centraremos en el muestreador ideal, que consiste en una funcin que toma los valores de la seal xC (t) en los instantes muestreos y el valor cero para el resto de puntos

x S (t ) = xC (t ) d (t - nt s ) = x C (nt s )d (t - nt s ) = xC (t ) x l (t )
n = - n = -

donde tS es el periodo de muestreo y xl (t) es la funcin de interpolacin. El muestreo trae consigo una aparente prdida de informacin en la seal xC (t) . El Teorema del Muestreo establece en que condiciones se puede muestrear sin prdida de informacin. Teorema del muestreo: Una seal xc(t) con un espectro limitado a la frecuencia fB ( |f|fB ) puede ser muestreada sin prdida de informacin si la frecuencia de muestreo fS supera la cantidad 2fB es decir fS2f B. Si no se muestrea como mnimo a esa frecuencia tiene lugar el fenmeno denominado aliasing , efecto indeseable que causa que seales continuas distintas se tornen indistinguibles cuando se les muestrea digitalmente. Cuando esto sucede, la seal original no puede ser reconstruida de forma unvoca a partir de la seal digital.
xS (t ) = xC (t ) d (t - nt S ) = xC (t ) xl (t )
n = -

X S ( f ) = XC ( f )* Xl ( f ) xl (t ) = Ck =
k = -

d (t - k ts ) =

k = -

e j 2pt / t s

1 ts 2 1 1 d (t ) e - j 2pt t s dt = X l ( f ) = d ( f - k t s ) t s -t s 2 ts t s k =-
-

X S ( f ) = X l ( f ) X C ( f - x ) dx = XS( f ) = 1 X C ( f - k ts ) t s k = -

1 ts

k = -

d ( f - k t s ) X C ( f - x ) dx

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 21 de 63

Es decir, el espectro de la seal muestreada se compone de una funcin peridica de periodo 1/ ts, replicndose en cada periodo el espectro de la seal original. Se observa en la figura el porqu del teorema del muestreo. Para recuperar la seal original a partir de la muestrada no tenemos ms que aplicar un filtro pasobajo con una frecuencia de corte en f= fB y una amplificacin ts, es decir,

X C ( f ) = X S ( f ) H PB ( f ) xC (t ) = x S (t ) * hPB (t ) f H PB ( f ) = t s rect 2f B x S (t ) = xC (t ) =
k = -

hPB (t ) = t s 2 f B sinc (t 2 f B )
k = -

xC (kt s )d (t - kt s ) =

x [k ]d (t - kt
C C k = -

) sinc 2 f B (t - kt s ) ] [

x C [k ] PB (t - kt s ) = 2 t s f B h

k = -

x []k

A la funcin sinc( t) se le denomina funcin de interpolacin cardinal. Este tipo de reconstruccin de la seal original presenta varios problemas: El dominio de la funcin sinc( t) es infinito. Requiere muestreos pasados y futuros. Existe la posibilidad de truncar la funcin sinc( t), pero da lugar al efecto Gibbs y adems requerira muchos puntos. No pueden reconstruir funciones con discontinuidades. Existen muchas funciones de interpolacin. La eleccin debe hacerse en funcin de su estabilidad y de su realizacin fsica. Cuantizacin

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 22 de 63

Para procesar seales digitalmente no slo es necesario muestrear la seal analgica sino tambin cuantizar la amplitud de esas seales a un nmero finito de niveles. El tipo ms usual de cuantizacin es la cuantizacin uniforme, en el que los niveles son todos iguales. La mayora usan un nmero de niveles que es una potencia de 2. Si L= 2B, cada uno de los niveles es codificado a un nmero binario de B bits. La cuantizacin (o el truncamiento en operaciones mtematicas en un microprocesador) puede producir problemas serios en el diseo de filtros digitales, hasta el punto (en casos graves) de convertir filtros estables en inestables. Transformada Discreta Transformada Discreta de Fourier Antes de definir la DFT, analizaremos primero la Transformada de Fourier en tiempo discreto (DTFT). La DTFT describe el espectro de seales discretas. Deduciremos la DFT a partir de la convolucin discreta. All se defini la convolucin discreta como:

[ y[n ] = x n[ *]h n [= ] x s k hs n -]k


k = -

Si tenemos una seal de entrada armnica x[ n]= exp( j2pnft, la respuesta y[ n] es

y[n ] =

k = -

exp[ j 2p (n - k )ft
k = -

] -h k

[ ]
) H h[k ] = x n[ ] ( f )

y[n ] = exp ( j 2pnft s

) exp -( j 2pft s

H( f) es la DTFT de la seal discreta h[ n] . Ntese que la funcin H( f) es peridica, debido a que h[ n] es una funcin discreta. El comportamiento dual entre las series de Fourier y la DTFT se manifiesta en lo siguiente: En las series de Fourier parto de una seal x( t), temporal, continua y peridica (periodo T ) y obtengo los coeficientes X[ k] , que es una funcin de la frecuencia, aperidica y discreta con una distancia entre dos valores consecutivos de f 0 =1/ T . En la DTFT parto de una seal discreta en el tiempo x[ n], con periodo de muestreo ts =1/ fs y peridica y obtengo una funcin X( f) , que es funcin continua de la frecuencia y peridica con periodo f s . Pgina 23 de 63

Aplicacin de un procesador digital de seales TMS320C5X

Todas las propiedades que se vieron para las series de Fourier tienen su correspondientes equivalencias en la DTFT. Ejemplo : DTFT de la secuencia x[ n]= d [n] :

X(f) =

k = -

) d [k ]exp(- j 2pkft = 1
s

Si tenemos una secuencia x[n]={1,0,3,- 2} , a partir de la anterior ecuacin y aplicando la propiedad del desplazamiento,

( X ( f) = 1 + 3 exp - j 4pft s -)2 exp - j(6pft s

Sin embargo, a la hora de realizar operaciones tenemos los mismos problemas que en las series de Fourier ya que seguimos tratanto con seales continuas o con series de datos de longitud infinita. La electrnica nos obliga a trabajar con un nmero finito de datos discretos que adems tienen una precisin finita. De lo que se trata es de conseguir discretizar las variables continuas y de limitar el nmeros de muestras en los dos dominios (temporal y frecuencial). Esto nos lleva a definir las series discretas de Fourier y la Transformada Discreta de Fourier (DFT). De las Series de Fourier a las Series Discretas de Fourier Para las Series de Fourier se cumple ( f0 =1/ T ) x p (t ) =

k = -

X [k ]exp( j 2pkf t )
s 0

X s [k ] =

1 T

x ()t
T p

( exp - j 2pkf 0 t ) dt

Para limitar xp (t), tomamos N muestras de xp (t) durante un periodo a intervalos ts , de forma que N t =T. Al calcular los coeficientes X[ k] me queda, 1 N -1 X [k ] = x P [n ] exp(- j 2pkf 0 nt s ) t s Nt s n= 0

1 N -1 x P [n ] exp(- j 2pkn N N n =0 k = 0,1,2..., N - 1 X [k ] =

La cantidad X[k] es la serie de Fourier Discreta de la seal peridica muestreada xp[n].

De la DTFT a la DFT Tenemos una seal x[ n] limitado a N muestras con un periodo de muestreo ts. La DTFT se define como: X P ( f ) = x[n ] exp (- j 2pnft s
n= 0 N -1

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 24 de 63

XP(f) es peridica con periodo 1/ ts. Muestreamos esta seal N veces sobre un periodo, por tanto XT[k] ser sustituir f por k/( Nts) :

X T [k ] = x n [ exp[- j 2pnkt s ( Nt s ]
n =0

N -1

) ]

X T [k ]= x n [ exp[- j 2pnk ]
n =0

N -1

k = 0,1,2,..., N - 1

Esta ltima expresin resultante es la Transformada Discreta de Fourier de una seal x[ n]. Excepto por el trmino 1/ N es idntica a la Serie Discreta de Fourier.

Transformada Discreta inversa (IDFT), 1 N -1 x[n ] = X T [k ]exp( j 2pnk N N k =0

n = 0,1,2,..., N - 1

Transformada Rpida de Fourier FFT (Fast Fourier Transform) La importancia de DFT estriba en que es posible utilizar un algoritmo, llamado FFT, que lo realiza de forma eficiente y rpida. El DFT de una secuencia x[n] es:

[ nk X [k ]= x n WN]
n= 0

N -1

k=0,1,...,N-1

donde WN = e-j2p/N Una primera aproximacin al clculo del DFT requerira la suma compleja de N multiplicaciones complejas para cada uno de las salidas. En total, N2 multiplicaciones complejas y N2 sumas complejas para realizar un DFT de N puntos. Lo que consigue el algoritmo FFT es simplificar enormemente el clculo del DFT introduciendo atajos matemticos para reducir drsticamente el nmero de operaciones. La optimizacin del proceso de clculo del DFT est basado en las siguientes ideas: Simetra y Periodicidad de los trminos WN .
n n WN + N = WN n WNn+ N / 2 = -WN

W NNk = 1 WN2 = WN / 2

Elegimos el valor de N de forma que N= rm. Al factor r se le denomina radix y su valor ms habitual es 2, de forma que N= 2m y algoritmo se denomina FFT radix2.

Radix- 2 FFT- Decimacin en el Tiempo. Aplicacin de un procesador digital de seales TMS320C5X Pgina 25 de 63

Dividimos la secuencia de datos de entrada x[ n] en dos grupos, uno de ndices par y el otro de ndices impar. Con estas sub- secuencias se realiza el DFT de N/ 2 puntos y sus resultados se combinan para formar el DFT de N puntos.

X [k] =

N / 2 -1

n= 0

]2 x 2[n W N nk +

N / 2 -1

n =0

[ ( ) x 2n + 1 W N2 n+1]k =

N / 2 -1 n =0

x[2n]W
]

2 nk N

k + WN

N / 2 -1 n= 0

x 2n +[1 W ]
2 nk N

Sustituimos: x 2 [n] = x[ 2n + 1 ]
nk WN2nk = WN / 2

[ x1 [n] = x 2n

X [k ] =

N / 2 -1

n= 0

k [ nk x1 n W N /]2 + W N

N / 2 -1 n =0

k [ ] n WNnk/ 2 = Y k + W N Z k

[ ]

[ ] k=0,1,2,...,N-1

Esta ltima ecuacin muestra que el DFT de N puntos es la suma de dos DFTs de N/ 2 puntos ( Y[ k], Z[k] ) realizadas con las secuencias par e impar de la k secuencia original x[ n] . Cada trmino Z[ k] es multiplicado por un factor WN , k k+ N/2 =- WN y debido a la periodicidad de Y[ llamado twiddle factor . Ya que WN k] y Z[ k] (periodo N/ 2) podemos poner X[ k] como

X [k + N / 2 = ] k -[ ]k k Y WN Para k=0,1,..., N / 2

] k Zk X [k ] = Y k[ + W N k [ ]

[ ] [ Z k ]

[ ]

Los dos DFT de N/ 2 puntos se puede a su vez dividir para formar 4 DFTs de N/ 4 puntos, lo que produce las siguientes ecuaciones

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 26 de 63

Y [k ] = U k[ +]WN2k V k [ ] Z k = R k [ +] N k S [k ] W2 2 2 Y [k + N 4 = ] k -[W]N k V k Z [k + N 4 = ]R k -[W]N k S k U [ ] k = 0,1,..., N 4 - 1 k = 0,1,..., N 4 - 1

[ ]

[ ]

El proceso puede repetirse sucesivamente hasta llegar a procesar el DFT de dos valores x[ n] , en concreto x[ k] y x[ k+ N/ 2] , para k= 0,1,..., N/ 2- 1 . Para una DFT de N= 8 puntos tenemos el siguiente esquema

Las caractersticas de una FFT de N puntos decimada en el tiempo se sumarizan en la siguiente tabla: Etapa 1 N/2 1 (N/2)k, k=0 Etapa 2 N/4 2 (N/4)k, k=0,1 Etapa 3 N/8 4 Etapa log2N 1 2/N

Nmero de Grupos Butterflies por Grupo Exponentes Twiddle Factors

(N/8)k, K, k=0,1,2, K=0,1,...,N/2-1 3

Por cada butterfly tenemos una multiplicacin y dos sumas complejas. Pgina 27 de 63

Aplicacin de un procesador digital de seales TMS320C5X

Hay N/ 2 butterflies por etapa y log 2 N etapas. El nmero total de multiplicaciones es N log 2 N . El nmero total de sumas es N log 2 N .

Para pequeos valores de N , la diferencia puede parecer pequea, pero para valores grandes la diferencia es enorme. Para un DFT de 1024 puntos, el nmero de multiplicaciones en un FFT es aproximadamente 5000 mientras que para un DFT normal es de aproximadamente 106. Radix- 2 FFT- Decimacin en Frecuencia Expresaremos el FFT como suma de los FFT de dos secuencias, la primera con los N/ 2 primeros datos y la segunda con los N/ 2 ltimos.
nk [ ] X [k ] = x n WN n =0 N -1

N / 2 -1

n= 0

x nW

nk N

nk [ + ] x n WN n=N / 2

N -1

[ ]

X [] = k X [k ] = X [k ] =

N / 2 -1 n= 0

n x [] WNnk +

N / 2-1 n =0

x n[+ N / 2 W (]
N k N / 2 -1 n =0

) n+ N / 2 k

N / 2 -1 n= 0

[ ] x n WNnk + (- 1 )
k n= 0

] x[n + N / 2 W
nk N

nk N

N / 2 -1

[ ] [x n + (]- 1 ) x[n + N / 2 ]W

k = 0,1,2,..., N - 1 La decimacin en frecuencia se obtiene dividiendo la secuencia de salida ( X[ k] ) en dos ecuaciones, una para los ndices pares y otro para los impares.

[ [

2 X [] k = 2 X [] k =

N / 2 -1 n =0

] ] [ [x n + x n] + N / 2 W ] ] [ [x n + x n] + N / 2 W
n =0 N / 2 -1 n =0

2 nk N

N / 2 -1

nk N/2

k = 0,1,..., N / 2 - 1

[ X [2k + ] = ][x[ n ]- x n + N / 2 WNn (2k +1 ) ] 1


1 [X [2k + ] = [][ [n ]- x n + N / 2 W Nn WNnk/ 2 ] x
N / 2 -1 n =0

k = 0,1,..., N / 2 - 1 X[ 2k] y X[ 2k+ 1] son los resultados del DFT de N/ 2 puntos realizado con las suma y la diferencia entre la primera y segunda mitades de la secuencia de entrada.

Estas operaciones son conocidas o denominadas como MARIPOSAS para mayor referencia. Aplicacin de un procesador digital de seales TMS320C5X Pgina 28 de 63

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 29 de 63

Las caracterstica del FFT decimado en frecuencia son: Etapa 1 Nmeros de Grupos Butterflies por Grupo Exponentes Twiddle Factors 1 N/2 Etapa 2 2 N/4 Etapa 3 4 N/8 Etapa log2 N N/2 1 (N/2)n, n=0

4n, 2n, n, n=0,...,N/2- n=0,...,N/4- n=0,...,N/81 1 1

Se puede observar que en el caso de decimacin en el tiempo, la secuencia de entrada debe ser reordenada mientras que la salida aparece en el orden correcto. Para la decimacin en frecuencia, la secuencia est en orden mientras que la salida habr que reordenarla. Se da la circunstancia que esa reordenacin es simplemente invertir el ndice en binario. Por ejemplo, en la misma posicin que x[ 1] aparece X[ 4] , y 001 invertido es 100.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 30 de 63

MODULO DE DESARROLLO
DESCRIPCION GENERAL DEL STARTER KIT CARACTERSTICAS PRINCIPALES DSP standard TMS320C50 de punto fijo. Tiempo de ciclo de instruccin 50 ns. 32Kbyte de PROM (programmable Read Only Memory). Calidad de voz adquisicin de datos analgicos va tlc32040. Conectores standard RCA para entradas y salidas analgicas que provee conexin directa a micrfono y bocina. Conector emulador XDS510. Bus de expansin para diseo externo. Funcionamiento global A continuacin se muestra el diagrama de bloques bsico del TMS320C50.

Conector de expansin
TNS320C50 Control D0-D15 A0-A15 Puerto Serial Puerto TDM

Jack RCA Salida analgica Interface Analgica TLC32040 Jack RCA Entrada

PROM 32K x 8

JTAG Puerto de Emulacin

Puerto XDS510

De 14 pines En la figura se muestran las interconexiones, la cual incluye las distintas interfaces, interface analgica e interface de emulacin. La comunicacin con la PC es a travs de un puerto RS232 que se encuentra en la tarjeta del DSK. Los 32K bytes de memoria PROM contiene un programa kernel para cargar el programa de arranque. Todos los pines del TMS320C50 estn conectados a las interfaces externas de entrada/salida; esta incluyen 4 24-pin headers, a 4-pin header y a 14-pin XDS510 header. La interface analgica TLC32040 conecta al puerto serial del TMS320C50. Dos Conectores RCA proporciona entradas y salidas analgicas a la tarjeta.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 31 de 63

INTRODUCCIN El C5x DSK es una de las tarjetas de aplicacin ms simple del DSP TMS320C5x. Aunque no haya memoria externa disponible en la tarjeta, los 10K de RAM provee de bastante memoria para los programas de aplicacin del DSP. El programa kernel esta contenido en los 32K de la PROM; la PROM slo contiene el cargador de inicio del DSK y no puede ser accesada despus de que se ejecute el inicio. A continuacin se muestra el mapa de memoria de C5x DSK.
PROGRAMA 0000h Cargador de inicio. (On-chip) ROM. Vectores de Interrupcin. Depurador Programa Kernel. 0980h 2C00h 0840h Espacio externo. FE00h [B0] FFFFh 0840h 0840h 0840h Programa de usuario 0840h 0840h DATOS Mapa de registros de memoria. Reservado por el kernel B2 Reservado [B0] 0840h 0840h B1 Reservado Reservado por el depurador del kernel Espacio de usuario Espacio externo

0800h 0840h

0840h 0840h

El dual-access, random-access-memory (DARAM) B2 esta reservado como un bufer para los registros de estado. El single-acces, random-accesss-memory (SARAM) esta configurado como memoria de datos y programa, el programa kernel esta almacenado en esta rea de memoria entre las direcciones 0x840h-0x980h. Si el kernel esta realizando una sobre escritura, una seal de reset es requerida para permitir que el DSK recargue el programa kernel. Los vectores de interrupcin estn localizados, empezando de 0x800h. La localidad IPTR en el registro PMST (contiene el estado y control de la informacin del dispositivo C5x)no deber ser modificada. El TLC32040 AIC situado en la tarjeta (DSK) provee de un solo canal entrada/salida con interface analgica de calidad de voz con las siguientes caractersticas: Un solo circuito integrado de conversin A/D y D/A con 14 bits de rango dinmico. Rango de muestro variable de A/D y D/A, y filtrado. Aplicacin de un procesador digital de seales TMS320C5X Pgina 32 de 63

El AIC se conecta directamente al puerto serial del TMS320C50. La entrada principal al AIC la provee un timer externo del TMS320C50. El AIC cuenta con un modo de operacin de una palabra de 16 bit. El pin de reset de AIC esta conectado al pin BR\ del TMS320C50. La capacidad analgica del DSK, se sita para varias aplicaciones, incluyendo procesamiento de datos de audio. Se pueden conectar la mayor parte de micrfonos y bocinas a la entrada y salida analgica del DSK. El DSK esta provisto de seis cabezales, incluyendo el XDS510, para ayudar al diseo de nuestro propio hardware externo. La mayor de las seales del TMS320C50 y de otro circuito son conectadas en la tarjeta a estos cabezales. EL DSK TMS320C5x tiene ventanas de depuracin que permiten hace fcil el desarrollo y presentar un cdigo depurado. El DSK se comunican con la PC usando los pines XF y BIO\ a travs del puerto serial RS232.
Lnea RS232 Buffers DSP C50 TX (XMIT) PC/AT Host Async Ser Port TR (RCV) DTR (/RS) GND 3 2 4 5 BIO XF RS GND

El DSK tiene su propio ensamblador y depurador.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 33 de 63

Requerimientos mnimos para trabajar con el DSK. HARDWARE Unidad PC compatible con IBM con disco duro y unidad lectora de discos de 1.44M. Memoria 640 Kb como mnimo. Monitor Monocromtico o color (se recomienda color). Requerimientos de energa Una fuente de poder de 9 Vca @ 250 ma. (o superior) con un conector jack de 2.1 mm. Tarjeta Tarjeta DSK. Puerto Puerto serial de comunicaciones RS232. Cable Cable serial DB9.

SOFTWARE Sistema operativo MS-DOS o PC-DOS (versin 4.01 o superior). Los dems programas necesarios para trabajar con la tarjeta DSK estn incluidos en el software de esta.

CONEXIONES PARA L MDULO DSK. Es necesario un cable RS-232 el cual conectara a la PC con la tarjeta DSK. La DSK cuenta con un conector DB9 RS-232. Aplicacin de un procesador digital de seales TMS320C5X Pgina 34 de 63

PASOS PARA CONECTAR L MDULO DSK A LA PC. Siga los pasos que a continuacin se mencionan para conectar para conectar la tarjeta DSK a la PC. 1. Verifique que su PC este apagada. 2. Conecte el cable RS-232 al puerto de comunicaciones de la computadora. 3. Coloque el cable RS 232 que viene de la PC a la tarjeta DSK. 4. Conecte el transformador de 9 Vca a la tarjeta DSK (ver siguiente figura). 5. Conecte el transformador a la toma de alimentacin. 6. Encienda su PC.

INSTALACION DEL SOFTWARE A continuacin se presenta el proceso de instalacin del software del mdulo DSK en el disco duro de sistema. 1. Realice una copia de respaldo del software que se incluye en el mdulo DSK.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 35 de 63

2. Genere un directorio llamado dsktools en el disco duro de la PC. Este directorio es para el software ensamblador y depurador del DSK. md c:\sdktools 3. Inserte el disco dentro del drive A., y copie el contenido en el disco duro de la PC. Copy a:\*.* c:dsktools \*.* / v MODICAR EL ARCHIVO CONFIG.SYS Cuando se usa el depurador, se puede tener 20 archivos abiertos o activos en un mismo tiempo. El sistema no deja tener mas de 20 archivos activos, se puede agregar la siguiente lnea de comando al archivo config.sys. FILES=20

MODIFICANDO LA DECLARACION DEL PATH Asegrese que el depuarador trabaja correctamente, se deber modificar la lnea PATH para identificar el directorio dsktools. Esta modificacin se deber llevar acabo el archivo autoexec.bat, tal y como se indica en el siguiente ejemplo:

DATE TIME ECHO OFF PATH = c:\dos;c:\dsktools

Recuerde que el archivo autoexec.bat se ejecuta en cada reinicio o invocndolo desde el promt, ejemplo: Autoexec.bat INICIO DE LA TARJETA DSK Asegrese que esta instalada correctamente su tarjeta DSK, ensamblador y depurador, ingrese uno de los siguiente comandos segn donde se encuentre conectado el cable RS 232 a su computadora. Si esta usando el puerto 1 (com 1) teclee: Aplicacin de un procesador digital de seales TMS320C5X Pgina 36 de 63

dsk5d c1 Si esta usando el puerto 1 (com 2) teclee: dsk5d c2 Si esta usando el puerto 1 (com 3) teclee: dsk5d c3 Si esta usando el puerto 1 (com 4) teclee: dsk5d c4

Si es posible ver una pantalla similar a la figura anterior esta correctamente instalada la tarjeta del DSK, ensamblador y depuarador. Si fuese lo contrario es necesario que se repintan los pasos de la instalacin con la mayor precaucin posible.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 37 de 63

DESCRIPCION DEL ENSAMBLADOR DSK El ensamblador DSK es una interface simple de usar. Slo las caractersticas ms importantes de un ensamblador han sido incorporadas. CARACTERISTICAS IMPORTANTES DE UN ENSAMBLADOR RAPIDO. El ensamblador DSK difiere de muchos otros ensambladores en que no pasa a travs de in ligador para crear un archivo de salida. En cambio, el DSK usa directivas especiales para el cdigo ensamblado en direcciones absolutas durante la fas de ensamblado. Como resultado, podemos crear pequeos programas fcil y rpidamente. USO FACIL. Si queremos crear programas grandes, se puede con un simple cargado de archivos con la directiva .include.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 38 de 63

DESCRIPCION DEL DEPURADOR DSK El depurador es fcil de usar y aprender, resulta amigable la interface ventana-men, reduce el tiempo de aprendizaje y evita la necesidad de memorizar comando complejos. El depurador es capaz de cargar y ejecutar cdigo en un solo paso, puntos de ruptura y la capacidad de correr y parar. A continuacin se muestra la pantalla del depurador.

CARACTERISTICAS IMPORTANTES DEL DEPURADOR USO FACIL. Interface de ventanas. El depurador DSK separa cdigo, datos dentro de un espacio accesible para trabajar. CONJUNTO PODEROSO DE COMANDOS. Al contrario de otros sistemas, este depurador no fuerza a aprendes un complicado conjunto de instrucciones. El depurador DSK soporta un pequeo pero poderoso conjunto de instrucciones. ENTRADA FLEXIBLE DE COMANDOS. Existen dos caminos para ingresar comandos: el comando en linea o usando el menu en barra. Seleccione el mejor mtodo para usted.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 39 de 63

DESARROLLANDO CODIGO PARA EL DSK. ENSAMBLADOR. El ensamblador traduce el archivo fuente en lenguaje ensamblador dentro de la mquina a archivos en lenguaje objeto para la familia de procesadores TMS320C5x. Slo las caractersticas esenciales de un ensamblador pueden ser incorporadas. DEPURADOR. La meta del proceso de desarrollo es producir un mdulo que pueda ser ejecutado en un sistema DSK. Se puede utilizar el depurador para refinar y corregir el cdigo.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 40 de 63

INICIO A continuacin se presenta un ejemplo rpido que involucra al ensamblador y depurador. 1. Crear un archivo fuente corto, llamado try1.asm.

2. Ingrese el siguiente comando para ensamblar try1.asm Dsk5a try1 Este comando invoca al ensamblador DSK del TMS320C5x. Si la extensin del archivo de entrada es .asm (por ejemplo try1.asm), no es necesario especificar la extensin; el ensamblador usa .asm por defaul. Cuando se ingresa este comando, el depurador genera un archivo ejecutable llamado try1.dsk.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 41 de 63

00001 ************************************************************************ 00002 *Saw toothed Wave Generator * 00003 * Ramp rate is determined by interrupt rate and step size. Ramp is made* 00004 * by numerial rollover. No AIC initialization, using the default value.* 00005 ************************************************************************ 00006 ; Declare memory mapped registers and 00007 ; program block address 00008 0000 .mmregs ; Include memory map reg 00009 080c .ps 0080ch ; 00010 080c 7980 B XINT ; Set transmit interrupt vector 080d 0000 00011 0a00 .ps 00a00h ; 00012 0000 .entry ; Initial PC address >>>>> ENTRY POINT SET TO 0a00 00013 0a00 bc00 LDP #0 ; Load Data Page for DXR (Zero) 00014 0a01 7a80 CALL SP_init ; Call serial port initialize function 0a02 0000 00015 0a03 0804 LAMM IMR ; 00016 0a04 bfc0 OR #20h ; Unmask receive interrupt (XINT) 0a05 0020 00017 0a06 8804 SAMM IMR ; 00018 0a07 ae06 SPLK #0ffffh,IFR; Clear pending interrupt 0a08 ffff 00019 0a09 b80a LOOP: ADD #10 ; Increment ACCU by 10 00020 0a0a 9321 SACL DXR,3 ; Shift ACCU left 3 bits when storing 00021 0a0b be22 IDLE ; Wait for D/A interrupt 00022 0a0c 7980 B LOOP ; 0a0d 0a09 00023 0a0e be3a XINT: RETE ; Re-enable interrupts 00024 SP_init: 00025 0a0f ae25 SPLK #01h,PRD ; Generate 10 MHz clock from TOUT to 0a10 0001 00026 0a11 ae26 SPLK #20h,TCR ; support AIC master clock 0a12 0020 00027 0a13 8b88 MAR *,AR0 ; 00028 0a14 bf80 LACC #0080h ; Set 00000080h => ACC 0a15 0080 00029 0a16 9821 SACH DXR ; Clear DXR 00030 0a17 9005 SACL GREG ; Set GREG = 80h, >8000h memory = Global 00031 0a18 bf08 LAR AR0,#0FFFFh; AR0 point to global memory 0a19 ffff 00032 0a1a bec4 RPT #9999 ; Bring the BR low for 10000 cycles 0a1b 270f 00033 0a1c 1088 LACC *,0,AR0 ; (.5ms at 50ns) 00034 0a1d 9805 SACH GREG ; Disable global memory 00035 0a1e bf80 LACC #0008h ; Put serial port in reset and configure as 0a1f 0008 00036 0a20 9022 SACL SPC ; burst mode, FSX input, and data length 16 bits 00037 0a21 bf80 LACC #80c8h ; 0a22 80c8 00038 0a23 9022 SACL SPC ; Bring the serial port out of reset 00039 0a24 ef00 RET >>>>> FINISHED READING ALL FILES >>>>> ASSEMBLY COMPLETE: ERRORS:0 WARNINGS:0

3. Para ver la lista de errores y visos que pueden ocurrir durante el ensamblado, ensamble try1.asm con l. Dsk5a try1 l

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 42 de 63

4. En este tiempo el ensamblador no solo crea un archivo ejecutable, tambin crea un listado llamado try1.lst; este archivo es de gran ayuda porque muestra una lista del smbolos y cdigo de operaciones que utiliza el programa. 5. Una vez que esta listo el programa, el siguiente paso es invocar al depurador con el siguiente comando. Dsk5d 6. Este comando nos lleva a la pantalla del depurador de TMS320C5x. Ahora ya se puede cargar el programa ejecutable try1.dsk, el archivo puede ser cargado desde el men.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 43 de 63

ENSAMBLADOR DSK CREANDO ARCHIVOS FUENTE Para crear un archivo fuente, se puede usar cualquier programa editor de cdigo ASCII (editor de texto), hay que tener cuidado con el editor ya que algunos (actualmente la mayora) contienen formato y caracteres especiales. El programa fuente del lenguaje ensamblador DSK consiste en sentencias que pueden contener directivas de ensamblador DSK, instrucciones en lenguaje ensamblador y comentarios. El tamao de la sentencia puede ser superior a los 80 caracteres por lnea. A continuacin se muestran varias lneas de cdigo. sym Begin: sacl LAB_1: LAB_2: LAB_3: .ps .set add .word sym b b b 0a00h 2 #sym 016h LAB_1 LAB_2 LAB_3 ;initialize PC ;symbol sym=2 ;add sym (5) to accumulator ;initialize a word with 016h ;store accumulator location sym(5) ;location of LAB_1 & LAB_2 are same ;LAB_3 is at next address

La Sentencia fuente puede contener cuatro campos. La sintaxis general para una sentencia es la siguiente: [etiqueta][:] nemonico [operando] [;comentario]

Podemos basarnos en las siguiente gua: Todas las sentencias deben empezar con una etiqueta, un espacio un asterisco o punto y coma. Las etiquetas son opcionales, si se usan estas deben empezar en la columna 1. Uno o ms espacios debern separar cada campo. L tabulador es equivalente a espacios. Los comentarios son opcionales. Los comentarios que empiezan en la columna 1 pueden empezar con un asterisco o punto y coma, pero los comentarios que empiezan en cualquier otra columna debern empezar con punto y coma;

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 44 de 63

ETIQUETAS VALIDAS Las etiquetas son opcionales en cualquier instruccin de lenguaje ensamblador y para muchas directivas de ensamblador; cuando se usen, estas debern empezar en la columna 1 de una sentencia. Una etiqueta puede contener mas de ocho caracteres alfanumericos (A-Z,a-z,0-9 y _). El primer carcter no pude ser numrico en una etiqueta. Por ejemplo .ps .entry mar lar lacl #0 4 0a00h ;inicio del cdigo

Start: ldp sacl

*,AR0 AR0,#0 #03fh ;activa las interrupciones ;localiza IMR en la pag cero ;almacena la mascara de IMR

En el ejemplo anterior los dos puntos son opcionales. El ensamblador DSK no requiere una etiqueta de terminacin. Cuando se usa una etiquete, este valor se encuentra activo en la seccin del contador de programa (los puntos de la etiqueta con los cuales esta asociada). Si, por ejemplo, se usa la directiva .word para inicializar varias palabras, una etiqueta apuntara a la primer palabra. En el siguiente ejemplo, la etiqueta Begins tiene el valor 0fb00h. 00001 00002 00003 00004 ---------0a00 0a01 0a02 ------0a00 000a 0003 0007 *asume otro codigo que fue ensamblado .ps Begins: 0a00h .word 0Ah,3,7

Cuando una etiqueta aparece un una lnea por si sola, esta apunta a la instruccin en la siguiente lnea. 00019 00020 fb00 5588 Here: 00021 fb01 55a9 .word 3 00022 Cuando un cdigo de operacin o una directiva hacen referencia una etiqueta, la etiqueta es sustituida con la direccin de la localidad de la etiqueta en memoria. La nica excepcin es la directiva .set, la cual asigna un valor a una etiqueta, y el cdigo de operacin LDP, el cual carga el noveno bit ms significativo (MSB) de la direccin.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 45 de 63

Si no se usan etiquetas, la posicin del primer carcter debe contener un espacio en blanco, un punto y coma o un asterisco.

CAMPO MNEMONICO El campo mnemonico sigue a la etiqueta, este no debe empezar en la columna 1, o sera interpretado como una etiqueta. El campo mnemonico puede contener uno de los siguientes cdigo de operacins:
q q

Mnemonico intruccin de mquina (tal como ADD, MPY, POP). Directiva de ensamblador (tal como .data, .set, .entry).

Si se tiene una etiqueta en la primera columna, un espacio, dos puntos o un tabulador debera separar el campo mnemonico (cdigo de operacin) de la etiqueta. Por ejemplo: .ps .entry mar lar lacl #0 0a00h *,AR0 AR0,#0 #03fh ;inicio del cdigo

Start: ldp

;activa las interrupciones

Referirse a la gua de usuario del TMS320C5x, para datalles de la sintaxis o cdigos de operacin individuales. Esto generalmente es necesario para resolver todos en un cdigo de operacin. Si un cdigo de operacin (tal como el campo de cambio en un cdigo de operacin SACL) esta salido a la izquierda, el siguiente campo llega a ser el valor para el campo excluido, y los siguientes campos no sern llenados. Si no se especifica un campo, se asume que el valor ser nulo y es deacuerdo al proceso.. Por ejemplo: LPD RESULT LAC RESULT SACL *,AR7 ;hacer SACL *,7 (usa AR7 para corrimiento) SACL *,AR7 ;todos los campos son especificados SACL *

WRONG: RIGHT: OK:

En el ejemplo anterior, el valor numrico de AR7 llega a ser 7. Cuando este valor es puesto dentro del campo WRONG, el valor numrico de AR7 llega a ser BR0+. Aplicacin de un procesador digital de seales TMS320C5X Pgina 46 de 63

NOTA: No todos los cdigo de operacin especificados inapropiadamente generan advertencias. CAMPO OPERANDO. El campo operando es una lista de operandos que sigue al campo mnemnico. Un operando puede ser una constante o un simbolo. Los operandos tienen que estar separados con comas. El ensamblador permite especificar que una constante, simbolo o expresin debera ser usada como una direccin, un valor inmediato, o un valor indirecto. Las siguientes reglas aplican a los operandos de instrucciones.
q

Sin prefijo El operando est definido inmediatamente despus del valor. El ensamblador espera un valor inmediato, tal como un registro o una constante. Este es un ejemplo de una instruccin que usa un operando sin prefijo: Label: ADD A3 El ensamblador aade el contenido de la direccin A3 a el contenido del acumulador

* prefijo El operando es una direccin indirecta de un registro. Si se usa el signo * como un prefijo, el ensamblador trata el operando como una direccin indirecta, esto es, que el operando es usado como una direccin. Por ejemplo: Label: ADD *+, AR3 Los smbolos son usados en direccionamiento indirecto, incluyendo direccionamiento de bit inverso (BR). Un * indica que el contenido de AR es usado como las direcciones de la memoria de datos mas las funciones indicadas.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 47 de 63

COMENTARIZANDO EL CODIGO ORIGEN. Un comentario puede empezar en cualquier columna y extenderse hasta el final de la lnea del cdigo. Un comentario puede contener cual carcter ASCII, incluyendo espacios en blanco. Los comentarios son impresos en el listado del cdigo en ensamblador, pero eso no afecta al ensamblador. El cdigo se puede comentar de dos formas. La manera ms comn es poniendo un punto y coma en cualquier lugar de la lnea que se desee comentar. Todo el texto despus del punto y coma es ignorado por el ensamblador del DSK. Por ejemplo:
; El cdigo empieza aqu. .ps 0a00h .entry START: mar *,AR0 lar AR0,#0 lacl #03fh ; Enciende todos los interruptores

Otra manera de comentar el cdigo es usando un asterisco en la primer columna del programa.
* El cdigo empieza aqu .ps 0a00h .entry START: mar *,AR0 lar AR0,#0 * Enciende todos los interruptores lacl #03fh ldp #0

Si el asterisco no est en la primer columna, el ensamblador asume que es parte del cdigo y puede generar un error. Una sentencia que contiene solo una sentencia de cdigo es valida.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 48 de 63

CODIFICACIN DE LA FFT PARA UN TMS320C


El cdigo de la transformada rpida de Fourier fue extraido del documento FTT IMPLEMENTATION TMS320Cx , que se encuentra en al direccin de Texas Intrument. A continuacin se detalla el cdigo:

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 49 de 63

.global _r2dit ; Entry execution point. .global _SINE .sect .fftdata fg2 .space 1 ; is FFT_SIZE/2 fg4m2 .space 1 ; is FFT_SIZE/4 2 fg8m2 .space 1 ; is FFT_SIZE/8 2 sintab .word _SINE ; pointer to sine table sintp2 .word _SINE+2 ; pointer to sine table +2 inputp2 .space 1 ; pointer to input +2 inputp .space 1 ; ; Initialize C Function. ; .sect .ffttext _r2dit: LDI SP,AR0 PUSH R4 PUSH R5 PUSH R6 PUSHF R6 PUSH R7 PUSHF R7 PUSH AR3 PUSH AR4 PUSH AR5 PUSH AR6 PUSH AR7 PUSH DP .if .REGPARM == 0 ; arguments passed in stack LDI * AR0(1),AR2 ; input address LDI * AR0(2),R2 ; FFT size .endif LDP fg2 ; Initialize DP pointer. LSH 1,R2 ADDI 2,AR2,R0 STI AR2,@inputp ; inputp = SOURCE_ADDR STI R0,@inputp2 ; inputp2= SOURCE_ADDR + 2 STI R2,@fg2 ; fg2 = nhalb = (FFT_size/2) LSH 1,R2 SUBI 2,R2,R0 STI R0,@fg4m2 ; fg4m2 = NVIERT 2 : (FFT_SIZE/4) 2 LSH 1,R2 SUBI 2,R2,R0 STI R0,@fg8m2 * ar0 : AR + AI * ar1 : BR + BI * ar2 : CR + CI + CR + CI * ar3 : DR + DI * ar4 : AR + AI * ar5 : BR + BI * ar6 : DR + DI * ar7 : first twiddle factor = 1 ldi @fg2,ir0 ; ir0 = n/2 = offset between SOURCE_ADDRs ldi @sintab,ar7 ; ar7 points to twiddle factor 1 ldi ar2,ar0 ; ar0 points to AR

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 50 de 63

addi ir0,ar0,ar1 ; ar1 points to BR addi ir0,ar1,ar2 ; ar2 points to CR addi ir0,ar2,ar3 ; ar3 points to DR ldi ar0,ar4 ; ar4 points to AR ldi ar1,ar5 ; ar5 points to BR ldi ar3,ar6 ; ar6 points to DR ldi 2,ir1 ; addressoffset lsh 1,ir0 ; ir0 = n/4 = number of R4 butterflies subi 2,ir0,rc ************************************************************************ ***** * FIRST 2 STAGES AS RADIX 4 BUTTERFLY * ************************************************************************ ***** * fill pipeline addf *ar2,*ar0,r4 ; r4 = AR + CR subf *ar2,*ar0++,r5 ; r5 = AR CR addf *ar1,*ar3,r6 ; r6 = DR + BR subf *ar1++,*ar3++,r7 ; r7 = DR BR addf r6,r4,r0 ; AR = r0 = r4 + r6 mpyf *ar7,*ar3++,r1 ; r1 = DI , BR = r3 = r4 r6 || subf r6,r4,r3 addf r1,*ar1,r0 ; r0 = BI + DI , AR = r0 || stf r0,*ar4++ subf r1,*ar1++,r1 ; r1 = BI DI , BR = r3 || stf r3,*ar5++ addf r1,r5,r2 ; CR = r2 = r5 + r1 mpyf *ar7,*+ar2,r1 ; r1 = CI , DR = r3 = r5 r1 || subf r1,r5,r3 rptbd blk1 ; Setup for radix 4 butterfly loop addf r1,*ar0,r2 ; r2 = AI + CI , CR = r2 || stf r2,*ar2++(ir1) subf r1,*ar0++,r6 ; r6 = AI CI , DR = r3 || stf r3,*ar6++ addf r0,r2,r4 ; AI = r4 = r2 + r0 * radix 4 butterfly loop mpyf *ar7,*ar2 ,r0 ; r0 = CR , (BI = r2 = r2 r0) || subf r0,r2,r2 mpyf *ar7,*ar1++,r1 ; r1 = BR , (CI = r3 = r6 + r7) || addf r7,r6,r3 addf r0,*ar0,r4 ; r4 = AR + CR , (AI = r4) || stf r4,*ar4++ subf r0,*ar0++,r5 ; r5 = AR CR , (BI = r2) || stf r2,*ar5++ subf r7,r6,r7 ; (DI = r7 = r6 r7) addf r1,*ar3,r6 ; r6 = DR + BR , (DI = r7) || stf r7,*ar6++ subf r1,*ar3++,r7 ; r7 = DR BR , (CI = r3) || stf r3,*ar2++ addf r6,r4,r0 ; AR = r0 = r4 + r6 mpyf *ar7,*ar3++,r1 ; r1 = DI , BR = r3 = r4 r6 || subf r6,r4,r3 addf r1,*ar1,r0 ; r0 = BI + DI , AR = r0 || stf r0,*ar4++ subf r1,*ar1++,r1 ; r1 = BI DI , BR = r3 || stf r3,*ar5++ addf r1,r5,r2 ; CR = r2 = r5 + r1 mpyf *+ar2,*ar7,r1 ; r1 = CI , DR = r3 = r5 r1 || subf r1,r5,r3 addf r1,*ar0,r2 ; r2 = AI + CI , CR = r2 || stf r2,*ar2++(ir1) subf r1,*ar0++,r6 ; r6 = AI CI , DR = r3

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 51 de 63

|| stf r3,*ar6++ blk1 addf r0,r2,r4 ; AI = r4 = r2 + r0 * clear pipeline subf r0,r2,r2 ; BI = r2 = r2 r0 addf r7,r6,r3 ; CI = r3 = r6 + r7 stf r4,*ar4 ; AI = r4 , BI = r2 || stf r2,*ar5 subf r7,r6,r7 ; DI = r7 = r6 r7 stf r7,*ar6 ; DI = r7 , CI = r3 || stf r3,* ar2 ************************************************************************ ***** * THIRD TO LAST 2 STAGE * ************************************************************************ ***** ldi @fg2,ir1 subi 1,ir0,ar5 ldi 1,ar6 ldi @sintab,ar7 ; pointer to twiddle factor ldi 0,ar4 ; group counter ldi @inputp,ar0 stufe ldi ar0,ar2 ; upper real butterfly output addi ir0,ar0,ar3 ; lower real butterfly output ldi ar3,ar1 ; lower real butterfly input lsh 1,ar6 ; double group count lsh 2,ar5 ; half butterfly count lsh 1,ar5 ; clear LSB lsh 1,ir0 ; half step from upper to lower real part lsh 1,ir1 addi 1,ir1 ; step from old imaginary to new ; real value ldf *ar1++,r6 ; dummy load, only for address update || ldf *ar7,r7 ; r7 = COS gruppe * fill pipeline * ar0 = upper real butterfly input * ar1 = lower real butterfly input * ar2 = upper real butterfly output * ar3 = lower real butterfly output * the imaginary part has to follow ldf *++ar7,r6 ; r6 = SIN mpyf *ar1 ,r6,r1 ; r1 = BI * SIN || addf *++ar4,r0,r3 ; dummy addf for counter update mpyf *ar1,r7,r0 ; r0 = BR * COS ldi ar5,rc rptbd bfly1 ; Setup for loop bfly1 mpyf *ar7 ,*ar1++,r0 ; r3 = TR = r0 + r1 , r0 = BR * SIN || addf r0,r1,r3 mpyf *ar1++,r7,r1 ; r1 = BI * COS , r2 = AR TR || subf r3,*ar0,r2 addf *ar0++,r3,r5 ; r5 = AR + TR , BR = r2 || stf r2,*ar3++ * FIRST BUTTERFLY TYPE: * * TR = BR * COS + BI * SIN * TI = BR * SIN BI * COS * AR = AR + TR * AI = AI TI * BR = AR TR * BI = AI + TI * loop bfly1 mpyf *+ar1,r6,r5 ; r5 = BI * SIN , (AR = r5)

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 52 de 63

|| stf r5,*ar2++ subf r1,r0,r2 ; (r2 = TI = r0 r1) mpyf *ar1,r7,r0 ; r0 = BR * COS , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++,r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++ addf r0,r5,r3 ; r3 = TR = r0 + r5 mpyf *ar1++,r6,r0 ; r0 = BR * SIN , r2 = AR TR || subf r3,*ar0,r2 mpyf *ar1++,r7,r1 ; r1 = BI * COS , (AI = r4) || stf r4,*ar2++ bfly1 addf *ar0++,r3,r5 ; r5 = AR + TR , BR = r2 || stf r2,*ar3++ * switch over to next group subf r1,r0,r2 ; r2 = TI = r0 r1 addf r2,*ar0,r3 ; r3 = AI + TI , AR = r5 || stf r5,*ar2++ subf r2,*ar0++(ir1),r4 ; r4 = AI TI , BI = r3 || stf r3,*ar3++(ir1) nop *ar1++(ir1) ; address update mpyf *ar1 ,r7,r1 ; r1 = BI * COS , AI = r4 || stf r4,*ar2++(ir1) mpyf *ar1,r6,r0 ; r0 = BR * SIN ldi ar5,rc rptbd bfly2 ; Setup for loop bfly2 mpyf *ar7++,*ar1++,r0 ; r3 = TR = r1 r0 , r0 = BR * COS || subf r0,r1,r3 mpyf *ar1++,r6,r1 ; r1 = BI * SIN , r2 = AR TR || subf r3,*ar0,r2 addf *ar0++,r3,r5 ; r5 = AR + TR , BR = r2 || stf r2,*ar3++ * SECOND BUTTERFLY TYPE: * * TR = BI * COS BR * SIN * TI = BI * SIN + BR * COS * AR = AR + TR * AI = AI TI * BR = AR TR * BI = AI + TI * loop bfly2 mpyf *+ar1,r7,r5 ; r5 = BI * COS , (AR = r5) || stf r5,*ar2++ addf r1,r0,r2 ; (r2 = TI = r0 + r1) mpyf *ar1,r6,r0 ; r0 = BR * SIN , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++,r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++ subf r0,r5,r3 ; TR = r3 = r5 r0 mpyf *ar1++,r7,r0 ; r0 = BR * COS , r2 = AR TR || subf r3,*ar0,r2 mpyf *ar1++,r6,r1 ; r1 = BI * SIN , (AI = r4) || stf r4,*ar2++ bfly2 addf *ar0++,r3,r5 ; r5 = AR + TR , BR = r2 || stf r2,*ar3++ * clear pipeline addf r1,r0,r2 ; r2 = TI = r0 + r1 addf r2,*ar0,r3 ; r3 = AI + TI || stf r5,*ar2++ ; AR = r5 cmpi ar6,ar4 bned gruppe ; do following 3 instructions subf r2,*ar0++(ir1),r4 ; r4 = AI TI , BI = r3 || stf r3,*ar3++(ir1) ldf *++ar7,r7 ; r7 = COS

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 53 de 63

|| stf r4,*ar2++(ir1) ; AI = r4 nop *ar1++(ir1) ; branch here * end of this butterflygroup cmpi 4,ir0 ; jump out after ld(n) 3 stage bnzaf stufe ldi @sintab,ar7 ; pointer to twiddle factor ldi 0,ar4 ; group counter ldi @inputp,ar0 ************************************************************************ ***** * SECOND LAST STAGE * ************************************************************************ ***** ldi @inputp,ar0 ldi ar0,ar2 ; upper output addi ir0,ar0,ar1 ; lower input ldi ar1,ar3 ; lower output ldi @sintp2,ar7 ; pointer to twiddle faktor ldi 5,ir0 ; distance between two groups ldi @fg8m2,rc * fill pipeline * 1. butterfly: w^0 addf *ar0,*ar1,r2 ; AR = r2 = AR + BR subf *ar1++,*ar0++,r3 ; BR = r3 = AR BR addf *ar0,*ar1,r0 ; AI = r0 = AI + BI subf *ar1++,*ar0++,r1 ; BI = r1 = AI BI * 2. butterfly: w^0 addf *ar0,*ar1,r6 ; AR = r6 = AR + BR subf *ar1++,*ar0++,r7 ; BR = r7 = AR BR addf *ar0,*ar1,r4 ; AI = r4 = AI + BI subf *ar1++(ir0),*ar0++(ir0),r5 ; BI = r5 = AI BI stf r2,*ar2++ ; (AR = r2) || stf r3,*ar3++ ; (BR = r3) stf r0,*ar2++ ; (AI = r0) || stf r1,*ar3++ ; (BI = r1) stf r6,*ar2++ ; AR = r6 || stf r7,*ar3++ ; BR = r7 stf r4,*ar2++(ir0) ; AI = r4 || stf r5,*ar3++(ir0) ; BI = r5 * 3. butterfly: w^M/4 addf *ar0++,*+ar1,r5 ; AR = r5 = AR + BI subf *ar1,*ar0,r4 ; AI = r4 = AI BR addf *ar1++,*ar0 ,r6 ; BI = r6 = AI + BR subf *ar1++,*ar0++,r7 ; BR = r7 = AR BI * 4. butterfly: w^M/4 addf *+ar1,*++ar0,r3 ; AR = r3 = AR + BI ldf * ar7,r1 ; r1 = 0 (for inner loop) || ldf *ar1++,r0 ; r0 = BR (for inner loop) rptbd bf2end ; Setup for loop bf2end subf *ar1++(ir0),*ar0++,r2 ; BR = r2 = AR BI stf r5,*ar2++ ; (AR = r5) || stf r7,*ar3++ ; (BR = r7) stf r6,*ar3++ ; (BI = r6) * 5. to M. butterfly: * loop bf2end ldf *ar7++,r7 ; r7 = COS , ((AI = r4)) || stf r4,*ar2++ ldf *ar7++,r6 ; r6 = SIN , (BR = r2) || stf r2,*ar3++ mpyf *+ar1,r6,r5 ; r5 = BI * SIN , (AR = r3) || stf r3,*ar2++ addf r1,r0,r2 ; (r2 = TI = r0 + r1)

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 54 de 63

mpyf *ar1,r7,r0 ; r0 = BR * COS , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++(ir0),r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++(ir0) addf r0,r5,r3 ; r3 = TR = r0 + r5 mpyf *ar1++,r6,r0 ; r0 = BR * SIN , r2 = AR TR || subf r3,*ar0,r2 mpyf *ar1++,r7,r1 ; r1 = BI * COS , (AI = r4) || stf r4,*ar2++(ir0) addf *ar0++,r3,r5 ; r5 = AR + TR , BR = r2 || stf r2,*ar3++ mpyf *+ar1,r6,r5 ; r5 = BI * SIN , (AR = r5) || stf r5,*ar2++ subf r1,r0,r2 ; (r2 = TI = r0 r1) mpyf *ar1,r7,r0 ; r0 = BR * COS , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++,r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++ addf r0,r5,r3 ; r3 = TR = r0 + r5 mpyf *ar1++,r6,r0 ; r0 = BR * SIN , r2 = AR TR || subf r3,*ar0,r2 mpyf *ar1++(ir0),r7,r1 ; r1 = BI * COS , (AI = r4) || stf r4,*ar2++ addf *ar0++,r3,r3 ; r3 = AR + TR , BR = r2 || stf r2,*ar3++ mpyf *+ar1,r7,r5 ; r5 = BI * COS , (AR = r3) || stf r3,*ar2++ subf r1,r0,r2 ; (r2 = TI = r0 r1) mpyf *ar1,r6,r0 ; r0 = BR * SIN , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++(ir0),r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++(ir0) subf r0,r5,r3 ; r3 = TR = r5 r0 mpyf *ar1++,r7,r0 ; r0 = BR * COS , r2 = AR TR || subf r3,*ar0,r2 mpyf *ar1++,r6,r1 ; r1 = BI * SIN , (AI = r4) || stf r4,*ar2++(ir0) addf *ar0++,r3,r5 ; r5 = AR + TR , BR = r2 || stf r2,*ar3++ mpyf *+ar1,r7,r5 ; r5 = BI * COS , (AR = r5) || stf r5,*ar2++ addf r1,r0,r2 ; (r2 = TI = r0 + r1) mpyf *ar1,r6,r0 ; r0 = BR * SIN , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++,r4 ; (r4 = AI TI , y(L) = BI = r3) || stf r3,*ar3++ subf r0,r5,r3 ; r3 = TR = r5 r0 mpyf *ar1++,r7,r0 ; r0 = BR * COS , r2 = AR TR || subf r3,*ar0,r2 bf2end mpyf *ar1++(ir0),r6,r1 ; r1 = BI * SIN , r3 = AR + TR || addf *ar0++,r3,r3 * clear pipeline stf r2,*ar3++ ; BR = r2 , AI = r4 || stf r4,*ar2++ addf r1,r0,r2 ; r2 = TI = r0 + r1 addf r2,*ar0,r3 ; r3 = AI + TI , AR = r3 || stf r3,*ar2++ subf r2,*ar0,r4 ; r4 = AI TI , BI = r3 || stf r3,*ar3 stf r4,*ar2 ; AI = r4 ************************************************************************ *****

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 55 de 63

LAST STAGE * ************************************************************************ ***** ldi @inputp,ar0 ldi ar0,ar2 ; upper output ldi @inputp2,ar1 ldi ar1,ar3 ; lower output ldi @sintp2,ar7 ; pointer to twiddle factors ldi 3,ir0 ; group offset ldi @fg4m2,rc * fill pipeline * 1. butterfly: w^0 addf *ar0,*ar1,r6 ; AR = r6 = AR + BR subf *ar1++,*ar0++,r7 ; BR = r7 = AR BR addf *ar0,*ar1,r4 ; AI = r4 = AI + BI subf *ar1++(ir0),*ar0++(ir0),r5 ; BI = r5 = AI BI * 2. butterfly: w^M/4 addf *+ar1,*ar0,r3 ; AR = r3 = AR + BI ldf * ar7,r1 ; r1 = 0 (for inner loop) || ldf *ar1++,r0 ; r0 = BR (for inner loop) rptbd bflend ; Setup for loop bflend subf *ar1++(ir0),*ar0++,r2 ; BR = r2 = AR BI stf r6,*ar2++ ; (AR = r6) || stf r7,*ar3++ ; (BR = r7) stf r5,*ar3++(ir0) ; (BI = r5) * 3. to M. butterfly: * loop bflend ldf *ar7++,r7 ; r7 = COS , ((AI = r4)) || stf r4,*ar2++(ir0) ldf *ar7++,r6 ; r6 = SIN , (BR = r2) || stf r2,*ar3++ mpyf *+ar1,r6,r5 ; r5 = BI * SIN , (AR = r3) || stf r3,*ar2++ addf r1,r0,r2 ; (r2 = TI = r0 + r1) mpyf *ar1,r7,r0 ; r0 = BR * COS , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++(ir0),r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++(ir0) addf r0,r5,r3 ; r3 = TR = r0 + r5 mpyf *ar1++,r6,r0 ; r0 = BR * SIN , r2 = AR TR || subf r3,*ar0,r2 mpyf *ar1++(ir0),r7,r1 ; r1 = BI * COS , (AI = r4) || stf r4,*ar2++(ir0) addf *ar0++,r3,r3 ; r3 = AR + TR , BR = r2 || stf r2,*ar3++ mpyf *+ar1,r7,r5 ; r5 = BI * COS , (AR = r3) || stf r3,*ar2++ subf r1,r0,r2 ; (r2 = TI = r0 r1) mpyf *ar1,r6,r0 ; r0 = BR * SIN , (r3 = AI + TI) || addf r2,*ar0,r3 subf r2,*ar0++(ir0),r4 ; (r4 = AI TI , BI = r3) || stf r3,*ar3++(ir0) subf r0,r5,r3 ; r3 = TR = r0 r5 mpyf *ar1++,r7,r0 ; r0 = BR * COS , r2 = AR TR || subf r3,*ar0,r2 bflend mpyf *ar1++(ir0),r6,r1 ; r1 = BI * SIN , r3 = AR + TR || addf *ar0++,r3,r3 * clear pipeline stf r2,*ar3++ ; BR = r2 , (AI = r4) || stf r4,*ar2++(ir0) addf r1,r0,r2 ; r2 = TI = r0 + r1 addf r2,*ar0,r3 ; r3 = AI + TI , AR = r3

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 56 de 63

|| stf r3,*ar2++ subf r2,*ar0,r4 ; r4 = AI TI , BI = r3 || stf r3,*ar3 stf r4,*ar2 ; AI = r4 ************************************************************************ ***** END OF FFT * ************************************************************************ ***** end: ; ; Return to C environment. ; POP DP ; Restore C environment variables. POP AR7 POP AR6 POP AR5 POP AR4 POP AR3 POPF R7 POP R7 POPF R6 POP R6 POP R5 POP R4 RETS .end WAITDMA.ASM ****************************************************************** * * WAIT_DMA.ASM: TMS320C40 C callable routine to check if an IIF bit * is set. If that is the case, the beit gets cleared. * * Calling conventions: * * void wait_dma(int mask) * ar2 * * where mask : mask word ( in the corresponding IIF bit) * ***************************************************************** .global _wait_dma .text _wait_dma: .if .REGPARM == 0 ldi sp,ar0 ldi * ar0(1),ar2 ; mask word .endif wait: tstb ar2,iif bz wait andn ar2,iif rets SINTAB.ASM ***************************************************************** * * SINTAB.ASM : Table with twiddle factors for a 64 point DIF FFT * ***************************************************************** .global _SINE .sect .sintab

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 57 de 63

_SINE .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float _COS .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float .float

0.000000 0.098017 0.195090 0.290285 0.382683 0.471397 0.555570 0.634393 0.707107 0.773010 0.831470 0.881921 0.923880 0.956940 0.980785 0.995185 1.000000 0.995185 0.980785 0.956940 0.923880 0.881921 0.831470 0.773010 0.707107 0.634393 0.555570 0.471397 0.382683 0.290285 0.195090 0.098017 0.000000 0.098017 0.195090 0.290285 0.382683 0.471397 0.555570 0.634393 0.707107 0.773010 0.831470 0.881921 0.923880 0.956940 0.980785 0.995185 1.000000 0.995185 0.980785 0.956940 0.923879 0.881921 0.831470 0.773010 0.707107 0.634393 0.555570 0.471397 0.382683

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 58 de 63

.float 0.290285 .float 0.195090 .float 0.098017 .float 0.000000 .float 0.098017 .float 0.195090 .float 0.290285 .float 0.382684 .float 0.471397 .float 0.555570 .float 0.634393 .float 0.707107 .float 0.773011 .float 0.831470 .float 0.881921 .float 0.923880 .float 0.956940 .float 0.980785 .float 0.995185 .end SINTABR.ASM ***************************************************************** * * SINTABR.ASM : Sine table for a 64 point DIT FFT * ***************************************************************** .global _SINE .sect .sintab _SINE .float 1.000000 .float 0.000000 .float 0.707107 .float 0.707107 .float 0.923880 .float 0.382683 .float 0.382683 .float 0.923880 .float 0.980785 .float 0.195090 .float 0.555570 .float 0.831470 .float 0.831470 .float 0.555570 .float 0.195090 .float 0.980785 .float 0.995185 .float 0.098017 .float 0.634393 .float 0.773010 .float 0.881921 .float 0.471397 .float 0.290285 .float 0.956940 .float 0.956940 .float 0.290285 .float 0.471397 .float 0.881921 .float 0.773010 .float 0.634393 .float 0.098017 .float 0.995185 INPUT.ASM

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 59 de 63

************************************************************************ ** INPUT.ASM: 64 point complex input vector ************************************************************************ ** .global _INPUT .sect .input _INPUT .float 10.0,26.0 ;[0] .float 10.0,22.0 ;[1] .float 37.0,16.0 ;[2] .float 15.0,35.0 ;[3] .float 6.0,28.0 ;[4] .float 38.0,4.0 ;[5] .float 39.0,11.0 ;[6] .float 0.0,12.0 ;[7] .float 1.0,12.0 ;[8] .float 7.0,23.0 ;[9] .float 1.0,39.0 ;[10] .float 25.0,30.0 ;[11] .float 29.0,14.0 ;[12] .float 11.0,12.0 ;[13] .float 16.0,19.0 ;[14] .float 11.0,1.0 ;[15] .float 33.0,35.0 ;[16] .float 30.0,14.0 ;[17] .float 35.0,19.0 ;[18] .float 12.0,1.0 ;[19] .float 8.0,9.0 ;[20] .float 24.0,26.0 ;[21] .float 23.0,12.0 ;[22] .float 4.0,6.0 ;[23] .float 31.0,39.0 ;[24] .float 20.0,27.0 ;[25] .float 12.0,35.0 ;[26] .float 26.0,28.0 ;[27] .float 2.0,27.0 ;[28] .float 9.0,14.0 ;[29] .float 23.0,29.0 ;[30] .float 21.0,26.0 ;[31] .float 38.0,30.0 ;[32] .float 19.0,5.0 ;[33] .float 33.0,30.0 ;[34] .float 29.0,13.0 ;[35] .float 22.0,5.0 ;[36] .float 17.0,13.0 ;[37] .float 28.0,36.0 ;[38] .float 18.0,20.0 ;[39] .float 0.0,16.0 ;[40] .float 22.0,2.0 ;[41] .float 35.0,27.0 ;[42] .float 18.0,36.0 ;[43] .float 39.0,36.0 ;[44] .float 19.0,8.0 ;[45] .float 17.0,1.0 ;[46] .float 21.0,35.0 ;[47] .float 0.0,35.0 ;[48] .float 1.0,10.0 ;[49] .float 15.0,17.0 ;[50] .float 27.0,23.0 ;[51] .float 31.0,32.0 ;[52] .float 33.0,13.0 ;[53] .float 33.0,34.0 ;[54]

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 60 de 63

.float .float .float .float .float .float .float .float .float

18.0,6.0 ;[55] 10.0,6.0 ;[56] 14.0,4.0 ;[57] 39.0,31.0 ;[58] 10.0,6.0 ;[59] 11.0,24.0 ;[60] 15.0,12.0 ;[61] 6.0,23.0 ;[62] 20.0,4.0 ;[63]

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 61 de 63

REFERENCIAS
Introduccin a los DSPs. Para cubrir este punto se hizo uso de la siguiente bibliografa: A simple approach to DIGITAL SIGNAL PROCESSING, Craig Marven & Gillian Ewers Texas Instruments. Donde se obtuvieron los conocimientos bsicos y usos frecuentes de los DSP s. Tambin consultamos la pgina de: http://www.ti.com/ para obtener los ltimos avances de estos dispositivos. Arquitectura, Funcionamiento y Conjunto de instrucciones. Para cubrir este punto se esta haciendo uso del Manual: TMS320C5x User s Guide Estructura y Funcionamiento del starter-kit para el DSP TMS320c5x. En este punto se esta consultando la informacin contenida en el software de desarrollo DSK y el manual TMS320C5x DSP STARTER KIT USER'S GUIDE La realizacin de un programa que calcule la FFT. Para lograr este objetivo se tuvieron que investigar los siguientes puntos: Anlisis matemtico: La Transformada de Fourier. Se consult el Problemario de Anlisis Espectral de Fausto Casco Snchez y Mauricio Lpez Villaseor. As como la siguiente direccin: http://www1.ceit.es/Asignaturas/tratamiento%20digital/TEMA1. La cual contiene el desarrollo de la Serie y Transformada de Fourier de un curso de Tratamiento Digital (Captulo 3). La Transformada Discreta de Fourier (DFT) y La Transformada Rpida de Fourier (FFT) Para este tema se consulto la direccin: http://www1.ceit.es/Asignaturas/tratamiento%20digital/TEMA6 La cual contiene el desarrollo de la transformada discreta de Fourier y la optimizacin del proceso de calculo del DFT para lograr la FFT. (Captulo 6). Tambin se hizo del A simple approach to DIGITAL SIGNAL PROCESSING, Craig Marven & Gillian Ewers Texas Instruments (Captulo 5). Desarrollo de la FFT en DSP's: TMS320c4x Se consulto el siguiente manual: Parallel 1-D FFT Implementation With TMS320C4x DSPs. Of Rose Marie Piedra. Texas Instruments. TMS320c6x

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 62 de 63

Se consulto el siguiente manual: Implementing Fast Fourier Transform Algorithms of Real-Valued Sequences with the TMS320 DSP Family. Of Robert Matusiak, Digital Signal Processing Solutions December 1997. Del cual se obtuvieron los siguientes algoritmos: Algoritmo para implementar la FFT asumiendo una secuencia de nmeros complejos. Algoritmo desarrollando la DFT de 2 n-puntos con secuencias reales y usando 1 n-puntos complejos Anlisis del algoritmo de radix-2 de 16 puntos con FFT compleja. Para lo cual se consult la siguiente bibliografa: Digital Signal Processing Aplications Texas Instruments.

Aplicacin de un procesador digital de seales TMS320C5X

Pgina 63 de 63

También podría gustarte