Gonzalo Brusco
/
QuiPAD
Real Time FIR Filter - Distinctive Excellence award winner :)
config.h@0:b3e50e98acac, 2011-08-13 (annotated)
- Committer:
- Gonzakpo
- Date:
- Sat Aug 13 17:35:52 2011 +0000
- Revision:
- 0:b3e50e98acac
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Gonzakpo | 0:b3e50e98acac | 1 | |
Gonzakpo | 0:b3e50e98acac | 2 | #ifndef CONFIG_H_ |
Gonzakpo | 0:b3e50e98acac | 3 | #define CONFIG_H_ |
Gonzakpo | 0:b3e50e98acac | 4 | |
Gonzakpo | 0:b3e50e98acac | 5 | /********************************CONFIGURACION**********************************/ |
Gonzakpo | 0:b3e50e98acac | 6 | |
Gonzakpo | 0:b3e50e98acac | 7 | #define BLOCKSIZE 1917 /* Tama�o del bloque (en words) a procesar */ |
Gonzakpo | 0:b3e50e98acac | 8 | |
Gonzakpo | 0:b3e50e98acac | 9 | #define COEFF_AMOUNT 256 /* Cantidad de coeficientes maxima del (o de los) filtros. */ |
Gonzakpo | 0:b3e50e98acac | 10 | /* Este valor determina el largo de los buffers para procesamiento */ |
Gonzakpo | 0:b3e50e98acac | 11 | |
Gonzakpo | 0:b3e50e98acac | 12 | /* Requisitos impuestos por el algoritmo de filtrado: |
Gonzakpo | 0:b3e50e98acac | 13 | * {(COEFF_AMOUNT-1)+BLOCKSIZE} debe ser multiplo de 4. |
Gonzakpo | 0:b3e50e98acac | 14 | * COEFF_AMOUNT debe ser tambien multiplo de 4. |
Gonzakpo | 0:b3e50e98acac | 15 | * COEFF_AMOUNT < {(COEFF_AMOUNT-1)+BLOCKSIZE} |
Gonzakpo | 0:b3e50e98acac | 16 | * Ejemplo: COEFF_AMOUNT=100 y BLOCKSIZE=101 |
Gonzakpo | 0:b3e50e98acac | 17 | */ |
Gonzakpo | 0:b3e50e98acac | 18 | |
Gonzakpo | 0:b3e50e98acac | 19 | /* De acuerdo a nuestro filtrado antialiasing, con un muestreo de 57KHz vamos a tener una atenuacion |
Gonzakpo | 0:b3e50e98acac | 20 | * de -63dB del aliasing que se mete en la banda de audio (0-22KHz). |
Gonzakpo | 0:b3e50e98acac | 21 | */ |
Gonzakpo | 0:b3e50e98acac | 22 | |
Gonzakpo | 0:b3e50e98acac | 23 | #define SAMPLING_DIV 195 /* Este valor fija la frecuencia de muestreo tanto del ADC como del DAC. |
Gonzakpo | 0:b3e50e98acac | 24 | La cuenta para saber la frecuencia resultante de muestreo es la siguiente: |
Gonzakpo | 0:b3e50e98acac | 25 | FSAMPLING = 100 MHz / (8 * SAMPLING_DIV). |
Gonzakpo | 0:b3e50e98acac | 26 | Con 105 tenemos una frecuencia de muestreo de 120KHz |
Gonzakpo | 0:b3e50e98acac | 27 | Con 156 tenemos una frecuencia de muestreo de 80KHz |
Gonzakpo | 0:b3e50e98acac | 28 | Con 283 tenemos una frecuencia de muestreo de ~44.1KHz |
Gonzakpo | 0:b3e50e98acac | 29 | Con 219 tenemos una frecuencia de muestreo de ~57KHz |
Gonzakpo | 0:b3e50e98acac | 30 | Con 125 tenemos una frecuencia de muestreo de 100KHz |
Gonzakpo | 0:b3e50e98acac | 31 | Con 12500 tenemos una frecuencia de 1KHz (para debug) |
Gonzakpo | 0:b3e50e98acac | 32 | Con 125000 tenemos una frecuencia de 100Hz (para debug) |
Gonzakpo | 0:b3e50e98acac | 33 | Con 1250000 tenemos una frecuencia de 10Hz (para debug)*/ |
Gonzakpo | 0:b3e50e98acac | 34 | |
Gonzakpo | 0:b3e50e98acac | 35 | /* En realidad, la frecuencia maxima de muestreo del ADC es de "192307,69230769230769230769230769 Hz" |
Gonzakpo | 0:b3e50e98acac | 36 | * porque la frecuencia de trabajo del mismo es de 12.5MHz y la conversion se produce cada 65 clocks. |
Gonzakpo | 0:b3e50e98acac | 37 | * Entonces, para que el submuestreo que realiza el DMA sea "correcto" la frecuencia con la que el DMA |
Gonzakpo | 0:b3e50e98acac | 38 | * toma los datos deberia ser un submultiplo de la del muestreo maximo del ADC |
Gonzakpo | 0:b3e50e98acac | 39 | * Considero una frecuencia exactamente 3 veces menor => "64102,564102564102564102564102564 Hz" |
Gonzakpo | 0:b3e50e98acac | 40 | * Entonces el SAMPLING_DIV deber�a ser de exactamente 195. |
Gonzakpo | 0:b3e50e98acac | 41 | */ |
Gonzakpo | 0:b3e50e98acac | 42 | |
Gonzakpo | 0:b3e50e98acac | 43 | #endif /* CONFIG_H_ */ |