summaryrefslogtreecommitdiffstats
path: root/FFT_Test/runfft_test.hcc
diff options
context:
space:
mode:
Diffstat (limited to 'FFT_Test/runfft_test.hcc')
-rw-r--r--FFT_Test/runfft_test.hcc381
1 files changed, 381 insertions, 0 deletions
diff --git a/FFT_Test/runfft_test.hcc b/FFT_Test/runfft_test.hcc
new file mode 100644
index 0000000..ff2dca0
--- /dev/null
+++ b/FFT_Test/runfft_test.hcc
@@ -0,0 +1,381 @@
+/****************************************************************
+* *
+* Copyright (C) 1991-2003 Celoxica Ltd. All rights reserved. *
+* *
+*****************************************************************
+* *
+* Project : PAL *
+* Date : 31 JAN 2003 *
+* File : reverb.hcc *
+* Author : Matthew Aubury (MA) *
+* Contributors: *
+* *
+* Description: *
+* Simple audio reverb. *
+* *
+* Date Version Author Reason for change *
+* *
+* 29 OCT 2002 1.00 MA Created *
+* *
+****************************************************************/
+
+
+#include <stdlib.hch>
+#include "pal_master.hch"
+
+#include "debug.hch"
+#include "fft.hch"
+#include "runfft.hch"
+
+#include "presets.hch"
+#include "config.hch"
+/*
+ * Forward declarations
+ */
+
+static macro expr ClockRate = PAL_ACTUAL_CLOCK_RATE;
+
+//input buffer
+ram signed 16 audio_buffer_in[256] with { block = "BlockRAM"};
+//output buffer
+ram signed 16 audio_buffer_out[128] with { block = "BlockRAM"};
+//EQ settings for the FFT
+ram unsigned 4 EQ_info[128] with { block = "BlockRAM"};
+//EQ settings received from the display
+mpram
+{
+ ram unsigned 4 write[768];
+ rom unsigned 4 read[768];
+}EQ_level with { block = "BlockRAM"};
+
+mpram
+{
+ ram unsigned 7 write[256];
+ rom unsigned 7 read[256];
+}fft_info with { block = "BlockRAM"};
+
+signed 16 *audioptr_in1,*audioptr_in2,*audioptr_in3,*audioptr_in4;
+signed 16 *audioptr_out1,*audioptr_out2;
+signed 16 *audioptr_temp;
+
+unsigned 3 active_preset;
+
+shared expr preset_address = (0@(active_preset-1))<<7;
+
+void LoadPresets()
+{
+ unsigned 16 temp;
+ unsigned 10 count;
+ unsigned 8 index;
+
+ count=0;
+ do
+ {
+ par
+ {
+ temp = presets[index];
+ index++;
+ }
+ par { EQ_level.write[count] = temp[7:4]; count++; }
+ par { EQ_level.write[count] = temp[3:0]; count++; }
+ par { EQ_level.write[count] = temp[15:12]; count++; }
+ par { EQ_level.write[count] = temp[11:8]; count++; }
+ } while (count<768);
+
+}
+
+/*
+ * FFT routine
+ */
+static macro proc RunFFT (AudioIn, AudioOut)
+{
+ unsigned 6 sample_count;
+ unsigned 8 count, i;
+// unsigned 16 scount, temp;
+
+ unsigned 1 FFT_Sync;
+ macro expr OW = PalAudioOutGetMaxDataWidthCT();
+ macro expr IW = PalAudioInGetMaxDataWidthCT();
+ signed LeftNew, RightNew;
+ signed Output_sample;
+
+ //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];
+
+audio_buffer_in[0] = 128;
+audio_buffer_in[1] = 197;
+audio_buffer_in[2] = 244;
+audio_buffer_in[3] = 254;
+audio_buffer_in[4] = 224;
+audio_buffer_in[5] = 164;
+audio_buffer_in[6] = 92;
+audio_buffer_in[7] = 31;
+audio_buffer_in[8] = 1;
+audio_buffer_in[9] = 11;
+audio_buffer_in[10] = 58;
+audio_buffer_in[11] = 127;
+audio_buffer_in[12] = 196;
+audio_buffer_in[13] = 244;
+audio_buffer_in[14] = 254;
+audio_buffer_in[15] = 225;
+audio_buffer_in[16] = 164;
+audio_buffer_in[17] = 92;
+audio_buffer_in[18] = 31;
+audio_buffer_in[19] = 1;
+audio_buffer_in[20] = 11;
+audio_buffer_in[21] = 57;
+audio_buffer_in[22] = 126;
+audio_buffer_in[23] = 196;
+audio_buffer_in[24] = 243;
+audio_buffer_in[25] = 254;
+audio_buffer_in[26] = 225;
+audio_buffer_in[27] = 165;
+audio_buffer_in[28] = 93;
+audio_buffer_in[29] = 32;
+audio_buffer_in[30] = 1;
+audio_buffer_in[31] = 10;
+audio_buffer_in[32] = 57;
+audio_buffer_in[33] = 126;
+audio_buffer_in[34] = 195;
+audio_buffer_in[35] = 243;
+audio_buffer_in[36] = 254;
+audio_buffer_in[37] = 226;
+audio_buffer_in[38] = 165;
+audio_buffer_in[39] = 93;
+audio_buffer_in[40] = 32;
+audio_buffer_in[41] = 1;
+audio_buffer_in[42] = 10;
+audio_buffer_in[43] = 56;
+audio_buffer_in[44] = 125;
+audio_buffer_in[45] = 195;
+audio_buffer_in[46] = 243;
+audio_buffer_in[47] = 255;
+audio_buffer_in[48] = 226;
+audio_buffer_in[49] = 166;
+audio_buffer_in[50] = 94;
+audio_buffer_in[51] = 33;
+audio_buffer_in[52] = 1;
+audio_buffer_in[53] = 10;
+audio_buffer_in[54] = 56;
+audio_buffer_in[55] = 125;
+audio_buffer_in[56] = 194;
+audio_buffer_in[57] = 243;
+audio_buffer_in[58] = 255;
+audio_buffer_in[59] = 226;
+audio_buffer_in[60] = 167;
+audio_buffer_in[61] = 95;
+audio_buffer_in[62] = 33;
+audio_buffer_in[63] = 1;
+audio_buffer_in[64] = 10;
+audio_buffer_in[65] = 55;
+audio_buffer_in[66] = 124;
+audio_buffer_in[67] = 194;
+audio_buffer_in[68] = 242;
+audio_buffer_in[69] = 255;
+audio_buffer_in[70] = 227;
+audio_buffer_in[71] = 167;
+audio_buffer_in[72] = 95;
+audio_buffer_in[73] = 33;
+audio_buffer_in[74] = 1;
+audio_buffer_in[75] = 9;
+audio_buffer_in[76] = 55;
+audio_buffer_in[77] = 123;
+audio_buffer_in[78] = 193;
+audio_buffer_in[79] = 242;
+audio_buffer_in[80] = 255;
+audio_buffer_in[81] = 227;
+audio_buffer_in[82] = 168;
+audio_buffer_in[83] = 96;
+audio_buffer_in[84] = 34;
+audio_buffer_in[85] = 2;
+audio_buffer_in[86] = 9;
+audio_buffer_in[87] = 54;
+audio_buffer_in[88] = 123;
+audio_buffer_in[89] = 193;
+audio_buffer_in[90] = 242;
+audio_buffer_in[91] = 255;
+audio_buffer_in[92] = 227;
+audio_buffer_in[93] = 168;
+audio_buffer_in[94] = 96;
+audio_buffer_in[95] = 34;
+audio_buffer_in[96] = 2;
+audio_buffer_in[97] = 9;
+audio_buffer_in[98] = 54;
+audio_buffer_in[99] = 122;
+audio_buffer_in[100] = 192;
+audio_buffer_in[101] = 242;
+audio_buffer_in[102] = 255;
+audio_buffer_in[103] = 228;
+audio_buffer_in[104] = 169;
+audio_buffer_in[105] = 97;
+audio_buffer_in[106] = 35;
+audio_buffer_in[107] = 2;
+audio_buffer_in[108] = 9;
+audio_buffer_in[109] = 53;
+audio_buffer_in[110] = 122;
+audio_buffer_in[111] = 192;
+audio_buffer_in[112] = 241;
+audio_buffer_in[113] = 255;
+audio_buffer_in[114] = 228;
+audio_buffer_in[115] = 169;
+audio_buffer_in[116] = 97;
+audio_buffer_in[117] = 35;
+audio_buffer_in[118] = 2;
+audio_buffer_in[119] = 9;
+audio_buffer_in[120] = 53;
+audio_buffer_in[121] = 121;
+audio_buffer_in[122] = 191;
+audio_buffer_in[123] = 241;
+audio_buffer_in[124] = 255;
+audio_buffer_in[125] = 228;
+audio_buffer_in[126] = 170;
+audio_buffer_in[127] = 98;
+audio_buffer_in[128] = 35;
+audio_buffer_in[129] = 2;
+audio_buffer_in[130] = 8;
+audio_buffer_in[131] = 53;
+audio_buffer_in[132] = 120;
+audio_buffer_in[133] = 191;
+audio_buffer_in[134] = 241;
+audio_buffer_in[135] = 255;
+audio_buffer_in[136] = 229;
+audio_buffer_in[137] = 170;
+audio_buffer_in[138] = 99;
+audio_buffer_in[139] = 36;
+audio_buffer_in[140] = 2;
+audio_buffer_in[141] = 8;
+audio_buffer_in[142] = 52;
+audio_buffer_in[143] = 120;
+audio_buffer_in[144] = 190;
+audio_buffer_in[145] = 241;
+audio_buffer_in[146] = 255;
+audio_buffer_in[147] = 229;
+audio_buffer_in[148] = 171;
+audio_buffer_in[149] = 99;
+audio_buffer_in[150] = 36;
+audio_buffer_in[151] = 2;
+audio_buffer_in[152] = 8;
+audio_buffer_in[153] = 52;
+audio_buffer_in[154] = 119;
+audio_buffer_in[155] = 190;
+audio_buffer_in[156] = 240;
+audio_buffer_in[157] = 255;
+audio_buffer_in[158] = 230;
+audio_buffer_in[159] = 172;
+audio_buffer_in[160] = 100;
+audio_buffer_in[161] = 37;
+audio_buffer_in[162] = 2;
+audio_buffer_in[163] = 8;
+audio_buffer_in[164] = 51;
+audio_buffer_in[165] = 119;
+audio_buffer_in[166] = 189;
+audio_buffer_in[167] = 240;
+audio_buffer_in[168] = 255;
+audio_buffer_in[169] = 230;
+audio_buffer_in[170] = 172;
+audio_buffer_in[171] = 100;
+audio_buffer_in[172] = 37;
+audio_buffer_in[173] = 2;
+audio_buffer_in[174] = 8;
+audio_buffer_in[175] = 51;
+audio_buffer_in[176] = 118;
+audio_buffer_in[177] = 189;
+audio_buffer_in[178] = 240;
+audio_buffer_in[179] = 255;
+audio_buffer_in[180] = 230;
+audio_buffer_in[181] = 173;
+audio_buffer_in[182] = 101;
+audio_buffer_in[183] = 37;
+audio_buffer_in[184] = 3;
+audio_buffer_in[185] = 7;
+audio_buffer_in[186] = 50;
+audio_buffer_in[187] = 118;
+audio_buffer_in[188] = 188;
+audio_buffer_in[189] = 239;
+audio_buffer_in[190] = 255;
+audio_buffer_in[191] = 231;
+audio_buffer_in[192] = 173;
+audio_buffer_in[193] = 101;
+audio_buffer_in[194] = 38;
+audio_buffer_in[195] = 3;
+audio_buffer_in[196] = 7;
+audio_buffer_in[197] = 50;
+audio_buffer_in[198] = 117;
+audio_buffer_in[199] = 188;
+audio_buffer_in[200] = 239;
+audio_buffer_in[201] = 255;
+audio_buffer_in[202] = 231;
+audio_buffer_in[203] = 174;
+audio_buffer_in[204] = 102;
+audio_buffer_in[205] = 38;
+audio_buffer_in[206] = 3;
+audio_buffer_in[207] = 7;
+audio_buffer_in[208] = 49;
+audio_buffer_in[209] = 116;
+audio_buffer_in[210] = 187;
+audio_buffer_in[211] = 239;
+audio_buffer_in[212] = 255;
+audio_buffer_in[213] = 231;
+audio_buffer_in[214] = 174;
+audio_buffer_in[215] = 103;
+audio_buffer_in[216] = 39;
+audio_buffer_in[217] = 3;
+audio_buffer_in[218] = 7;
+audio_buffer_in[219] = 49;
+audio_buffer_in[220] = 116;
+audio_buffer_in[221] = 187;
+audio_buffer_in[222] = 239;
+audio_buffer_in[223] = 255;
+audio_buffer_in[224] = 232;
+audio_buffer_in[225] = 175;
+audio_buffer_in[226] = 103;
+audio_buffer_in[227] = 39;
+audio_buffer_in[228] = 3;
+audio_buffer_in[229] = 7;
+audio_buffer_in[230] = 48;
+audio_buffer_in[231] = 115;
+audio_buffer_in[232] = 186;
+audio_buffer_in[233] = 238;
+audio_buffer_in[234] = 255;
+audio_buffer_in[235] = 232;
+audio_buffer_in[236] = 175;
+audio_buffer_in[237] = 104;
+audio_buffer_in[238] = 40;
+audio_buffer_in[239] = 3;
+audio_buffer_in[240] = 6;
+audio_buffer_in[241] = 48;
+audio_buffer_in[242] = 115;
+audio_buffer_in[243] = 186;
+audio_buffer_in[244] = 238;
+audio_buffer_in[245] = 255;
+audio_buffer_in[246] = 232;
+audio_buffer_in[247] = 176;
+audio_buffer_in[248] = 104;
+audio_buffer_in[249] = 40;
+audio_buffer_in[250] = 3;
+audio_buffer_in[251] = 6;
+audio_buffer_in[252] = 47;
+audio_buffer_in[253] = 114;
+audio_buffer_in[254] = 185;
+audio_buffer_in[255] = 238;
+
+
+perform_fft(audioptr_in1);
+perform_ifft(audioptr_out1);
+i=0;
+do
+{
+ print_hex_value((unsigned)audio_buffer_in[i]);
+ print_string(" ");
+ print_hex_value((unsigned)audioptr_in1[i]);
+ print_eol();
+ i++;
+}while(i);
+}// end function
+