Samstag, 27. Juni 2015

Radioastronomie mit dem FDM-S2

FDM-S2 Support für Radioastronomie



Leider ist die mit der FDM-S2 mitgelieferte Software nicht für meine Radioastronomie Zwecke geeignet, da man kaum Daten sammeln kann, ohne einen riesigen Speicherplatz zur Verführung zu haben. Die auf der ELAD Seite zum herunterladen stehende DLLs (http://sdr.eladit.com/FDM-S2%20Sampler/lassen sich einfach nutzen und machen es möglich,Samples zu sammeln, zu transformieren und zu speichern in einer etwas günstigeren Variante. Die hier beschriebene Software macht das.
Blockdiagramm der Software


Mögliche Anwendung der CSV Files (hier gnuplot), nach dem Scan Falttener.


FMD-S2-Samples

Diese Applikation steuert den FDM-S2 und stellt die Schnittstelle für die CallBack Funktion dar. Mit Hilfe des Dokumentes "SPECIFICATION FOR EXTERNAL USE of I/O DLLs TO COMMUNICATE TO FDM DEVICE" wurde ein Code implementiert, mit dem die Voreinstellungen des Gerätes durchgeführt werden können, bevor die CallBack Funktion aufgerufen wird. Der Code wurde mit Visual Studio Express VC10 kompiliert. Ein Konfigurationsfile wird mit der Option -c eingegeben und stellt folgende Parameter zur Verführung:

Sampler  
Hier ist gemeint, welches DLL für die IQ Samples genommen werden soll . Mit der DLL legt man den Ausgang Sample Rate des FDM-S2 fest. ELAD stellt diese zur Verfügrung:

  • 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.


Je nach dem welcher DLL genommen wird, ist die Menge Samples auch fest.

  • 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
Erste Frequenz, ab der das Signal abgetastet wird. Die Bandbreite ist vom jeder DLL abhängig und legt damit die letzte Frequenz fest.
Permanence
Der Wert sagt, wie viele komplette "Complex Samples" Sätze pro Scan gesammelt werden . Zum Beispiel, ein eingestellter Wert von 300 mit der ExtIO_ELAD_FDMS2_6144k_v3_04.dll entspricht 300x49152=14.7 Millionen Samples.
Shift Counter
Dieser Wert entspricht die Menge der Verschiebungen der Start Frequenz, nach dem Erreichen der gewünschten Anzahl von Samples. Der Offset bei jeder Verschiebung ist ein (einstellbarer) Prozentsatz der Bandbreite vom ausgewählten DLL. Die Eigenschaften jedes DLLs sind im File fdm-s2-samples.cpp mittels einer Struktur namens fdm definiert.

Download



FFT von IQ Data: fdm_s2_fft.py

Diese Applikation liest das/die Raw IQ-Data File/s, extrahiert daraus die binär codierten Einstellparameter und führt eine DSP (Power Spectral Density, matlab) durch, um aus den IQ Daten das Spektrum zu generieren, Die FFT Einstellungen können im File fdm_s2_fft.py geändert werden. Das Spektrum wird dann dargestellt und alle berechneten Frequenz-Leistung Paare werden in ein csv File geschrieben, für eine spätere Nutzung.
Die Applikation wurde mit Python 2.7 implementiert. Beim Ausführen des Python Skriptes, werden die benötigten und nicht vorinstallierten Module in Form von Fehlermeldungen angezeigt. Python bietet aber eine sehr bequeme Möglichkeit, um bei Bedarf Module online zu installieren.

Die im Skript verwendete Variablen haben voreingestellte Werte, die beim Lesen der IQ-Files je nach eingefügtem Binär Header (siehe oben fdm-s2-sampler) überschrieben werden.

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


* Die Korrektur der Frequenz Werten vor dem Speichern ins File, berücksichtigt die Frequenzverschiebung vom Down Converter und muss für jeden Anwender geändert oder ganz eliminiert werden
handle.write("{0},{1}\n".format((1392+freq/1000000), smooth_gauss[smooth_cnt]))


Download



Keine Kommentare:

Kommentar veröffentlichen