Tesis 1
Tesis 1
Tesis 1
net/publication/323019453
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.
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
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 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.
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.
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.
Resumen IX
Abstract X
Lista de sı́mbolos XV
Lista de figuras XX
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
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
digital. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4-7. Medición de la frecuencia de la señal generada con el dsPIC
. R . . . . . . . . 89
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].
Teniendo en cuenta que los circuitos integrados llamados dsPIC R se muestran propicios para
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.
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.
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
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.
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)
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
El tercer capı́tulo trata sobre el diseño del hardware propuesto para el procesamiento
digital de audio.
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.
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
Unidimensional
Naturaleza continua
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:
En cuanto a las frecuencias de muestreo y cantidad de bits por muestra, la Tabla 2-1 resume
los formatos más utilizados.
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.
Figura 2-1.: Filtro Bessel de quinto orden como ejemplo de sistema de procesamiento
analógico [5, p. 8].
Los elementos básicos que permiten el procesamiento analógico son los capacitores y los
inductores.
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].
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.
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 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.
hacer en 3 partes:
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
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 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
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.
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
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.
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.
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.
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:
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
tales. Algunas tienen la desventaja de que son limitadas debido a que funciones más
avanzadas se ofrecen con versiones de pago.
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.
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
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
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
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.
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.
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:
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:
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
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.
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.
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
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
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.
Microchip Technologies
MikroElektronika
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
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
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
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-
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
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.
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.
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.
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.
Figura 3-3.: Inductancias para acople de la parte analógica de un circuito de audio [12, p.
5].
y con herramientas que faciliten el desarrollo de forma notable. En la Figura 3-5 se puede
apreciar el modelo propuesto.
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.
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
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
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
Entre los dsPIC R ofrecidos en el mercado, debido a su versatilidad, bajo precio, facilidad
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.
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 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.
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
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.
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 = 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.
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ı́:
20 puentes de alambre
24 capacitores
3.9 Resultados 49
4 diodos LED
3 inductores
4 transistores
1 regulador de tensión
37 resistores
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 4-1.: Sistema del oscilador y camino de configuración propuesto (Adaptado de [28]).
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
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)
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 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
LED1 = APAGAR;
LED2 = APAGAR;
}
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 ;
AD1CHS0bits . CH0SA = 4 ;
4.1 Configuración del dsPIC
R 59
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 ;
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].
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
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
Con lo cual podemos calcular un valor mı́nimo de ADCS para una frecuencia del sistema
dada.
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.
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
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;
AD1CON1bits .ADON = 1 ;
// 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
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.
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
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.
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
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
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.
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-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-15.: Muestreo y reconstrucción mediante búfer DMA con interrupción del DAC.
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
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
namiento modular.
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.
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:
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
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.
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
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.
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.
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
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
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:
siguiente manera:
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
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.
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-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
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.
. 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
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:
. 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 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 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:
. 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.
1
Datos calculados para el dsPIC33FJ128GP802 con frecuencia de trabajo de 79,2576M Hz
4.7 Resultados 89
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.
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.
fs
fsalida =
Nmuestras
44229 Hz
fsalida =
120
fsalida ≈ 368,58 Hz
La tabla 4-7 compara la frecuencia medida con la frecuencia esperada.
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
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.
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
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.
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
Donde:
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
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:
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:
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.
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
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.
(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
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
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.
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 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.
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.
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 ( ) ;
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:
. 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
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.
1
Las medidas fueron tomadas en el pin DAC1RP del dsPIC
R
5.6 Resultados 107
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Ω
2π
Ω=
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
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.
algoritmos que simplifican estos cálculos, como los que se comentarán en la siguiente sección.
n=0 n=0
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
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.
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
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
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.
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.
La memoria RAM del dsPIC R es apta para guardar cierto número de muestras que depen-
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
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
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.
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.
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
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
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
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
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
#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
#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
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>
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
[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
[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
[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}
[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
[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
[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
[34] Shenoi, B. A.: Introduction to digital signal processing and filter design. New Jersey :
Wiley-Interscience, 2006
[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>
[38] Zator Systems. Tratamiento digital del sonido. {En lı́nea} Disponible en:
(http://www.zator.com/Hardware/H10 2.htm). {6 junio de 2016}