summaryrefslogtreecommitdiffstats
path: root/FFT_Test/runfft.hcc
diff options
context:
space:
mode:
authorMarcel Lauwerijssen <paranoya@morphcore.com>2004-11-24 16:20:29 (GMT)
committerMarcel Lauwerijssen <paranoya@morphcore.com>2004-11-24 16:20:29 (GMT)
commit9893489d45b1cdb284f42231a8407fe34cf0b0f3 (patch)
tree042d300511f8fa852f6523a8e112507848eb2bf5 /FFT_Test/runfft.hcc
parentcd46168714594a56b173bb394af49f2c5f8fecde (diff)
downloadTASS-9893489d45b1cdb284f42231a8407fe34cf0b0f3.zip
TASS-9893489d45b1cdb284f42231a8407fe34cf0b0f3.tar.gz
TASS-9893489d45b1cdb284f42231a8407fe34cf0b0f3.tar.bz2
prepared multiple clockdomains
Diffstat (limited to '')
-rw-r--r--FFT_Test/runfft.hcc110
1 files changed, 22 insertions, 88 deletions
diff --git a/FFT_Test/runfft.hcc b/FFT_Test/runfft.hcc
index e470b1e..0c1c371 100644
--- a/FFT_Test/runfft.hcc
+++ b/FFT_Test/runfft.hcc
@@ -18,44 +18,39 @@
* 29 OCT 2002 1.00 MA Created *
* *
****************************************************************/
-
+
#include <stdlib.hch>
#include "pal_master.hch"
-#include "config.hch"
-#include "debug.hch"
-#include "fft.hch"
+#include "configuration.hch"
+#if USE_RUNFFT
#include "audio.hch"
+#include "fft.hch"
-#include "presets.hch"
+#include "debug.hch"
/*
* Forward declarations
*/
static macro expr ClockRate = PAL_ACTUAL_CLOCK_RATE;
-#if HARDWARE_MULTIPLY
-//input buffer
-ram signed 18 audio_buffer_in[256] with { block = "BlockRAM"};
-//output buffer
-ram signed 18 audio_buffer_out[128] with { block = "BlockRAM"};
-#else
-//input buffer
-ram signed 16 audio_buffer_in[256] with { block = "BlockRAM"};
-//output buffer
-ram signed 16 audio_buffer_out[128] with { block = "BlockRAM"};
-#endif
+
//EQ settings for the FFT
ram unsigned 4 EQ_info[128] with { block = "BlockRAM"};
//EQ settings received from the display
+extern mpram DualPortRam AudioIn;
+extern mpram DualPortRam AudioOut;
+
+extern chan unsigned 1 AudioOutReady;
+chan unsigned 1 AudioInReady;
#if HARDWARE_MULTIPLY
signed 18 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
signed 18 *audioptr_out1,*audioptr_out2;
-signed 6 *displayptr1,*displayptr2,*displayptr3,*displayptr4;
+unsigned 6 *displayptr1,*displayptr2,*displayptr3,*displayptr4;
#else
signed 16 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
@@ -63,34 +58,10 @@ signed 16 *audioptr_out1,*audioptr_out2;
#endif
-shared expr preset_address = (active_preset << 7);
-
-void LoadPresets(audiodata_t * audiodata)
-{
- unsigned 16 temp;
- unsigned 10 count;
- unsigned 8 index;
-
- count=0;
- do
- {
- par
- {
- temp = presets[index];
- index++;
- }
- par { audiodata->equalizer_levels.write[count] = temp[7:4]; count++; }
- par { audiodata->equalizer_levels.write[count] = temp[3:0]; count++; }
- par { audiodata->equalizer_levels.write[count] = temp[15:12]; count++; }
- par { audiodata->equalizer_levels.write[count] = temp[11:8]; count++; }
- } while (count<768);
-
-}
-
/*
* FFT routine
*/
-macro proc audio_main(AUDIOIN, AUDIOOUT, audiodata)
+macro proc audio_main(AUDIOIN, AUDIOOUT)
{
signed 18 sample;
unsigned 6 sample_count;
@@ -104,26 +75,17 @@ macro proc audio_main(AUDIOIN, AUDIOOUT, audiodata)
signed Output_sample;
ram unsigned 6 input[64];
- active_preset = 2;
//pointers for double and quadruple buffering:
- audioptr_in1 = &audio_buffer_in[0];
- audioptr_in2 = &audio_buffer_in[64];
- audioptr_in3 = &audio_buffer_in[128];
- audioptr_in4 = &audio_buffer_in[192];
-
- audioptr_out1 = &audio_buffer_out[0];
- audioptr_out2 = &audio_buffer_out[64];
+ audioptr_in1 = &AudioIn.audio_io[0];
+ audioptr_in2 = &AudioIn.audio_io[64];
+ audioptr_in3 = &AudioIn.audio_io[128];
+ audioptr_in4 = &AudioIn.audio_io[192];
- displayptr1 = &audiodata->ifft_info.write[0];
- displayptr2 = &audiodata->ifft_info.write[64];
- displayptr3 = &audiodata->ifft_info.write[128];
- displayptr4 = &audiodata->ifft_info.write[192];
+ audioptr_out1 = &AudioOut.audio_io[0];
+ audioptr_out2 = &AudioOut.audio_io[64];
FFT_Sync=0;
-
- LoadPresets(&audiodata);
- first = 1;
par
{
for(;;)
@@ -140,39 +102,11 @@ par
audioptr_out1 = audioptr_out2;
audioptr_out2 = audioptr_out1;
-
- displayptr1=displayptr2;
- displayptr2=displayptr3;
- displayptr3=displayptr4;
- displayptr4=displayptr1;
FFT_Sync = 0;
}
-
- // FFT calculation
- perform_fft(audioptr_in1);
-
-#if 1
- for(i=0;i<NUMBER_OF_FREQUENCIES;i++)
- {
- eqinfo = audiodata->equalizer_levels.read[preset_address+(0 @ i)];
- EQ_info[i<-7] = eqinfo;
- }
-
-
- // set volume of each individual frequency bar (equalizer)
- equalize_audio(&EQ_info[0], &audiodata->fft_info.write[0]);
-
-#endif // inverse FFT calculation
- perform_ifft(audioptr_out1,displayptr1);
-
-/*
- for (i = 0; i != 64; i++)
- {
- sample = audioptr_in1[i];
- audioptr_out1[i] = sample;
- }
-*/
+ AudioInReady ! sync;
+
}
else
delay;
@@ -215,5 +149,5 @@ par
}
}//end par
}// end function
-
+#endif