manual de algoritmos y aplicaciones de -...

11

Upload: others

Post on 14-Jun-2020

22 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜
Page 2: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

Manual de Algoritmos y Aplicaciones deProcesamiento Digital de Senales

Empleando la Familia TMS320F2837xS

Luis A. Alvarez Larry H. Escobar Miguel A. Flores

Carlos I. Garcıa Oscar I. Menendez Mauricio M. Olvera

Division de Ingenierıa ElectricaDepartamento de Procesamiento Digital de Senales

Page 3: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

El desarrollo de este trabajo fue gracias al apoyo del proyectoPAPIME PE100616 con nombre “Servidor para practicas deprocesamiento digital de senales en tiempo real”(2016 - 2017)

Ciudad Universitaria, FI, UNAM.Ciudad de Mexico, octubre 2018

Page 4: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

Prologo

En los ultimos anos el procesamiento digital de senales, abreviado como PDS, se haconvertido en un area de mucho interes para la investigacion y la industria, esto gracias alavance tecnologico en los procesadores ya que la capacidad y velocidad de procesamiento haaumentado considerablemente, permitiendo ejecutar importantes aplicaciones con respuestaen tiempo real.

Diferentes areas tecnologicas estan interesadas cada vez mas en implementar procesa-miento digital de senales en sus sistemas, dichos sistemas son utilizados en actividades dela vida moderna como: multimedia, computadoras personales, telefonos celulares, comuni-caciones vıa Internet, telefonıa, aplicaciones biomedicas, instrumentacion, tabletas digitales,videojuegos y television digital, entre otras.

Todo procesamiento digital de senales requiere un hardware dedicado para poder serimplementado, los procesadores de senales digitales conocidos como DSPs por sus siglasen ingles, nacen con la idea de poder ejecutar de manera rapida las operaciones base delprocesamiento digital de senales, tales como es la convolucion y correlacion. El diseno delhardware de los DSPs cada dıa mejora en funcion del desarrollo tecnologico, de tal mane-ra que se han convertido en una herramienta de aplicacion y soluciones a problemas del PDS.

Este manual esta enfocado en poder ejecutar los algoritmos base y aplicaciones de pro-cesamiento digital de senales en un hardware dedicado como es el caso de la familia C2000de Texas Instruments, de la misma manera se expone la teorıa basica de PDS para poderimplementar los algoritmos.

i

Page 5: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

El contenido de este manual se propone como un apoyo para los interesados en el area deprocesamiento digital de senales utilizando DSPs, en donde se incluyen ejemplos elaboradosen lenguaje ensamblador con diferentes formatos numericos como punto fijo y punto flotante,con el objetivo de profundizar en el manejo del hardware para obtener la mejor precisionnumerica. De la misma manera, estos dispositivos se puede programar en lenguaje C y C++,ademas de hacer una mezcla de lenguaje C con lenguaje ensamblador y ası poder optimizarel codigo lo mejor posible.

Los ejemplos presentados van orientados al desarrollo de aplicaciones reales. La idea delos ejemplos es presentar la teorıa de los algoritmos basicos del PDS y posteriormente im-plementar los algoritmos en el dispositivo, la implementacion de los algoritmos se realiza enlenguaje ensamblador con formato numerico de punto fijo a 16 y 32 bits y posteriormenteen punto flotante para analizar su diferencia en la precision numerica.

Para las implementaciones presentadas en este manual, se selecciono el microcontrola-dor de punto flotante de 32 bits TMS320F28377S [1, 2], porque cuenta con unidades deprocesamiento adicionales al CPU C28x que pueden trabajar en conjunto, a 200 MHz pararealizar operaciones de punto flotante, trigonometricas, de numeros complejos y relacionadasal uso de programacion dinamica con el algoritmo de Viterbi. Adicionalmente cuenta conuna unidad de procesamiento paralelo, perifericos para la adquisicion de senales y puertosde comunicacion serie, utiles en las aplicaciones de PDS, razones por las que en este manual,lo denominamos DSP.

Se recomienda que los interesados en este material tengan bases solidas de procesamien-to digital de senales, microcontroladores, diseno logico y programacion en lenguaje C y C++.

Organizacion del ManualLa organizacion del presente manual se realizo con el objetivo que el lector comprenda las

bases para programacion del dispositivo empleando algoritmos de procesamiento digital desenales y pueda emplear los conocimientos adquiridos a lo largo del mismo en los capıtulosavanzados, por lo que esta compuesto de la siguiente manera:

En el Capıtulo 1 se explica de forma general la arquitectura del procesador digital desenales TMS320F28377S y define la tarjeta de evaluacion LAUNCHXL-F28377S que contie-ne el DSC, indicando los puertos disponibles del procesador para su uso. El Capıtulo 2 es unabreve resena de la interfaz de desarrollo Code Composer Studio (CCS), comenzando por lacreacion proyectos, exponiendo el imprescindible mapa de memoria y el formato de progra-mas en lenguaje C y ensamblador. Ademas, para probar el funcionamiento de los programa,

ii

Page 6: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

como parte del entorno Debug se hace referencia a la visualizacion de datos en memoria,ası como la estructura que deben tener los archivos para importar datos a la memoria deldispositivo, y las opciones con que se cuenta para analizar dichos datos de forma grafica.

Los formatos numericos son una pieza clave en cualquier aplicacion del procesamientodigital de senales porque es la representacion de los datos con punto decimal utilizandonumeros enteros (punto fijo) o IEEE754 (para punto flotante). El Capıtulo 3 presenta laconversion de datos a dichos formatos numericos, ademas de su manejo al realizar operacio-nes aritmeticas.

Presentadas las herramientas de trabajo, en el Capıtulo 4 se exponen algoritmos y ope-raciones base del procesamiento digital de senales que son clave para el desarrollo de aplica-ciones. En cada seccion se describe brevemente la teorıa del operador, algoritmo o metodo, yposteriormente se muestran las implementaciones propuestas, manejando diferentes formatosnumericos para analizar el desempeno y precision.

En las aplicaciones, ademas de utilizar datos guardados en memoria, es importante lainteraccion del dispositivo con su entorno, por ejemplo la adquisicion de senales por mediode sensores y transductores para ser procesadas en tiempo real. Dicha interaccion se realizapor medio de los perifericos disponibles en el dispositivo. El capıtulo 5 esta dedicado a laconfiguracion y manejo de los puertos disponibles en la tarjeta LAUNCHXL-F28377S tantoen lenguaje C, utilizando las bibliotecas de ControlSuite, como en lenguaje ensamblador.

Una de las ultimas herramientas presentadas antes de las aplicaciones en tiempo real,es la capacidad del compilador C28x para desarrollar proyectos con un programa principalescrito en lenguaje C y con metodos o funciones por medio de lenguaje ensamblador. Estole permite al usuario utilizar la arquitectura del DSP de forma especıfica para optimizar laimplementacion.

Posteriormente, en el Capıtulo 6 se hace uso de la ejecucion de un proyecto en el que semezcla el lenguaje C con el lenguaje ensamblador para optimizar los recursos de la maquina.Tomando en cuenta que el codigo en lenguaje ensamblador se manda a llamar como unafuncion desde el codigo principal en lenguaje C.

Finalmente, en el Capıtulo 7 se combinan las operaciones y algoritmos con algunos pe-rifericos y metodologıas para implementar aplicaciones en tiempo real. Para ello, se disenoun circuito impreso, como herramienta adicional, para adecuar las senales antes de adqui-rirlas por medio de la LAUCHXL-F28377S y de igual manera en los puertos de salida, detal manera que se pueden adquirir dos senales de voz simultaneas por medio sus respectivosmicrofonos y un canal tipo estereo para adquisicion de audio, ademas, cuenta con dos salidasde audio (una monoaural y otra estereo), ası como dos botones de entrada digital.

iii

Page 7: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

Los autores agradecemos a las autoridades de la Facultad de Ingenierıa y a la Unidad deApoyo Editorial por el soporte brindado para la publicacion de este material.

iv

Page 8: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

Indice general

1. DSP TMS320F28377s yla Lauchpad Delfino 11.1. Caracterısticas del TMS320F28377 . . . . . . . . . . . . . . . . . . . . . . . 21.2. Descripcion general de la tarjeta

LAUNCHXL-F28377S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Code Composer Studio 112.1. Creacion de proyectos en Code Composer Studio . . . . . . . . . . . . . . . . 122.2. Configuracion del ControlSuite . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2.1. Instalacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.2. Creacion de un proyecto empleando

ControlSuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3. Mapa de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3.1. Linker command file o archivo .cmd . . . . . . . . . . . . . . . . . . . 252.3.2. Linker command file para perifericos . . . . . . . . . . . . . . . . . . 33

2.4. Componentes de un programa en ensamblador . . . . . . . . . . . . . . . . . 352.4.1. Directivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.5. Compilacion y ejecucion de un proyecto . . . . . . . . . . . . . . . . . . . . . 392.6. Herramientas de acceso a memoria y

visualizacion de datos en CCS . . . . . . . . . . . . . . . . . . . . . . . . . . 412.6.1. Importacion de datos a la memoria . . . . . . . . . . . . . . . . . . . 422.6.2. Visualizacion de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.7. Resumen del capıtulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3. Formatos numericos 513.1. Formato numerico de punto fijo Qi . . . . . . . . . . . . . . . . . . . . . . . 52

3.1.1. Operacion Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.1.2. Operacion Multiplicacion . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.2. Formato numerico de punto flotante . . . . . . . . . . . . . . . . . . . . . . . 583.2.1. Operacion Suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.2.2. Operacion Multiplicacion . . . . . . . . . . . . . . . . . . . . . . . . . 61

v

Page 9: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

INDICE GENERAL

3.3. Conversion entre formatos numericos . . . . . . . . . . . . . . . . . . . . . . 633.4. Resumen del capıtulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4. Algoritmos y operaciones de PDS 674.1. Producto punto entre vectores . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.1.1. Producto punto entre vectoresen punto fijo a 16 bits . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.1.2. Producto punto entre vectoresen punto fijo a 32 bits . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.1.3. Producto punto entre vectoresen punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.2. Convolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.2.1. Convolucion en formato de punto fijo a 16 bits . . . . . . . . . . . . . 764.2.2. Convolucion en formato de punto fijo a 32 bits . . . . . . . . . . . . . 794.2.3. Convolucion en formato de punto

flotante IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824.2.4. Analisis de resultados de las implementaciones . . . . . . . . . . . . . 84

4.3. Correlacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.3.1. Correlacion entre dos senal discretas

a 16 bits en punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . 874.3.2. Correlacion entre dos senales discretas

a 32 bits en punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . 934.3.3. Correlacion entre dos senales discretas en punto flotante IEEE 754 . . 964.3.4. Analisis de resultados de las implementaciones . . . . . . . . . . . . . 99

4.4. Filtros digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.4.1. Filtros de Respuesta Finita al Impulso FIR . . . . . . . . . . . . . . . 1024.4.2. Filtros de Respuesta Infinita al Impulso IIR . . . . . . . . . . . . . . 117

4.5. Osciladores digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1294.5.1. Oscilador digital en punto fijo a 16 bits . . . . . . . . . . . . . . . . . 1314.5.2. Oscilador digital en punto fijo a 32 bits . . . . . . . . . . . . . . . . . 1334.5.3. Oscilador digital en punto flotante IEEE 754 . . . . . . . . . . . . . . 1354.5.4. Oscilador digital utilizando

Unidad Trigonometrica . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.5.5. Codificacion o modulacion de doble tono DTMF . . . . . . . . . . . . 140

4.6. Transformada discreta de Fourier DFT . . . . . . . . . . . . . . . . . . . . . 1514.6.1. Propiedades de la DFT . . . . . . . . . . . . . . . . . . . . . . . . . . 1524.6.2. Implementacion de DFT en punto flotante . . . . . . . . . . . . . . . 154

4.7. Algoritmo de Goertzel para calcular DFT . . . . . . . . . . . . . . . . . . . . 1574.7.1. Algoritmo de Goertzel en punto flotante IEEE 754 . . . . . . . . . . 161

4.8. La Transformada rapida de Fourier FFT . . . . . . . . . . . . . . . . . . . . 1694.8.1. Decimacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

vi

Page 10: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

INDICE GENERAL

4.9. Implementacion de la FFT en 16 y 32 bits en punto entero . . . . . . . . . . 174

5. Manejo de perifericos de la familia TMS320F2837xS 1955.1. Entradas y salidas de proposito general . . . . . . . . . . . . . . . . . . . . . 196

5.1.1. Configuracion GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . 1965.1.2. Utilizacion de puertos GPIO . . . . . . . . . . . . . . . . . . . . . . . 198

5.2. Temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.2.1. Configuracion del PLL . . . . . . . . . . . . . . . . . . . . . . . . . . 2055.2.2. Utilizacion de un temporizador . . . . . . . . . . . . . . . . . . . . . 206

5.3. ePWM: salida PWM mejorada . . . . . . . . . . . . . . . . . . . . . . . . . . 2105.3.1. Utilizacion del ePWM . . . . . . . . . . . . . . . . . . . . . . . . . . 212

5.4. Subsistema Analogico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2165.4.1. Convertidor ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2165.4.2. Convertidor DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2185.4.3. Configuracion y uso del ADC y DAC . . . . . . . . . . . . . . . . . . 219

5.5. Puertos serial SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2215.5.1. Configuracion y uso del SPI . . . . . . . . . . . . . . . . . . . . . . . 223

5.6. Puertos serial SCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2265.6.1. Configuracion y uso del SCI . . . . . . . . . . . . . . . . . . . . . . . 227

5.7. Resumen del capıtulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

6. Combinacion de lenguaje C/C++ y ensamblador 2316.1. Registros de interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326.2. Uso de funciones en lenguaje ensamblador desde C/C++ . . . . . . . . . . . 2336.3. Acceso compartido de variables . . . . . . . . . . . . . . . . . . . . . . . . . 2366.4. Instrucciones de ensamblador en lınea . . . . . . . . . . . . . . . . . . . . . . 2386.5. Acceso intrınseco a instrucciones y

rutinas de ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386.6. Ejemplo de Filtros FIR e IIR . . . . . . . . . . . . . . . . . . . . . . . . . . 239

6.6.1. Resultados de la implementacion . . . . . . . . . . . . . . . . . . . . 2446.7. Ejemplo de Filtro FIR utilizando una estructura . . . . . . . . . . . . . . . . 246

6.7.1. Resultados de la implementacion . . . . . . . . . . . . . . . . . . . . 2506.8. Resumen del capıtulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

7. Aplicaciones en Tiempo Real 2537.1. Tarjeta de Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2547.2. Detector de actividad de voz . . . . . . . . . . . . . . . . . . . . . . . . . . . 2627.3. Ecualizador de Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2667.4. Resumen del capıtulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

A. Mapa de memoria propuesto 273

vii

Page 11: Manual de Algoritmos y Aplicaciones de - UNAModin.fi-b.unam.mx/labdsp/files/libros/manual_algoritmos_pds.pdf · Manual de Algoritmos y Aplicaciones de Procesamiento Digital de Senales˜

INDICE GENERAL

B. Biblioteca Analog.h 277

C. Biblioteca Serial.h 289

Bibliografıa 292

Glosario 300

viii