Samstag, 27. Juni 2015

Radioastronomía con FDM-S2

FDM-S2 Support para Radioastronomía

El software suministrado por ELAD para el uso del receptor FDM-S2 no permite almacenar los espectros en forma de ficheros csv. Por lo tanto uno está limitado a trabajar con wav, lo que requiere mucho espacio de almacenamiento. En la página http://sdr.eladit.com/FDM-S2%20Sampler/ se encuentran diversas DLLs, con las que se puede utilizar el receptor para recoger muestras IQ, transformarlas al dominio de la frecuencia y finalmente almacenarlas en ficheros csv. Con este fin se implementó el software aquí descrito.

Diagrama de bloques del software para uso en Radioastronomía
Posible aplicación para los datos extraidos

FMD-S2-Samples

La aplicación controla el FDM-S2 y representa la interfaz para la función CallBack. Con ayuda del documento "SPECIFICATION FOR EXTERNAL USE of I/O DLLs TO COMMUNICATE TO FDM DEVICE" se pudo implementar un código que realiza las configuraciones previas a la llamada CallBack. El código ha sido compilado con Visual Studio Express VC10. El fichero de configuración se le pasa al ejecutable con la opción -c y proporciona configurabilidad para los siguientes parámetros:

Sampler  
Aquí indicamos qué DLL ha de emplearse para recoger las muestras IQ. Con el uso de una u otra DLL se decide la frecuencia de muestreo. ELAD proporciona las siguientes DLLs:

  • ExtIO_ELAD_FDMS2_192k_v3_04.dll for 192 k Sample output data rate.
  • ExtIO_ELAD_FDMS2_384k_v3_04.dll for 384 k Sample output data rate. 
  • ExtIO_ELAD_FDMS2_768k_v3_04.dll for 768 k Sample output data rate.
  • ExtIO_ELAD_FDMS2_1536k_v3_04.dll for 1536 k Sample output data rate. 
  • ExtIO_ELAD_FDMS2_3072k_v3_04.dll for 3072 k Sample output data rate. 
  • ExtIO_ELAD_FDMS2_6144k_v3_04.dll for 6144 k Sample output data rate.


La DLL escogida fija la cantidad de muestras extraibles:

  • For 192k DLL return value is 12288 complex samples.
  • For 384k DLL return value is 12288 complex samples.
  • For 768k DLL return value is 12288 complex samples.
  • For 1536k DLL return value is 12288 complex samples.
  • For 3072k DLL return value is 49152 complex samples.
  • For 6144k DLL return value is 49152 complex samples.

Scan Frequency
Frecuencia de muestreo inicial. El ancho de bada del muestreo está implicitamente determinado por la DLL escogida y determina así la frecuencia final.
Permanence
Este valor indica cuántos Sets completos de muestras IQ complejas queremos recoger por cada Scan. Por ejemplo un valor de 300 y la DLL ExtIO_ELAD_FDMS2_6144k_v3_04.dll resulta en 300x49152=14.7 millones de muestras.
Shift Counter
Este parámetro determina la cantidad de desplazamientos a partir de la frecuencia inicio tras finalizar un muestreo (determinado por Permanence). Cada desplazamiento se hará con un offset con respecto a la frecuencia inicial, que es una parte (configurable) del ancho de banda de la DLL escogida.
La definición completa de una DLL con todos los parametros previamente configurados pero editables se encuentra en el fichero fdm-s2-samples.cpp en la estructura fdm.

Download





FFT de muestras complejas: fdm_s2_fft.py

Esta aplicación lee el/los fichero/s Raw de muestras IQ, extrae los parámetros configurados y codificados en binario por fdb-s2-samples y realiza la DSP (Power Spectral Density, matlab), para generar finalmente el espectro de frecuencias, Los parámetros de la FFT se pueden cambiar en el archivo fdm_s2_fft.py. Después de esto se hace una representación gráfica del espectro y se guardan todos los pares Frecuencia-dB en un fichero csv para su uso posterior.
La aplicación da sido implementada con Python 2.7. Al ejecutar el script, todos los módulos requeridos que no hayan sido instalados previamente, producirán un mensaje de error. De esta forma es sencillo ir descubriendo poco a poco los paquetes necesarios para ejecutar el script.

Las variables empleadas tienen valores predefinidos, pero que se sobreescriben al leer la cabecera binaria de los ficheros de muestras complejas IQ. Los parámetros son los siguientes:

FREQUENCY_DEFAULT = 30000000                            #30MHz
NFFT = 8192                                                                          # FFT Size
BLOCK = 12288                                                                   #FDM-S2
BANDBREITE_384K = 100000                                        #Hz
BANDBREITE_3M = 700000                                            #Hz
BANDBREITE_6M = 3000000                                         #Hz
PERMANENCE = 20                                                           # Permanence in fdm-s2-samples.cpp
SHIFT_CYCLE = 10                                                            # Shift Counter in fdm-s2-samples.cpp
BANDBREITE = BANDBREITE_6M          
SAMPLE_RATE = 384000                                                #With the FDM-S2 384K DLL for 32Bit
                                                                                                 # see "Sample output data rate" for every FDM-S2 DLL 
GAUSS_FILTER_FACTOR = 2                                        #Smoothing of Power Values. Factor 2 is very light.
PATH_OF_SAMPLING_FILES = ".\\RawFiles\\"          #Input Files
PATH_OF_OUTPUT_FILE = ".\\"                     
START_FREQ = 1419.6                                                    # Start Frequency for Output Data
END_FREQ = 1421.3                                                         # End Frequency for Output Data


La linea del código donde se convierten los valores de la frecuencia, corrijen los desplazamientos de la senal procedentes del Down Converter y debe ser cambiada o eliminada según el uso. 
handle.write("{0},{1}\n".format((1392+freq/1000000), smooth_gauss[smooth_cnt]))


Download



Keine Kommentare:

Kommentar veröffentlichen