Documente Academic
Documente Profesional
Documente Cultură
Caractersticas de la memoria
Function Run Reorder Window lin lin8 log
N S/F(B) F(B) F(B) S/F(B) S/F(B) S/F(B)
256 1k/952 120 512 256/768 128/640 128/256
128 512/448 56 256 128/768 64/640 64/256
64 256/200 28 128 64/768 32/640 32/256
32 128/80 12 64 32/768 16/640 16/256
16 64/24 6 32 16/768 8/640 8/256
S = SRAM, F = Flash ROM
Instalacin de la librera
Funciones FFT
Hay varias funciones que puede llamar para realizar la FFT. La razn por la que se divide en varias secciones, es para que
se pueda adaptar la FFT a distinto requerimientos.
fft_run () - Es la principal llamada a la funcin FFT. No requiere ninguna variable y no devuelve ningn valor. Se
supone que existe un bloque de datos que ya estn en SRAM, y que ya est reordenado. Los datos se almacenan en la
matriz llamada fft_input [], que contiene 2 columnas de valores de 16 bits por cada punto de datos FFT - una para la
parte real y la otra para la parte imaginaria. Si se ingresa los valores en el propio cdigo, colocar los valores reales en las
posiciones pares, y los valores imaginarios en las posiciones impares. Por ejemplo:
Por lo tanto existe el doble de datos en la matriz que los datos FFT. Si se utiliza slo los datos reales (es decir, valores
muestreados del conversor ADC), poner esos valores en las posiciones pares, y escribir 0 a las posiciones impares.
La salida final se mantiene en fft_input [], con las posiciones pares conteniendo las magnitudes reales, y las posiciones
impares las magnitudes imaginarias. Las posiciones estn en secuencia de incremento de frecuencia. Por ejemplo:
Se debe ejecutar una de las funciones de magnitud para obtener datos tiles de estos valores.
fft_reorder () - Reordena las entradas FFT para prepararlos para el modo particular en que el algoritmo FFT procesa
los datos. Se debe llamar a esta funcin antes de ejecutar la funcin fft_run ().No requiere ninguna variable y no
devuelve ningn valor. La funcin utiliza los datos de la matriz fft_input [], por lo que los datos deben ser llenados en esa
matriz antes de que esta funcin sea llamada.
fft_window () - Esta funcin multiplica los datos de entrada por una funcin de Ventana para ayudar a incrementar
la resolucin de frecuencia de los datos FFT. No requiere ninguna variable y no devuelve ningn valor. La funcin
procesa los datos en la matriz fft_input [], de modo que los datos deben ser ingresados en esa matriz antes de que sea
llamada. Tambin debe llamarse antes fft_reorder () o fft_run ().
fft_mag_lin8 () - Entrega la magnitud de cada dato de la FFT. Suma los cuadrados de las partes imaginaria y real, y
luego toma la raz cuadrada, redondeando la respuesta a 8 bits de precisin (utiliza una tabla y escala los valores a un
rango completo de 8 bits). No requiere ninguna variable y no devuelve ningn valor. Opera en la matriz fft_input [] y
devuelve los datos en una matriz llamada fft_lin_out8 [].La magnitud se calcula nicamente para los primeros N/2 datos,
ya que la segunda mitad de la FFT es idntica a la primera mitad para todas las entradas reales. Por lo tanto, fft_lin_out8
[] tiene N/2 valores de 8 bits, con cada ndice que representa el orden de datos.
Por ejemplo:
fft_lin_out8 [0] = primer dato de magnitud (0 Hz -> Fs / N)
fft_lin_out8 [1] = segundo dato de magnitud (Fs / N -> 2Fs / N)
La salida se puede escalar para maximizar la resolucin mediante el factor de Escala.
fft_mag_lin () - Entrega la magnitud de cada dato de la FFT. Suma los cuadrados de las partes imaginaria y real, y
luego toma la raz cuadrada. Utiliza una tabla para calcular la raz cuadrada, por lo que su precisin es limitada. Cubre la
gama completa de 16 bits, pero slo tiene 8 bits de precisin en cualquier punto en ese rango. Los datos se toman de la
matriz fft_input [] y son devueltos en fft_lin_out []. Los valores estn en orden secuencial, y slo hay N/2 valores en
total, debido a que la FFT de una seal real es simtrica con respecto de la frecuencia central.
fft_mag_log () - Entrega la magnitud de cada dato de la FFT. Suma los cuadrados de las partes imaginaria y real, y
luego toma la raz cuadrada, posteriormente toma el logaritmo en base 2 de ese valor. Por lo tanto, la salida se
comprime de forma logartmica, y esta esencialmente en decibelios (multiplicada por un factor de escala). No requiere
ninguna variable y no devuelve ningn valor. Utiliza una tabla para calcular el logaritmo de la raz cuadrada, y escala la
salida al rango completo de 8 bits (la ecuacin es 16 * (log 2 ((img 2 + 2 real2) )) almacenada en un valor 8 bits. Los
valores se toman de la matriz fft_input [], y se devuelven en fft_log_out []. Los valores de salida estn en orden
secuencial de frecuencia FFT, y slo hay N/2 datos en total, ya que la segunda mitad del resultado FFT es redundante
para las entradas reales.
fft_mag_octave () - Entrega el valor efectivo RMS de los datos en formato de octava (duplicacin de frecuencia).
Esto es ms til en algunos aspectos ya que est ms cerca de cmo los seres humanos perciben el sonido. No requiere
ninguna variable y no devuelve ningn valor. La entrada se toma de la matriz fft_output [] y se devuelve en fft_oct_out
[]. Los datos se representan como un valor 8 bits (16 * log2 ( (mag) ). Los datos LOG_N se dan como sigue:
Donde, por ejemplo, (5: 8) es la suma de todos los datos desde 5 hasta 8. Los datos se elevan al cuadrado (partes
imaginarias y reales) y luego se suman con todas las magnitudes al cuadrado del rango. A continuacin, se divide por el
nmero de datos y se toma la raz cuadrada, seguido por el cmputo del logaritmo.
4. Generador se seales basado en Arduino - Autor: Ajoy Raman
4.1 Caractersticas
Requiere tan solo de componentes pasivos: 10 resistencias y un capacitor
Generador de Onda por el mtodo de Sntesis Digital Directa Direct Digital Synthesis (DDS)
Formas de onda: Sinusoidal, Triangular, Rampa Creciente, Rampa Decreciente
Generador de formas de onda arbitrarias Arbitrary Waveform Generation (AWG)
Frecuencia de salida de hasta 45 kHz
4. 2 Lista de componentes
Componente Cantidad Valor
Resistencia 1 560
Resistencia 1 1 k
Resistencia 4 2.2 k
Resistencia 1 2.7 k
Resistencia 1 8.2 k
Resistencia 1 15 k
Resistencia 1 33 k
Capacitor 1 10 nF
4.3 Hardware
El circuito implementa un conversor Digital Anlogo (DAC) de 6 bits usando una combinacin de resistencias 8-4-2-1
conectada a 6 pines PWM (PB0 a PB5) de la tarjeta Arduino UNO. Adicionalmente se incorpora un capacitor al conversor
DAC con fines de suavizar la forma de onda.
4.4 Firmware Arduino
Para subir el firmware 007_DDS.hex a la tarjeta Arduino, utilizar el software utilitario Xloader. Este permite
subir archivos .hex a la tarjeta Arduino sin necesidad de usar el IDE Arduino.
4.5 Software PC
a) Descomprimir el archivo Windows GUI.rar
b) Ejecutar el archivo
c) Establecer la comunicacin serial con la tarjeta Arduino
d) Elegir el tipo de forma de onda
e) Elegir la frecuencia de salida
f) Para iniciar el Generador de Seal, presionar el botn RUN
g) Para terminar presionar el botn EXIT
7. Informe escrito
I. Mostrar las capturas de pantalla en Matlab para cada tipo de seal.
II. Realizar un RESUMEN (escrito a mano):
ALGORITMO FFT
Comprender el algoritmo FFT es una tarea un tanto larga, se deben incluir los siguientes puntos:
1. Comprender el concepto del Lema Danielson-Lanczos (D-L Lemma). Si bien requiere escribir ecuaciones largas,
es un componente vital para la FFT.
2. Explicar el concepto del Factor de Giro Twiddle Factor que junto al D-L Lemma son esenciales para comprender
como trabaja la FFT.
3. El Diagrama Butterfly (Mariposa). El cual se basa en los dos conceptos anteriores y es una representacin
diagramtica del algoritmo FFT.
4. Comprender el patrn de bit reverso reverse bit pattern para el ingreso de datos y la razn de su uso.
Incluir:
Fuentes de Informacin: direcciones web o bibliografa
Impresin de las primeras pginas de la fuente de informacin
Resumen escrito a mano (de un mnimo de 6 pginas)
III. Conclusiones