2010-II/es/Pedal de Efectos

From Qi-Hardware
Jump to: navigation, search
Pedal de Efectos


Contents

[edit] Proyecto Electrónica Digital II

[edit] Calificación

Porcentaje Presentación 20% Informe 30% Funcionamiento 50%
1 Entrega 10% 0.5 0.5 0.5
2 Entrega 30% 2 2 2
3 Entrega 20% 4 4 4
3 Entrega 40% 5 5 5

[edit] Pedal de Efectos para Bajo

Esta idea consiste en realizar un pedal de efectos para bajo que recibiría una señal análoga de una guitarra eléctrica. Tendría una interfaz con el usuario utilizando la pantalla LCD, en la que se mostrarán las propiedades del efecto que se este usando, un ecualizador gráfico, y las opciones para calibrar el pedal con los efectos que se quieran agregar o personalizar.

El tratamiento que se da a la señal varía de acuerdo al efecto que se quiera realizar sobre la señal, por lo que algunos efectos tendrán una parte de hardware especializada para esa única tarea. Dado que algunos efectos pueden ser personalizados, esta tarea se puede hacer por software, así el procesador será el que coordine los efectos y los parámetros de los mismos y las tareas de procesamiento de señales se van a realizar por hardware.

[edit] Especificaciones

[edit] Temporales

Los efectos se realizarán en tiempo real, con una demora mínima, imperceptible para el oído humano.

[edit] Fisicas

El dispositivo se implementara en su mayoria en la FPGA, allí se programara el control del conversor ADC, los filtros para el control de intensidad de frecuencias, los efectos, el controlador para la visualizacion en LCD y los controles del usuario. En una tarjeta impresa se implementará el conversor DAC, y se harán las conexiones necesarias para la interfaz con el LCD. La visualización se hará en un display LCD de 20x4 caracteres, en el que se va a mostrar el efecto que se esta aplicando a la señal, y la intensidad de los niveles de frecuencia.

[edit] División de Tareas

[edit] Hardware

Efectos: Los tratamientos a la señal de audio se deben hacer utilizando hardware para cumplir con las especificaciones temporales. Control de ADC: El controlador del conversor ADC será implementado en la FPGA. Display LCD: El periférico encargado de preparar los datos y enviarlos al LCD se va a implementar como un periférico en la FPGA. Control de DAC: El controlador del conversor DAC será implementado en la FPGA. Unidad MUX: Esta unidad se va a utilizar para controlar el camino de datos en el pedal, se implementará como multiplexores que van a dirigir la señal a los periféricos de efectos, y estos seran controlados por software.

[edit] Software

Control: El programa se va a encargar de controlar los periféricos de efectos y algunos parámetros de los mismos. Además de esto, se controlará el camino de datos de la señal de audio utilizando software. Visualización de componentes de Frecuencia: En la salida del LCD se va a mostrar la interfaz con el usuario y los componentes de frecuencia de la señal de salida. Estos datos se van a preparar por software y luego serán enviados al periferico encargado de controlar el LCD.

[edit] Diagrama de flujo

[edit] Cronograma de Actividades

Este es un cronograma que describe el plan de desarrollo del dispositivo, se definen las tareas más importantes a nivel global y se especifica en qué semanas se va a trabajar en dichas tareas.

[edit] PCB

Las siguientes imágenes muestran la PCB de la tarjeta hija con la que se desarrollara el proyecto. En esta tenemos el circuito cambiador de nivel para la entrada y salida análoga, las conexiones para el LCD de 20X4 con sus resistencias de pull down, y las entradas para el control del usuario.

En el siguiente enlace se pueden descargar los archivos de KICAD del proyecto.[[1]]

Para la correccion de la parte analoga del Proyecto, se agrego la siguiente tarjeta auxiliar, que se conectara a la tarjeta principal del proyecto.

[edit] Efectos

[edit] Diagrama de Bloques

Los efectos se van a implementar en un solo esclavo wishbone, vamos a tener un bloque de RAM compartido y un arbitro que va a pasar las señales de acuerdo al efecto que se utilice.

[edit] Ecualizador

El ecualizador tomará directamente la señal entregada por el ADC para dividirla y tratarla en tres diferentes bandas BASS y HIGH; cada una de estas bandas pueden ser implementadas como dos tipos de filtros digitales: FIR(Filtro no-Recursivo) o IIR(Filtro Recursivo). Se eligío utilizar filtros no recursivos por dos razones: al ser filtros no recursivos la señal actual de salida no depende de salidas anteriores lo cuál permite una implementación más sencilla y su comportamiento en fase es lineal lo cuál es importante garantizar para obtener sonidos con poca distorisión.

La ecuación que define un filtro FIR es:

   y[n] =a(0)x[n] + a(1)x[n-1] + a(2)x[n-2] + ···· + a(n)x[n-M]


Donde M es el orden del filtro y a_n cada una de las constantes en el diseño del filtro. El orden del filtro define la pendiente con la cuál la señal crece o decrece en las frecuencias caracteristicas; un orden alto hará que el filtro sea más efectivo pero aumentará el número de términos en retraso que intervienen lo cuál hace más compleja la implementación del filtro. El orden y valor de las constantes se eligío mediante simulaciones hasta lograr comportamientos y requerimientos adecuados. Para este caso, se utilizó MATLAB para dichas simulaciones escogiendo el orden del filtro en 25 para todas las bandas.

Cada filtro variará también la ganancia; esto se logra multiplicando la señal filtrada por una constante. Mediante simulación se encontraron los siguientes valores de constantes para variar las ganancias:


Constante Ganancia
1 0dB
1.27 2dB
1.6 4dB
2 6dB
2.5 8dB
3.5 10dB
4 12dB
5 14dB
6.3 16dB
8 18dB

La señal total obtenida será la suma de cada una de las bandas para luego ser tomada por cada el efecto que el usuario desee utilizar. La frecuencia de muestreo se elige en un valor de 4Khz ya que la mayor de las frecuencias que se quiere amplificar es de aproximadamente 2Khz rango comunmente utilizado para las frecuencias altas para dicho instrumento.


BASS (Pasa bajo):

El filtro pasabajo tendrá un frencuencia de corte en 400 Hz lo cuál permite manipular el intervalo de frecuencias fundamentales del bajo presentes en un rango 41Hz-300Hz. El vector de constantes halladas mediante la simulación fueron las siguientes:

   b[n] =  0.0034    0.0074    0.0188    0.0395    0.0677    0.0984    0.1248    0.1400    
           0.1400    0.1248    0.0984    0.0677    0.0395    0.0188    0.0074    0.0034

El comportamiento del filtro en maginitud y fase es:

HIGH (Pasa Banda Alta):

La banda pasa altas se encuentra dentro de 400hz-3KHz. Esta banda amplifica casi todos los armónicos producidos por el instrumento. Las constantes filtro son las siguientes:

   h[n] =   -0.0055   -0.0030   -0.0081   -0.0534    0.0017   -0.1061   -0.1609    0.4804    
             0.4804   -0.1609   -0.106      0.0017   -0.0534   -0.0081   -0.0030   -0.0055

El comportamiento del filtro en maginitud y fase es:


Como se puede observar los filtros diseñados tiene una ganancia de 0dB, entonces para diferentes ganancias se debe multiplicar por los valores mostrados en las tabla anterior. Dicha multiplicación se puede hacer directamente sobre cada una de las constantes que caracterizan el filtro, o bien en la señal ya filtrada. En este caso se realizará a la señal ya filtrada porque es la forma más sencilla de realizar esta variación de la ganancia.

Implementación de las constantes:

Como se puede observar, las constantes para cada uno de los dos filtros son números decimales que multiplicarán la señal de 10 bits que entrega el ADC; estas operaciones se pueden realizar implementando una unidad de punto flotante lo cuál extendería la complejidad del filtro. Una alternativa es amplificar todos los coeficientes por un factor de 1024 y aproximarlos a un número entero.

Constantes amplificadas y aproximadas para BASS:


 1024*b[n] ≈ 3   8   19   40   69   101  128  143  143  128  101  69   40   19   8   3


Constantes amplificadas y aproximadas para HIGH:

 1024*h[n] ≈ -6   -3   -8   -55   2  -109  -165   492   492  -165  -109   2  -55   -8   -3   -6 

Diagrama de Bloques del Ecualizador:

[edit] Echo

Para producir este efecto, vamos a tomar la señal de entrada, guardarla en la RAM designada para este propósito y reproducirla al mismo tiempo con la señal de entrada original. Este modulo produce una señal en tiempo real (Realt) y una retrasada (Delay1), la señal retrasada tiene un retardo que se puede especificar desde el procesador.

Las señales de salida entran al módulo Mixer, que se encarga de mezclar las dos señales, y de hacer desaparecer la señal del eco y la original de acuerdo a un parámetro que se puede especificar por software.

[edit] Simulacion ECHO

Esta es una simulación del funcionamiento del efecto, el parámetro especificado para la demora es 0x03, que coincide en el tiempo de simulacion con el tiempo que se demora en aparecer la señal en delay1.

[edit] Flanger

Este efecto se logra tomando la señal de entrada y dividiéndola en dos caminos, un camino se deja sin procesar, y al otro se le aplica una demora que varía con un periodo regular (de menos de 20ms). Esta demora se puede dejar fija o se puede cambiar como un parámetro que se define en cada efecto y para este caso es linear con respecto a la frecuencia, es decir, toda la señal se demora la misma cantidad de tiempo independientemente de su frecuencia.

[edit] Chorus

Este es un efecto en el que se escucha una "voz" con un retraso pequeño, se implementa de forma parecida al Flanger, pero los tiempos de demora son mayores a 20ms.

[edit] Mapa de Memoria

Periférico Dir. Inicio Dir. Final
BRAM 0X00000000 0X00001000
UART 0xF0000000 0xF0000008
EFECTOS 0xFF010000 0xFF010004
GPIO 0xFF020000 0xF000021C
ADC 0xFF030000 0xFF001000
LCD 0xFF040000 0xFF001000
ECUALIZADOR 0XFF002000 0XFF002010
PWM 0XFF005000 0XFF00300C


[edit] Descripción de Registros

Estos son los registros que componen el mapa de memoria que se va a utilizar

LCD:

Dirección Nombre
0x00 address
0x02 status
0x03 control


ADC:

Dirección Nombre
0x00 Status
0x01 data_rdy
0x02 data_adc
0x03 channel
0x04 Control
0x05 busy

Gpio (Controles de Usuario):

Dirección Nombre
0x00 in
0x04 out

Effects:

Dirección Nombre
0x00 control
0x04 paar_delay1
0x08 par_delay2
0x12 offset_uplimit
0x16 offset_lowlimit

PWM:

Dirección Nombre
0x00 cspwm

[edit] Periféricos

[edit] LCD

El LCD se va a controlar utilizando software y hardware, la parte de hardware se encargará de pasar los comandos al dispositivo en el orden y con las especificaciones temporales del mismo, mientras que la organización de los comandos específicos de inicialización y visualización se harán por medio de funciones incluidas dentro de las librerías del programa principal.

El registros de Status del LCD servirán para saber en qué estado se encuentra el dispositivo (inicialización, ciclo de instrucciones, ciclo de datos, errores en la transmisión de datos o instrucciones, etc.) y el de control nos permitirá pasasrle en una sola palabra de 32 bits, todos los comandos para la ejecución de un ciclo de instrucciones para escribir un caracter en la pantalla.

[edit] Diagrama de Bloques

Este es el diagrama de bloques del periférico que controla el lcd, es capaz de recibir las instrucciones del procesador y almacenarlas hasta que estas sean transmitidas exitosamente a la pantalla. Tiene tres componentes principales, la interfaz con el wishbone, el banco de registros (que almacena las instrucciones), y el bloque de interfaz con el lcd que es el que genera las señales para transmitirlas al dispositivo.

[edit] Especificaciones Temporales

Este es un diagrama que especifica el orden y la duración de las señales que se deben transmitir al lcd. El tiempo total del ciclo para enviar un comando es de 1500 ns.

[edit] Maquina de Estados

Este diagrama muestra el funcionamiento de la maquina de estados que controla el lcd, tiene dos funciones principales, una es el ciclo de instrucciones, que se utiliza para inicializar, borrar y pasar comandos al lcd. La otra se encarga del ciclo de datos, que envía primero la direccion a donde se quiere escribir, y a continuacion, el dato correspondiente a el caracter que se quiera mostrar.

[edit] Hardware

Este es el codigo del módulo que se encargará de las tareas de hardware.

[edit] Comunicación con el lcd

Este periférico esta implementado como una máquina de estados, es el encargado de recibir comandos, direcciones y datos y pasarlos al lcd con las especificaciones y el orden necesarios.


[edit] Interfaz Wishbone

Este es el codigo de la interfaz wishbone del lcd con el conbus, esta dividido en dos partes principales, un ciclo de escritura y un ciclo de lectura. En el de escritura se recibe una señal de control de 32 bits del procesador que contiene la instrucción o el par dirección/dato. En la parte de lectura, el dispositivo devuelve al procesador el valor de la señal status, que es la que indica en qué parte del proceso está el lcd.


[edit] Software

El software que se encargará de manejar el lcd le enviará las direcciones y los datos que se necesiten poner en el lcd, así como inicializarlo correctamente. Hay dos funciones principales, una para transmitir comandos LCD_Instruction(utilizados en la inicialización y otros controles) y la otra para transmitir los datos LCD_Data, en la cual se especifica la dirección en el lcd donde se quieren poner los datos y el dato correspondiente al símbolo que se quiere dibujar.

[edit] Descripción de Pantallas del lcd

El lcd va a mostrar el nombre del efecto que se esta produciendo, y en algunos casos, un nombre más específico de acuerdo con los parámetros que el usuario escoja para cada grupo de efectos. A continuación vemos un ejemplo de cada pantalla que se va a mostrar al usuario.

[edit] ADC

Para la conversión Análogo-Digital se utilizará el conversor incluido dentro de la tarjeta de desarrollo SIE TLV1548 y el control se realizará a través de herramientas software y hardware. La etapa de Hardware, esta encargada de enviar las señales de control al conversor de acuerdo a las especificaciones del siguiente diagrama de tiempos:

Formas de onda del ADC TLV1548.

La etapa de software se encargara de realizar el control de las señales de transmisión de datos, inicio de conversión, canal de conversión y la frecuencia de muestreo, la cual inicialmente sera de 4KHz.

[edit] Hardware

Este es el diagrama de bloques para el periférico del ADC, el cual tiene una comunicación de esclavo con el WishBone y genera las señales de comunicación con el conversor.

Diagrama de Bloques para el ADC.

[edit] Comunicación con el ADC

Para realizar la comunicación entre el Periférico y el ADC se realizo una Maquina de Estados en la que se realiza el envió y recepción de señales al ADC de acuerdo a las especificaciones temporales del diagrama de formas de ondas para el ADC.

Maquina de estados para el ADC.

La transmisión de datos desde el ADC se realiza de forma serial, pero el periférico del ADC almacena los 8 bits de la conversión en un bufer que luego es transmitido al Ecualizador, el cual procesa la señal de forma paralela.


[edit] Pruebas

Se realizaron pruebas al ADC para determinar si funciona correctamente, a continuación tenemos una imagen en el osciloscopio de la señal EOC, vemos que es periódica, la conversión se demora 6.02 uS.

Salida EOC del adc.
Tiempo de conversión rápida del ADC.

[edit] PWM

Para la salida de audio digital/análogo, se desarrolla una herramienta llamada PWM (Modulación por ancho de pulso) el cual tiene como entrada señales de control que le indican la transmisión de la señal, reset, cs y la señal de entrada que el efecto le transmite con 8 bit's de resolución. A continuación se muestra el diagrama de bloques para el PWM del proyecto.

Diagrama de Bloques para el PWM.

La salida del PWM es de 1 bit el cual, se conecta a un circuito pasa bajos puesto en la PCB.


El siguiente diagrama de flujo, describe el funcionamiento del PWM a usar en el Pedal, el cual consiste de un acumulador que va sumando los valores de entrada y una salida de un bit en el que cada flanco varia dependiendo del tamaño de las entradas.

Diagrama de flujo para el PWM.

[edit] Pruebas

Se realizaron pruebas del PWM para comprobar el funcionamiento, a continuación se muestra una imagen del osciloscopio midiendo la salida

Salida para el PWM.


A continuación se tiene un vídeo de la variación del ancho del pulso de salida, en éste se sube la frecuencia del generador de señal

[2] PWM. [0:19 min, 0.3 MB]

[edit] Costos

Para el diseño del Pedal de efectos para bajo se tiene el siguiente análisis de costos.

Informe de Costos.

[edit] Funcionamiento

A continuacion se presentan imagenes del funcionamiento del LCD para la visualizacion del efecto activo en el Pedal, y el nivel de retraso que tiene cada efecto.

Sin Efecto.
Efecto Echo con retraso medio (1 segundo).
Efecto Flanger.

El siguiente video observa el funcionamiento de la interfaz con el usuario para el cambio de efecto y nivel de retraso.

[3]


En el siguiente video se observa el funcionamiento del pedal de efectos digital.

[4] Pedal de efectos Echo.

[edit] Archivos Fuente

En el siguiente enlace se pueden descargar los archivos fuente del proyecto Pedal de Efectos para Bajo. [5]


Juan Felipe Pardo Cordero 261493
Roberto José Valencia Sánchez 261519
Juan Felipe Gutierrez Gómez 261477

Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export