0% encontró este documento útil (0 votos)
58 vistas158 páginas

Tesis 1

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 158

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/323019453

Desarrollo de un sistema embebido para prácticas de procesamiento digital de


audio utilizando dsPIC.

Thesis · September 2016


DOI: 10.13140/RG.2.2.13309.87528

CITATIONS READS

0 6,010

1 author:

Sherlin Hernandez
Universidad de Pamplona
1 PUBLICATION   0 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Desarrollo de un sistema embebido para prácticas de procesamiento digital de audio utilizando dsPIC View project

All content following this page was uploaded by Sherlin Hernandez on 08 February 2018.

The user has requested enhancement of the downloaded file.


Desarrollo de un sistema embebido
para prácticas de procesamiento
digital de audio utilizando dsPIC R

Sherlin Eutimio Hernández Contreras

Universidad de Pamplona
Facultad de Ingenierı́as y Arquitectura, Programa de Ingenierı́a Electrónica
Pamplona, Colombia
2016
Desarrollo de un sistema embebido
para prácticas de procesamiento
digital de audio utilizando dsPIC R

Sherlin Eutimio Hernández Contreras

Trabajo de grado presentado como requisito parcial para optar al tı́tulo de:
Ingeniero Electrónico

Director:
MSc. Carlos Arturo Vides Herrera

Universidad de Pamplona
Facultad de Ingenierı́as y Arquitectura, Programa de Ingenierı́a Electrónica
Pamplona, Colombia
2016
Dedicatoria

A mis padres Ana y Eutimio


por su infinito apoyo.
Agradecimientos
A mi familia por su apoyo en todo momento.

A mi director de tesis MSc. Carlos Arturo Vides, al ingeniero Libardo Gamboa y al Msc.
Jesús Eduardo Ortiz por sus valiosas observaciones y correcciones para mejorar este trabajo.
También a los demás profesores de la Universidad de Pamplona que fomentaron mi apren-
dizaje durante mi etapa estudiantil.

A todas las personas de las que recibı́ apoyo en mi estancia en la ciudad de Pamplona y
motivaron el cumplimiento de mis logros, entre ellas debo destacar a Claudia Gómez, Doña
Socorro Vera, Don Ángel Gómez, Doña Olga Vera, la profesora Nubia Riscanevo y el profesor
William Parada.

Y a todos aquellos quienes directa o indirectamente contribuyeron de forma positiva en mi


crecimiento personal y profesional.
ix

Resumen
En el presente trabajo se plantea el desarrollo de una tarjeta de procesamiento digital de
audio que sirva como herramienta para la enseñanza de la tecnologı́a de sistemas embebidos.
A partir de un estudio de la actualidad de este tipo de tarjetas y del análisis de algunos
productos relacionados, de la empresa Microchip, se diseñó una propuesta para solventar las
necesidades detectadas o posibles mejoras con base en criterios de velocidad de procesamien-
to, consumo de energı́a, precio y posibilidades de desarrollo.

Mediante pruebas de laboratorio, se comprobó la funcionalidad del sistema con distintos


algoritmos de procesamiento de audio diseñados especı́ficamente para la tarjeta construida.
El producto de esta investigación es una tarjeta de procesamiento digital de señales de audio
con software de soporte para el desarrollo de los algoritmos y un manual de uso que incluye
prácticas de procesamiento diseñadas para dicho sistema.

Palabras clave: Sistemas embebidos, DSP, dsPIC ,


R señales de audio, procesamiento

digital de audio.
x

Abstract
In this paper it is proposed the development of a digital audio processing circuit board
that serves as a tool for the teaching of embedded system technology. Starting from a study
about the present of that kind of circuit boards and by the analysis of some related pro-
ducts by Microchip Company, it was designed a proposal to address the identified needs or
possible improvements, based on criteria processing speed, power consumption, price and
development possibilities.

By laboratory tests, the functionality of the system was checked with different audio proces-
sing algorithms specifically designed for the circuit board built. The product of this research
is an embedded circuit board for digital audio signal processing with software for supporting
the development of algorithms and user guides including processing practices designed for
that system.

Keywords: Embedded systems, DSP, dsPIC ,


R audio signals, digital audio processing.
Contenido
Agradecimientos VII

Resumen IX

Abstract X

Lista de sı́mbolos XV

Lista de figuras XX

Lista de tablas XXI

1. Introducción 1
1.1. Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.2. Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Metodologı́a y organización del trabajo . . . . . . . . . . . . . . . . . . . . . 3

2. Marco teórico y estado del arte 5


2.1. Importancia de las señales de audio . . . . . . . . . . . . . . . . . . . . . . . 6
2.2. Teorı́a de las señales de audio . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Procesamiento analógico de señales de audio . . . . . . . . . . . . . . . . . . 7
2.4. Procesamiento digital de señales de audio . . . . . . . . . . . . . . . . . . . . 8
2.5. Ventajas y desventajas del procesamiento digital de audio . . . . . . . . . . . 9
2.6. Procesadores digitales de señal (DSP) . . . . . . . . . . . . . . . . . . . . . . 9
2.7. Controladores digitales de señal (DSC) . . . . . . . . . . . . . . . . . . . . . 11
2.7.1. Unidad central de proceso (CPU) . . . . . . . . . . . . . . . . . . . . 12
2.7.2. Acceso Directo a Memoria (DMA) . . . . . . . . . . . . . . . . . . . 15
2.7.3. Puertos E/S y tecnologı́a de mapeo de pines . . . . . . . . . . . . . . 16
2.8. Software de desarrollo para dsPIC R . . . . . . . . . . . . . . . . . . . . . . 18
2.8.1. Software MPLAB R X y compilador XC16 . . . . . . . . . . . . . . . 19
2.8.2. Combinación de archivos C y ensamblador . . . . . . . . . . . . . . . 20
2.8.3. Configuración básica en MPLAB R X de un proyecto con dsPIC R . . 21
xii Contenido

2.9. Acondicionamiento de señales de audio . . . . . . . . . . . . . . . . . . . . . 22


2.10. Tarjetas de procesamiento digital de audio con productos de Microchip . . . 22
2.10.1. EasyPIC FusionTM v7 . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.10.2. Mikromedia for dsPIC33 . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.10.3. MIKROMEDIA for dsPIC33EP . . . . . . . . . . . . . . . . . . . . . 26
2.10.4. Mikromedia for PIC24 y Mikromedia for PIC24EP . . . . . . . . . . 28
2.10.5. Audio Codec Board - PROTO . . . . . . . . . . . . . . . . . . . . . . 28
2.10.6. dsPICDEM 1.1 Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.10.7. MPLAB starter kit for dsPIC DSCs . . . . . . . . . . . . . . . . . . . 28
2.10.8. Audio Development Board for dsPIC33E . . . . . . . . . . . . . . . . 30
2.10.9. Otros trabajos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3. Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC R 33


3.1. Parámetros de selección de componentes electrónicos para el diseño de tarjetas
de audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2. Parámetros para el diseño de circuitos impresos dedicados a aplicaciones de
audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3. Análisis de los requisitos de diseño para una nueva tarjeta . . . . . . . . . . 36
3.4. Selección del dsPIC R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5. Interfaz de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.6. Acondicionamiento de la señal de audio . . . . . . . . . . . . . . . . . . . . . 43
3.7. Componentes de interfaz con el usuario . . . . . . . . . . . . . . . . . . . . . 46
3.8. Fuente de alimentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.9. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4. Procesamiento digital de audio con operaciones en el dominio temporal 53


4.1. Configuración del dsPIC R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.1. Configuración del oscilador . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.2. Configuración de los puertos . . . . . . . . . . . . . . . . . . . . . . . 57
4.1.3. Configuración de ADC y DMA . . . . . . . . . . . . . . . . . . . . . 58
4.1.4. Configuración del DAC . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.2. Muestreo y reconstrucción de señales de audio . . . . . . . . . . . . . . . . . 66
4.2.1. Muestreo y reconstrucción punto a punto . . . . . . . . . . . . . . . . 69
4.2.2. Muestreo y reconstrucción punto a punto con interrupción del DAC . 69
4.2.3. Muestreo y reconstrucción mediante búfer DMA . . . . . . . . . . . . 69
4.2.4. Muestreo y reconstrucción mediante búfer DMA con interrupción del
DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3. Generación de señales periódicas mediante tablas . . . . . . . . . . . . . . . 71
4.3.1. Búfer circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3.2. Direccionamiento modular . . . . . . . . . . . . . . . . . . . . . . . . 74
Contenido xiii

4.4. Operaciones de procesamiento digital en el dominio temporal . . . . . . . . . 76


4.4.1. Escalamiento de la señal de audio . . . . . . . . . . . . . . . . . . . . 77
4.4.2. Retardo de la señal de audio . . . . . . . . . . . . . . . . . . . . . . . 79
4.4.3. Adición de señales de audio . . . . . . . . . . . . . . . . . . . . . . . 79
4.5. Efectos de audio con base en escalamiento de la señal . . . . . . . . . . . . . 80
4.5.1. Ganancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.5.2. Trémolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.6. Efectos de audio con base en retardo de la señal . . . . . . . . . . . . . . . . 83
4.6.1. Eco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.6.2. Reverberación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.6.3. Flanger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.7. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.7.1. Validación de las prácticas de muestreo y reconstrucción de señales de
audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.7.2. Validación de las prácticas de generación de señales periódicas . . . . 89
4.7.3. Validación de las prácticas con operaciones de escalamiento de la señal
de audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

5. Implementación de filtros FIR y filtros IIR para procesamiento digital de audio 91


5.1. Introducción a los filtros digitales . . . . . . . . . . . . . . . . . . . . . . . . 92
5.2. Diseño de filtros FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.3. Diseño de filtros IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.4. Biblioteca DSP del compilador XC16 . . . . . . . . . . . . . . . . . . . . . . 101
5.5. Diseño de un oscilador digital para dsPIC R . . . . . . . . . . . . . . . . . . 102
5.6. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.6.1. Validación de los filtros . . . . . . . . . . . . . . . . . . . . . . . . . . 106

6. Implementación en dsPIC R de la Transformada Discreta de Fourier 109


6.1. Introducción a la Transformada Discreta de Fourier . . . . . . . . . . . . . . 110
6.2. La Transformada Rápida de Fourier (FFT) . . . . . . . . . . . . . . . . . . . 111
6.3. Implementación de la FFT con base en la biblioteca dsp del compilador XC16 112
6.4. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

7. Conclusiones y recomendaciones 117


7.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.2. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

A. Creación de proyectos con MPLAB


R X y compilador XC16 119

Bibliografı́a 135
Lista de Sı́mbolos

Sı́mbolos

Sı́mbolo Término
G Ganancia de audio
W Registro de trabajo
Wd Registro de trabajo destino
WREG Registro de trabajo principal
Ws Registro de trabajo fuente
x[n] Señal digital de audio de entrada
y[n] Señal digital de audio de salida

Abreviaturas

Abreviatura Término
AAC Codificación Avanzada de Audio
ADC Convertidor Analógico a Digital
ADPCM Modulación por Impulsos Codificados Diferencial Adaptativo
AGU Unidad de Generación de Direcciones
ALU Unidad Aritmético-Lógica
AM Amplitud Modulada
CD Disco Compacto
CODEC Codificador-Decodificador
CPU Unidad Central de Proceso
DAC Convertidor Digital a Analógico
DAT Cinta de Audio Digital
DCI Interfaz de Convertidor de Datos
DFT Transformada Discreta de Fourier
DMA Acceso Directo a Memoria
DSC Controlador Digital de Señales
DSP Procesador Digital de Señales
DSP Procesamiento Digital de Señales
xvi Contenido

Abreviatura Término
DTMF Sistema de marcación por tonos
DVD Disco de Vı́deo Digital
ECANTM Controlador de Red de Área Mejorado
FFT Transformada Rápida de Fourier
FIFO Datos salen en el orden en que entraron
FIR Respuesta Finita al Impulso
FM Frecuencia Modulada
IDE Entorno de Desarrollo Integrado
IPE Entorno de Programación Integrado
IIR Respuesta Infinita al Impulso
LED Diodo Emisor de Luz
LSb Bit Menos Significativo
LSB Byte Menos Significativo
LSW Palabra Menos Significativa
MCU Microcontrolador
MIPS Millones de Instrucciones Por Segundo
MP3 Formato de audio MPEG-1(2) Audio Layer III
MSb Bit Más Significativo
MSB Byte Más Significativo
MSW Palabra Más Significativa
OGG Formato de audio de la Fundación Xiph.Org
PCB Tarjeta de Circuito Impreso
PCM Modulación por Impulsos Codificados
PWM Modulación por Ancho de Pulso
QEI Interfaz de Convertidor de Cuadratura
RAM Memoria de Datos
SFR Registros de Funciones Especiales
SMT Tecnologı́a de Montaje Superficial
SPI Interfaz Periférica Serial
TAD Perı́odo de trabajo del ADC
TFT Transistores de Pelı́cula Fina
UART Receptor-Transmisor ası́ncrono universal
USB Bus Serial Universal
v pk-pk Voltaje pico a pico
VoIP Voz sobre Protocolo de Internet
WAV Formato de audio WAVEform
WMA Formato de audio Windows Media
Lista de Figuras
2-1. Filtro Bessel de quinto orden como ejemplo de sistema de procesamiento
analógico [5, p. 8]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2-2. Filtro FIR como ejemplo de sistema de procesamiento digital [15, p. 101]. . . 9
2-3. Esquema general de un sistema DSP [3, p. 4]. . . . . . . . . . . . . . . . . . 10
2-4. Aplicación tı́pica de un DSP: grabación y reproducción de audio mp3. . . . . 10
2-5. Muestreo de una señal analógica. . . . . . . . . . . . . . . . . . . . . . . . . 11
2-6. Influencia de la frecuencia de muestreo y la resolución en la calidad de una
señal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2-7. Arquitectura del dsPIC R [17]. . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2-8. Memoria de programa del dsPIC R [17]. . . . . . . . . . . . . . . . . . . . . 13
2-9. Registros de trabajo del dsPIC R (Adaptado de [17]). . . . . . . . . . . . . . 14
2-10.Memoria de datos del dsPIC R (Adaptado de [17]). . . . . . . . . . . . . . . 14
2-11.Esquema del motor DSP [17]. . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2-12.Módulo de acceso directo a memoria [27]. . . . . . . . . . . . . . . . . . . . . 16
2-13.Diagrama de control de los puertos E/S con mapeo de pines [25]. . . . . . . . 17
2-14.Entorno de desarrollo integrado MPLAB R [18]. . . . . . . . . . . . . . . . . 19
2-15.Conexión de amplificador operacional para acondicionamiento hacia un ADC. 22
2-16.Filtro pasa bajas Butterworth con frecuencia de corte de 10 kHz. . . . . . . . 23
2-17.Relación precio vs rendimiento de los productos de Microchip. . . . . . . . . 24
2-18.Tarjeta EasyPIC FusionTM v7. . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2-19.Tarjeta Mikromedia for dsPIC33. . . . . . . . . . . . . . . . . . . . . . . . . 27
2-20.Tarjeta Audio Codec Board - PROTO. . . . . . . . . . . . . . . . . . . . . . 28
2-21.Tarjeta dsPICDEM 1.1 Plus. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2-22.Tarjeta MPLAB starter kit for dsPIC DSCs. . . . . . . . . . . . . . . . . . . 30
2-23.Tarjeta Audio Development Board for dsPIC33E. . . . . . . . . . . . . . . . 31
2-24.Tarjeta Minifilter DSP Audio Processor. . . . . . . . . . . . . . . . . . . . . 31
2-25.Tarjeta EDEN dsP v1.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3-1. Sugerencias para ubicación de los componentes en circuitos de audio [4, p. 267]. 35
3-2. Desacople mediante topologı́a estrella [12, p. 5]. . . . . . . . . . . . . . . . . 36
3-3. Inductancias para acople de la parte analógica de un circuito de audio [12, p.
5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3-4. Superposición de planos analógicos y digitales en una PCB [14]. . . . . . . . 37
xviii Lista de Figuras

3-5. Modelo propuesto para la tarjeta de procesamiento digital de audio. . . . . . 38


3-6. Diagrama de pines del DSPIC33FJ128GP802 [23, p. 3]. . . . . . . . . . . . . 41
3-7. Conexiones eléctricas mı́nimas del DSPIC33FJ128GP802 [23, p. 20]. . . . . . 42
3-8. Esquemático del DSPIC33FJ128GP802. . . . . . . . . . . . . . . . . . . . . . 43
3-9. Circuito de control del programador para el DSPIC33FJ128GP802. . . . . . 44
3-10.Circuito de elevación de voltaje del programador para el DSPIC33FJ128GP802. 44
3-11.Filtro antialiasing para la entrada analógica del DSC. . . . . . . . . . . . . . 45
3-12.Circuito de salida de audio. . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3-13.Indicadores LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3-14.Conectores de audio 3.5 mm. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3-15.Parámetros máximos de operación del LD1117 [29]. . . . . . . . . . . . . . . 48
3-16.Caracterı́sticas eléctricas del LD1117 [29]. . . . . . . . . . . . . . . . . . . . 49
3-17.Circuito de alimentación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3-18.Vista superior de la ubicación de los componentes de la PCB. . . . . . . . . 50
3-19.Vista superior del ruteo de la PCB. . . . . . . . . . . . . . . . . . . . . . . . 51
3-20.Versión 3D del circuito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3-21.Fotografı́a del prototipo final. . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4-1. Sistema del oscilador y camino de configuración propuesto (Adaptado de [28]). 54


4-2. Esquema del circuito PLL [28]. . . . . . . . . . . . . . . . . . . . . . . . . . 55
4-3. Esquema del ADC (Adaptado de [24]). . . . . . . . . . . . . . . . . . . . . . 59
4-4. Formato de conversión de 12 bits fraccional con signo [24, p. 74]. . . . . . . . 60
4-5. Selección del reloj el ADC [24, p. 28]. . . . . . . . . . . . . . . . . . . . . . . 60
4-6. Etapas de muestreo y retención en el ADC [24, p. 16]. . . . . . . . . . . . . . 61
4-7. Configuración del oscilador de entrada al DAC (Adaptado de [28]). . . . . . 64
4-8. Diagrama de flujo del código de ejemplo CE154. . . . . . . . . . . . . . . . . 66
4-9. Diagrama de flujo del algoritmo ping-pong. . . . . . . . . . . . . . . . . . . . 67
4-10.Comportamiento de la señal implementada con el código de ejemplo CE154. 68
4-11.Comportamiento de la señal implementada con el código de ejemplo CE154
modificado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4-12.Muestreo y reconstrucción punto a punto. . . . . . . . . . . . . . . . . . . . 70
4-13.Muestreo y reconstrucción punto a punto con interrupción del DAC. . . . . . 70
4-14.Muestreo y reconstrucción mediante búfer DMA. . . . . . . . . . . . . . . . 71
4-15.Muestreo y reconstrucción mediante búfer DMA con interrupción del DAC. . 72
4-16.Búfer circular de tamaño N. . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4-17.Generación de señales periódicas mediante búfer circular. . . . . . . . . . . . 73
4-18.Generación de señales periódicas mediante búfer circular con direccionamiento
modular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4-19.Peso de los bits en el formato fraccional. . . . . . . . . . . . . . . . . . . . . 76
4-20.Equivalencia entre el formato entero y el formato fraccional [17]. . . . . . . . 76
Lista de Figuras xix

4-21.Representación de la operación escalamiento. . . . . . . . . . . . . . . . . . . 77


4-22.Representación de la operación retardo de señal. . . . . . . . . . . . . . . . . 79
4-23.Representación de la operación adición de señales. . . . . . . . . . . . . . . . 80
4-24.Procesamiento muestra a muestra. . . . . . . . . . . . . . . . . . . . . . . . . 81
4-25.Gráfico general de una modulación AM [11, p. 304]. . . . . . . . . . . . . . . 81
4-26.Sistema de trémolo mediante modulación AM. . . . . . . . . . . . . . . . . . 82
4-27.Diagrama de flujo propuesto para aplicar efecto de trémolo. . . . . . . . . . . 84
4-28.Sistema de eco con una sola reflexión por muestra. . . . . . . . . . . . . . . . 84
4-29.Sistema de eco con múltiples reflexiones por muestra. . . . . . . . . . . . . . 85
4-30.Sistema de reverberación con respuesta en frecuencia plana. . . . . . . . . . 86
4-31.Modulación de amplitud mediante el dsPIC . R . . . . . . . . . . . . . . . . . 90

5-1. Esquema general de un sistema de filtro FIR. . . . . . . . . . . . . . . . . . 93


5-2. Especificaciones de un filtro pasa bajas digital [30]. . . . . . . . . . . . . . . 95
5-3. Especificaciones de un filtro pasa altas digital [30]. . . . . . . . . . . . . . . . 96
5-4. Especificaciones de un filtro pasa banda digital [30]. . . . . . . . . . . . . . . 96
5-5. Especificaciones de un filtro rechaza banda digital [30]. . . . . . . . . . . . . 96
5-6. Respuestas ideales de los filtros. . . . . . . . . . . . . . . . . . . . . . . . . . 97
5-7. Esquema general de un sistema de filtro IIR con estructura Directa tipo I. . 100
5-8. Esquema general de un sistema de filtro IIR con estructura Traspuesta tipo II. 100
5-9. Montaje de laboratorio para validación de filtros. . . . . . . . . . . . . . . . 106
5-10.Gráfica de la tabulación de mediciones. . . . . . . . . . . . . . . . . . . . . . 107

6-1. Diagrama de flujo de la implementación de la FFT en dsPIC . R . . . . . . . 113


6-2. Montaje para validación de la FFT en dsPIC .R . . . . . . . . . . . . . . . . 114

A-1. Ciclo de desarrollo de un proyecto con MPLAB R [18]. . . . . . . . . . . . . 120


A-2. Creación de un nuevo proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . 120
A-3. Selección del tipo de proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . 121
A-4. Selección del dispositivo a programar. . . . . . . . . . . . . . . . . . . . . . . 121
A-5. Selección de la herramienta de depuración. . . . . . . . . . . . . . . . . . . . 122
A-6. Selección del compilador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
A-7. Finalización de la creación de un proyecto. . . . . . . . . . . . . . . . . . . . 123
A-8. Aspecto de la interfaz de MPLAB R luego de crear un proyecto nuevo. . . . 123
A-9. Carpeta del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
A-10.Abriendo la carpeta de códigos fuente. . . . . . . . . . . . . . . . . . . . . . 124
A-11.Añadiendo un nuevo código fuente al proyecto. . . . . . . . . . . . . . . . . . 125
A-12.Añadiendo una función principal del lenguaje C. . . . . . . . . . . . . . . . . 126
A-13.Dando nombre al archivo de la función principal. . . . . . . . . . . . . . . . 127
A-14.Aspecto del código del programa principal. . . . . . . . . . . . . . . . . . . . 128
A-15.Añadiendo un archivo de ensamblador al proyecto. . . . . . . . . . . . . . . . 128
xx Lista de Figuras

A-16.Creación de un archivo de cabecera. . . . . . . . . . . . . . . . . . . . . . . . 129


A-17.Añadiendo un archivo de cabecera de C. . . . . . . . . . . . . . . . . . . . . 130
A-18.Nombrando el archivo de cabecera de C. . . . . . . . . . . . . . . . . . . . . 131
Lista de Tablas
2-1. Frecuencias de muestreo y resoluciones tı́picas en los sistemas de audio. . . . 7
2-2. Aplicaciones de audio con productos de Microchip. . . . . . . . . . . . . . . 23
2-3. Diferentes arquitecturas de los convertidores ADC y DAC para sistemas DSP. 25

3-1. Principales caracterı́sticas de las familias de dsPIC .


R . . . . . . . . . . . . . 39
3-2. Principales caracterı́sticas del DSPIC33FJ128GP802. . . . . . . . . . . . . . 41
3-3. Caracterı́sticas de corriente del puerto USB. . . . . . . . . . . . . . . . . . . 47

4-1. Instrucciones DSP que permiten realizar multiplicaciones. . . . . . . . . . . . 77


4-2. Instrucciones MCU que permiten realizar multiplicaciones. . . . . . . . . . . 78
4-3. Instrucciones DSP que permiten realizar desplazamientos. . . . . . . . . . . . 79
4-4. Instrucciones DSP que permiten realizar adición de señales. . . . . . . . . . . 80
4-5. Prácticas de laboratorio diseñadas para procesamiento digital de audio en el
dominio temporal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4-6. Implementación en dsPIC R de las frecuencias de muestreo tı́picas en el audio

digital. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4-7. Medición de la frecuencia de la señal generada con el dsPIC . R . . . . . . . . 89

5-1. Fórmulas de la Transformada Inversa de Fourier de los filtros ideales. . . . . 97


5-2. Coeficientes calculados para un filtro FIR. . . . . . . . . . . . . . . . . . . . 99
5-3. Prácticas de laboratorio diseñadas para filtrado digital de señales de audio. . 105
5-4. Especificaciones del filtro validado. . . . . . . . . . . . . . . . . . . . . . . . 106

6-1. Práctica de laboratorio diseñada para aplicaciones de la DFT. . . . . . . . . 114


1. Introducción
La importancia de las señales de audio y el auge de la tecnologı́a digital evidencian un nue-
vo campo de exploración que supone la necesidad de contar con equipos y herramientas
actualizados para su estudio e investigación. El presente documento es el producto de una
propuesta que servirá como herramienta para el aprendizaje de las técnicas básicas para el
procesamiento digital de señales de audio a través de un sistema embebido, previamente se
ha decidido que el sistema estará basado en un dispositivo llamado dsPIC . R
2 1 Introducción

1.1. Problema
Los DSP (Procesadores Digitales de Señales) han alcanzado un alto grado de utilización en el
mercado de los productos de electrónica y telecomunicaciones [9] debido a que las técnicas de
procesamiento digital han demostrado grandes ventajas frente a las técnicas analógicas[32],
las aplicaciones actuales son numerosas [32, 9, 2] y siguen en aumento. En conveniencia con es-
ta realidad es muy importante el aprendizaje de esta tecnologı́a en el ámbito universitario[9].

El desarrollo de prácticas de procesamiento de señales en un sistema embebido requiere am-


plio conocimiento de la arquitectura del sistema y a veces la programación resulta bastante
difı́cil de comprender para un principiante, esto crea la necesidad de tener ejemplos de pro-
gramas funcionales, sencillos y comprensibles para el que inicia el estudio de esta tecnologı́a,
de modo que cuando el aprendiz comprenda los puntos básicos, pueda luego extender su
conocimiento hacia algoritmos más avanzados.

Teniendo en cuenta que los circuitos integrados llamados dsPIC R se muestran propicios para

el desarrollo de estas aplicaciones[3], se plantea la pregunta ¿Cómo aprovechar la tecnologı́a


de los dsPIC R para permitir un aprendizaje eficiente sobre procesamiento digital de audio

en sistemas embebidos?

1.2. Justificación
El incremento exponencial tanto en número como en complejidad de las aplicaciones en el
campo del procesamiento digital de señales [3] supone la necesidad de implementar nuevas
herramientas que se ajusten a la actualidad de esta rama de la ingenierı́a electrónica. La tec-
nologı́a moderna, basada enormemente en la electrónica digital, maneja muchos algoritmos
que son resueltos con DSP. Los dsPIC R son una clase de dispositivos hı́bridos que integran

en un solo chip las bondades de los microcontroladores con la potencia de los DSP, haciéndo-
los ideales para agilizar el aprendizaje de aquellos que tienen experiencia en la programación
de microcontroladores.

Se ha detectado que el mercado de tarjetas entrenadoras para aplicaciones actuales de pro-


cesamiento de audio no está bien cubierto o no ofrece entornos de desarrollo que motiven la
iniciación en esta tecnologı́a, esto sugiere que se debe mejorar en estos aspectos para mo-
dernizar la experiencia de los estudiantes e investigadores. Actualmente, la tendencia de los
programas académicos que son afines al procesamiento digital de señales es incluir en sus
planes de estudio al menos una materia prácticamente obligatoria relacionada con este tema,
esto determina la necesidad de desarrollar herramientas complementarias al currı́culo.
1.3 Objetivos 3

Considerando que muchos kits de desarrollo actuales no dan mucha facilidad de uso, y que
un curso de procesamiento de señales puede ser tedioso, es necesario buscar un enfoque hacia
la facilidad de programación de un sistema embebido, la cual es muy diferente a la progra-
mación de una computadora.

Por último, en el ciclo de desarrollo de un producto se involucran varios pasos que no se


contempları́an en la simulación por computadora. Adquirir experiencia, en el hardware em-
bebido como tal, permite entrenarse para aplicaciones de tiempo real que pueden dar el
aprendizaje que no se adquirirı́a de otra manera.

1.3. Objetivos
1.3.1. Objetivo general
Diseñar e implementar un sistema embebido para prácticas de procesamiento digital
de audio utilizando dsPIC .
R

1.3.2. Objetivos especı́ficos


Construir una tarjeta embebida para prácticas de procesamiento digital de audio.

Implementar, en la tarjeta embebida, prácticas de audio con enfoque en operaciones


matemáticas en el dominio temporal.

Realizar prácticas de procesamiento digital de audio aplicando filtros FIR y filtros IIR
en el sistema embebido desarrollado.

Elaborar aplicaciones básicas del procesamiento digital de audio con base en la trans-
formada Discreta de Fourier utilizando la tarjeta embebida desarrollada.

Validar el funcionamiento del sistema embebido desarrollado.

1.4. Metodologı́a y organización del trabajo


El presente trabajo ha sido realizado con base en soluciones, en lo posible, con software libre
y multiplataforma ya que se aumentan las posibilidades de reestructurar el proyecto en el
futuro mediante herramientas que permiten prolongarse en el tiempo y que por lo tanto
facilitan el mantenimiento y actualización del resultado final sin tener mayores implicaciones
4 1 Introducción

económicas.

Esta tesis aporta al estado del arte muchos valores añadidos, entre ellos el uso de kiCAD para
la elaboración de esquemáticos y circuitos impresos, la construcción de una tarjeta embebida
con programador incorporado, el uso de la versión más actualizada del entorno de desarrollo
integrado MPLAB R X, el uso del nuevo compilador de C para sistemas embebidos (XC16)

y la combinación de código fuente en C con código fuente en ensamblador utilizando las


herramientas más modernas proporcionadas por la empresa Microchip.

Este documento fue elaborado con el software de composición tipográfica LATEX teniendo
como base una plantilla para tesis de maestrı́a y doctorado de la Universidad Nacional de
Colombia1 ; el contenido está estructurado en siete capı́tulos ası́:

El presente capı́tulo menciona las motivaciones para realizar este trabajo de grado, los
objetivos y la estructura en que está organizada la información.

El segundo capı́tulo introduce los conceptos teóricos básicos acerca de señales de au-
dio, procesamiento digital de señales, la tecnologı́a dsPIC R y el estado del arte del

procesamiento digital de audio mediante dsPIC . R

El tercer capı́tulo trata sobre el diseño del hardware propuesto para el procesamiento
digital de audio.

En el cuarto capı́tulo se muestra cómo es el método para implementar operaciones


matemáticas en el dominio temporal con señales de audio y se plantean las primeras
prácticas de laboratorio.

En el quinto capı́tulo se exponen los fundamentos del diseño de filtros digitales y se


muestran ejemplos realizados para la tarjeta desarrollada.

El sexto capı́tulo está dedicado a la Transformada Discreta de Fourier y su implemen-


tación en dsPIC R con base en el algoritmo FFT.

En el séptimo y último capı́tulo se hacen las respectivas conclusiones y recomendaciones


para futuros trabajos.

Los objetivos son abarcados en los capı́tulos tercero, cuarto, quinto y sexto, al final de cada
uno de esos capı́tulos se muestran los resultados.

Al final de este documento se ha añadido un apéndice dedicado a la creación de proyectos


para dsPIC R a través del Entorno de Desarrollo Integrado MPLAB R X.

1
Plantilla disponible en https://www.overleaf.com/latex/templates/plantilla-tesis-maestria-y-doctorado-
universidad-nacional-de-colombia/bvkytfhxsskk#.V8vDVjUoNPo
2. Marco teórico y estado del arte
La mayorı́a de señales estudiadas en ciencias e ingenierı́a son de naturaleza analógica [1]
y se representan como funciones continuas; sin embargo, el procesamiento digital requiere
trabajar con señales de naturaleza discreta. Una señal de audio es la representación eléctrica
de las ondas generadas por los sonidos, aunque en los inicios de la electrónica las señales de
audio eran de naturaleza continua, la electrónica actual ha mostrado que el audio tratado
en forma discreta tiene unos alcances impresionantes, por eso, actualmente la tendencia es
el tratamiento de las señales de audio en forma digital. Un dsPIC , R es un microcontrolador

con un núcleo DSP capaz de realizar en un solo ciclo de máquina operaciones comunes del
procesamiento digital de señales, con lo cual también puede procesar señales de audio. Este
capı́tulo muestra un panorama de las señales de audio y los dsPIC . R
6 2 Marco teórico y estado del arte

2.1. Importancia de las señales de audio


El sonido es uno de los fenómenos fı́sicos más importantes en la naturaleza, en los seres
humanos, además de otros sentidos como la vista, el olfato, el gusto y el tacto está el sentido
del oı́do, con el cual podemos comunicarnos con otros individuos mediante las señales de voz.
Los sonidos emitidos por los fenómenos naturales son también elementos de comunicación
de la naturaleza. Los seres humanos estamos condicionados por los fenómenos acústicos, la
risa, el llanto, la música, son sólo algunos ejemplos de la influencia que tienen los sonidos
sobre nosotros. La pérdida de la capacidad de oı́r, conocida como sordera, afecta de forma
muy notable la calidad de vida de quien padece esta incapacidad. La ciencia avanza en esta
rama para tratar de mejorar la calidad de vida de estas personas, por lo tanto, el estudio de
las señales de audio en conjunto con el funcionamiento del sentido del oı́do son un campo de
gran importancia para las investigaciones modernas.

2.2. Teorı́a de las señales de audio


El procesamiento digital de señales tiene una rama muy importante que es el procesamiento
digital de audio. Las principales caracterı́sticas de este tipo de señales son:

Unidimensional

Naturaleza continua

Rango de frecuencia de 20 Hz a 20 KHz [15]

Una señal de audio analógica es una réplica fiel de la onda sonora que representa, mientras
que una señal de audio digital consiste en la discretización en tiempo y amplitud de la señal
de audio continua, esto significa que es una señal muestreada y la frecuencia de muestreo
influye directamente en la calidad misma de la señal. Una señal discreta en amplitud significa
que es una señal cuantizada y el tamaño de cada muestra impacta directamente sobre los
parámetros del sistema de procesamiento tales como la memoria de almacenamiento y la
arquitectura de dichos sistemas.

El procesamiento digital de la señal de audio implica que ésta deba convertirse de analógica
a digital, el dispositivo que se encarga de muestrear y cuantizar la señal se llama conversor
analógico-digital (ADC), este proceso implica la pérdida por cuantización y en consecuen-
cia será imposible reconstruir una señal realmente exacta a través de los datos obtenidos
por dicho conversor. El rango dinámico de una señal está estrechamente relacionado con la
resolución de la misma, como punto de referencia tenemos el intervalo dinámico completo
del oı́do humano, el cual supera los 120 dB, un sistema de procesamiento digital de audio
generalmente tiene un rango dinámico mucho menor.
2.3 Procesamiento analógico de señales de audio 7

La señal de audio hace parte del grupo de señales a las que se puede aplicar las tres ope-
raciones básicas en el dominio del tiempo: escalamiento, retraso y adición. También se le
puede aplicar operaciones en el dominio de la frecuencia, siendo la más representativa la
Transformada Discreta de Fourier.

Las señales de audio tienen subgrupos, entre los más importantes se puede destacar. Señales
de voz y señales de instrumentos musicales. Un panorama general de las aplicaciones del
procesamiento de audio, muestra aplicaciones en los siguientes campos:

Grabación sonora: compresores, limitadores, expansores, compuertas de ruido, ecuali-


zadores, filtros, reducción de ruido, efectos musicales.

Telefonı́a: DTMF, cancelación de eco, compresión de voz, transmisión masiva de voz


en tiempo real, voz sobre IP (VOIP), reconocimiento del habla, encriptado de voz.

Sı́ntesis de sonidos: Sı́ntesis musical, música electrónica, sı́ntesis de voz, conversión


texto a voz.

En cuanto a las frecuencias de muestreo y cantidad de bits por muestra, la Tabla 2-1 resume
los formatos más utilizados.

Tabla 2-1.: Frecuencias de muestreo y resoluciones tı́picas en los sistemas de au-


dio.
Calidad de sonido Frecuencia de muestreo Profundidad de sonido
Telefónica 8000 Hz 1 x 8 bits (mono)
Calidad Radio AM 11025 Hz 1 x 8 bits (mono)
Calidad Radio FM 22050 Hz 1 x 16 bits (mono)
CD estéreo 44100 Hz 2 x 16 bits (estéreo)
Calidad DAT 48000 Hz 2 x 16 bits (estéreo)

Vemos que las señales de audio comunes suelen tener uno o dos canales y son llamadas mo-
nofónicas y estereofónicas respectivamente; también existen configuraciones con más canales.

2.3. Procesamiento analógico de señales de audio


Básicamente, un procesamiento de señales de audio se hace para mejorar la calidad de
la señal, o para extraer información importante de la misma. En el auge de la electróni-
ca analógica surgieron muchas técnicas que permitieron variados tipos de procesamiento
analógico de las señales de audio con aplicaciones en música y telefonı́a principalmente. Los
filtros analógicos son un claro ejemplo del alcance de este tipo de procesamiento, en cuanto a
8 2 Marco teórico y estado del arte

Figura 2-1.: Filtro Bessel de quinto orden como ejemplo de sistema de procesamiento
analógico [5, p. 8].

la telefonı́a, un avance interesante es el vocoder, que es un codificador de voz que disminuye


notablemente la cantidad de información necesaria para almacenar o transmitir un mensaje
de voz.

En la Figura 2-1 se muestra el esquema de un tı́pico procesador analógico llamado filtro


anti-aliasing, el cual modifica el espectro de una señal.

Los elementos básicos que permiten el procesamiento analógico son los capacitores y los
inductores.

2.4. Procesamiento digital de señales de audio


El procesamiento digital de señales ha demostrado su gran cantidad de ventajas frente al
clásico procesamiento analógico. La mayorı́a de señales estudiadas en ciencias e ingenierı́a son
de naturaleza analógica y se representan como funciones continuas; sin embargo, el procesa-
miento digital requiere trabajar con señales de naturaleza discreta con cierta tasa de mues-
treo. Este procesamiento implica hacer operaciones matemáticas discretas sobre una señal
que es de naturaleza continua. Esto implica que todo sistema de procesamiento de señales en
tiempo real debe tener dispositivos de conversión analógico-digital y digital-analógico para
que las señales puedan entrar y salir del sistema de procesamiento digital. En la Figura 2-2
se muestra un clásico ejemplo de procesamiento de señales digitales, en este caso se trata de
un filtro de respuesta finita al impulso:

Los elementos básicos que permiten el procesamiento digital son los bloques de retardo, los
multiplicadores y lo sumadores.
2.5 Ventajas y desventajas del procesamiento digital de audio 9

Figura 2-2.: Filtro FIR como ejemplo de sistema de procesamiento digital [15, p. 101].

2.5. Ventajas y desventajas del procesamiento digital de


audio
Una gran ventaja es la precisión, las señales digitales son altamente confiables en cuanto a
inmunidad al ruido, conservación de caracterı́sticas a lo largo del tiempo, almacenamiento y
operaciones matemáticas perfectamente definidas con resultados bien predecibles. La estan-
darización de los sistemas de procesamiento es más sencilla debido a que estos sistemas son
más estables, sin las tı́picas desviaciones de sus parámetros por causas de envejecimiento,
cambios de temperatura, tolerancia de los componentes, etc. Los sistemas digitales evitan
los problemas de acople de impedancias propios de los circuitos analógicos.

La primera desventaja a tener en cuenta es la pérdida por efectos de cuantización, y por fre-
cuencia de muestreo. Esto imposibilita la reconstrucción exacta de una señal, aunque existen
técnicas de interpolación. Otra desventaja es el efecto llamado latencia, que consiste en el
tiempo en que una muestra de la señal entra al sistema hasta que sale de éste luego de
su procesamiento, esto es consecuencia de la velocidad de procesamiento del sistema y del
tamaño de los búfer que contienen las muestras a procesar.

2.6. Procesadores digitales de señal (DSP)


Un DSP (Procesador Digital de Señales) es un dispositivo que recibe señales tomadas del
mundo real (voz, audio, video, temperatura, presión, posición, etc.) para manipularlas ma-
temáticamente mediante operaciones discretas. Un DSP recibe señales de un ADC, modifica
o analiza las señales para finalmente enviar la señal modificada a una etapa de conversión
digital a analógica mediante un dispositivo denominado DAC. Se puede definir un procesador
digital de señales DSP como un microchip diseñado para resolver un conjunto de operacio-
nes matemáticas sobre una señal continua o analógica pero expresada en forma digital, el
esquema general de este tipo de sistemas se ilustra en la Figura 2-3 y un sistema tı́pico de
aplicación se ilustra en la Figura 2-4.
10 2 Marco teórico y estado del arte

Figura 2-3.: Esquema general de un sistema DSP [3, p. 4].

Figura 2-4.: Aplicación tı́pica de un DSP: grabación y reproducción de audio mp3.

El procesador digital de señales es actualmente una de las herramientas tecnológicas más


importantes y poderosas, cada vez son más las aplicaciones que derivan de esta tecnologı́a,
como ejemplo podemos percibir cómo los algoritmos de grabación, compresión y reproduc-
ción de audio permiten optimizar el rendimiento de los modernos dispositivos y esto se logra
gracias a la tecnologı́a DSP.

El oı́do humano tiene la capacidad de captar sonidos que van desde los 20 Hz hasta los 20
kHz, y este rango se toma como referencia para el diseño de procesadores de audio ya que la
frecuencia de la señal que se va a tratar tiene implicaciones en las caracterı́sticas del hardware.

La frecuencia de muestreo es la cantidad de muestras de señal tomadas en un segundo, el


criterio de muestreo de Nyquist-Shannon establece que la señal a muestrear debe estar li-
mitada en banda y que la frecuencia de muestreo debe ser al menos dos veces mayor que
la frecuencia de la señal a procesar, esto implica que para que una señal de audio pueda
ser procesada y reconstruida en toda su banda, su muestreo debe ser de por lo menos 40
KHz; por eso un formato común de audio utiliza tasas de muestreo de 44,1 KHz, pudiéndose
encontrar tasas mayores en dispositivos de alta fidelidad o tasas menores en bandas limitadas
como la de la voz humana, la cual comúnmente tiene componentes de frecuencia de máximo
4 kHz. La Figura 2-5 ilustra el proceso de muestreo de una señal analógica.

La resolución de cada muestra es también indicadora de la calidad de audio, para formatos


comunes como el WAV, la resolución suele estar expresada en 16 bits para sonido monofóni-
co y 32 bits para sonido estéreo. La Figura 2-6 ilustra cómo la señal se aproxima más a la
2.7 Controladores digitales de señal (DSC) 11

Figura 2-5.: Muestreo de una señal analógica.

Figura 2-6.: Influencia de la frecuencia de muestreo y la resolución en la calidad de una


señal.

original si se aumenta los parámetros de frecuencia de muestreo y de resolución.

La tecnologı́a digital impone lı́mites de velocidad de procesamiento, que, aunque cada vez
menos restrictivos, determinan los anchos de banda de señales que pueden ser tratadas digi-
talmente. La selección de un DSP adecuado se basa principalmente en formato aritmético,
velocidad, organización de la memoria, arquitectura interna, costo, entre otros.

2.7. Controladores digitales de señal (DSC)


Un DSC, en términos sencillos, es un microcontrolador que incluye hardware especializado
para realizar operaciones de procesamiento digital de señales. La empresa encargada de
introducir el término DSC es Microchip y sus productos comerciales son llamados dsPIC . R

A continuación se explicará el funcionamiento de la tecnologı́a dsPIC ,


R su estudio se puede

hacer en 3 partes:

Unidad central de proceso (CPU)

Integración del sistema


12 2 Marco teórico y estado del arte

Periféricos

La unidad central de proceso se encarga de las caracterı́sticas básicas esenciales para el con-
trol del dispositivo (CPU, memoria de datos, memoria de programa, interrupciones).

La integración del sistema son todas las caracterı́sticas adicionales que dan flexibilidad al
dispositivo, diferentes modos de operación y mecanismos de control en caso de eventos espe-
ciales (Programación de la memoria flash, oscilador, reset, perro guardián, modos de ahorro
de energı́a, seguridad CodeGuard, programación y diagnóstico, configuración del dispositivo).

Los periféricos son todos aquellos circuitos auxiliares que conectan con la CPU. (Puertos
E/S, temporizadores, captura de entrada, salida de comparación, conversores ADC y DAC,
UART, SPI, I2 CTM , DCI, QEI, ECANTM , DMA, etc).

Entre la documentación importante que soporta el desarrollo con dsPIC R está el manual de

referencia de la familia especı́fica, el manual de referencia del programador, la respectiva hoja


de caracterı́sticas del dispositivo especı́fico, las notas de aplicación, los códigos de ejemplo y
demás información presente en el sitio web del fabricante.

2.7.1. Unidad central de proceso (CPU)


La unidad central de proceso se basa en una arquitectura Harvard modificada de 16 bits
(Figura 2-7), la principal caracterı́stica de esta CPU es el soporte para operaciones de pro-
cesamiento digital de señales. Las instrucciones tienen un tamaño de 24 bits, el contador de
programa (PC) tiene 24 bits y puede manejar hasta 4M x 24 bits de memoria de programa
(Figura 2-8).

Los registros de trabajo son de 16 bits (Figura 2-9), estos registros pueden operar como
datos, direcciones o registros de desplazamiento de direcciones.

Existen 2 tipos de instrucciones manejadas por el dsPIC : R MCU y DSP. El primer tipo es

el que comúnmente usan los microcontroladores el otro tipo es el especializado en el proce-


samiento digital de señales, estas instrucciones admiten varios modos de direccionamiento y
fueron optimizadas para el lenguaje C.

El espacio de datos (Figura 2-10) puede direccionar hasta 32k palabras ó 64 kbytes. Éste
espacio está dividido en dos bloques (memoria X y memoria Y), cada uno tiene su propia
unidad de generación de direcciones (AGUX y AGUY). Las instrucciones MCU únicamente
pueden acceder a la memoria mediante AGUX, esto es, toda la memoria de datos es accedida
2.7 Controladores digitales de señal (DSC) 13

Figura 2-7.: Arquitectura del dsPIC


R [17].

Figura 2-8.: Memoria de programa del dsPIC


R [17].
14 2 Marco teórico y estado del arte

Figura 2-9.: Registros de trabajo del dsPIC


R (Adaptado de [17]).

Figura 2-10.: Memoria de datos del dsPIC


R (Adaptado de [17]).
2.7 Controladores digitales de señal (DSC) 15

Figura 2-11.: Esquema del motor DSP [17].

como si fuera un único espacio lineal; entre tanto, las instrucciones DSP acceden a la memo-
ria mediante las dos unidades AGUX y AGUY simultáneamente, esto divide la memoria en
2 espacios (X e Y). Un registro llamado PSVPAG permite agregar hasta 16k palabras de la
memoria de programa a la memoria de datos, esto permite que los programas puedan operar
con parte de la memoria de programa como si fueran espacios pertenecientes a la memoria
de datos.

Otras caracterı́sticas de la CPU son: soporte para varios modos de direccionamiento, multi-
plicador de 17 bit por 17 bit, unidad aritmético-lógica (ALU) de 40 bits, dos acumuladores
de 40 bits, un registro de desplazamiento bidireccional de 40 bits con capacidad de desplazar
hasta 16 bits en un solo ciclo. En la Figura 2-11 puede apreciarse el esquema del motor DSP.

El motor DSP contiene 2 acumuladores de 40 bits cada uno. Hardware para división, multi-
plicador de 17x17 bits, 16 registros de 16 bits y una amplia variedad de modos de direccio-
namiento.

2.7.2. Acceso Directo a Memoria (DMA)


Para mejorar el rendimiento del sistema, los nuevos dsPIC
R incorporan módulos de acceso

directo a memoria DMA (Figura 2-12)para facilitar el traspaso de datos entre periféricos
y memoria RAM, este es un mecanismo que mejora el rendimiento del programa ya que la
16 2 Marco teórico y estado del arte

Figura 2-12.: Módulo de acceso directo a memoria [27].

transferencia de los datos se lleva a cabo con mı́nima intervención de la CPU, esto hace
que los programas sean más fluidos por tener menos interrupciones, el módulo DMA copia
automáticamente en y desde un espacio de memoria llamado DMA RAM, este mecanismo
aumenta enormemente la eficiencia del sistema.

El módulo DMA puede copiar bloques enteros de datos sin requerir ayuda de la CPU,
generando una sola interrupción por bloque. Para utilizar eficientemente este módulo, los
bloques de información transferidos deben ubicarse en el espacio DMA RAM.

2.7.3. Puertos E/S y tecnologı́a de mapeo de pines


Entre las principales nuevas caracterı́sticas añadidas a los dsPIC R destaca el mapeo de

pines, el cual permite que muchos de los periféricos puedan ser conectados de forma más
flexible a los puertos de entrada salida mediante la técnica de multiplexado. De esta manera,
el diseño de hardware se simplifica notablemente, pues ahora es posible conectar muchos
periféricos a pines que sean más convenientes, esto implicará un poco más de atención en el
diseño de software.

Los puertos de E/S están controlados por 4 registros:

TRISx (Dirección)
2.7 Controladores digitales de señal (DSC) 17

Figura 2-13.: Diagrama de control de los puertos E/S con mapeo de pines [25].

PORTx (Puerto)

LATx (Latch)

ODCx (Open-Drain)

El control de los pines E/S le pertenece al registro PORTx a menos que esté activado un
periférico vinculado a dicho pin. Como pueden existir múltiples pines de periféricos que
se pueden multiplexar, existe una prioridad que define cuál es el que finalmente tiene el
control sobre el puerto. Algunos periféricos pueden leer la salida del registro PORTx, es-
to causa un particular comportamiento ya que se pueden crear puentes entre la salida de
PORTx y la entrada de un periférico. Esta funcionalidad puede resultar útil para comprobar
manualmente algunas funciones sin necesidad de usar señales externas. Los periféricos que
comúnmente admiten datos desde los registros PORTx son las interrupciones externas, el
timer, la captura de entrada y los pines de fallo de PWM. Para un funcionamiento normal
es recomendable que todos los pines mapeados sean configurados como entradas mediante
el registro TRISx. La Figura 2-13 muestra cómo está constituido el módulo E/S del dsPIC .
R

Los periféricos que tienen la posibilidad de mapeo de pines son llamados periféricos rema-
peables y no tienen un pin especı́fico, sino que debe asignarse por software el pin que se
18 2 Marco teórico y estado del arte

desee. La hoja de caracterı́sticas detalla cuales pines están disponibles para mapearse con
periféricos. Después de realizada la asignación correspondiente, el periférico mapeado tiene
la prioridad sobre el pin asignado excepto si el pin tiene funciones analógicas. Para que un
pin mapeado funcione correctamente, debe configurarse como E/S digital incluso después de
un reset.

El mapeo de periféricos se realiza por medio de dos sets de registros, uno dedicado a las en-
tradas y el otro a las salidas. El bit OSCCON¡6¿permite el mapeo de pines si su estado es 0 y
lo bloquea si su estado es 1. Según el manual de referencia, el tiempo de bloqueo y desbloqueo
del mapeo de pines es crı́tico y deberı́a hacerse siempre con lı́neas escritas en ensamblador,
por eso, el compilador XC16 incorpora funciones built-in que pueden ser usadas para este fin.

La prioridad de las lı́neas E/S está definida en el diagrama de pines a través del nombre del
pin. Las funciones de la izquierda tienen mayor prioridad sobre las funciones de la derecha.
Las lı́neas también tienen resistores internos de pull-up y pull-down que se pueden configurar
usando los registros CNPUx y CNPDx respectivamente.

2.8. Software de desarrollo para dsPIC


R

Aunque existen varias empresas que ofrecen software para el desarrollo de aplicaciones con
dsPIC ,
R la tarjeta de procesamiento digital de audio será diseñada para implementar al-

goritmos basándose en las herramientas ofrecidas por la empresa Microchip, las principales
razones para tomar esta determinación son:

La empresa Microchip es el fabricante original del dispositivo dsPIC ,


R lo cual supone

que sus herramientas de desarrollo están mejor enfocadas y soportadas.

La documentación ofrecida por dicha empresa es suficientemente amplia permitiendo


un desarrollo bien instruido para el diseñador tanto de hardware como de software.

El entorno integrado de desarrollo MPLAB R contiene muchas herramientas útiles que

facilitan y mejoran el desempeño del programador; además es multiplataforma, lo que


permite llegar a más usuarios.

Existe una versión estudiantil gratuita de compilador para lenguaje C, el cual es muy
potente teniendo en cuenta que la arquitectura de los dsPIC R se ha diseñado de forma

que las instrucciones en lenguaje C estén muy bien optimizadas.

Hay muchas herramientas gratuitas adicionales para el desarrollo de algoritmos entre


las que se encuentra, por ejemplo, software de ayuda para el desarrollo de filtros digi-
2.8 Software de desarrollo para dsPIC
R 19

Figura 2-14.: Entorno de desarrollo integrado MPLAB


R [18].

tales. Algunas tienen la desventaja de que son limitadas debido a que funciones más
avanzadas se ofrecen con versiones de pago.

Las actuales tarjetas de procesamiento de audio comercializadas por Microchip incor-


poran herramientas de desarrollo pertenecientes a la misma empresa, lo cual permitirá
estudiar mejor la experiencia llevada por estos productos.

Los motivos anteriormente señalados se ajustan a la necesidad de que el producto final sea
económico para el usuario final, que contenga un buen soporte y que el uso del mismo no
sea muy complicado.

2.8.1. Software MPLAB


R X y compilador XC16

El software de desarrollo es ofrecido por Microchip directamente en su página web, con posi-
bilidad de descarga directa. MPLAB R es un entorno de desarrollo integrado gratuito, es el

principal software para los productos de Microchip ya que permite desarrollar el código que
se implementa en los mismos y acepta la incorporación de herramientas adicionales, actual-
mente cuenta con la versión denominada MPLAB R X, la cual soporta plataformas basadas

en WINDOWS, MAC OS y GNU/LINUX. La Figura 2-14 ilustra el entorno de desarrollo


MPLAB . R

Para complementar bien el kit de desarrollo básico, se hace necesario descargar el paquete de
compiladores, el que ofrece la empresa es el compilador MPLAB R XC en sus versiones de
20 2 Marco teórico y estado del arte

8, 16 y 32 bits, en este caso es de interés la versión de 16 bits como consecuencia de la arqui-


tectura de los dsPIC , R por esta razón el compilador requerido es el denominado MPLAB R

XC16 que actualmente ofrece la versión 1.24 para las mismas plataformas en que se puede
instalar el IDE MPLAB R X. El compilador MPLAB R XC posee una versión estudiantil

totalmente gratuita (FREE) y además ofrece una prueba de 60 dı́as de su versión mejorada
(PRO), la cual tiene un nivel de optimización muy alto, existe adicionalmente otra versión
más económica pero con menos nivel de optimización (Standard).

Tras la instalación del MPLAB R X aparecen tres ı́conos nuevos en el escritorio: el IDE

(principal), Driver Switcher (para intercambiar proyectos con el MPLAB R antiguo) y el IPE

(para permitir la programación de dispositivos directamente desde el IDE). Es obligatorio


instalar también el compilador ya que el IDE actualmente no incluye ningún ensamblador, el
ASM30 está descontinuado, quedando como principal alternativa el ensamblador que viene
incorporado con el compilador XC16.

2.8.2. Combinación de archivos C y ensamblador


A continuación se explica cómo combinar archivos .asm con archivos .c. Las funciones de C
pasan sus parámetros a otras funciones, incluidas funciones en ensamblador, a través de los
registros de trabajo W. Estos registros de trabajo son usados en el orden que son pasados
los parámetros.

Los registros W0 a W7 son usados para almacenar los parámetros o los argumentos. Las
funciones que no son llamadas durante una interrupción deben preservar el valor de los re-
gistros W8-W15.

Las interrupciones pueden ocurrir en cualquier punto del programa, por eso deben preservar
todos los registros devolviéndolos al valor original del programa antes de que la interrupción
fuera generada cuando la interrupción haya finalizado.

Las variables o funciones declaradas en un archivo ensamblador deben ser declaradas como
globales para que puedan ser referenciadas por funciones de C. Los sı́mbolos en ensamblador
deben ser precedidos por al menos un guión de piso, estos sı́mbolos serán referenciados desde
los códigos en C quitando el primer guión de piso.

En ensamblador existen 3 tipos de secciones. .text para código, .data para variables iniciali-
zadas y .bss para variables no inicializadas.

En el lenguaje ensamblador para dsPIC R un literal es un valor numérico que consiste en

un operando para la instrucción que lo está utilizando, un literal se define anteponiendo un


2.8 Software de desarrollo para dsPIC
R 21

sı́mbolo numeral (#).

Cuando en una instrucción, un valor numérico no está antecedido por un sı́mbolo numeral,
entonces ese valor será tratado como una dirección y el operando es el número que está
apuntado por esa dirección.

Las funciones y variables declaradas en C se asumen inmediatamente en ensamblador por lo


que este último no debe declararlas sino utilizarlas directamente precediendo con un guión
de piso.

2.8.3. Configuración básica en MPLAB


R X de un proyecto con

dsPIC R

Una vez creado el proyecto en MPLAB R X, se debe agregar un archivo de código fuente

haciendo clic derecho sobre la carpeta SourceF iles y seleccionando N ew− > CM ainF ile...,
se da un nombre al archivo y luego se da clic en F inish. El IDE incluye por defecto unas
bibliotecas pero se debe adicionar manualmente la correspondiente al dispositivo que se vaya
a programar. Por ejemplo:

#include <d s p i c 3 3 f j 1 2 8 g p 8 0 2 . h>

La función main contiene por defecto unos parámetros que podemos suprimir. Una lı́nea más
que aparece en la función creada por MPLAB R X es:

return (EXIT SUCCESS) ; EXIT SUCCESS e q u i v a l e a 0 .

Los principales registros para comenzar son los relacionados a los puertos, lı́neas de E/S. Los
registros encargados de definir cada pin como entrada o salida son los registros TRISx, en la
respectiva hoja de especificaciones está el detalle de los bits correspondientes. Si un bit del
registro TRISx está definido como 0, su correspondiente pin asociado se comportará como
salida; si dicho bit está definido como 1 entonces ese pin será una entrada. Otro registro muy
importante es el AD1PCFGL, el cual define si el pin correspondiente es analógico o digital,
un bit igual 0 define al correspondiente pin como analógico y si el bit tiene un valor de 1 su
correspondiente pin será digital. En dispositivos con más de 16 entradas analógicas existe
otro registro llamado AD1PCFGH para permitir la incorporación y manejo de más pines.

Después de un reset, todos los pines quedan definidos como entradas analógicas. O sea, por
defecto todos los bits de los registros TRISx serán 1 y los del registro AD1PCFGL serán 0.
22 2 Marco teórico y estado del arte

Figura 2-15.: Conexión de amplificador operacional para acondicionamiento hacia un ADC.

2.9. Acondicionamiento de señales de audio


El acondicionamiento de una señal de audio consiste en adaptar y mejorar la señal que se
desea adquirir, por micrófono o lı́nea de salida de un equipo de audio, a las caracterı́sticas
del ADC de modo que se obtenga la mayor calidad posible en la señal a convertir. Esta
adaptación tiene tres parámetros principales: amplitud, offset y frecuencia de paso.

La amplitud de la señal está dada por los voltajes de referencia que admite el ADC, en este
caso, se hará el diseño en correspondencia con los voltajes de alimentación.

Para lograr este objetivo, el principal dispositivo electrónico existente es el amplificador ope-
racional, el cual permite el ajuste de los tres parámetros anteriormente mencionados. Lo que
se busca entonces, es filtrar la señal, para obtener sólo la banda de interés, luego ubicar el
offset o compensación para la entrada del ADC y por último ajustar la ganancia para el
máximo aprovechamiento del rango sin llegar a la saturación. La conexión del amplificador
con la entrada analógica del dsPIC R se hace como en la Figura 2-15.

El amplificador operacional puede ser configurado como un filtro pasa bajas para este ajuste,
diferentes topologı́as pueden ser aplicadas para este fin, la Figura 2-16 es un ejemplo tomado
de la nota de aplicación AN682 de Microchip, consiste en un filtro pasa bajas Butterworth
de segundo orden con frecuencia de corte de 10 kHz, este esquema es conocido como confi-
guración Sallen-Key.

2.10. Tarjetas de procesamiento digital de audio con


productos de Microchip
Teniendo en cuenta únicamente microcontroladores y controladores digitales de señal, la Ta-
bla 2-21 resume las aplicaciones de audio que pueden ofrecer diferentes familias de productos.

1
Adaptada de la original encontrada en www.microchip.com
2.10 Tarjetas de procesamiento digital de audio con productos de Microchip 23

Figura 2-16.: Filtro pasa bajas Butterworth con frecuencia de corte de 10 kHz.

Tabla 2-2.: Aplicaciones de audio con productos de Microchip.


Familia Aplicación de audio
PIC10, PIC12, PIC16 Zumbadores, Alarmas, generación de tonos
PIC16, PIC18 Grabación y reproducción (ADPCM, G.711)
PIC24 Grabación y reproducción (ADPCM, G.711)
dsPIC R DSC Grabación y reproducción (ADPCM, G.711,
G.726a , Speex), Cancelación de eco acústi-
co, supresión de ruido, cancelación de eco te-
lefónico, reconocimiento de habla.
PIC32 Reproducción (Speex, ADPCM), grabación
(PCM, ADPCM), decodificación MP3, de-
codificación de AAC, transmisión de audio
(Bluetooth, USB).

Con base en la Tabla 2-2 y la Figura 2-17 puede concluirse que las mejores posibilidades
están en las famiias dsPIC
R DSC y PIC32, la primera tiene una arquitectura de 16 bits y

la segunda es de 32 bits. Diferentes criterios permiten definir a los dsPIC


R como los más

apropiados.

Los PIC32 pueden tener internamente memorias flash de hasta 2 MB permitiendo que pue-
dan almacenar segmentos de audio, es óptimo para el control de las señales de audio pero la
desventaja está en la ausencia de un motor DSP que permita realizar óptimamente operacio-
nes de procesamiento de señales, generalmente en esta familia los productos son más caros.
Aunque la familia dsPIC R presenta algunas desventajas como la ausencia de memorias flash

de almacenamiento de propósito general, el motor DSP les proporciona un rendimiento su-


perior para tareas de procesamiento de señales en relación a su costo, el bus de datos es
más reducido (16 bits) pero está acorde con el estándar de la mayorı́a de señales de au-
24 2 Marco teórico y estado del arte

Figura 2-17.: Relación precio vs rendimiento de los productos de Microchip.

dio y finalmente lo que lo hace inmejorable para la aplicación que se busca en este trabajo
es la inclusión de productos con conversores DAC de 16 bits para audio, módulos DCI pa-
ra trabajar con Codecs y módulos PWM avanzados para aplicaciones de audio de bajo costo.

Es ası́ como existen múltiples configuraciones para el tratamiento de las señales de audio
resumidas en la Tabla 2-3.
2.10 Tarjetas de procesamiento digital de audio con productos de Microchip 25

Tabla 2-3.: Diferentes arquitecturas de los convertidores ADC y DAC para sistemas
DSP.
Entrada de Salida de au- Ventajas Desventajas
audio dio
ADC externo Modulación Económica forma de Aumenta el número de
PWM conversión digital a lı́neas E/S del proce-
analógico. sador.
ADC externo DAC externo Dependiendo de las Aumenta el número de
caracterı́sticas de los lı́neas E/S del proce-
conversores se pue- sador. Incrementa no-
den lograr amplias re- tablemente el tamaño
soluciones y rangos del circuito impreso.
dinámicos.
ADC externo DAC interno Es una buena alterna- En general, los DAC
tiva para buscar me- internos no tienen una
jor resolución en la calidad suficiente para
señal de entrada. Per- justificar ADC?s con
mite ajustar formatos caracterı́sticas avanza-
de ADC y DAC para das.
ser compatibles.
ADC interno Modulación Es una configuración La calidad del audio es
PWM muy económica y sen- baja, con mucha dis-
cilla de implementar. torsión.
ADC interno DAC externo Es sencilla de imple- Mayor uso de lı́neas
mentar para el ds- E/S del procesador.
PIC mediante proto-
colos tales como el
SPI.
ADC interno DAC interno Es la configuración En general, un sistema
más autosuficiente, re- de este tipo tiene limi-
quiere mı́nima circui- taciones en la calidad
terı́a externa. del audio.
Codec de audio Codec de audio Mejor calidad de la Puede incrementar de
señal, el procesador manera significativa el
está totalmente exen- costo del proyecto, no
to del manejo de las es factible si se bus-
señales analógicas. ca un sistema de bajo
costo.
26 2 Marco teórico y estado del arte

El proyecto será más factible si el procesador es más autosuficiente, esto significa que mini-
mizar el uso de componentes externos tendrá más beneficios. En el sitio web de la empresa
Microchip se menciona que los conversores ADC de 12 bits que incluyen los dsPIC R pueden

ser suficientes en muchos casos para el tratamiento de señales de voz pero recomiendan el
uso de un CODEC si se busca mejorar la resolución. Teniendo en cuenta que se pretende
hacer procesamiento de señales con enfoque didáctico, se buscará la configuración más au-
tosuficiente posible que permita el logro de este objetivo.

Buscando exhaustivamente en internet se comprobó que el mercado de tarjetas para aplica-


ciones de audio con productos microchip está principalmente dominado por dos empresas:

Microchip Technologies

MikroElektronika

Ambas empresas emplean dispositivos de muchos fabricantes diferentes para complementar


los periféricos de los microcontroladores o controladores digitales de señal, y ensayan con
diferentes tipos de arquitectura.

A continuación se hace una sı́ntesis de la oferta para aplicaciones de audio.

2.10.1. EasyPIC FusionTM v7


Esta tarjeta (Figura 2-18)de la empresa MikroElektronika soporta dispositivos dsPIC33,
PIC24 y PIC32, tiene conectores de audio para entrada de micrófono y salida para audı́fo-
nos de hasta 30 ohmios de impedancia; el CODEC que maneja esta etapa es el circuito
integrado VS1053 de la empresa VLSI Solution y es principalmente utilizado para la decodi-
ficación de múltiples formatos como el OGG Vorbis, mp3, WMA, WAV, entre otros. Tiene
funcionalidades de grabación en distintos formatos, los ADC y DAC integrados son de tipo
estéreo.

2.10.2. Mikromedia for dsPIC33


Esta tarjeta de desarrollo (Figura 2-19) está diseñada principalmente para interactuar con
una pantalla TFT de 320x240 incluida. No tiene opciones de entrada de audio, solamente de
salida a través de un decodificador de audio (VS1053) con interface SPI. El procesador que
utiliza es un dsPIC33FJ256GP710A con bootloader para recibir nuevos programas a través
del puerto UART.

2.10.3. MIKROMEDIA for dsPIC33EP


Es básicamente el anterior pero usando un procesador mejorado dsPIC33EP512MU810.
2.10 Tarjetas de procesamiento digital de audio con productos de Microchip 27

Figura 2-18.: Tarjeta EasyPIC FusionTM v7.

Figura 2-19.: Tarjeta Mikromedia for dsPIC33.


28 2 Marco teórico y estado del arte

Figura 2-20.: Tarjeta Audio Codec Board - PROTO.

2.10.4. Mikromedia for PIC24 y Mikromedia for PIC24EP


En este caso, los procesadores usados son el PIC24FJ256GB110 y el PIC24EP256GU810
respectivamente.

2.10.5. Audio Codec Board - PROTO


MikroElektronika también cuenta con una serie de tarjetas complementarias especializadas
en la codificación de audio, no son procesadores sino interfaces para las señales analógicas,
entre ellas se destaca una tarjeta de extensión )(Figura 2-20 que usa el códec WM8731.

2.10.6. dsPICDEM 1.1 Plus


Este producto, de la empresa Microchip consiste en una tarjeta de desarrollo (Figura 2-21)
de propósito general con amplio enfoque hacia las señales de audio. Se han hecho múltiples
investigaciones en este sistema, siendo muy importantes las enfocadas al reconocimiento de
voz. La interfaz analógico-digital se logra mediante el códec de audio SI3000, el cual está
diseñado para la banda de voz. El corazón del sistema es el dsPIC30F6014A.

2.10.7. MPLAB starter kit for dsPIC DSCs


Es un procesador digital de audio diseñado para quienes se inician en esta tecnologı́a, tiene
un enfoque principalmente en señales de voz, en los programas de ejemplo se muestra la
técnica de compresión basada en el algoritmo G,711µ − law. Como caracterı́sticas princi-
pales se destacan: un códec de audio que permite que el dsPIC R sólo se preocupe por el

control digital, una memoria Flash de 8 bits, bootloader. El códec usado es un WM8510, que
permite trabajar con frecuencias de muestreo de hasta 48 KHz, pero las librerı́as escritas
para esta tarjeta permiten sólo hasta 16 KHz.
2.10 Tarjetas de procesamiento digital de audio con productos de Microchip 29

Figura 2-21.: Tarjeta dsPICDEM 1.1 Plus.


30 2 Marco teórico y estado del arte

Figura 2-22.: Tarjeta MPLAB starter kit for dsPIC DSCs.

Esta tarjeta de desarrollo (Figura 2-22) ya puede considerarse obsoleta debido a que sólo
permite ser programada con el MPLAB R 8, el cual es un software que ha sido desconti-

nuado. La principal dificultad de actualización está dada por el bootloader, el cual no tiene
soporte para entornos de desarrollo diferentes. Otra caracterı́stica que hace considerar que
esta herramienta está desactualizada es que el procesador utilizado (dsPIC33FJ256GP506)
no tiene las nuevas caracterı́sticas tecnológicas de los dsPIC
R tales como el mapeo de pines

y el acceso directo a memoria.

2.10.8. Audio Development Board for dsPIC33E


Esta (Figura 2-23) puede considerarse como una herramienta de desarrollo plenamente ac-
tualizada, está diseñada para permitir su interfaz con otra tarjeta de desarrollo llamada
PICtail plus. Entre sus principales caracterı́sticas están: soporte para audio USB, pantalla
TFT de 2 pulgadas, códec de audio WM8960, procesador dsPIC33EP512MU810 y micrófono
incorporado, entrada de audio y salida para audı́fonos.

2.10.9. Otros trabajos


Se ha podido determinar que muchas personas tienen proyectos personales con dsPIC R

para procesamiento de señales de audio, algunos de estos proyectos son accesibles desde
internet, sus autores publican con o sin ámbito académico. Como ejemplo está la empresa
((cumbria designs))2 que está construyendo prototipos de procesadores de audio con dsPIC ,R

uno de ellos es llamado ((minifilter DSP Audio Processor)) (Figura 2-24) el cual utiliza como
procesador el DSPIC33FJ128GP802, y otro producto es el ((Eden DSP)) (Figura 2-25) con
diferentes versiones diseñadas para DSC de tecnologı́a SMT.

2
http://www.cumbriadesigns.co.uk/
2.10 Tarjetas de procesamiento digital de audio con productos de Microchip 31

Figura 2-23.: Tarjeta Audio Development Board for dsPIC33E.

Figura 2-24.: Tarjeta Minifilter DSP Audio Processor.


32 2 Marco teórico y estado del arte

Figura 2-25.: Tarjeta EDEN dsP v1.0.

Son numerosas las investigaciones realizadas hasta ahora acerca de las aplicaciones de los
dsPIC R en cuanto al procesamiento digital de audio, en el año 2010 fue publicado un tra-

bajo de investigación de la Universidad Nacional de Mar del Plata (Argentina) denominado


((Sistema de compresión de voz portátil basado en un dsPIC )) R el cual involucra procesa-
miento de audio en dsPIC . R En ese artı́culo se propone un sistema de filtros para adecuar el

espectro de los sonidos que perciben personas con sordera parcial, con el objetivo de mejorar
su audición.

Existe una tesis que data del año 2011 denominada ((Diseño y fabricación de un módulo
didáctico basado en dsPIC R como herramienta de apoyo en el aprendizaje de sistemas de

control digital con énfasis en la implementación de filtros digitales)) por Yesid Erasmo Mene-
ses, de la Universidad Pontificia Bolivariana (Colombia), en dicha tesis se creó un tarjeta con
base en el dsPIC33FJ128GP802, con pines externos para conexión del programador PicKit2,
aunque el DAC interno es usado en esta tarjeta, también se incorporó un DAC externo, según
el autor, para aplicaciones de control que no son especı́ficas de audio, el objetivo principal de
esa investigación fue proponer una herramienta didáctica para el aprendizaje de la tecnologı́a
dsPIC , R los compiladores usados para programar esa tarjeta fueron mikroC y C30, para el

diseño de los filtros digitales el software Digital Filter Design de Microchip fue utilizado.
3. Diseño de la tarjeta electrónica para
procesamiento digital de audio con
dsPIC R

En este capı́tulo se explica cómo fue el proceso de diseño del hardware que será utilizado
para la implementación de los algoritmos de procesamiento digital de audio, empezando
desde la selección de los componentes, continuando con los esquemáticos y finalizando con
el diseño del circuito impreso. Es de destacar que el sistema maneja señales tanto digitales
como analógicas y eso tendrá consecuencias en el diseño de las conexiones y la ubicación de
los componentes para controlar los ruidos que puedan afectar a la señal.
34 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

3.1. Parámetros de selección de componentes


electrónicos para el diseño de tarjetas de audio
En primer lugar, ha de decidirse el tipo de interfaz ADC y DAC que será utilizada. Para
el presente caso, por simplicidad y conociendo que existen productos dsPIC R con conver-

sores digital-analógico diseñados especı́ficamente para aplicaciones de audio, será acotada


la selección del procesador a los dispositivos que cumplen con esta caracterı́stica. Aquı́, los
parámetros que entran en juego son las resoluciones de los conversores y el rango dinámico
de los mismos.

Otro parámetro sumamente importante es la frecuencia de muestreo, debido a que el presente


trabajo tiene por objetivo abarcar toda la banda de audio, será imprescindible que el siste-
ma pueda procesar señales de hasta 20 kHz. En este caso, el teorema de Nyquist-Shannon
sugiere que la mı́nima frecuencia de muestreo debe ser de 40 kHz. Esto tiene repercusiones
no sólo en la velocidad de procesamiento sino también en el diseño del filtro antialiasing para
el acondicionamiento de la señal de entrada.

Los sistemas embebidos en general operan a bajos niveles de voltaje, esto tiene consecuencias
en las especificaciones de los amplificadores operacionales, los cuales deberı́an ser con tecno-
logı́a Rail-to-Rail para aprovechar al máximo el rango de las señales. También repercute en
la selección de los amplificadores de audio.

Los conectores de entrada y salida de la señal serán ajustados a conectores especı́ficos de


audio, que normalmente son de tipo plug y jack.

En este proyecto no se incluirá herramientas para depuración in circuit, por lo tanto no se


hará necesario utilizar la comunicación JTAG. Entre las ventajas de no implementarlo están
que es más difı́cil de hackear y difı́cil de hacer ingenierı́a inversa (Considerar que un sistema
embebido completo tiene la opción JTAG). Entre las desventajas se tiene que el diseñador de
aplicaciones debe corregir sus códigos obligatoriamente en software sin recibir información
de hardware diciendo los puntos posibles de problema.

3.2. Parámetros para el diseño de circuitos impresos


dedicados a aplicaciones de audio
Este tipo de circuitos pertenece a ((circuitos con señales mezcladas)), lo cual significa que hay
dos tipos de señal en una sola tarjeta: señales analógicas y señales digitales. Esto potencia
las posibles fuentes de ruido y para contrarrestarlo se hace necesaria la aplicación de técnicas
de separación de señales, diseño apropiado de tierras, separación interna de la alimentación
3.2 Parámetros para el diseño de circuitos impresos dedicados a aplicaciones de audio 35

Figura 3-1.: Sugerencias para ubicación de los componentes en circuitos de audio [4, p. 267].

analógica de la digital, uso de inductores y otros desacoples. El diseño del circuito impreso
juega un papel fundamental en la reducción de ruido por señales mezcladas.

Un mal diseño del circuito impreso hará que haya mala compatibilidad electromagnética
entre la parte digital y la parte analógica del circuito, esto producirá ruidos en las señales.
Para evitar los problemas de ruido se tendrá en cuenta unos criterios básicos de diseño de
circuito impreso sugeridos en [4]: en primer lugar, los elementos digitales deberı́an quedar en
una zona apartada de los elementos analógicos; en segundo lugar, los elementos que operan a
altas frecuencias se deben ubicar tan cerca a los conectores como sea posible (ver Figura 3-1).

Otro criterio importante es el uso de planos de tierra, el cual simplemente consiste en una
porción de circuito impreso que proporciona un camino de retorno de baja impedancia para
las corrientes del circuito, también teniendo en cuenta que los planos para tierra analógica
y tierra digital deben estar fı́sicamente separados aunque residan en la misma tarjeta, para
que las corrientes de señales digitales no interactúen con las analógicas. Una sencilla manera
de desacoplar estas señales es mediante el uso de un inductor donde ocurre la separación
de las lı́neas de alimentación. Los dispositivos digitales son dispositivos que generan gran
cantidad de ruido en las lı́neas de alimentación debido a los picos de corriente transitoria
ocasionadas por las conmutaciones internas de los nivele lógicos. En la Figura 3-2 se tiene
un tı́pico desacople con topologı́a estrella en la lı́nea de alimentación.

Como el ruido no es un factor definitivo en el funcionamiento de la parte digital, se puede


reducir el uso de las inductancias únicamente al acople de la parte analógica del circuito
como se observa en la Figura 3-3.
36 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-2.: Desacople mediante topologı́a estrella [12, p. 5].

Otra recomendación para reducir el ruido es evitar la superposición de señales que deben
estar separadas, como se muestra en la Figura 3-4.

Como recomendaciones adicionales se tiene: no rutear lı́neas digitales cerca al plano de tierra
analógico, mantener todas las señales analógicas encerradas dentro el plano de tierra analógi-
co, utilizar condensadores de desacople en todos los pines de alimentación de dispositivos
digitales.

3.3. Análisis de los requisitos de diseño para una nueva


tarjeta
En primer lugar, se ha detectado que el primer obstáculo de una tarjeta de procesamiento
digital de audio es su elevado precio, por lo tanto aquı́ podemos hacer un enfoque en mate-
riales económicos pero sin disminuir en exceso las prestaciones.

Otro requisito fundamental es que en lo posible sea totalmente integrada, para minimizar el
uso de herramientas externas a la tarjeta en sı́, esto supone que por lo menos, el programador
del dsPIC R deberı́a estar integrado en la tarjeta diseñada.

El sistema debe contar con herramientas de desarrollo fácilmente adquiribles, actualizadas


3.3 Análisis de los requisitos de diseño para una nueva tarjeta 37

Figura 3-3.: Inductancias para acople de la parte analógica de un circuito de audio [12, p.
5].

Figura 3-4.: Superposición de planos analógicos y digitales en una PCB [14].


38 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-5.: Modelo propuesto para la tarjeta de procesamiento digital de audio.

y con herramientas que faciliten el desarrollo de forma notable. En la Figura 3-5 se puede
apreciar el modelo propuesto.

3.4. Selección del dsPIC


R

Un conjunto de caracterı́sticas a tener en cuenta en la selección de un dispositivo DSP, en


este caso especı́fico dsPIC ,
R son los siguientes: formato de los datos, ancho de los datos,

velocidad, organización de la memoria, arquitectura del procesador, consumo, coste, entorno


de desarrollo.

Actualmente Microchip ofrece dos familias de Controladores Digitales de Señal, ambas con
arquitectura de punto fijo de 16 bits:

Familia dsPIC30F

Familia dsPIC33F/E

Esta última consta de dos subfamilias que son la clásica dsPIC33F y la mejorada dsPIC33E.
El formato y el ancho de los datos se ajustan a los estándares clásicos utilizados en el ámbito
3.4 Selección del dsPIC
R 39

del procesamiento digital de sonido, en donde la resolución suele ser de 16 bits para sonido
monofónico. El entorno de desarrollo que ofrece Microchip es muy completo y documentado,
incluyendo herramientas gratuitas y de prueba que aumentarán la productividad del desa-
rrollo de aplicaciones con DSC.

La familia dsPIC30F fue la primera versión de lo que Microchip denominó Controladores


Digitales de Señal (DSC). Posteriormente implementó la familia dsPIC33F/E para potenciar
las capacidades y el rendimiento de los DSC en aplicaciones más complejas. En la tabla 3-1
se consignan las caracterı́sticas más relevantes de estas dos familias.

Tabla 3-1.: Principales caracterı́sticas de las familias de dsPIC .


R

Recurso dsPIC30F dsPIC33F/E


Voltaje de alimentación 2.5 V a 5.5 V Soporta 3V y 5V
Velocidad de procesamiento Hasta 30 MIPS Hasta 70 MIPS
Memoria de programa Hasta 144 KB Hasta 512 KB
Memoria de datos Hasta 8 KB Hasta 30 KB
Número de pines Desde 18 hasta 80 Desde 18 hasta 144
Mapeo de pines No Sı́
ADC 12 bit, 200 ksps 12 bit, 500 ksps
DAC No Sı́
Interfaz CODEC Sı́ Sı́

Uno de los puntos más importantes a resaltar es el voltaje de alimentación, que directamen-
te influye en el consumo de energı́a. Menos voltaje de operación significa menos potencia
de consumo, lo cual favorece el ahorro de energı́a. Como se puede observar, la familia ds-
PIC33F/E ofrece mayores ventajas en muchos aspectos y se muestra como la más propicia
para elegir un dispositivo que sirva como procesador digital de audio, la tendencia de las
últimas tarjetas relacionadas con dsPIC
R ya reflejan este hecho.

Con los anteriores argumentos para elegir la familia dsPIC33F/E y sin dejar de lado las
velocidades de procesamiento que puedan ofrecer los diferentes dispositivos miembros de es-
ta, se analizará principalmente los recursos de memoria, periféricos, patillaje y costos que
tienen estos dispositivos para elegir uno que se ajuste a los requerimientos del proyecto. En
los libros de diseño de productos con procesadores digitales de señal siempre se insiste en la
importancia del costo de estos componentes, ya que la solución debe optimizar siempre este
parámetro buscando que el procesador cumpla las exigencias requeridas con el menor costo
posible lo cual no tiene nada que ver con elegir el dispositivo más potente.
40 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Como punto de referencia en cuanto a memoria de programa se plantea analizar qué se ha


usado en proyectos similares:

La tarjeta de desarrollo dsPICDEM 1.1 consiste en una plataforma de desarrollo de


propósito general que por supuesto incluye opciones de procesamiento de audio, aunque
limitados a la banda de voz, su frecuencia de muestreo está determinada por el CODEC
utilizado, el SI3000 de Silicon Labs, y va de 4 kHz a 12 kHz. En este caso el DSC
utilizado es el dsPIC30F6014 el cual tiene una capacidad de memoria de programa de
144KB, y una memoria RAM de 8192 Bytes, su velocidad de procesamiento es de 30
MIPS.

El MPLAB Starter Kit for dsPIC R DSCs en un conjunto de herramientoas hardwa-

re y software cuyo núcleo es un dsPIC R con capacidad de memoria de programa de

256KB y RAM de 16 KB. En esta tarjeta la frecuencia de muestreo también está dada
por un CODEC de alta fidelidad fabricado por una empresa pionera en dispositivos
para tratamiento digital de señales llamada actualmente Cirrus; este CODEC tiene la
posibilidad de manejar hasta 48 KHz de muestreo, pero las librerı́as proporcionadas en
el kit solo están escritas para implementar muestreos de 8 kHz o 16 kHz. El hardware
también proporciona una forma alternativa de captura de audio a través de su conver-
sor análogo digital interno y el método PWM como modulación de audio, esto para
demostrar los sistemas de audio de bajo costo ya que se suprime el uso de un CODEC
pero al mismo tiempo disminuye su fidelidad.

El Audio Development Board for dsPIC33E es una tarjeta más ambiciosa que las
anteriores, en el sentido que incluye más modernos periféricos y con más capacidades
como puerto USB, LCD a color, entre otros. La memoria de programa de su dsPIC R

es de 512 kB y su RAM de 52KB. Su capacidad de procesamiento es de 60 MIPS. Estas


caracterı́sticas repercuten inmediatamente en su precio.

Otras tarjetas no se muestran muy relevantes ya que se destinan a diferentes propósitos


que no colaboran a la facilidad de uso para que una persona inicie cómodamente en la
implementación de algoritmos de procesamiento de audio.

Antes de continuar cabe anotar que el kit de desarrollo más barato encontrado ha sido el
MPLAB R Starter Kit for dsPIC R DSCs, con un precio cercano a USD 60. Lo cual sin duda

es económico pero sus prestaciones son en cierto modo deficientes en cuanto prácticamente
solo permite que el audio entre, se procese y salga de nuevo sin dar lugar a visualizar datos en
alguna pantalla o proporcionar puertos de control para ampliar las aplicaciones. Justamente
esto es lo que se busca mejorar, ofreciendo un producto con dsPIC R que sea sencillo en su

manejo pero que aun ası́ permita obtener aplicaciones interesantes.


3.4 Selección del dsPIC
R 41

Figura 3-6.: Diagrama de pines del DSPIC33FJ128GP802 [23, p. 3].

Entre los dsPIC R ofrecidos en el mercado, debido a su versatilidad, bajo precio, facilidad

de implementación y la incorporación de un DAC para aplicaciones de audio, se mostró más


favorable el dsPIC33FJ128GP802, el cual ofrece, entre otras, las caracterı́sticas de la Tabla
3-2.

Tabla 3-2.: Principales caracterı́sticas del DS-


PIC33FJ128GP802.
Parámetro Valor
Arquitectura 16 bits
Velocidad de procesamiento 40 MIPS
Memoria de programa 128 kB
Memoria RAM 16284 Bytes
Voltaje de operación 3V ∼ 3,6V
Pines de entrada salida 21
Acceso directo a memoria (DMA) 8 canales
Conversor analógico a digital 12 bits, 500 ksps
Conversor digital a analógico 16 bits, 100 ksps
Mapeo de pines 16 pines remapeables
Cantidad de instrucciones base 83

El diagrama de pines y las conexiones eléctricas mı́nimas se muestran en la Figura 3-6 y la


Figura 3-7 respectivamente.
Con base en la Figura 3-7 se debe tener en cuenta las siguientes recomendaciones:
42 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-7.: Conexiones eléctricas mı́nimas del DSPIC33FJ128GP802 [23, p. 20].

Todos los pines VDD y VSS deben ser conectados a la fuente de alimentación.

Todos los pines AVDD y AVSS deben ser conectados aunque no se use el conversor
análogo-digital.

Todos los pines de alimentación deben tener un capacitor cerámico para el desacople
con valor de 100 nF.

VCAP debe conectarse siempre a un capacitor con baja resistencia en serie equivalente,
usualmente este capacitor es de tantalio.

MCLR debe tener un resistor hacia VDD

PGECx y PGEDx deben conectarse para la programación ICPS

Pines OSC1 y OSC2 se conectan cuando se usa oscilador externo

De forma opcional, un inductor puede ser conectado entre VDD y AVDD para mejorar
el rechazo al ruido en las señales analógicas.

El diagrama esquemático de la conexión eléctrica del dsPIC


R se muestra en la Figura 3-8.
3.5 Interfaz de programación 43

Figura 3-8.: Esquemático del DSPIC33FJ128GP802.

3.5. Interfaz de programación


El programador a ser incorporado será un clon del conocido programador pickit2, las modifi-
caciones realizadas buscan la simplicidad del sistema. Únicamente se dejó la mı́nima cantidad
de lı́neas necesarias para la programación y se conservó el LED que indica el estado ocupado
del microcontrolador. La fuente de alimentación es externa, por eso aquı́ sólo se muestra la
respectiva entrada de 3.3 voltios. El diagrama esquemático del circuito programador se ha
dividido en 2 partes: la parte del control (Figura 3-9) y la parte de generación de voltaje
de programación VPP (Figura 3-10). El inductor utilizado en el circuito elevador de voltaje
tiene un valor de 680 uH.

3.6. Acondicionamiento de la señal de audio


Para la entrada de señal se ha usado como base un circuito pasabajas de segundo orden, el
cual se muestra en la Figura 3-11.

Para la salida de audio, se ha usado la configuración de amplificador operacional para señales


balanceadas sugerido en la sección 33 del manual de referencia de la familia dsPIC33F, y se
ha añadido un amplificador de audio a la salida para poder enviar la señal a unos audı́fonos
como se observa en la Figura 3-12.
44 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-9.: Circuito de control del programador para el DSPIC33FJ128GP802.

Figura 3-10.: Circuito de elevación de voltaje del programador para el


DSPIC33FJ128GP802.
3.6 Acondicionamiento de la señal de audio 45

Figura 3-11.: Filtro antialiasing para la entrada analógica del DSC.

Figura 3-12.: Circuito de salida de audio.


46 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-13.: Indicadores LED.

3.7. Componentes de interfaz con el usuario


El circuito tiene interfaces para conectarse con un ordenador a través del puerto USB. Cuen-
ta también con regletas hacia pines desconectados para permitir la conexión de módulos
adicionales para propósito general.

El circuito cuenta con pulsador para resetear y con dos pulsadores auxiliares para propósito
general. Además de eso, se incluyen 2 visualizadores LED (Figura 3-13) para propósito ge-
neral, configurados en modo sumidero, esto significa que se activan con nivel lógico bajo.

Por último, el circuito acepta que el usuario conecte cualquier lı́nea de audio proveniente de
equipos tales como computadores, celulares, DVD, y demás dispositivos con salida de lı́nea
para audio. Ası́ mismo, el circuito cuenta con driver para conectar audı́fonos directamente.
El conector empleado tanto para la entrada como para la salida de audio es de tipo jack 3.5
mm, su esquemático está ilustrado en la Figura 3-14.

3.8. Fuente de alimentación


Los reguladores lineales producen menos ruido que los conmutados, por eso será la primera
consideración para el diseño de la fuente de alimentación.

Un correcto diseño de la alimentación es crucial para el desempeño general del sistema y


especialmente para el dsPIC .R En este tipo de sistemas siempre se usa alimentación con

fuentes reguladas, se asume que la entrada de voltaje es 5 voltios ya que se piensa utilizar el
3.8 Fuente de alimentación 47

Figura 3-14.: Conectores de audio 3.5 mm.

puerto USB estándar de los computadores como puerto de programación y para optimizar
conexiones se usará también como puerto de suministro de energı́a. El puerto USB, según
su versión, ofrece distintas cantidades de corriente que deben ser tenidas en cuenta para
establecer los parámetros de consumo del circuito que será conectado.

Un cable USB estándar se compone de cuatro hilos de los cuales dos son los destinados al
suministro de energı́a: VBUS para 5 voltios y GND para tierra. En la Tabla 3-3 se evalúan
las caracterı́sticas básicas de este puerto en sus distintas versiones.

Tabla 3-3.: Caracterı́sticas de


corriente del puerto
USB.
Puerto Corriente máxima
USB 1.0 -
USB 1.1 -
USB 2.0 500
USB 3.0 900
El dsPIC R funciona con 3.3 voltios, por lo que se hace necesario implementar un circuito

que reduzca los 5 voltios que proporciona el puerto USB. El primer parámetro que vemos
implicado es que la caı́da de tensión en el regulador, en las hojas de datos de estos dispositivos
este parámetro suele llamarse ((dropout voltage)), el cual está determinado por la siguiente
expresión:

vdropout = vin − vout


48 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-15.: Parámetros máximos de operación del LD1117 [29].

vdropout = 5v − 3,3v
vdropout = 1,7 v
Por lo tanto, ha de seleccionarse un regulador con un voltaje dropout menor a 1.7 voltios.

Otro parámetro a tener en cuenta es la corriente que manejará, se ha decidido que el regula-
dor de voltaje sea totalmente consistente con la corriente que puede entregar el puerto USB,
pero al existir diferentes versiones con diferentes capacidades de corriente se ha optado por
elegir la más común actualmente que es el estándar USB 2.0; aunque la tendencia es cada
vez mayor hacia el estándar USB 3.0 no habrá inconveniente debido a que este último es
totalmente compatible para facilitar la migración hacia esa tecnologı́a. En este sentido, la
corriente estará limitada a 500 mA.

Por simplicidad, economı́a y facilidad de adquisición se ha decidido trabajar con el circuito


integrado LD1117. Con base en la hoja de datos del fabricante (Figura 3-15 y Figura 3-16)
se obtiene el esquemático de la Figura 3-17.

3.9. Resultados
Con los parámetros mencionados en la sección 3.2. se diseñó el prototipo de circuito impreso
usando el software kiCAD. El circuito se resume ası́:

Circuito impreso con tecnologı́a Through and Hole.

Dimensiones: 121.9 mm x 97.2 mm

Una cara de cobre.

20 puentes de alambre

24 capacitores
3.9 Resultados 49

Figura 3-16.: Caracterı́sticas eléctricas del LD1117 [29].

Figura 3-17.: Circuito de alimentación.


50 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-18.: Vista superior de la ubicación de los componentes de la PCB.

4 diodos LED

2 conectores jack de 3.5 mm

3 inductores

1 conector USB tipo B

4 transistores

3 interruptores tipo pulsador

1 regulador de tensión

4 circuitos integrados, incluidos el DSC y el microcontrolador de programación

37 resistores

2 conectores tipo regleta; uno con 6 pines y el otro con 4 pines

La Figura 3-18 muestra la disposición de los componentes a lo largo de la PCB; la 3-19 es


la vista superior del ruteo, este ha sido llevado a cabo de forma manual.

En la Figura 3-20 se tiene una versión 3D del circuito generado y en la Figura 3-21 una
fotografı́a del prototipo real.
3.9 Resultados 51

Figura 3-19.: Vista superior del ruteo de la PCB.

Figura 3-20.: Versión 3D del circuito.


52 3 Diseño de la tarjeta electrónica para procesamiento digital de audio con dsPIC
R

Figura 3-21.: Fotografı́a del prototipo final.


4. Procesamiento digital de audio con
operaciones en el dominio temporal
Para la implementación de prácticas primero se hará un recorrido por el proceso de desa-
rrollo de código que será grabado al dsPIC ,
R la metodologı́a de programación está basada

principalmente en el lenguaje C y para la parte de procesamiento de las señales serán usadas


funciones escritas en lenguaje ensamblador, este enfoque pretende implementar programas
modulares que permitan que las personas que lean el código puedan desarrollar aplicaciones
rápida y eficazmente mediante el tratamiento del código como bloques con funciones especı́fi-
cas. El software para el desarrollo de estos programas es el MPLAB R X en su versión 3.30

y el compilador es el XC16 en su versión 1.26.


54 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-1.: Sistema del oscilador y camino de configuración propuesto (Adaptado de [28]).

4.1. Configuración del dsPIC


R

4.1.1. Configuración del oscilador


El oscilador del dsPIC33FJ128GP802 tiene muchas caracterı́sticas que no son comunes en
tecnologı́as anteriores, entre ellas, un divisor de realimentación en el PLL que permite obte-
ner una gran cantidad de frecuencias diferentes mediante este módulo. Otra caracterı́stica es
la posibilidad de usar un oscilador RC interno de 7,3728 MHz que permite ser configurado
mediante PLL para trabajar con la máxima velocidad de reloj permitida por el procesador,
la cual es 80 MHz. El uso del oscilador interno minimiza la cantidad de componentes externos
y deja a disposición más lı́neas de entrada/salida, la principal desventaja está en la menos
estabilidad y menos exactitud de frecuencia respecto a otros tipos de osciladores como los ba-
sados en cristales de cuarzo. En la Figura 4-1 del sistema oscilador del dsPIC33F mostrando
el camino que debe ser tomado para usar el oscilador interno a la máxima frecuencia sugerida.

Se puede observar que en primer lugar tenemos un registro llamado T U N < 5 : 0 >, el cual
permite desviar mediante software el valor nominal de la frecuencia del oscilador en un rango
de ±12 %, con el objetivo de ajustar a un valor apropiado. Su valor por defecto es 0 el cual
4.1 Configuración del dsPIC
R 55

Figura 4-2.: Esquema del circuito PLL [28].

significa que trabaja con la frecuencia nominal de 7,3728 MHz.

Luego se llega a un divisor multiplexado por el registro F RCDIV < 2 : 0 >, por defecto
dicho registro está configurado para oscilador interno sin división y no será modificado.

Después se tiene el multiplexor que selecciona la entrada al circuito PLL, esta configuración
no está en los registros de configuración especiales sino en la memoria de programa, por lo
tanto debe ser especificado en los fusibles o palabra de configuración.

El circuito PLL requiere especial cuidado en su configuración, para entender mejor su funcio-
namiento la Figura 4-2 resume los registros que lo configuran y los parámetros de frecuencia
en cada etapa del circuito.

Vemos que el sistema PLL está controlado por tres registros divisores, el registro P LLDIV <
8 : 0 > al estar en modo realimentación se comporta en realidad como un multiplicador de
la frecuencia. Los registros P LLP RE < 4 : 0 > y P LLP OST < 1 : 0 > por defecto tienen
un valor de cero y según su hoja de caracterı́sticas, esto equivale a que cada uno divide entre
2 la frecuencia. El valor de M se calcula de forma sencilla mediante la expresión:

M = P LLDIV + 2
Asumiendo N 1 = 2 y N 2 = 2, se puede calcular M y PLLDIV para que el dsPIC R trabaje a

la máxima velocidad. Ası́ el valor propicio para esto es: P LLDIV = 41, por lo tanto M = 43.
La siguiente ecuación muestra el valor de la frecuencia si se aplica esta configuración:
56 4 Procesamiento digital de audio con operaciones en el dominio temporal

 
M
Fosc = Fin
N1 × N2
 
43
Fosc = 7,3728M Hz
2×2
Fosc = 79,2576M Hz
Esa será la frecuencia nominal de trabajo que se programará en el dsPIC ,
R como se puede

apreciar, es un valor un poco menor a 80 MHz que es la frecuencia máxima sugerida por el
fabricante. La velocidad de procesamiento quedarı́a ası́:

Fosc
FCY =
2
79,2576 M Hz
FCY =
2
FCY = 39,6288 M Hz
El último paso es seleccionar la frecuencia de salida del PLL como frecuencia que utilizará
el dispositivo, esto se hace desde los fusibles de configuración.

Debido a que el dsPIC R no inicia su operación con el oscilador FRC en modo PLL, es

necesario hacer una conmutación para cambio de reloj a través de software. Existen unas
funciones especiales en C que permiten hacer este cambio. La función que configura el osci-
lador queda ası́:

void C o n f i g O s c i l a d o r ( void )
{
OSCTUNbits .TUN = 0; // S i n t o n i z a FRC a l a f r e c u e n c i a nominal
CLKDIVbits . FRCDIV = 0 ; // D i v i d e e n t r e 1 l a f r e c u e n c i a de FRC
CLKDIVbits . PLLPOST = 0 ; // N1 = 2
CLKDIVbits . PLLPRE = 0 ; // N2 = 2
PLLFBDbits . PLLDIV = 4 1 ; // M = 43 (M = PLLFBD + 2)

// Cambio de r e l o j para i n c o r p o r a r PLL


builtin write OSCCONH ( 0 x01 ) ; // I n i c i a e l cambio de r e l o j a
FRCPLL (NOSC=0b001 )
builtin write OSCCONL ( 0 x01 ) ; // I n i c i a e l cambio de r e l o j
while ( OSCCONbits .COSC != 0 b001 ) ; // Espera a que o c u r r a cambio de r e l o j
while ( OSCCONbits .LOCK != 1 ) ; // Espera a que e l PLL s e b l o q u e e
}
4.1 Configuración del dsPIC
R 57

4.1.2. Configuración de los puertos


En cuanto a la configuración de los puertos, o lı́neas de E/S, los registros encargados de
definir cada pin como entrada o salida son los registros TRISx, en la respectiva hoja de
especificaciones está el detalle de los bits correspondientes. Si un bit del registro TRISx está
definido como ((0)) su correspondiente pin asociado se comportará como salida; si dicho bit
está definido como ((1)) entonces ese pin será una entrada. Otro registro muy importante es
el AD1PCFGL, el cual define si el pin correspondiente es analógico o digital, un bit igual ((0))
define al correspondiente pin como analógico y si el bit tiene un valor de ((1)) su correspon-
diente pin será digital. En dispositivos con más de 16 entradas analógicas existe otro registro
llamado AD1PCFGH para permitir la incorporación y manejo de más pines.

Después de un reset, todos los pines quedan definidos como entradas analógicas. O sea, por
defecto todos los bits de los registros TRISx serán ((1)) y los del registro AD1PCFGL serán
((0)).

Antes de continuar, se definirán los puertos con un archivo de cabecera para tener un mane-
jo de código más sencillo, los LED?s serán conectados a RB0 y RB1, los pulsadores a RA0
y RA1. Debido a la configuración en modo sumidero de los LEDs se indicará que un ((0))
encenderá el LED y un ((1)) lo apagará. Por último, se define también que un ((0)) significa
salida o pin analógico y un ((1)) significa entrada o pin digital según el registro al que se
aplique, el archivo queda de la siguiente manera:

// Macros para l o s p u e r t o s
#define LED1 LATB0
#define LED2 LATB1

#define BOTON1 RA0


#define BOTON2 RA1

#define ENCENDER 0
#define APAGAR 1

#define SALIDA 0
#define ENTRADA 1

#define ANALOGICO 0
#define DIGITAL 1

La siguiente función configura los puertos para la tarjeta de prácticas diseñada, vemos que el
único pin analógico es AN4, el cual corresponde a la entrada de la señal de audio. Se definen
los pines para los pulsadores y los LED, esto últimos se configuran para que inicien apagados:
58 4 Procesamiento digital de audio con operaciones en el dominio temporal

void C o n f i g P u e r t o s ( void )
{
AD1PCFGL = 0xFFFF ; // Todos l o s p i n e s son d i g i t a l e s
AD1PCFGLbits . PCFG4 = ANALOGICO; // AN4 e s un p i n a n a l ó g i c o

TRISA0 = ENTRADA; // Botón 1


TRISA1 = ENTRADA; // Botón 2

TRISB0 = SALIDA ; // LED1


TRISB1 = SALIDA ; // LED2

TRISB10 = ENTRADA; // PGD


TRISB11 = ENTRADA; // PGC

LED1 = APAGAR;
LED2 = APAGAR;
}

4.1.3. Configuración de ADC y DMA


El convertidor analógico-digital presente en el dsPIC33FJ128GP802 tiene una resolución
configurable de 10 bits o 12 bits, con velocidades de muestreo máximas de 1.1 Msps y 500
ksps respectivamente. El búfer de este conversor solamente contiene un espacio de una pala-
bra pero debido a la posibilidad de Acceso Directo a Memoria (DMA) puede ampliarse sin
intervención de la CPU hacia el espacio DMA RAM.

La entrada de este conversor puede ser conectada a 4 canales diferentes de muestreo y re-
tención, el canal CH0 será usado para adquirir la señal de audio ya que es el único canal que
admite el modo 12 bits. Este canal se selecciona con la siguiente instrucción:

AD1CON2bits . CHPS = 0 ;

Los voltajes de referencia se configurarán internamente a AVDD y AVSS. En la Figura 4-3


se muestra el esquema que se quiere configurar, en rojo está la señal que se va a convertir y
en azul las señales de referencia, en dicho esquema se han suprimido los otros tres canales
por simplicidad.
Hay que configurar los dos multiplexores que controlan la entrada hacia el amplificador di-
ferencial, primero seleccionamos AN4 como entrada de señal hacia la lı́nea no inversora con
la siguiente instrucción:

AD1CHS0bits . CH0SA = 4 ;
4.1 Configuración del dsPIC
R 59

Figura 4-3.: Esquema del ADC (Adaptado de [24]).

Como no es de interés utilizar el diferencial de la señal, la entrada inversora se dejará conec-


tada a VREFL con la siguiente instrucción:

AD1CHS0bits .CH0NA = 0 ;

Con el registro VCFG seleccionamos los voltajes de referencia, en este caso AVDD y AVSS ası́:

AD1CON2bits .VCFG = 0 ;

De esta forma quedan configurados los multiplexores. Con la siguiente instrucción se selec-
ciona el modo 12 bits:

AD1CON1bits . AD12B = 1 ;

Otro aspecto importante a configurar es el formato de conversión, de los cuatro formatos


posibles el que interesa es el fraccional con signo ya que además de dar signo a la conversión
también hace un escalamiento automático hacia 16 bits, llenando con ceros los 4 bits menos
significativos. Este formato será muy importante porque es en el que se hace el procesamien-
to de señales en el dsPIC ,R la siguiente instrucción configura este formato que también es

llamado Q15:

AD1CON1bits .FORM = 3 ;
60 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-4.: Formato de conversión de 12 bits fraccional con signo [24, p. 74].

Figura 4-5.: Selección del reloj el ADC [24, p. 28].

Ası́, el formato en que se llenará el búfer del ADC se ilustra en la Figura 4-4.

El muestreo será configurado para ser automático, de modo que el ADC estará muestreando
siempre que no esté realizando una conversión en ese momento. La instrucción para confi-
gurarlo es la siguiente:

AD1CON1bits .ASAM = 1 ;

Se indicará al dsPIC R que el momento en que se empieza una conversión será manual, esto

se especifica a través de la instrucción:


AD1CON1bits . SSRC = 0;

De esta manera, una conversión será realizada cada vez que se escriba un cero en el bit
sample.
El ADC tiene dos posibilidades de selección de reloj: derivado del sistema o su reloj interno.
Este último, según la hoja de caracterı́sticas, tiene un perı́odo tı́pico de 250 ns. Del otro
reloj se puede obtener un rango de frecuencias mediante el registro ADCS < 7 : 0 > como
se muestra en la Figura 4-5.

El TAD es un parámetro que se debe respetar, para el ADC de este dsPIC R debe ser de

mı́nimo 117.6 ns. Esto lo cumple el reloj interno del ADC pero si se desea usar el reloj del
sistema entonces debe ajustarse mediante el divisor controlado por ADCS < 7 : 0 >. La
fórmula del TAD está definida a continuación:

ADCS + 1
TAD =
FCY
4.1 Configuración del dsPIC
R 61

Figura 4-6.: Etapas de muestreo y retención en el ADC [24, p. 16].

Con lo cual podemos calcular un valor mı́nimo de ADCS para una frecuencia del sistema
dada.

ADCS min = (TADmin ) (FCY ) − 1


ADCS min = 117,6 × 10−9 39,6288 × 106 − 1
 

ADCS min = 3,66


ADCS min ≈ 4
La aproximación debe hacerse hacia arriba para no obtener un valor inferior al mı́nimo
requerido en el TAD. Al reemplazar el valor de 4 en ADCS se obtiene que el valor del
TAD es 126.17 ns, cumpliendo ası́ el requisito mı́nimo del reloj del conversor. Este será el
parámetro que será configurado mediante las dos siguientes lı́neas:
AD1CON3bits .ADRC = 0 ;
AD1CON3bits .ADCS = 4 ;

La Figura 4-6 ilustra el manejo del capacitor del circuito de muestreo y retención durante
los momentos de muestreo y de conversión.

En modo 12 bit, el ADC requiere de 14 TAD para efectuar una conversión.

TC12bit = 14 × TAD
TC12bit = 14 × 126,17 ns
TC12bit = 1,77 us
Un perı́odo de conversión TC no puede ser muy largo porque el voltaje en el capacitor de
retención puede decaer lo suficiente como para alterar el resultado. Otro tiempo mı́nimo que
debe respetarse es el tiempo de muestreo TSAMP que debe ser de por lo menos 3 TAD, o
sea 352.8 ns para que el capacitor se cargue hasta un valor acertado.
62 4 Procesamiento digital de audio con operaciones en el dominio temporal

El tiempo de muestreo en la aplicación depende de la frecuencia de muestreo de audio y está


dado por:

TSAM P = TS − TC12bit
Asumiendo que la frecuencia de muestreo de audio es la máxima del DAC, o sea 100 KHz,
se obtiene:

TSAM P = 10 us − 1,77 us
TSAM P = 8,23 us
El cual es unas 23 veces mayor al necesario, este parámetro no tiene inconveniente teniendo
en cuenta que el ADC del dsPIC R está diseñado para llegar a velocidades de 500 ksps con

resolución de 12 bits.

Sólo resta configurar las caracterı́sticas DMA para el ADC, hay un bit de interés que confi-
gura el modo como el ADC llena el espacio DMA, en este caso es preferible que esto se haga
en el mismo orden de conversión, para ello se usa la siguiente instrucción:

AD1CON1bits .ADDMABM = 1 ;

También es muy necesario controlar que el incremento de la dirección DMA RAM se haga
una sola vez por cada conversión, este parámetro llamado razón de incremento de la dirección
DMA se configura con el registro SM P I < 3 : 0 > ası́:

AD1CON2bits . SMPI = 0;

Ya está totalmente configurado el módulo ADC, ahora puede encenderse:

AD1CON1bits .ADON = 1 ;

A continuación vemos cómo quedó la función completa:


void ConfigADC ( void )
{
// M u l t i p l e x o r e s d e l c a n a l 0
AD1CON2bits . CHPS = 0 ; // I n d i c a que e l c a n a l 0 e s e l c a n a l de
c o n v e r s i ó n
AD1CHS0bits . CH0SA = 4 ; // AN4 s e c o n e c t a a l a e n t r a d a +ve
AD1CHS0bits .CH0NA = 0 ; // VREFL s e c o n e c t a a l a e n t r a d a −ve

// M u l t i p l e x o r de l o s v o l t a j e s de r e f e r e n c i a
AD1CON2bits .VCFG = 0 ; // Los v o l t a j e s de r e f e r e n c i a son AVDD y AVSS
4.1 Configuración del dsPIC
R 63

// Formato de l o s d a t o s
AD1CON1bits . AD12B = 1 ; // I n d i c a r e s o l u c i ó n de 12 b i t s
AD1CON1bits .FORM = 3 ; // Formato de d a t o s : F r a c c i o n a l con s i g n o (Q15
)

// Modo de muestreo y c o n v e r s i ó n
AD1CON1bits .ASAM = 1 ; // I n i c i a muestreo : a l t e r m i n a r l a ú l t i m a
c o n v e r s i ó n
AD1CON1bits . SSRC = 0 ; // I n i c i a c o n v e r s i ó n : l i m p i a n d o e l b i t sample

// R e l o j de c o n v e r s i ó n
AD1CON3bits .ADRC = 0 ; // El r e l o j d e l ADC s e d e r i v a d e l r e l o j d e l
sistema
AD1CON3bits .ADCS = 4 ; // TAD = (ADCS+1)/FCY = 1 2 6 . 1 7 ns , TC = 1 . 7 7
us

// C a r a c t e rı́ s t i c a s DMA
AD1CON1bits .ADDMABM = 1 ; // Los b ú f e r DMA s e l l e n a n en orden de c o n v e r s i ó n
AD1CON2bits . SMPI = 0 ; // Por cada c o n v e r s i ó n i n c r e m e n t a una d i r e c c i ó n
DMA

AD1CON1bits .ADON = 1 ; // Enciende e l módulo ADC


}

A continuación se creará otra función, esta vez para configurar el canal 0 del módulo DMA
para que transfiera datos entre el búfer del ADC y el espacio DMA RAM.

void ConfigDMA0 ( void )


{
DMA0CONbits .AMODE = 0 ; // R e g i s t r o i n d i r e c t o con p o s t i n c r e m e n t o
DMA0CONbits .MODE = 0 ; // Modo c o n t i n u o s i n Ping−Pong

DMA0PAD = ( int )&ADC1BUF0 ; // D i r e c c i ó n d e l b ú f e r d e l ADC ( 0 3 0 0 )


DMA0CNT = ( TamBufer −1) ; // Número de t r a n s f e r e n c i a s DMA (N MUESTRAS−1)

DMA0REQ = 13; // La i n t e r r u p c i ó n d e l ADC p r o v o c a t r a n s f e r e n c i a DMA

DMA0STA = b u i l t i n d m a o f f s e t ( BuferA ) ; // D i r e c c i ó n i n i c i o para e l b ú f e r A

I F S 0 b i t s . DMA0IF = 0; // Limpia l a bandera de i n t e r r u p c i ó n


e l DMA
I E C 0 b i t s . DMA0IE = 1; // A c t i v a l a i n t e r r u p c i ó n de DMA

DMA0CONbits .CHEN = 1 ; // A c t i v a e l c a n a l 0 d e l módulo DMA


}

Donde N M U EST RAS es un valor que debe ser definido con anterioridad y equivale al
tamaño de cada búfer.
64 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-7.: Configuración del oscilador de entrada al DAC (Adaptado de [28]).

4.1.4. Configuración del DAC


La principal caracterı́stica del DAC del dsPIC33FJ128GP802 es que está diseñado especı́fi-
camente para aplicaciones de audio. Este dispositivo debe configurarse para una frecuencia
de muestreo constante, esta frecuencia se deriva del oscilador auxiliar (ACLK) a través de
un divisor de frecuencia. La salida se actualiza de forma automática tomando los datos del
búfer, si el búfer está vacı́o en el momento de la actualización la salida será el valor por
defecto guardado en el registro DACDFLT. La máxima frecuencia de muestreo recomendada
es 100 kHz, y la máxima frecuencia de audio permitida es 45 kHz.

Este módulo tiene en total 5 registros directamente asociados. De los cuales 2 son para el
envı́o de datos (izquierdo y derecho), uno es para guardar el valor por defecto (en caso de
búfer vacı́o) y los otros dos son los registros de control y de estado. En el registro de control
están los bits del divisor de frecuencia, el de forma de los datos, el de activación del ampli-
ficador, operación en modos de bajo consumo y el de activación del módulo. La figura 4-7
muestra cómo será tomada la frecuencia del DAC.

Vemos que son dos los elementos de interés, el bit SELACK y el registro AP ST SCLR <
2 : 0 >, el primero se usa para seleccionar la fuente de reloj, en este caso será FOSC que
está conectado a la salida del circuito PLL, y con el segundo configuramos el divisor de esta
frecuencia, la señal obtenida a la salida es llamada ACLK (Reloj Auxiliar). Antes de ser
aplicada al DAC, esta señal pasa por otro divisor controlado por el registro DACFDIV, de
esta forma se obtiene la frecuencia de trabajo del DAC, la cual no puede superar los 12.8
MHz, que es el valor para que la frecuencia de muestreo se establezca en 100 ksps. Un mues-
treo ocurre cada 128 ciclos de reloj de ACLK. A continuación se muestra cómo se programa
la frecuencia del DAC, téngase en cuenta que el valor DIVD AC debe haberse definido con
anterioridad y no debe ser menor a 6 para garantizar un óptimo funcionamiento del sistema
con las condiciones de reloj que estamos configurando.

ACLKCONbits .SELACLK = 0 ;
ACLKCONbits . APSTSCLR = 7 ;
DAC1CONbits .DACFDIV = DIV DAC ;
4.1 Configuración del dsPIC
R 65

Otra configuración importante que se debe hacer es indicar el formato de los datos que
estamos enviando al DAC, de los dos tipos de datos el más conveniente es el entero con
signo, ya que es compatible con el formato fraccional que se maneja en el procesamiento de
señales.
DAC1CONbits .FORM = 1;

El registro de estado contiene los bits de estado del DAC, el byte más significativo aplica
para el canal izquierdo y el menos significativo para el canal derecho. Cada canal tiene 5 bits
de en el registro de estado: activar o desactivar canal, activar o desactivar voltaje central,
tipo de interrupción, búfer lleno y búfer vacı́o.

Una caracterı́stica de este periférico es que genera interrupción en uno de dos casos, según
se configure: cuando el búfer del DAC está lleno o cuando dicho búfer está vacı́o. El búfer de
cada canal tiene una profundidad de 4 palabras. Este periférico también tiene la capacidad
de transferir datos mediante DMA. La siguiente figura muestra la función de configuración
de DAC propuesta.

void ConfigDAC ( void )


{
ACLKCONbits .SELACLK = 0 ; // S a l i d a d e l PLL como f u e n t e de r e l o j
ACLKCONbits . APSTSCLR = 7 ; // D i v i d e l a f r e c u e n c i a de e n t r a d a e n t r e 1

DAC1CONbits .DACFDIV = DIV DAC ; // DACCLK = ACLK/(DACFDIV + 1)


DAC1CONbits .FORM = 1; // Formato de d a t o s : e n t e r o con s i g n o
DAC1CONbits .AMPON = 0; // A m p l i f i c a d o r a c t i v o en modos S l e e p / I d l e
DAC1DFLT = 0 x8000 ; // Valor de s a l i d a por d e f e c t o para e l DAC

DAC1STATbits .ROEN = 1; // A c t i v a e l c a n a l d e r e c h o d e l DAC


DAC1CONbits .DACEN = 1; // A c t i v a e l DAC
}

A continuación se muestran los macros construidos para obtener diferentes tasas de muestreo
en el DAC, en este caso seleccionado para muestrear a 44100 Hz:
#define Fs 100K 5 // fs real = 103200 Hz
#define Fs 480 00 12 // fs real = 47631 Hz
#define Fs 441 00 13 // fs real = 44229 Hz
#define Fs 320 00 18 // fs real = 32589 Hz
#define Fs 220 50 27 // fs real = 22114 Hz
#define Fs 160 00 38 // fs real = 15877 Hz
#define Fs 110 25 55 // fs real = 11057 Hz
#define Fs 8000 76 // fs real = 8042 Hz

#define DIV DAC Fs 441 00 // E s t a b l e c e f r e c u e n c i a de muestreo ( Fs )


66 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-8.: Diagrama de flujo del código de ejemplo CE154.

4.2. Muestreo y reconstrucción de señales de audio


Estando definidas las funciones que configuran el dispositivo ahora es posible muestrear una
señal de audio mediante el ADC y enviar esas muestras al DAC, creando ası́ un puente por
software entre los convertidores.

Como punto de partida se ha tomado el código de ejemplo CE154 de la página de Microchip,


su diagrama de flujo se muestra en la Figura 4-8.

El programa se resume de la siguiente manera: el ADC es configurado para realizar con-


versiones disparadas por el temporizador 3 cada 9.69 us, esto con el objetivo de igualar a
la frecuencia del DAC que es de 103.2 KHz, los datos son almacenados mediante DMA en
2 búfer de 256 palabras cada uno, estos búfer se llenan en modo ping-pong, cada vez que
uno de los búfer se llena es generada una interrupción que cambia el búfer desde donde el
DAC toma las muestras, la escritura de los datos en el búfer del DAC se hace desde un
bucle infinito que está constantemente leyendo el estado vacı́o del búfer del DAC para saber
cuándo puede enviar otra muestra. El modo ping pong se resume en la Figura 4-9.

El código de ejemplo CE154 fue probado y se pudo evidenciar que no funciona correctamen-
te, pues la señal aplicada a la entrada no se reconstruı́a de forma satisfactoria. La Figura
4.2 Muestreo y reconstrucción de señales de audio 67

Figura 4-9.: Diagrama de flujo del algoritmo ping-pong.


68 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-10.: Comportamiento de la señal implementada con el código de ejemplo CE154.

4-10 muestran el comportamiento del dsPIC


R con el código de ejemplo implementado.

En la búsqueda del problema se estableció que el código habı́a sido modificado con el objetivo
de adaptarlo de la versión MPLAB R 8 a MPLAB R X, en esta adaptación se cometió el

error de calcular mal la fórmula del divisor de frecuencia del DAC. Además de eso, se en-
contró un problema en el tiempo TAD, el cual fue calculado para 100 ns por el programador
del ejemplo mientras que no debı́a ser menor a 117.6 ns.

Al corregir el valor del registro DACFDIV a 5, se obtiene efectivamente la frecuencia de


muestreo indicada en el ejemplo (103 kHz) sincronizando ası́ con el timer y ahora la onda
puede ser reconstruida satisfactoriamente por el DAC como se muestra en la Figura 4-11.
En el análisis del código de ejemplo anterior se encuentra que el enfoque empleado no es el
más adecuado ya que se basa en la configuración de dos fuentes de reloj complicando ası́ la
sincronización entre el ADC y el DAC, teniendo en cuenta que las frecuencias de muestreo
de estos dos módulos deberı́an estar perfectamente sincronizadas se ha buscado mejorar el
código mediante un enfoque hacia una sola fuente de reloj, para este fin se hace necesario
prescindir del Timer 3 y hacer de forma manual el disparo del ADC.

El primer objetivo para solucionar el problema fue comprobar el funcionamiento punto a


punto, luego se procedió a reescribir el código incorporando el módulo DMA. Con los resul-
tados, se ha propuesto cuatro algoritmos que aseguran que las frecuencias de trabajo de los
dos convertidores coinciden perfectamente.
4.2 Muestreo y reconstrucción de señales de audio 69

Figura 4-11.: Comportamiento de la señal implementada con el código de ejemplo CE154


modificado.

4.2.1. Muestreo y reconstrucción punto a punto


En esta configuración, ilustrada en la Figura 4-12, no hace uso de interrupciones sino que
se deja un flujo libre del programa a través de un bucle infinito, el cual comprueba repetiti-
vamente si el búfer del DAC está disponible para recibir una nueva muestra.

4.2.2. Muestreo y reconstrucción punto a punto con interrupción del


DAC
En esta ocasión el programa principal sólo configura los periféricos, la interrupción del DAC
evita la necesidad de comprobar el estado del búfer de este último, dicha interrupción con-
tiene la orden de muestreo, cuando la señal muestreada es finalmente convertida se da la
orden de enviar la muestra al búfer del DAC.

4.2.3. Muestreo y reconstrucción mediante búfer DMA


La incorporación del acceso directo a memoria (DMA) permite prescindir del búfer del ADC
para obtener los datos, pues estos son colocados directamente en el espacio de memoria RAM
sin intervención de la CPU luego de cada conversión, de esta manera se puede tratar a las
muestras por bloques de tamaño especificado en la configuración del módulo DMA, se ha
propuesto el uso de dos bloques para hacer uso del algoritmo ping-pong, el cual es soportado
por el dsPIC .R La interrupción generada por el DMA es usada para intercalar el búfer del

que se toman las muestras de salida y para reinicializar la variable i, usada para recorrer
70 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-12.: Muestreo y reconstrucción punto a punto.

Figura 4-13.: Muestreo y reconstrucción punto a punto con interrupción del DAC.
4.3 Generación de señales periódicas mediante tablas 71

Figura 4-14.: Muestreo y reconstrucción mediante búfer DMA.

cada bloque. Véase la Figura 4-14.

4.2.4. Muestreo y reconstrucción mediante búfer DMA con


interrupción del DAC
Este algoritmo es bastante similar al anterior, pero dejando que la interrupción del DAC con-
trole la obtención de las muestras del ADC y el envı́o de las muestras de salida. En resumen
el programa principal no tiene control del muestreo, todo se controla mediante interrupcio-
nes, de esta manera, se puede implementar procesamiento por bloques desde el programa
principal de una forma eficiente. Véase la Figura 4-15.

4.3. Generación de señales periódicas mediante tablas


4.3.1. Búfer circular
Un búfer circular (Figura 4-16) es un arreglo de una cantidad fija de datos que considera a la
última dirección como adyacente a la primera, de este modo se puede tratar a las direcciones
como un bucle sin fin permitiendo ası́ un movimiento circular de datos.
72 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-15.: Muestreo y reconstrucción mediante búfer DMA con interrupción del DAC.

Figura 4-16.: Búfer circular de tamaño N.


4.3 Generación de señales periódicas mediante tablas 73

Figura 4-17.: Generación de señales periódicas mediante búfer circular.

Uno de los usos más comunes del búfer circular en cuanto al audio es la generación de señales
periódicas mediante tablas que guarden muestras de cualquier señal, una tabla entonces se
puede convertir en un búfer circular de sólo lectura. La Figura 4-17 ilustra un ejemplo de
este tipo en donde se envı́an muestras desde una tabla con tamaño igual a T amOnda hacia el
DAC, la variable i actúa como puntero. A continuación se muestra un código que implementa
la parte encerrada en el bucle principal de dicho ejemplo:
while ( DAC1STATbits .REMPTY != 1 ) ; // Espera a que e l DAC e s t é d i s p o n i b l e

DAC1RDAT = Onda [ i ] ; // E s c r i b e l a muestra de l a onda en e l DAC

i ++; // Incrementa e l p u n t e r o d e l b ú f e r
i f ( i==TamOnda) // S i e l p u n t e r o a l c a n z a e l tamaño d e l
b ú f e r
i = 0; // Lo r e i n i c i a l i z a

Como se observa en el anterior código, es necesario incrementar manualmente el puntero y


comprobar constantemente el lı́mite del búfer para corregir la dirección si es necesario, estas
operaciones se pueden realizar automáticamente mediante una tecnologı́a llamada direccio-
74 4 Procesamiento digital de audio con operaciones en el dominio temporal

namiento modular.

4.3.2. Direccionamiento modular


Esta caracterı́stica de los dsPIC R permite un tratamiento eficiente de búfer circulares ya

que las direcciones son corregidas a través del hardware.

El direccionamiento modular se configura a través de 5 registros, el registro de control MOD-


CON configura el modo de operación, los registros XMODSRT y XMODEND configuran
las direcciones de inicio y de fin respectivamente para el bus de datos X, mientras que
YMODSRT y YMODEND hace lo mismo con el bus de datos Y. No debe realizarse una
operación que involucre direccionamiento indirecto justo después de escribir en alguno de los
anteriores registros, se sugiere el uso de la operación NOP si el programa presenta este caso.

Los registros W actúan como punteros cuando hay direccionamiento modular, estos pueden
ser usados con direccionamiento indirecto con post incremento y la dirección contenida en
dicho registro se ajustará automáticamente si traspasa el lı́mite del búfer.

El búfer circular puede diseñarse para incremento o para decremento, esto depende de si los
registros de inicio contienen direcciones más grandes o más pequeñas que los registros de fin.

A continuación se muestra un código para configurar direccionamiento modular con incre-


mento para el búfer llamado Onda y con W 1 como puntero:

XMODSRT = ( int )&Onda ; // D i r e c c i ó n de i n i c i o de l a t a b l a


XMODEND = ( int )&Onda+(TamOnda∗2−1) ; // D i r e c c i ó n de f i n de l a t a b l a
MODCON = 0 x8001 ; // C o n f i g u r a W1 como p u n t e r o
Nop ( ) ;

La Figura 4-18 implementa otro sistema de generación de señales pero esta vez utilizando
direccionamiento modular. Las siguientes lı́neas de código muestran un ejemplo de cómo se
puede enviar muestras desde una tabla hacia el DAC utilizando esta técnica, el puntero es
salvado en la variable P untero:

asm ( ”mov Puntero , w1” ) ;


asm ( ”mov [ w1++], w2” ) ;
asm ( ”mov w2 , DAC1RDAT” ) ;
asm ( ”mov w1 , P u n t e r o ” ) ;

Como se observa, las instrucciones están programadas en ensamblador porque es necesario


programarlas a nivel de los registros de trabajo. En este ejemplo se ha sugerido que en cada
4.3 Generación de señales periódicas mediante tablas 75

Figura 4-18.: Generación de señales periódicas mediante búfer circular con direccionamien-
to modular.
76 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-19.: Peso de los bits en el formato fraccional.

Figura 4-20.: Equivalencia entre el formato entero y el formato fraccional [17].

iteración se guarde en una variable el valor del puntero ya que los registros de trabajo son
diseñados para cargar operandos y no para almacenar resultados.

4.4. Operaciones de procesamiento digital en el dominio


temporal
La arquitectura del dsPIC R está diseñada para procesamiento digital con datos en formato

Q15, también conocido como formato f raccional. Este es un formato de aritmética de punto
fijo que consiste en 15 números fraccionarios y un bit de signo (MSb). El formato f raccional
es compatible con el formato entero pero interpretando los datos de una manera diferente.
La Figura 4-19 muestra qué valor tiene cada bit de acuerdo a su posición es el formato
f raccional. la Figura 4-20 hace una equivalencia entre los formatos entero y f raccional.

Esto implica que los datos expresados en formato f raccional tienen un rango que va desde
−1 hasta 0,999969482422 en el dsPIC .R

Son 3 los tipos de operaciones que se pueden aplicar en el dominio temporal a una señal
digital de audio: escalamiento, retraso y adición. El escalamiento consiste en multiplicar la
señal por un factor llamado ganancia, el retraso de la señal está asociado al almacenamiento
de muestras durante cierto tiempo y la adición se realiza entre señales presentes o pasadas
generalmente multiplicadas por un coeficiente.
4.4 Operaciones de procesamiento digital en el dominio temporal 77

Figura 4-21.: Representación de la operación escalamiento.

4.4.1. Escalamiento de la señal de audio


La señal se puede escalar de dos maneras: mediante multiplicación por un valor de ganancia o
mediante desplazamiento de bits. Si el resultado es una señal de mayor amplitud la operación
se conoce como amplificación, si el resultado tiene menor amplitud entonces se conoce como
atenuación. La Figura 4-21 es la representación de esta operación en un diagrama de bloques.

Multiplicación DSP
El multiplicador del dsPIC R acepta operandos de 17 bits, como los datos de entrada son

de 16 bits existe una conversión interna que agrega el bit faltante, el resultado de esta ope-
ración tiene un tamaño de 32 bits. Las multiplicaciones DSP se consideran como resultados
atenuados debido al formato f raccional.

Existen 4 instrucciones DSP que permiten realizar multiplicaciones, estas se listan en la Ta-
bla 4-1.

Tabla 4-1.: Instrucciones DSP que permiten rea-


lizar multiplicaciones.
Instrucción DSP Operación que realiza
MPY a=b×c
MPY.N a = −b × c
MAC a=a+b×c
MSC a=a−b×c

La instrucción MPY es la multiplicación directa; MPY.N es la misma operación pero invir-


tiendo el signo del resultado. Las otras dos instrucciones son análogas a las anteriores pero
en este caso el resultado es sumado a un acumulador.
78 4 Procesamiento digital de audio con operaciones en el dominio temporal

Multiplicación MCU
Las multiplicaciones MCU, al igual que las multiplicaciones DSP, son de 16x16 bits pero se
diferencian en que la multiplicación MCU permite elegir si el resultado se almacenará en un
acumulador DSP o directamente en los registros W, además permite seleccionar si el resulta-
do será expresado en 16 o 32 bits. El registro fuente puede ser cualquiera de los registros W
y el registro destino debe ser un registro W de dirección par. Cuando la multiplicación está
indicada para una respuesta de 32 bits, el byte más significativo quedará almacenado en la
dirección impar adyacente mayor a la del registro destino. Una de las ventajas de esta opera-
ción es que el segundo operando admite direccionamiento inmediato de un literal de 5 bits,
la multiplicación MCU permite seleccionar el signo con el que se interpretarán los operandos.

La instrucción M U L dará una respuesta de 32 bits mientras que la instrucción M U LW


dará una respuesta de 16 bits, esta última se usa en casos donde se sabe que la magnitud a
multiplicar dará un resultado pequeño. La Tabla 4-2 resume las operaciones de multiplicación
MCU, cada una se ejecuta en un ciclo de máquina.

Tabla 4-2.: Instrucciones MCU que permiten realizar multiplicaciones.


Instrucción MCU Operación que realiza
MUL 1 Multiplica W0 por el valor de la memoria de
datos indicado, almacena la respuesta en W2
y W3.
MUL.SS ; MULW.SS Multiplicación entre enteros con signo.
MUL.SU ; MULW.SU Entero con signo por entero sin signo.
MUL.US ; MULW.US Entero sin signo por entero con signo.
MUL.UU ; MULW.UU Multiplicación entre enteros sin signo.
1
Se ha ignorado la operación MUL.B considerando que las multiplicaciones de tipo
byte no son relevantes para el procesamiento digital de audio.

Desplazamiento de bits
El desplazamiento de bits se realiza mediante el registro de desplazamiento, el cual puede
desplazar un máximo de 16 bits por ciclo. De esta forma es posible tanto amplificar como
atenuar una señal mediante operaciones de desplazamiento a la izquierda y desplazamiento
a la derecha respectivamente. La amplificación en un sistema digital es muy impredecible
respeto a las posibles saturaciones, por eso generalmente las operaciones de escalamiento de
la señal se limitan a atenuarla mediante desplazamientos a la derecha. En la Tabla 4-3 se
consignan las instrucciones que permiten realizar desplazamientos, las tres primeras aplican
a la memoria de datos y las otras tres operan sobre los acumuladores de 40 bits.
4.4 Operaciones de procesamiento digital en el dominio temporal 79

Figura 4-22.: Representación de la operación retardo de señal.

Tabla 4-3.: Instrucciones DSP que permiten realizar desplazamientos.


Instrucción Operación que realiza
ASR Desplazamiento aritmético hacia la derecha.
LSR Desplazamiento lógico hacia la derecha.
SL Desplazamiento hacia la izquierda.
SFTAC Desplazamiento del acumulador.
SAC; SAC.R Almacena el acumulador con desplazamiento opcional.
LAC Carga el acumulador con desplazamiento opcional.

Además de estas, la instrucción ADD también permite desplazamientos opcionales. El des-


plazamiento de bits más común en el procesamiento digital de audio es el aritmético hacia
la derecha, el cual permite conservar el signo de la muestra y nunca resulta en saturación.

4.4.2. Retardo de la señal de audio


El retraso de una señal digital está asociado al almacenamiento en memoria de las muestras.
Para la tarjeta diseñada, las muestras obtenidas por el ADC se pueden almacenar mediante
el módulo DMA o manualmente copiando el valor del búfer para almacenarlo en alguna
parte de la memoria RAM. El primer método permite un almacenamiento de máximo 2
kb, y el segundo un almacenamiento máximo equivalente a la RAM del dsPIC R (16 kb

para el DSPIC33FJ128GP802). En algún momento del programa, las muestras almacenadas


serán requeridas para cumplir el procesamiento que se esté llevando a cabo. Esta operación
tiene diferentes tipos de direccionamiento que permiten optimizar el almacenamiento y la
obtención de las muestras retrasadas, un direccionamiento muy común en este caso es el
direccionamiento modular, usado para el tratamiento de búfer circulares. La Figura 4-22 es
la representación de esta operación en un diagrama de bloques.

4.4.3. Adición de señales de audio


La adición de señales es la operación de suma o resta entre dos o más señales, un ejemplo
tı́pico es la adición de una señal de audio actual con una señal de audio atenuada y retrasada,
80 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-23.: Representación de la operación adición de señales.

el resultado es conocido como eco y es el más sencillo ejemplo de procesamiento donde se


involucran las 3 operaciones del dominio temporal: retrasa la señal, escala la señal retrasada
y la suma a la señal actual. La Figura 4-23 es la representación de esta operación en un
diagrama de bloques. Las instrucciones de la tabla 4-4 involucran adición de señales.

Tabla 4-4.: Instrucciones DSP que permi-


ten realizar adición de señales.
Instrucción Operación que realiza
ADD a=a+b
SUB a=a−b
MAC a=a+b×c
MSC a=a−b×c

4.5. Efectos de audio con base en escalamiento de la


señal
4.5.1. Ganancia
Éste es el procesamiento digital más sencillo que se puede efectuar con una señal, consiste en
tomar las muestras de dicha señal y aplicarle cualquiera de las operaciones mencionadas en
la sección 4.4.1 siguiendo un diagrama de flujo como el de la Figura 4-24, el cual contiene
una subrutina llamada P rocesar muestra encargada de realizar el respectivo procesamiento
de la señal de audio.

4.5.2. Trémolo
Las técnicas de modulación de amplitud pueden aplicarse a señales de audio para obtener
un efecto llamado trémolo. Esta idea consiste en aplicar una señal de baja frecuencia, menor
a 20 Hz, que se encargará de modular a la señal de audio, la primera se comportará como
señal moduladora y la última como señal portadora. Este tipo de procesamiento escala la
4.5 Efectos de audio con base en escalamiento de la señal 81

Figura 4-24.: Procesamiento muestra a muestra.

señal de audio de acuerdo a una envolvente creada por la señal moduladora. Según [11, pp.
303-304] la ecuación que representa una señal AM está dada por:

s (t) = Ac [1 + m (t)] coswc t


Donde Ac expresa la potencia de la señal, m (t) la señal moduladora y coswc t la señal
portadora, el comportamiento de esta modulación se puede apreciar en la Figura 4-25.
Ignorando la potencia de la señal y generalizando la señal portadora a señales con cualquier
forma x (t) se obtiene la siguiente ecuación:

Figura 4-25.: Gráfico general de una modulación AM [11, p. 304].


82 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-26.: Sistema de trémolo mediante modulación AM.

s (t) = [1 + m (t)] x (t)


Por último, se debe expresar esta ecuación en forma digital. Teniendo en cuenta que una
modulación AM del 100 % implica que la amplitud de la señal de audio aumentará al doble,
se utilizará una ecuación normalizada donde el factor de modulación tenga un máximo de
1, con esto se previene la saturación en el dsPIC ,
R esta ecuación entonces quedará de la

siguiente manera:

y [n] = (0,5 + m [n]) × x [n] ; |m [t]| ≤ 0,5


Donde x[n] es la señal portadora (señal de audio) y m[n] es la señal moduladora (cualquier
señal de baja frecuencia), esta última puede ser, por ejemplo, una señal periódica guardada
en un búfer circular. El diagrama de bloques de este sistema es mostrado en la Figura 4-26
y es implementado con el código a continuación:

. include ” p33fj128gp802 . inc ”

. equ AmpPort , 0 x4000 ; Amplitud de p o r t a d o r a n o r m a l i z a d a a 0 . 5

. g l o b a l ModAmplitud ; y [ n ] = ( AmpPort + FactorMod ∗ Moduladora ) ∗ (


Muestra )

ModAmplitud :
mov Muestra , w4 ; S e ñ a l de a u d i o
mov FactorMod , w5 ; F a c t o r de e s c a l a d o de s e ñ a l moduladora
mov Moduladora , w6 ; Parámetros para e s c a l a r l a s e ñ a l moduladora

mpy w5∗w6 , A ; E s c a l a l a s e ñ a l moduladora


sac . r A, w6 ; S e ñ a l moduladora e s c a l a d a

mov #AmpPort , w5 ; Amplitud de l a p o r t a d o r a


lac w5 , A
4.6 Efectos de audio con base en retardo de la señal 83

add w6 , A ; Suma amplitud de p o r t a d o r a con s e ñ a l moduladora


sac . r A, w7 ; Extrae e l r e s u l t a d o en W7

mpy w4∗w7 , A ; M u l t i p l i c a l a muestra por e l f a c t o r de modulación


sac . r A, w7 ; Extrae e l r e s u l t a d o d e l acumulador A en W7

mov w7 , MuestraModulada ; y l o e n vı́ a a MuestraModulada

return
. end

Nótese que el factor de modulación es el principal parámetro en esta operación, este incide
directamente en la envolvente de la señal de audio, la forma de la envolvente está dada por
la muestra guardada en la variable M oduladora:

Es posible usar pocas muestras de la señal moduladora si el búfer circular se recorre más
lentamente a través de la repetición de una misma muestra antes de pasar a la siguiente
como se observa en el diagrama de flujo de la Figura 4-27 donde la variable C se encarga
de contar las veces que se repite una muestra de la señal moduladora antes de obtener una
muestra nueva desde un búfer circular.

4.6. Efectos de audio con base en retardo de la señal


4.6.1. Eco
La Figura 4-28 representa un sencillo modelo de generación de eco. De forma artificial, el
efecto de eco se logra mezclando la señal actual con la misma señal pero retrasada, esta
última multiplicada por un factor de atenuación, la ecuación que describe este efecto es la
siguiente:

y [n] = x [n] + Gx [n − N ] , |G| < 1


Y su función de transferencia es:

H (z) = 1 + Gz −N
El parámetro N indica la cantidad de muestras de retraso, esto representa el tiempo de refle-
xión; el parámetro G es la ganancia de la señal reflejada, la cual debe ser siempre menor a 1.
La Figura 4-28 da como resultado una única reflexión de la señal, para dar mayor realismo
al eco se debe agregar más reflexiones las cuales continúen atenuándose hasta desaparecer,
para este fin, al sistema se puede agregar más lı́neas de retardo iguales pero con factores de
84 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-27.: Diagrama de flujo propuesto para aplicar efecto de trémolo.

Figura 4-28.: Sistema de eco con una sola reflexión por muestra.
4.6 Efectos de audio con base en retardo de la señal 85

Figura 4-29.: Sistema de eco con múltiples reflexiones por muestra.

atenuación exponenciales al primer factor, de este modo se obtiene más cantidad de reflexio-
nes finitas. Un modo sencillo de implementar un efecto de eco realista es mediante un sistema
recurrente, esto se logra conectando la lı́nea de retardo en modo realimentación como en la
Figura 4-29 para prolongar infinitamente la cantidad de reflexiones por muestra de sonido.
Aunque esto es un sistema de respuesta infinita al impulso, en la práctica la respuesta es
finita debido a las caracterı́sticas de los sistemas digitales.

A continuación se ilustra una rutina de generación de eco escrita en ensamblador la cual


implementa los modelos anteriormente señalados, la diferencia entre ellos está en si el búfer
guardará la entrada o la salida, esto se hará desde otra parte del programa. La lı́nea de
retardo es más eficiente si se maneja como búfer circular.

. include ” p33fj128gp802 . inc ”

. global Eco
Eco :
mov MuestraActual , w4 ; Parámetros para l o s r e g i s t r o s de t r a b a j o
mov F a c t o r , w5 ;
mov MuestraRetrasada , w6

lac w4 ,A;
mac w5∗w6 ,A
sac . r A, w7 ; Extrae e l r e s u l t a d o d e l acumulador en W7
mov w7 , MuestraConEco ;

return
. end
86 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-30.: Sistema de reverberación con respuesta en frecuencia plana.

4.6.2. Reverberación
El tiempo de retraso define si la señal se considera eco o reverberación, para el primer caso
el tiempo debe ser superior a 50 ms, lo que equivale a unos 8.5 metros de distancia entre la
fuente de sonido y el obstáculo que lo refleja. Aunque el mismo sistema de la Figura 4-29
puede utilizarse para generar reverberación, esta no sonará muy natural porque este sistema
crea una respuesta en frecuencia de tipo peine. Para generar reverberaciones más realistas se
han propuesto modelos [15, Cap. 3] como el de la Figura 4-30, el cual consiste en un sistema
con estructura pasa todas. Su ecuación en diferencias está dada por:

y [n] = Gx [n] + x [n − N ] − Gy [n − N ]
Y su función de transferencia es:

G + z −N
H (z) = , |G| < 1
1 + Gz −N
La siguiente rutina escrita en ensamblador implementa el efecto de reverberación con base
en el modelo de la Figura 4-30:

. include ” p33fj128gp802 . inc ”

. global Reverberacion

Reverberacion :
mov M ue st ra R et ra s o , w4 ; Carga l o s p a r á m e t r o s en l o s r e g i s t r o s W
mov F a c t o r , w5 ;
mov MuestraEntrada , w6
mov M u e s t r a S a l i d a , w7
4.6 Efectos de audio con base en retardo de la señal 87

lac w4 ,A; ; Carga e l v a l o r de r e t r a s o en B


mac w5∗w6 ,A ; Atenúa l a e n t r a d a y l a r e s t a a B

lac w6 , B ; ; Carga e l v a l o r de l a e n t r a d a en A
msc w5∗w7 , B ; Atenúa l a s a l i d a y l a suma a A

sac . r B, w4 ; B t i e n e un nuevo v a l o r que i r á a l a l i n e a de r e t r a s o


mov w4 , M u e s t r a R e t r a s o ; l o guarda para l l e v a r a l b ú f e r c i r c u l a r

sac . r A, w7 ; A c o n t i e n e l a nueva s a l i d a
mov w7 , M u e s t r a S a l i d a ; l a guarda para u t i l i z a r en l a s i g u i e n t e r u t i n a

return
. end

4.6.3. Flanger
Este efecto se obtiene al sumar a la señal original una copia retrasada, atenuada y con un
búfer de retardo de tamaño variable. Por lo tanto, el sistema de la Figura 4-28 puede em-
plearse para este fin haciendo que el búfer que almacena las muestras varı́e su tamaño. El
siguiente código se encarga de las operaciones para llevar a cabo este efecto:

. include ” p33fj128gp802 . inc ”

. global Flanger

Flanger :
mov MuestraActual , w4 ; Carga l o s p a r á m e t ro s en l o s r e g i s t r o s de
trabajo
mov F a c t o r , w5 ;
mov MuestraRetrasada , w6

lac w4 ,A;
mac w5∗w6 ,A
sac . r A, w7 ; Extrae e l r e s u l t a d o d e l acumulador en W7
mov w7 , MuestraConFlanger ;

return
. end

En este caso se observa que este código es equivalente al del efecto de eco, los ajustes entonces
deben hacerse desde el programa principal.
88 4 Procesamiento digital de audio con operaciones en el dominio temporal

4.7. Resultados
De este capı́tulo se han derivado cuatro prácticas de laboratorio, resumidas en la Tabla 4-5.
Cada una de estas prácticas contiene unos ejemplos y cada ejemplo consiste en un proyecto
creado con el IDE MPLAB R X.

Tabla 4-5.: Prácticas de laboratorio diseñadas para procesamiento digital de audio en el


dominio temporal.

Práctica Proyecto Descripción

Ejemplo 1.1 Tratamiento de las muestras punto a


1. Muestreo y reconstrucción punto.
de señales de audio. Ejemplo 1.2 Tratamiento de las muestras punto a
punto con interrupción del DAC.
Ejemplo 1.3 Tratamiento de las muestras mediante
bloques DMA.
Ejemplo 1.4 Tratamiento de las muestras median-
te bloques DMA con interrupción del
DAC.
2. Generación de señales Ejemplo 2.1 Señal sinusoidal, señal triangular,
periódicas mediante tablas. señal diente de sierra, señal cuadrada.
Ejemplo 2.2 Direccionamiento modular.
Ejemplo 3.1 Escalamiento mediante desplazamien-
3. Operaciones de escalamiento
tos.
de la señal de audio.
Ejemplo 3.2 Escalamiento mediante multiplicación.
Ejemplo 3.3 Modulación de amplitud.
Ejemplo 4.1 Eco.
4. Operaciones de retraso
Ejemplo 4.2 Reverberación.
de la señal de audio.
Ejemplo 4.3 Flanger.

4.7.1. Validación de las prácticas de muestreo y reconstrucción de


señales de audio
Para medir la frecuencia de muestreo del sistema el método empleado ha sido configurar
un pin del DSC como salida y enviar un pulso cada vez que el DAC acepta una nueva
muestra, este pin se conectó a un osciloscopio para observar y medir esta frecuencia. La
Tabla 4-6 1 resume los resultados de las mediciones de las frecuencias de muestreo que han

1
Datos calculados para el dsPIC33FJ128GP802 con frecuencia de trabajo de 79,2576M Hz
4.7 Resultados 89

sido implementadas en el dsPIC , R en dicha tabla también se incluye la cantidad máxima de

ciclos de máquina disponible para realizar procesamiento muestra a muestra. La Figura 4-11
también sirve como referencia del correcto funcionamiento de los algoritmos de muestreo y
reconstrucción.

Tabla 4-6.: Implementación en dsPIC


R de las frecuencias de muestreo tı́picas en el audio

digital.
Frecuencia Registro Frecuencia Frecuencia Núm. máximo de
a obtener (Hz) DACDIV teórica (Hz) medida (Hz) instrucciones 1
100000 5 103200 102497 374
48000 12 47631 47332 821
44100 13 44229 43952 885
32000 18 32589 32387 1206
22050 27 22114 21979 1782
16000 38 15877 15779 2485
11025 55 11057 10989 3574
8000 76 8042 7993 4917
1
Cantidad máxima por muestra sin tener en cuenta el TAD del ADC.

4.7.2. Validación de las prácticas de generación de señales periódicas


Cuatro tipos de señales, cada una con 120 muestras, han sido implementadas en el sistema
embebido trabajando con una frecuencia de muestreo teórica de 44229Hz. Las señales im-
plementadas son de las siguientes formas: sinusoidal, triangular, diente de sierra y cuadrada.
Se han diseñado de tal forma que las 120 muestras sean equivalentes a 1 perı́odo y que su
amplitud no exceda (−1, 1) para el formato f ractional, con esto, la frecuencia teórica de
cada una de ellas está dada por:

fs
fsalida =
Nmuestras
44229 Hz
fsalida =
120
fsalida ≈ 368,58 Hz
La tabla 4-7 compara la frecuencia medida con la frecuencia esperada.

Tabla 4-7.: Medición de la frecuencia de la señal generada con el dsPIC .


R

Frecuencia esperada Frecuencia medida Porcentaje de error


368,58 Hz 366,40 Hz 0,59 %
90 4 Procesamiento digital de audio con operaciones en el dominio temporal

Figura 4-31.: Modulación de amplitud mediante el dsPIC .


R

4.7.3. Validación de las prácticas con operaciones de escalamiento de


la señal de audio
La Figura 4-31 es una captura tomada del osciloscopio en donde se tiene una señal de entra-
da de 3 v pk-pk; la salida, que consiste en la modulación de dicha señal, ha sido medida en
el pin positivo del DAC1 (DAC1RP). El comportamiento de este procesamiento es suficiente
para demostrar que el sistema desarrollado puede realizar cualquier tipo de escalamiento de
la señal, incluyendo la modulación AM.
5. Implementación de filtros FIR y filtros
IIR para procesamiento digital de
audio
La operación más común del procesamiento de señales es el filtrado, el cual consiste en la
modificación del espectro de frecuencia de una señal. En el campo del audio, esta modificación
es usualmente conocida como ecualización. Los filtros digitales están definidos por ecuaciones
en diferencias, las cuales implican repetidas operaciones de multiplicación y acumulación,
este tipo de operaciones son llamadas operaciones MAC y la tecnologı́a dsPIC R permite

realizar una operación MAC en un solo ciclo de máquina, otra ventaja de la tecnologı́a
dsPIC R para este procesamiento es la posibilidad de manejar direccionamiento modular

para la implementación de estos sistemas.


92 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

5.1. Introducción a los filtros digitales


Los filtros son la forma más común del procesamiento de señales, se usan para modificar el
espectro de una señal, pudiendo alterar su magnitud o su fase en las frecuencias deseadas,
con esto se consigue mejorar dicha señal según el objetivo buscado. Los filtros digitales han
sido impulsados por el desarrollo de la computación, actualmente los procesadores digitales
ofrecen muchas ventajas de los filtros digitales sobre los analógicos.

La siguiente ecuación describe matemáticamente a la mayorı́a de los filtros digitales:


N
X −1 N
X −1
y [n] + ak y [n − k] = bk x [n − k]
k=0 k=0

Donde ak y bk son los coeficientes del filtro, éstos ponderan los valores tomados de la salida
y de la entrada de la señal respectivamente. Los filtros expresados con la anterior ecuación
son llamados filtros IIR (Infinite Input Response) porque al aplicar un impulso unitario al
sistema éste tendrá una respuesta infinita debido a la realimentación.

Si en la anterior ecuación los valores de ak valen cero entonces la ecuación se reduce a la


siguiente:
M
X −1
y [n] = bk x [n − k]
k=0

Esta ecuación representa un filtro que no depende de la salida del sistema y es llamado
filtro FIR (Finite Input Response) debido a que al aplicar un impulso unitario al sistema la
respuesta tendrá una longitud finita, la cual coincide con los coeficientes.

Los coeficientes de un filtro digital definen el comportamiento del sistema, si se quiere mo-
dificar estos coeficientes bastará un simple cambio de su valor guardado en memoria, esto
permite que el rediseño de un filtro digital sea muy sencillo y sólo requiere cambios en soft-
ware: cualquier cambio en los coeficientes cambia la función de transferencia del filtro.

En un filtro digital se puede cambiar fácilmente los parámetros como la frecuencia de mues-
treo, frecuencias de corte, rizado, bandas de transición, incluso se puede cambiar la estructura
del filtro y todo esto sin alterar el hardware. Estos filtros Son mucho más precisos y confiables
que los analógicos y se puede obtener mucha más precisión haciendo cambios en la resolución
de los coeficientes o en la cantidad de ellos. Son más económicos para la implementación, la
adaptación y el mantenimiento, sus datos pueden ser almacenados y a lo largo del tiempo
no sufrirán degradación como ocurrirı́a con los componentes analógicos. Otra ventaja es la
posibilidad de implementar sistemas con duración del impulso finita y linealidad de fase, ca-
racterı́sticas imposibles de lograr con filtros analógicos. El ancho de banda puede ser incluso
5.2 Diseño de filtros FIR 93

Figura 5-1.: Esquema general de un sistema de filtro FIR.

menos de 5 Hz, muy útil en señales biomédicas o sı́smicas.

Las principales desventajas están en los efectos de la cuantización producidos por el tipo de
aritmética de los sistemas digitales, pues el número de bits para almacenar los números es
finito y esto produce no-linealidades lo que conlleva a ruidos inherentes en estos sistemas.
Los coeficientes cuantificados desvı́an el comportamiento real del sistema del comportamien-
to ideal con coeficientes teóricos. Otra desventaja de los filtros digitales es que aún no son
eficientes para el uso en altas frecuencias.

Un único sistema DSP puede implementar muchos filtros analógicos equivalentes.

5.2. Diseño de filtros FIR


Un sistema tı́pico de filtro FIR es como el mostrado en la Figura 5-1, esta estructura es
llamada estructura directa porque es la implementación inmediata de la ecuación en diferen-
cias que describe al filtro.

Para diseñar un filtro FIR hay básicamente tres métodos:


94 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

Método de las ventanas

Muestreo en frecuencia

Rizado constante
El método más difundido es el método de las ventanas. Existen diversos tipos de ventanas
que han sido desarrolladas para la implementación de filtros FIR, son dos los parámetros
más importantes para analizar una ventana en el dominio frecuencial:
Ancho del lóbulo principal: a mayor anchura del lóbulo mayor será la banda de transición,
esta caracterı́stica se controla con el parámetro M. Si M es mayor, será menor la banda
de transición pero el filtro tendrá mayor complejidad.

Atenuación del primer lóbulo secundario: la relación entre la amplitud el lóbulo prin-
cipal y el primer lóbulo secundario permite estimar la razón de rizado.
La ventana rectangular es la más sencilla pero la menos efectiva en atenuación, la ventana
triangular trata de minimizar el fenómeno de Gibbs causado por la naturaleza discontinua de
la ventana rectangular, consecuentemente han sido creadas más ventanas con sus respectivas
caracterı́sticas.

Los filtros FIR son siempre estables y se puede comprobar fácilmente analizando la transfor-
mada z de su función de transferencia, pues como se puede observar se trata de un sistema
sin polos:
M
X −1
H [z] = bk z −k
k=0
Otra caracterı́stica de los filtros FIR es que estos son los únicos con capacidad de tener una
respuesta lineal en fase, lo cual es imposible con un sistema analógico. Una gran desventaja
es que normalmente se necesita un orden muy alto comparado con los filtros IIR.

El método más común para el diseño de filtros FIR es conocido como método de las ventanas,
otro método para el mismo fin es el muestreo en frecuencia, pero este último tiene una baja
atenuación de la banda de rechazo.

Para diseñar un filtro digital, se hace necesario conocer las especificaciones del filtro, debe
tenerse en cuenta que la frecuencia está normalizada en radianes y no en Hertz, siendo el
valor de πrad la máxima frecuencia.

En la Figura 5-2 se tiene una gráfica que sirve como base para especificar un filtro pasa
bajas. En el eje de las abscisas, el cual corresponde a la frecuencia, se puede identificar tres
intervalos importantes:
5.2 Diseño de filtros FIR 95

Figura 5-2.: Especificaciones de un filtro pasa bajas digital [30].

Banda de paso (0, wp )

Banda de transición (wp , ws )

Banda de atenuación (ws , π)

Donde:

wp : frecuencia de corte normalizada en la banda de paso

ws : frecuencia de corte normalizada en la banda de rechazo

En el eje de las ordenadas, correspondiente a la amplitud, tenemos dos parámetros clave:

δ1 : rizado máximo en la banda de paso

δ2 : rizado máximo en la banda de rechazo

Las especificaciones de un filtro pasa altas son las mismas que el del filtro pasa bajas pero
intercambiando la banda de paso con la de rechazo como se observa en la Figura 5-3.
De forma similar, son las especificaciones de los filtros pasa banda (Figura 5-4) y rechaza
banda (Figura 5-5), pero en este caso tenemos dos frecuencias de corte para banda de paso
y dos frecuencias de corte para banda de rechazo: wp1 , wp2 , ws1 , ws2 .

Para utilizar el método de diseño con ventanas el primer paso es asumir que se diseñará un
filtro ideal, el cual debe tener una respuesta como cualquiera mostrada en la Figura 5-6.

Utilizando la transformada inversa de Fourier se obtiene la Tabla 5-1 con los valores de los
4 tipos tı́picos de filtros ideales.
96 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

Figura 5-3.: Especificaciones de un filtro pasa altas digital [30].

Figura 5-4.: Especificaciones de un filtro pasa banda digital [30].

Figura 5-5.: Especificaciones de un filtro rechaza banda digital [30].


5.2 Diseño de filtros FIR 97

Figura 5-6.: Respuestas ideales de los filtros.

Tabla 5-1.: Fórmulas de la Transformada Inversa de Fourier de los


filtros ideales.
Tipo de filtro Respuesta en frecuencia hd[n]
( sen[w (n−M )]
c
π(n−M )
; n 6= M
Pasa bajas hd [n] = w
c
; n=M
( π
1 − wπc ; n 6= M
Pasa altas hd [n] =
− sen[w c (n−M )]
π(n−M )
; n=M
( sen[w (n−M )] sen[w (n−M )]
c2
− π(n−M c1
; n 6= M
Pasa banda hd [n] = w π(n−M−w
) )
c2
π
c1
; n=M
( sen[w
c1 (n−M )]
π(n−M )
− sen[w c2 (n−M )]
π(n−M )
; n 6= M
Rechaza banda hd [n] = wc2 −wc1
1− π
; n=M

Donde N es el orden el filtro y M es una constante equivalente a N/2, de aquı́ se deduce


que si el filtro es de orden par, M será un número entero y la respuesta en frecuencia será
simétrica alrededor del valor M .

Las ventanas son funciones preestablecidas que se aplican a las funciones de transferencia
de los filtros para suavizar su salida, la ventana más sencilla de implementar es la de tipo
rectangular, pero debido a sus caracterı́sticas la señal de salida sufre una distorsión conside-
98 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

rable, por lo tanto a lo largo del tiempo se han desarrollado otro tipo de ventanas como la
triangular y las que buscan eliminar las discontinuidades abruptas, entre ellas, las ventanas
más conocidas son: Hamming, Blackman, Hanning.

Con la información teórica aquı́ consignada ya es posible el diseño de un filtro FIR, el siguiente
ejemplo muestra el diseño de un filtro FIR pasa bajas utilizando la ventana rectangular y
las siguientes especificaciones:

Orden del filtro: N = 10

Frecuencia de muestreo: 44100Hz

Frecuencia de corte: 4,41kHz

El número de coeficientes es N + 1 = 11. En la función de la ventana rectangular todos los


coeficientes tienen valor 1, quedando dicha función ası́:

w [n] = 1; 0 ≤ n ≤ 10
Es necesario tener presente la ecuación para el filtro pasa bajas ideal de la Tabla 5-1.
Recordando que M equivale a N/2 se tiene:

N
M=
2
10
M=
2
M =5
La frecuencia de corte debe ser normalizada con la siguiente expresión:

2πfc 2π (4410)
wc = =
fs 44100

wc = 0,2π
Tanto M como wc se reemplazan en hd [n], los coeficientes del filtro son obtenidos multipli-
cando la función del filtro ideal por la función de la ventana:

h [n] = w [n] · hd [n] ; 0 ≤ n ≤ 10


La Tabla 5-2 resume los resultados, en la columna fractional se ha escrito la conversión de
los coeficientes al formato que maneja el dsPIC .
R
5.3 Diseño de filtros IIR 99

Tabla 5-2.: Coeficientes calculados para un fil-


tro FIR.
n h[n] x2 15 Fractional
0 0 0 0x0000
1 0.04677446419 1533 0x05FD
2 0.1009102305 3307 0x0CEB
3 0.1513653457 4960 0x1360
4 0.1870978568 6131 0x17F3
5 (M) 0.2 6554 0x199A
6 0.1870978568 6131 0x17F3
7 0.1513653457 4960 0x1360
8 0.1009102305 3307 0x0CEB
9 0.04677446419 1533 0x05FD
10 0 0 0x0000

El mismo método puede ser utilizado para el cálculo de los demás tipos de filtro, utilizando
la respectiva ecuación de filtro ideal, calculando los coeficientes de la ventana que se va a
utilizar, multiplicando estas dos funciones y finalmente reemplazando los valores de M y wc
se obtiene la fórmula que depende de n, con la cual finalmente se puede calcular cada coefi-
ciente del filtro. Para facilitar el diseño de filtros existen diversos programas de cómputo, uno
de ellos es el dsPIC R FD Lite, el cual consiste en un asistente para el cálculo de coeficientes

de filtros dados ciertos parámetros, su versión de prueba tiene algunas limitaciones pero es
suficiente para el enfoque educativo.

5.3. Diseño de filtros IIR


Un sistema de filtro IIR en estructura directa es como el mostrado en la Figura 5-7, aunque
la implementación de esta estructura permite un procesamiento rápido, es más común la
implementación de la estructura mostrada en la Figura 5-8, la cual es llamada estructura
Traspuesta de tipo II, su particularidad es que funciona muy bien cuando los polos están
cercanos a la circunferencia unidad.

El diseño de un filtro IIR no es tan intuitivo como el de un filtro FIR, uno de los métodos
más utilizados para realizar este diseño se basa en tomar como referencia un filtro analógico
y mediante su función de transferencia se hace una conversión hacia el dominio Z; esto es
posible mediante una operación llamada Transformada Bilineal.
100 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

Figura 5-7.: Esquema general de un sistema de filtro IIR con estructura Directa tipo I.

Figura 5-8.: Esquema general de un sistema de filtro IIR con estructura Traspuesta tipo II.
5.4 Biblioteca DSP del compilador XC16 101

5.4. Biblioteca DSP del compilador XC16


Es una biblioteca desarrollada por Microchip para permitir el uso de operaciones DSP me-
diante el lenguaje de programación C. El objetivo de esta herramienta es que el uso del
lenguaje de programación sea lo más eficiente al implementar las funciones más comunes del
procesamiento digital de señales, dicha biblioteca abarca en total 52 funciones.

Para el uso de esta biblioteca se necesitan 2 archivos: el archivo de cabecera dsp.h y el


archivo libdsp-omf.a, el cual contiene todos los objetos individuales de cada función. El
primer archivo es usado por el compilador y el segundo por el enlazador.

Para incrementar las bondades de las instrucciones DSP, el tipo de datos preferido para
trabajar este tipo de funciones es el f ractional, este tipo de dato se caracteriza por tener
el bit más significativo como indicador de signo, y los 15 bits restantes son fraccionarios.
Este formato es conocido como Q1.15 (Representación binaria con punto fijo y magnitud
con signo). Básicamente, esto representa números desde −1,00 hasta 1,00) Cuando en las
funciones hay multiplicaciones, los cálculos se hacen usando el acumulador de 40 bits y el
formato utilizado es el 9.31. Esto es: 31 bits fraccionarios, 8 bits de magnitud entera y un
bit de signo. Después de utilizar el acumulador, el resultado es revertido a formato Q1.15
mediante redondeo.

Un punto importante es que en las operaciones de esta biblioteca no se hace uso de la


memoria RAM, por lo que los valores que se quieran asignar a variables deben hacerse ma-
nualmente por el programador, malos usos de la memoria RAM pueden provocar resultados
inesperados, por lo que hay que ser muy cuidadosos en este punto. Para la memoria RAM se
recomienda el uso de operandos en los espacios x e y para lograr mejor rendimiento. Muchas
funciones DSP cambian el modo de operación del dsPIC R a través del registro CORCON

(Control del núcleo), regresando a su estado anterior después de la ejecución de dicha función.

Para hacer filtrado con dsPIC R se deben tener organizados los datos como un vector

f ractional (fraccionario), el hardware de los dsPIC R está optimizado para la realización

de operaciones matemáticas discretas que en principio son ecuaciones en diferencias.

En cuanto a filtrado, la biblioteca DSP cuenta con 10 funciones diseñadas para el tratamiento
con filtros FIR y 5 para el tratamiento con filtros IIR:

FIRStruct

FIR

FIRDecimate
102 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

FIRDelayInit

FIRInterpolate

FIRInterpDelayInit

FIRLattice

FIRLMS

FIRLMSNorm

FIRStructInit

IIRCanonic

IIRCanonicInit

IIRLattice

IIRLatticeInit

IIRTransposed

5.5. Diseño de un oscilador digital para dsPIC


R

A continuación se muestra el código para desarrollar un oscilador digital, será diseñado pa-
ra una frecuencia de audio de 880Hz pero puede ser fácilmente ajustado a otro valor de
frecuencia cambiando el valor de un solo coeficiente. Este tipo de oscilador se basa en las
propiedades de estabilidad de los filtros IIR, cuando el diagrama de polos está dentro de la
circunferencia unidad el sistema IIR se comporta como un filtro, si los polos están por fuera
son un sistema inestable, pero si los polos se ubican en la circunferencia obtendremos un
sistema oscilatorio.

La ecuación en diferencias de este sistema es la siguiente:

y [n] = −a1 y [n − 1] − y [n − 2]
En donde el factor a1 es el único parámetro que variará la frecuencia, los requerimientos
computacionales son: 2 espacios de memoria para los coeficientes, dos espacios de memoria
para las señales retrasadas y un espacio de memoria para la señal actual, ası́:
5.5 Diseño de un oscilador digital para dsPIC
R 103

// C o e f i c i e n t e s d e l f i l t r o IIR de segundo orden . . .


f r a c t i o n a l a1 = 0x7EFF ; // E s t e v a l o r r e p r e s e n t a 0 . 9 9 2 ( para o b t e n e r 880 Hz con
f s = 44100)
f r a c t i o n a l a2 = 0xC000 ; // E s t e v a l o r r e p r e s e n t a −0.5

// C o n d i c i o n e s i n i c i a l e s d e l f i l t r o IIR . . .
fractional y = 0; // S a l i d a d e l s i s t e m a
f r a c t i o n a l z1 = 0 x0000 ; // Valor r e t r a s a d o 1 muestra
f r a c t i o n a l z2 = 0x0A46 ; // 0x0A46 ; // Valor r e t r a s a d o 2 m u e s t r a s

Se empezará analizando las condiciones iniciales, tanto los valores pasados como el actual
deben ser inicializados en cero pero en este caso es un oscilador que requiere una excitación
inicial, por eso el valor de z2 no es cero, puede ser usado cualquier valor arbitrario en este caso.

El cálculo de los coeficientes se hizo asumiendo la frecuencia de muestreo del DAC en


44100Hz que es una frecuencia tı́pica de audio. Las siguientes fórmulas permiten calcu-
lar el valor de a1:

a1 = −2 cos (w0 )

fdeseada
w0 = 2π
fmuestreo
Reemplazando se tiene:
 
fdeseada
a1 = −2 cos 2π
fmuestreo
 
880
a1 = −2 cos 2π
44100

a1 = −1,984
La ecuación en diferencias queda entonces:

y [n] = 1,984y [n − 1] − y [n − 2]
Como el valor de este coeficiente es mayor al rango del formato f ractional, es necesario
escalar el valor del coeficiente, en este caso lo más sencillo es dividir entre 2 con lo cual se
afecta también al otro coeficiente. La ecuación en diferencias escalada queda:

y [n]
= 0,992y [n − 1] − 0,5y [n − 2]
2
104 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

Los dos coeficientes deben ser convertidos a formato f raccional indicado con números he-
xadecimales, esto se hace multiplicando cada coeficiente por 21 5.

0,992 × 215 = 32506 = 0X7EF A

−0,5 × 215 = −16384 = 0XC000


Con estos datos ya se puede implementar el programa:
extern void P r o c e s a m i e n t o ( void ) ;

int main ( void )


{
ConfigOscilador () ;
ConfigPuertos () ;
ConfigDAC ( ) ;

while ( 1 ) // Bucle i n f i n i t o
{
LED1 = APAGAR; // E s t e LED muestra mediante p u l s o s l a f r e c u e n c i a de
muestreo r e a l
while ( DAC1STATbits .REMPTY != 1 ) ; // Espera a que e l b ú f e r d e l DAC quede
v a cı́ o
LED1 = ENCENDER;

DAC1RDAT = y ; // A c t u a l i z a l a muestra a n t e r i o r m e n t e p r o c e s a d a

Procesamiento ( ) ;

return (EXIT SUCCESS) ;


}

Como se observa, ha sido definida una función externa, esta función llamará a una rutina en
ensamblador que se encargará del procesamiento, o sea, de resolver la ecuación en diferencias.
A continuación se muestra dicha rutina escrita en ensamblador:

. include ” p33fj128gp802 . inc ”

. global Procesamiento

Procesamiento :

mov z1 , w5
mov a1 , w6
mpy w5∗w6 , a
5.6 Resultados 105

sac . r a , w10

mov z2 , w5
mov a2 , w6
MPY W5∗W6, A
sac . r a , w11

add w10 , w11 , w4


mul . su w4,#2 ,w6

mov z1 , w0
mov w0 , z 2
mov w6 , z 1
mov w6 , y

return
. end

Nótese que en la operación mul.su hay una multiplicación por dos, esto se debe hacer debi-
do al escalamiento que se hizo con los coeficientes anteriormente. De esta forma ha quedado
desarrollado el oscilador.

5.6. Resultados
Como resultado de este capı́tulo se han diseñado dos prácticas de laboratorio, resumidas
en la Tabla 5-3. Cada una de estas prácticas contiene tres ejemplos para los tres tipos de
filtrado más comunes.

Tabla 5-3.: Prácticas de laboratorio diseñadas para filtrado digital de señales de audio.

Práctica Proyecto Descripción

Ejemplo 5.1 Filtro FIR pasa bajas.


5. Ecualización con
Ejemplo 5.2 Filtro FIR pasa altas.
filtros FIR.
Ejemplo 5.3 Filtro FIR pasa banda.
Ejemplo 6.1 Filtro IIR pasa bajas.
6. Ecualización con
Ejemplo 6.2 Filtro IIR pasa altas.
filtros IIR.
Ejemplo 6.3 Filtro IIR pasa banda.

Para validar los filtros implementados se ha usado el montaje de laboratorio observado en


la Figura 5-9.
106 5 Implementación de filtros FIR y filtros IIR para procesamiento digital de audio

Figura 5-9.: Montaje de laboratorio para validación de filtros.

5.6.1. Validación de los filtros


Mediante el software dsPICfdLite se han calculado los coeficientes para un filtro FIR pasa
bajas con las caracterı́sticas de la Tabla 5-4. Posteriormente han sido implementados en la
tarjeta desarrollada y los resultados medidos1 se muestran en la Figura 5-10.

Tabla 5-4.: Especificaciones del filtro validado.


Especificación valor
Frecuencia de muestreo 44229 Hz
Banda de paso (0,1000) Hz
Banda de transición (1000,2000) Hz
Banda de rechazo (2000,22114.5) Hz
Rizado de la banda de paso 1 dB
Rizado de la banda de rechazo 20 dB

1
Las medidas fueron tomadas en el pin DAC1RP del dsPIC
R
5.6 Resultados 107

Figura 5-10.: Gráfica de la tabulación de mediciones.


6. Implementación en dsPIC
R de la
Transformada Discreta de Fourier
La Transformada Discreta de Fourier es una operación matemática que cambia la manera
de representar las señales, esta transformada tiene como resultado un vector de sinusoidales
complejas las cuales representan el espectro de la señal, en este caso, se dice que la señal está
representada en el dominio de la frecuencia. Esta nueva forma de ver a las señales es muy
poderosa puesto que al realizar análisis en este dominio se puede obtener más información
relevante. Una de las múltiples aplicaciones de esta transformada es el reconocimiento de la
componente frecuencial con más energı́a de una señal, o sea, la frecuencia de mayor magnitud.
Para la implementación de esta operación en dispositivos embebidos como el dsPIC R se ha

sugerido el algoritmo FFT (Fast Fourier Transform) para optimizar el cálculo.


110 6 Implementación en dsPIC
R de la Transformada Discreta de Fourier

6.1. Introducción a la Transformada Discreta de Fourier


La transformada de Fourier de una señal en tiempo continuo x(t) está definida como:
Z ∞
X (w) = x (t) e−jwt dt, w ∈ (−∞, ∞)
−∞

La Transformada Discreta de Fourier (DFT) reemplaza la integral infinita por una suma
finita, tanto los valores en tiempo como en frecuencia son discretos:
N
X −1
X (wk ) = x (tn ) e−jwk tn , k = 0, 1, 2, ..., N − 1
n=0

Donde:

tn = nT
wk = kΩ

Ω=
NT
La transformada inversa discreta de Fourier es:
N −1
1 X
x (tn ) = X (wk ) ejwk tn , n = 0, 1, 2, ..., N − 1
N k=0
Es posible obtener formas más puras de representar la transformada y su inversa reempla-
zando los valores de frecuencia y tiempo, teniendo en cuenta que T no es relevante para el
cálculo respectivo:
N −1
X −j2πnk
X (k) = x (n) e N , k = 0, 1, 2, ..., N − 1
n=0

N −1
1 X j2πnk
x (n) = X (k) e N , n = 0, 1, 2, ..., N − 1
N k=0
Estas dos últimas ecuaciones están enfocadas en el cálculo a través de procesadores digitales,
analizando su estructura se puede ver que cada una de estas ecuaciones tiene dos sumato-
rias, una dedicada a recorrer los valores de n y otra dedicada a recorrer los valores de k,
esto significa que para obtener la transformada de una señal con N muestras, se requerirá
N 2 .multiplicaciones complejas y (N − 1)2 sumas complejas.

Para calcular la Transformada Discreta de Fourier de una señal en tiempo real habrá que
almacenar en un espacio de memoria una cantidad limitada de muestras de esa señal, por
lo que el procesamiento se hará por bloques de muestras, la consecuencia de esto es que
6.2 La Transformada Rápida de Fourier (FFT) 111

la resolución de frecuencia obtenida de la transformada estará afectada directamente por la


cantidad de muestras por bloque, además de la frecuencia de muestreo. La siguiente ecuación
expresa la resolución de frecuencia de dicha transformada:

fs
fres =
N
Donde fs es la frecuencia de muestreo y N es la cantidad de muestras almacenadas en el
búfer. En la práctica, los valores tı́picos de N son 64, 128, 256 y 512.

Como la cantidad de cálculos para realizar esta transformada aumenta cuadráticamente


respecto al tamaño del búfer, los valores de N muy grandes pueden tener problemas para
implementarse en dispositivos como los dsPIC , R es por eso que lo más sensato es acudir a

algoritmos que simplifican estos cálculos, como los que se comentarán en la siguiente sección.

6.2. La Transformada Rápida de Fourier (FFT)


La Transformada Rápida de Fourier (FFT por sus siglas en inglés) es el nombre que recibe un
conjunto de algoritmos que buscan disminuir la cantidad de cálculos necesarios para obtener
la DFT, básicamente el objetivo es disminuir de alguna manera el valor de N generando
bloques más pequeños que luego se puedan combinar para obtener la respuesta correcta. El
algoritmo más extendido ha sido el de Cooley-Tukey, el cual tiene dos variantes: diezmado
en tiempo y diezmado en frecuencia, los cuales pueden ser en base 2 o base 4.

El algoritmo de diezmado en tiempo en base 2 consiste en dividir el bloque de tamaño


N en dos sub bloques de tamaño N/2, esto ya nos dice que N debe ser par. Uno de los
bloques contiene las muestras pares y el otro las muestras impares, teniendo en cuenta que
las muestras pares están definidas como x(2n) y las muestras impares como x(2n + 1), la
DFT puede entonces representarse como:
N N
2
−1 2
−1
X −j2π(2n)k X −j2π(2n+1)k
X (k) = x (2n) e N + x (2n + 1) e N

n=0 n=0

El exponencial del segundo término puede desarrollarse más para obtener:


N N
2
−1 2
−1
X −j2π(2n)k X −j2π(2n)k −j2πk
X (k) = x (2n) e N + x (2n + 1) e N e N

n=0 n=0

Reorganizando se obtiene:
N N
2
−1 2
−1
X −j2πnk −j2πk X −j2πnk
X (k) = xpar (n) e N/2 +e N ximpar (n) e N/2

n=0 n=0
112 6 Implementación en dsPIC
R de la Transformada Discreta de Fourier

Nótese que el primer término es la DFT del bloque de las muestras pares, y el segundo
término es la DFT del bloque de las muestras impares pero multiplicadas por un factor
exponencial. Más claramente:
−j2πk
X (k) = Xpar (k) + e N Ximpar (k)
Los factores generados por este exponencial son llamados factores de giro (twiddle factors).

Teniendo en cuenta que el perı́odo de esta representación es N/2, y que por propiedades
k = k + T , se puede reemplazar k = k + N/2 donde sea conveniente sin alterar la operación,
ası́ la ecuación puede escribirse de la siguiente manera:

2 )
−j2π (k+ N
 
N
X k+ = Xpar (k) + e N Ximpar (k)
2

6.3. Implementación de la FFT con base en la biblioteca


dsp del compilador XC16
En primer lugar se requiere saber cuál será el número de muestras que serán procesadas
en cada operación de transformada, o sea, el tamaño del búfer. Si se quiere usar DMA en
modo ping-pong el número de muestras por búfer está limitado a 512. Teniendo establecido
el tamaño del búfer, usualmente se diseña con un tamaño que sea potencia de 2, se calcula
el vector de los factores de giro. En la página de Microchip es posible encontrar archivos con
códigos de factores de giro para 64, 128, 256 y 512 muestras.

Para la realización de la FFT es necesario declarar dos vectores, cada uno con tamaño igual
al número de muestras, uno de estos vectores almacenará el resultado de la parte real de
la transformada y el otro almacenará la parte imaginaria1 . Esta operación se lleva a cabo
a través de la función ((FFTComplexIP)) la cual tiene como argumentos el logaritmo base 2
del número de muestras, la dirección del vector de salida complejo, la dirección del vector
de factores de giro y la página de los factores de giro en caso de que estos estén guardados
en la memoria de programa. El vector resultante se irá guardando en las mismas posiciones
del vector de entrada.

Es necesario utilizar la función((BitReverseComplex)) para reorganizar los datos del vector


complejo.

1
La biblioteca dsp considera que estos dos vectores de formato fractional conforman una sola estructura de
tipo fractcomplex.
6.3 Implementación de la FFT con base en la biblioteca dsp del compilador XC16 113

Figura 6-1.: Diagrama de flujo de la implementación de la FFT en dsPIC .


R

Para calcular la magnitud de la FFT es necesario calcular la raı́z cuadrada de la suma de las
muestras equivalentes entre la parte real y la parte imaginaria. La función ((SquareMagnitudeCplx))
implementa esta operación.

Por último, y como una aplicación de la Transformada de Fourier, puede calcularse la posi-
ción del valor máximo en el vector magnitud con la función ((VectorMax)); con esta operación
es posible determinar cuál es la frecuencia de mayor amplitud que compone la señal a la que
se la aplicó la FFT, esta frecuencia generalmente equivale a la frecuencia fundamental de
dicha señal. La Figura 6-1 resume todo este proceso.
114 6 Implementación en dsPIC
R de la Transformada Discreta de Fourier

Figura 6-2.: Montaje para validación de la FFT en dsPIC .


R

6.4. Resultados
Como resultado de este capı́tulo se tiene una práctica de laboratorio (Tabla 6-1), la cual es
una aplicación básica de la DFT que sirve para detectar la frecuencia fundamental de una
señal de audio; el algoritmo FFT ha sido usado para tal fin.

Tabla 6-1.: Práctica de laboratorio diseñada para aplicaciones de la DFT.

Práctica Proyecto Descripción

7. Transformada Discreta Ejemplo 7.1 Detección de la frecuencia fundamen-


de Fourier. tal en una señal de audio.

Para validar el funcionamiento de la FFT se ha realizado el montaje de la Figura 6-2, el


cual consiste en un arreglo de ocho LED conectados a diferentes pines del dsPIC R que

permitirán visualizar si la frecuencia fundamental de una señal se encuentra en las primeras


8 frecuencias discretas dadas por la FFT. La frecuencia de muestreo fs implementada ha sido
de 16kHz con un búfer de tamaño N = 256 muestras. Con esto se obtendrá una resolución
indicada por la siguiente ecuación:

fs 16 kHz
fres = =
N 256
6.4 Resultados 115

fres = 62,5Hz
Donde fres es la resolución con la que la FFT genera las muestras; con los 8 LED se pudo
identificar con éxito frecuencias fundamentales de máximo 500Hz.
7. Conclusiones y recomendaciones

7.1. Conclusiones
El dsPIC33FJ128GP802 se puede utilizar como dispositivo de procesamiento digital de audio
capaz de operar la banda de 20 Hz a 20 kHz Utilizando su ADC y DAC internos se puede
desarrollar un sistema donde la tarjeta electrónica es de bajo costo y fácil construcción, lo
cual permite que el producto final pueda llegar a más personas y por lo tanto fomenta el
aprendizaje de esta tecnologı́a.

Los programas en C de este trabajo fueron desarrollados con el compilador XC16 en su


versión estudiantil. Se pudo observar que este compilador, el cual es gratuito, funcionó sin
problemas con los algoritmos desarrollados. Esto significa que sin necesidad de compiladores
optimizados, en versiones de pago, se puede procesar señales de audio con buenos resultados;
además la versión gratuita se puede potenciar significativamente al integrarlo con programa-
ción en ensamblador y sin tener códigos fuente complicados.

La memoria RAM del dsPIC R es apta para guardar cierto número de muestras que depen-

diendo de la frecuencia de muestreo no puede extenderse a grabaciones de más de 1 segundo.

En el circuito desarrollado, el amplificador de audio LM386 requiere de una etapa previa que
disminuya la ganancia por lo menos 20 veces para que la salida de audio no salga distorsio-
nada o con ruido.

Las frecuencias fundamentales en una señal de audio por lo general se encuentran en una
banda baja, por eso para la búsqueda de frecuencias fundamentales en una señal de audio
la FFT es más eficiente si se usa con una frecuencia de muestreo menor.

7.2. Recomendaciones
Con enfoque en futuros trabajos se recomienda el uso de un códec de audio el cual permita
prescindir de la parte analógica en el dsPIC
R haciendo que este último se encargue sólo de

el tratamiento digital, esto también permitirá mejorar la calidad de las muestras de audio
pero se debe tener en cuenta que ineludiblemente esto aumentará el costo de los prototipos.
118 7 Conclusiones y recomendaciones

Es recomendable la realización de un circuito para programación mediante bootloader.

Si se quiere ampliar la cantidad de muestras de la lı́nea de retardo puede añadirse al sistema


una memoria RAM externa en configuración FIFO.

El procesamiento digital de señales de audio es un campo muy amplio y las prácticas se


pueden ampliar a otras con mayor complejidad, en la literatura se puede observar que un
sólo efecto de audio puede tener muchos modelos diferentes, pueden derivarse más trabajos
relacionados con la implementación de modelos no mencionados aquı́.
A. Creación de proyectos con MPLAB
R
X y compilador XC16
La creación de un proyecto con MPLAB
R sigue el ciclo de desarrollo mostrado en la Figura

A-1.

EL primer paso del ciclo de desarrollo es la creación de un proyecto. Para tal fin se ejecuta
la aplicación MPLAB R X, para el ejemplo será utilizada la versión 3.30. Luego se debe dar

clic en F ile-N ewP roject como se muestra en la Figura A-2.

En la ventana que aparece (Figura A-3) se selecciona ((Standalone Project)) para la creación
de un proyecto vacı́o, después de eso se hace clic en N ext.

En ventana de la Figura A-4 se selecciona la familia y el nombre especı́fico del dispositivo


para el que se hará el proyecto. Luego clic en N ext.

La ventana de la Figura A-5 pregunta el tipo de herramienta con la que se desea programar
y/o depurar la aplicación. Por lo general es recomendable seleccionar el simulador, nótese
que aunque el simulador es totalmente software está listado en las herramientas de hardware.

En la siguiente ventana (Figura A-6 ) se pregunta qué compilador se usará de la lista de


compiladores previamente instalados, en este caso será usado el compilador XC16 versión
1.26.

Para finalizar se debe dar un nombre al proyecto, en este caso se ha llamado ((Ejemplo))
(A-7). Nótese que está seleccionada la opción ((Set as main Project)). Es importante dejar
esta casilla seleccionada.

Después de dar clic en Finish, será creada una carpeta de proyecto, por defecto dentro de
la carpeta MPLABXProjects, la cual termina con .X, todas las carpetas que tengan esta
terminación serán tratadas por MPLAB R X como carpetas de tipo proyecto. El aspecto de

la interfaz queda como se ilustra en la Figura A-8.

Al crear un proyecto, se crean también unos archivos y carpetas dentro de la ruta especifi-
120 A Creación de proyectos con MPLAB
R X y compilador XC16

Figura A-1.: Ciclo de desarrollo de un proyecto con MPLAB


R [18].

Figura A-2.: Creación de un nuevo proyecto.


121

Figura A-3.: Selección del tipo de proyecto.

Figura A-4.: Selección del dispositivo a programar.


122 A Creación de proyectos con MPLAB
R X y compilador XC16

Figura A-5.: Selección de la herramienta de depuración.

Figura A-6.: Selección del compilador.


123

Figura A-7.: Finalización de la creación de un proyecto.

Figura A-8.: Aspecto de la interfaz de MPLAB


R luego de crear un proyecto nuevo.
124 A Creación de proyectos con MPLAB
R X y compilador XC16

Figura A-9.: Carpeta del proyecto.

Figura A-10.: Abriendo la carpeta de códigos fuente.

cada tal y como se muestra en la Figura A-9.

La carpeta debug alberga los archivos que son creados cuando el proyecto se compila en
modo debug. La carpeta nbproject contiene los archivos que definen las configuraciones del
proyecto, tales como archivos incluidos, compilador seleccionado, herramienta hardware se-
leccionada, entre otros. Este es el aspecto de un proyecto vacı́o, a medida que se agregan
archivos de código fuente y se compila serán generados más carpetas y archivos.

Intentando abrir la carpeta Source File, como se observa en la Figura A-10, puede consta-
tarse que no existen archivos de código fuente.

El siguiente paso entonces es agregar un archivo de código fuente. Para agregar un ar-
chivo de c nuevo, se da clic derecho sobre la carpeta ((Source Files)) luego se selecciona
N ew− > Other... (Figura A-11).
125

Figura A-11.: Añadiendo un nuevo código fuente al proyecto.


126 A Creación de proyectos con MPLAB
R X y compilador XC16

Figura A-12.: Añadiendo una función principal del lenguaje C.

En la ventana que se abre (A-12) se buscas en la región de categorı́as la opción C, a la


derecha están las opciones de tipo de archivo de C, se selecciona la opción ((C Main File))
para crear el archivo principal del proyecto, luego clic en N ext.

En la siguiente ventana se da un nombre al archivo en el campo ((File Name)) y clic en F inish.

De esta forma se crea una plantilla de C vacı́a para escribir el código principal, el aspecto
del código es como el de la Figura A-14. De ahı́ se puede notar los siguientes puntos:

El IDE incluye por defecto unas bibliotecas pero la correspondiente al dispositivo que
va a ser programado, se debe adicionar manualmente. Por ejemplo:
#include <d s p i c 3 3 f j 1 2 8 g p 8 0 2 . h>

También es importante añadir la biblioteca DSP, ya que en adelante será utiizada como
soporte para el procesamiento de señales.
#include <dsp . h>

La función main contiene por defecto unos parámetros que pueden suprimirse, con esos
pequeños cambios el código queda de la siguiente manera:
127

Figura A-13.: Dando nombre al archivo de la función principal.

#include <s t d i o . h>


#include < s t d l i b . h>
#include <p 3 3 f j 1 2 8 g p 8 0 2 . h>
#include <dsp . h>

int main ( )
{
return (EXIT SUCCES) ;
}

De forma similar a los archivos de C, se añaden los archivos de ensamblador (Figura A-15).

Otro tipo de archivo importante es el archivo de cabecera, el cual contiene las definiciones o
macros que se usarán en los archivos fuente, son muy útiles para asignar nombres a partes
de código como registros u operaciones para que el análisis del código principal sea más
entendible. Para el caso de ensamblador la extensión de este tipo de archivos es .inc y para
el caso de c la extensión es .h.

Para crear un archivo de cabecera usando el software MPLAB R X primero se debe hacer

clic derecho en la carpeta Header Files luego seleccionar New-¿Other... (Figura A-16).

La Figura A-17 muestra la misma ventana usada para agregar el archivo principal de C
128 A Creación de proyectos con MPLAB
R X y compilador XC16

Figura A-14.: Aspecto del código del programa principal.

Figura A-15.: Añadiendo un archivo de ensamblador al proyecto.


129

Figura A-16.: Creación de un archivo de cabecera.

pero esta vez ha sido seleccionada la opción C Header File.

Luego se procede a darle un nombre al archivo y se da clic en Finish (Figura A-18), el


resultado será un archivo de texto con el siguiente aspecto:
/∗
∗ File : macros . h
∗ Author : Sche

∗ Created on 19 de mayo de 2016 , 1 2 : 3 5 PM
∗/

#i f n d e f MACROS H
#define MACROS H

#i f d e f cplusplus
extern ”C” {
#endif

#i f d e f cplusplus
}
#endif
130 A Creación de proyectos con MPLAB
R X y compilador XC16

Figura A-17.: Añadiendo un archivo de cabecera de C.

#endif /∗ MACROS H ∗/

Eliminando algunas lı́neas que son para extender funciones hacia el lenguaje C++ se puede
simplificar el archivo quedando de la siguiente manera:
/∗
∗ File : macros . h
∗ Author : Sche

∗ Created on 19 de mayo de 2016 , 1 2 : 3 5 PM
∗/

#i f n d e f MACROS H
#define MACROS H

/∗
∗ En e s t e e s p a c i o s e deben e s c r i b i r l a s d e f i n i c i o n e s o macros
∗/

#endif /∗ MACROS H ∗/

En el espacio indicado se debe escribir el contenido como tal del archivo de cabecera, ahı́ se
pueden definir nombres de registros, declarar funciones, invocar otros archivos de cabecera,
entre otras cosas; aunque también se puede declarar variables, lo más recomendable es hacer
esto en el respectivo código fuente.
131

Figura A-18.: Nombrando el archivo de cabecera de C.

Para que un archivo de cabecera sea visible para el código fuente, debe declararse igual que
las demás bibliotecas, pero en lugar de los signos menor y mayor (<>) deberá usarse las
comillas dobles (“”), estas últimas le indican al compilador que la biblioteca declarada está
contenida en la carpeta del proyecto, mientras que los otros signos indican que la biblio-
teca está integrada al compilador mismo. Entonces la declaración del archivo de cabecera
recientemente creado se hace ası́:
#include <macros . h>

Incluyéndolo en el proyecto de ejemplo queda de la siguiente manera:


#include <s t d i o . h>
#include < s t d l i b . h>
#include <p 3 3 f j 1 2 8 g p 8 0 2 . h>
#include <dsp . h>
#include <macros . h>

De aquı́ en adelante todo consiste en programar, para esto es muy importante conocer el
dispositivo a través de la hoja de caracterı́sticas y el manual de referencia para poder escribir
las funciones que controlarán el funcionamiento del dsPIC . R
Bibliografı́a
[1] Alvarado Moya, José P.: Procesamiento Digital de Señales. Cartago, Costa Rica :
Notas de clase, 2011 5

[2] Angulo Usategui, José M. ; Garcı́a Zapiraı́n, Begoña ; Angulo Martinez,


Ignacio ; Sáez, Javier V.: Microcontroladores avanzados dsPIC: Controladores Digitales
de Señal. Arquitectura, programación y aplicaciones. Madrid : Thomson-Paraninfo, 2006
2

[3] Angulo Usategui, José M. ; Etxebarrı́a Ruiz, Aritza ; Angulo Martinez, Ig-
nacio ; Trueba Parra, Iván: dsPIC Diseño Práctico de Aplicaciones. McGraw-Hill-
Interamericana de España, 2006 xvii, 2, 10

[4] Baker, Bonnie: A Baker’s Dozen: Real analog solutions for digital designers. Elsevier,
2005 xvii, 35

[5] Baker, Bonnie C.: Anti-aliasing, analog filters for data acquisition systems. En: AN699,
Microchip Technology Inc., DS00699 (1999) xvii, 8

[6] Baker, Bonnie C.: Operational Amplifier Topologies and DC Specifications. En:
AN722, Microchip Technology Inc., DS00722 (1999)

[7] Baker, Bonnie C.: Operational Amplifier AC Specifications and Applications. En:
AN723, Microchip Technology Inc., DS00723 (2000)

[8] Baker, Bonnie C.: Using Operational Amplifiers for Analog Gain in Embedded System
Design. En: AN682, Microchip Technology Inc. (2000)

[9] Barrero Garcı́a, Federico J. ; Toral Marı́n, Sergio L. ; Ruiz González, Mariano:
Procesadores Digitales de Señal de altas prestaciones de Texas Instruments TM : De la
familia TMS320C3x a la TMS320C6000. Madrid : McGraw-Hill-Interamericana de
España, 2005 2

[10] Clavijo Mendoza, Juan R.: Diseño y simulación de sistemas microcontrolados en


lenguaje C: programación con el compilador MikroC y simulación en Proteus ISIS. Co-
lombia : ISBN 978-958-44-8619-6, Mayo 2011
134 Bibliografı́a

[11] Couch, León W León W: Sistemas de comunicación digitales y analógicos. 7 Ed.


México : Pearson Educación,, 2008 xix, 81

[12] Curtis, Keith: Analog Design in a Digital World Using Mixed Signal Controllers. En:
AN823, Microchip Technology Inc., DS00823A (2002) xvii, xvii, 36, 37

[13] Di Jasio, Lucio: Programming 16-bit Microcontrollers in C Learning to Fly the PIC
24. 1 Ed. E.U.A. : Newnes, 2007

[14] e2v: Design Considerations for Mixed-Signal: How to Design a PCB Layout. En: AN,
e2v semiconductors SAS, 0999A-BDC-07/09 (2009) xvii, 37

[15] Kahrs, Mark ; Brandenburg, Karlheinz: Applications of digital signal processing to


audio and acoustics. Vol. 437. Springer Science & Business Media, 1998 xvii, 6, 9, 86

[16] Microchip. Audio and speech: Development Tools. {En lı́nea} Disponible en:
(http://www.microchip.com/pagehandler/en-us/technology/audio/home.html?tab=t2).
{27 marzo de 2015}

[17] Microchip. DSP Features of the Microchip dsPIC DSC.


R {En lı́nea} Disponible en:
(http://microchip.wikidot.com/dsp0201:start). {6 Junio de 2016} xvii, xvii,
xvii, xvii, xvii, xviii, 13, 14, 15, 76

[18] Microchip. Get Started with MPLAB X R IDE and Microchip Tools. {En lı́nea}
Disponible en: (http://microchip.wikidot.com/tls0101:start). {6 Junio de 2016}
xvii, xix, 19, 120

[19] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 33. Audio
Digital-to-Analog Converter (DAC). DS70211B. 2009

[20] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 3. Data Memory.
DS70202C. 2010

[21] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 4. Program Me-
mory. DS70203D. 2010

[22] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 2. CPU.


DS70204C. 2011

[23] Microchip Inc.: 16-bit Digital Signal Controllers (up to 128 KB Flash and 16K SRAM)
with Advanced Analog. Datasheet, DS70292G. 2012 xviii, xviii, 41, 42

[24] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 16. Analog-to-
Digital Converter (ADC). DS70183D. 2012 xviii, xviii, xviii, xviii, 59, 60, 61
Bibliografı́a 135

[25] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 30. I/O Ports
with Peripheral Pin Select (PPS). DS70190E. 2012 xvii, 17

[26] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 32. Interrupts
(Part III). DS70214C. 2012

[27] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 38. Direct Me-
mory Access (DMA) (Part III). DS70215C. 2012 xvii, 16

[28] Microchip Inc.: dsPIC33F/PIC24H Family Reference Manual: Section 39. Oscillator
(Part III). DS70216D. 2012 xviii, xviii, xviii, 54, 55, 64

[29] Microelectronics, ST: LD1117 series: Low drop fixed and adjustable positive voltage
regulators. Datasheet xviii, xviii, 48, 49

[30] Milivojevic, Zoran. Digital Filter Design. Libro digital disponible en


(http://learn.mikroe.com/ebooks/digitalfilterdesign/) xix, xix, xix, xix, 95,
96

[31] Mitra, Sanjit K.: Digital signal processing applications

[32] Mitra, Sanjit K.: Procesamiento de señales digitales: Un enfoque basado en compu-
tadora. 3 Ed. México D.F. : McGraw-Hill-Interamericana de México, 2006 2

[33] Salazar, Jordi. Procesadores digitales de señal (DSP): Ar-


quitectura y criterios de selección. En lı́nea Disponible en
(http://arantxa.ii.uam.es/~taao1/teoria/tema1/pdf/Procesadores dig.pdf).
{27 marzo de 2015}

[34] Shenoi, B. A.: Introduction to digital signal processing and filter design. New Jersey :
Wiley-Interscience, 2006

[35] Smith, J.O. Introduction to Digital Filters with Audio Applications.


http://ccrma.stanford.edu/~jos/filters/, online book, 2007 edition. acces-
sed <2016-06-05>

[36] Smith, J.O. Mathematics of the Discrete Fourier Transform (DFT) with Audio Appli-
cations, Second Edition. http://ccrma.stanford.edu/~jos/mdft/, online book, 2007
edition. accessed <2016-06-05>

[37] Soria ; Martı́nez ; Francés ; camps: Tratamiento digital de señales: problemas y


ejercicios resueltos. Madrid : Pearson Prentice Hall, 2003

[38] Zator Systems. Tratamiento digital del sonido. {En lı́nea} Disponible en:
(http://www.zator.com/Hardware/H10 2.htm). {6 junio de 2016}

View publication stats

También podría gustarte