diff --git a/simulation/main.c b/simulation/main.c index e1c802b..e3e7cfb 100644 --- a/simulation/main.c +++ b/simulation/main.c @@ -1,40 +1,29 @@ // BLOCK LEN 1 und MAX_FIR_COEFFS 64 werden vom Compiler mitgegeben -//#define SIMULATE - -#ifdef SIMULATE - #include -#endif - +#include #include #include "signal_processing/include/signal_path.h" -// Register und Bitmasken für Interrupts zwischen ARM und LPDSP Prozessor +// Register und Bitmasken f�r Interrupts zwischen ARM und LPDSP Prozessor #define CSS_CMD 0xC00004 #define CSS_CMD_0 (1<<0) #define CSS_CMD_1 (1<<1) // Shared Memory von ARM und DSP definieren -#define INPUT_PORT0_ADD 0x800000 // Feste Adressen für Eingangsdaten im Shared Memory -#define OUTPUT_PORT_ADD (INPUT_PORT0_ADD + 16) // Feste Adressen für Ausgangsdatensdaten im Shared Memory, 16 Byte von Eingangsadresse Weg +#define INPUT_PORT0_ADD 0x800000 // Feste Adressen f�r Eingangsdaten im Shared Memory +#define OUTPUT_PORT_ADD (INPUT_PORT0_ADD + 16) // Feste Adressen f�r Ausgangsdatensdaten im Shared Memory, 16 Byte von Eingangsadresse Weg -//Chess Compiler spezifisch: Interrupt-Register festlegen um ARM zu kontaktieren nach fertiger Berechnung -volatile static unsigned char chess_storage(DMIO:CSS_CMD) css_cmd_flag; - -// Interrupt-Flag, welche von ARM gesetzt wird, wenn eine Berechnung gewünscht ist -static volatile int action_required; - -// Structs anlegen für die Signalpfade - hier werden Konfigurationen abgelegt(signal_path.h) +// Structs anlegen f�r die Signalpfade - hier werden Konfigurationen abgelegt(signal_path.h) static SingleSignalPath corrupted_signal; static SingleSignalPath reference_noise_signal; -static volatile int16_t chess_storage(DMB:INPUT_PORT0_ADD) input_port[4]; //Array mit 4x16 Bit Einträgen auf 2x32 Bit Registern - nur die ersten 2 werden genutzt -static volatile int16_t chess_storage(DMB:OUTPUT_PORT_ADD) output_port[4]; //Array mit 4x16 Bit Einträgen auf 2x32 Bit Registern - alle werden genutzt +static volatile int16_t chess_storage(DMB:INPUT_PORT0_ADD) input_port[4]; //Array mit 4x16 Bit Eintr�gen auf 2x32 Bit Registern - nur die ersten 2 werden genutzt +static volatile int16_t chess_storage(DMB:OUTPUT_PORT_ADD) output_port[4]; //Array mit 4x16 Bit Eintr�gen auf 2x32 Bit Registern - alle werden genutzt static volatile int16_t chess_storage(DMB) *input_pointer_0; static volatile int16_t chess_storage(DMB) *input_pointer_1; static volatile int16_t chess_storage(DMB) *output_pointer; static volatile int16_t chess_storage(DMB) *sample_pointer; -static volatile int16_t chess_storage(DMB) sample; //Speicherplatz für Ergebnis der calc()-Funktion +static volatile int16_t chess_storage(DMB) sample; //Speicherplatz f�r Ergebnis der calc()-Funktion //void isr0() ist eine Interrupt Service Routine Funktion, welche als C Funktion deklariert wird // property (isr) ist Chess Compiler spezifisch und kennzeichnet eine Funktion als Interrupt Service Routine @@ -46,13 +35,13 @@ extern "C" void isr0() property (isr) { int main(void) { // Enum, welcher den Ausgabemodus definiert - wird in calc()-Funktion verwendet static OutputMode mode = OUTPUT_MODE_FIR_LMS; - // Biquad Filter für C-Sensor und Acc-Sensor anlegen + // Biquad Filter f�r C-Sensor und Acc-Sensor anlegen // Alle 0 bis auf b[0] -> einfacher Gain auf 0,75 double b0[5]={0.75, 0., 0., 0., 0.}; double b1[5]={0.75, 0., 0., 0., 0.}; - int coefficients = MAX_FIR_COEFFS; // 64 Koeffizienten für ANR + int coefficients = MAX_FIR_COEFFS; // 64 Koeffizienten f�r ANR - // Signale initialisieren, oben angelegte Structs mit Parametern füllen + // Signale initialisieren, oben angelegte Structs mit Parametern f�llen init( &corrupted_signal, &reference_noise_signal, //Signal-Structs b0, // Biqquad Koeffizienten C-Sensor @@ -65,49 +54,26 @@ int main(void) { coefficients // Anzahl Filterkoeffizienten ); - //Simulationsmodus mit File I/O - #ifdef SIMULATE - FILE *fp1 = fopen("./test/testdata/input/chirp_disturber.txt", "r"); - FILE *fp2 = fopen("./test/testdata/input/disturber.txt", "r"); - FILE *fp3 = fopen("./test/testdata/output/out_simulated.txt", "w"); + FILE *fp1 = fopen("./test/testdata/input/chirp_disturber.txt", "r"); + FILE *fp2 = fopen("./test/testdata/input/disturber.txt", "r"); + FILE *fp3 = fopen("./test/testdata/output/out_simulated.txt", "w"); - int d0, d1; + int d0, d1; - while (!(feof(fp1) || feof(fp2))){ - for (int i=0; i + + +