diff options
Diffstat (limited to 'Project/RTDSP')
-rw-r--r-- | Project/RTDSP/.launches/RTDSP.launch | 2 | ||||
-rw-r--r-- | Project/RTDSP/enhance.c | 39 |
2 files changed, 22 insertions, 19 deletions
diff --git a/Project/RTDSP/.launches/RTDSP.launch b/Project/RTDSP/.launches/RTDSP.launch index a54495a..fe8b6e4 100644 --- a/Project/RTDSP/.launches/RTDSP.launch +++ b/Project/RTDSP/.launches/RTDSP.launch @@ -13,7 +13,7 @@ <stringAttribute key="CCEDebugOptions.TARGET_CONFIGURATION_OPTION" value="full"/> <stringAttribute key="org.eclipse.cdt.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8"?> <memoryBlockExpressionList/> "/> <stringAttribute key="com.ti.ccstudio.debug.core.MRU_PROGRAM_NAME" value="C:\github\RTDSP\Project\RTDSP\Debug\RTDSP.out"/> -<stringAttribute key="com.ti.ccstudio.debug.core.MRU_MODULES" value="<?xml version="1.0" encoding="UTF-8"?> <modules> <module name="C:\GIT\RTDSP\lab3\RTDSP\Debug\RTDSP.out" time="Fri Jan 19 14:07:28 GMT 2018" time_long="1516370848357"/> <module name="C:\Github\RTDSP\lab3\RTDSP\Debug\RTDSP.out" time="Tue Jan 23 11:15:11 GMT 2018" time_long="1516706111426"/> <module name="C:\GIT\RTDSP\lab4\RTDSP\Debug\RTDSP.out" time="Thu Feb 01 11:44:21 GMT 2018" time_long="1517485461898"/> <module name="C:\github\RTDSP\lab4\RTDSP\Debug\RTDSP.out" time="Thu Feb 15 13:55:55 GMT 2018" time_long="1518702955359"/> <module name="C:\Github\RTDSP\lab5\RTDSP\Debug\RTDSP.out" time="Tue Feb 27 12:18:55 GMT 2018" time_long="1519733935329"/> <module name="C:\github\RTDSP\lab5\RTDSP\Debug\RTDSP.out" time="Thu Mar 01 13:36:20 GMT 2018" time_long="1519911380476"/> <module name="C:\GIT\RTDSP\Project\RTDSP\Debug\RTDSP.out" time="Mon Mar 05 11:30:19 GMT 2018" time_long="1520249419272"/> <module name="C:\github\RTDSP\Project\RTDSP\Debug\RTDSP.out" time="Thu Mar 08 12:40:39 GMT 2018" time_long="1520512839256"/> </modules> "/> +<stringAttribute key="com.ti.ccstudio.debug.core.MRU_MODULES" value="<?xml version="1.0" encoding="UTF-8"?> <modules> <module name="C:\GIT\RTDSP\lab3\RTDSP\Debug\RTDSP.out" time="Fri Jan 19 14:07:28 GMT 2018" time_long="1516370848357"/> <module name="C:\Github\RTDSP\lab3\RTDSP\Debug\RTDSP.out" time="Tue Jan 23 11:15:11 GMT 2018" time_long="1516706111426"/> <module name="C:\GIT\RTDSP\lab4\RTDSP\Debug\RTDSP.out" time="Thu Feb 01 11:44:21 GMT 2018" time_long="1517485461898"/> <module name="C:\github\RTDSP\lab4\RTDSP\Debug\RTDSP.out" time="Thu Feb 15 13:55:55 GMT 2018" time_long="1518702955359"/> <module name="C:\Github\RTDSP\lab5\RTDSP\Debug\RTDSP.out" time="Tue Feb 27 12:18:55 GMT 2018" time_long="1519733935329"/> <module name="C:\github\RTDSP\lab5\RTDSP\Debug\RTDSP.out" time="Thu Mar 01 13:36:20 GMT 2018" time_long="1519911380476"/> <module name="C:\GIT\RTDSP\Project\RTDSP\Debug\RTDSP.out" time="Mon Mar 05 11:30:19 GMT 2018" time_long="1520249419272"/> <module name="C:\github\RTDSP\Project\RTDSP\Debug\RTDSP.out" time="Thu Mar 08 15:05:35 GMT 2018" time_long="1520521535037"/> </modules> "/> <stringAttribute key="CCEDebugOptions.CPU_NAME" value="Spectrum Digital DSK-EVM-eZdsp onboard USB Emulator_0/TMS320C671X"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="RTDSP"/> <stringAttribute key="org.eclipse.cdt.launch.GLOBAL_VARIABLES" value="<?xml version="1.0" encoding="UTF-8"?> <globalVariableList/> "/> diff --git a/Project/RTDSP/enhance.c b/Project/RTDSP/enhance.c index 5f2e1ad..728194c 100644 --- a/Project/RTDSP/enhance.c +++ b/Project/RTDSP/enhance.c @@ -103,9 +103,10 @@ volatile int frame_ptr=0; /* Frame pointer */ volatile int frame_ctr = 0; volatile int m_ptr = 0; float lambda = 0.05; -float alpha = 20; +float alpha = 400; double avg = 0; MVal M[NUM_M]; +float mag_N_X; float K; float time_constant = 50E-6; /* Time constant in ms */ int started = 0; @@ -150,12 +151,8 @@ void main() outgain=OUTGAIN; for (k = 0; k < NUM_M; ++k) { - int i; M[k].pow = (float *) calloc(FFTLEN, sizeof(float)); - for(i = 0; i < FFTLEN; ++i) { - M[k].pow[i] = MAX_FLOAT; - } - M[k].sum = MAX_FLOAT; + M[k].sum = 0; } // initializing the value to estimate the low pass filter @@ -205,13 +202,20 @@ void init_HWI(void) // Spectrum calculations for the new values void write_spectrum(void) { unsigned int k; - M[m_ptr].sum = 0; - for(k = 0; k < FFTLEN; ++k) { - if(power_in[k] < M[m_ptr].pow[k] && power_in[k] != 0) { + if(M[m_ptr].sum == 0) { + for(k = 0; k < FFTLEN; ++k) { M[m_ptr].pow[k] = power_in[k]; M[m_ptr].sum += power_in[k]; - } else { - M[m_ptr].sum += M[m_ptr].pow[k]; + } + } else { + M[m_ptr].sum = 0; + for(k = 0; k < FFTLEN; ++k) { + if(power_in[k] < M[m_ptr].pow[k]) { + M[m_ptr].pow[k] = power_in[k]; + M[m_ptr].sum += power_in[k]; + } else { + M[m_ptr].sum += M[m_ptr].pow[k]; + } } } } @@ -221,7 +225,7 @@ void get_noise(void) { int min_index = 0, k; for(k = 1; k < NUM_M; ++k) { - if (M[k].sum < min_sum) { + if (M[k].sum < min_sum && M[k].sum != 0) { min_sum = M[k].sum; min_index = k; } @@ -235,7 +239,6 @@ void process_frame(void) { int k, m; int io_ptr0; - float mag_N_X; /* work out fraction of available CPU time used by algorithm */ cpufrac = ((float) (io_ptr & (FRAMEINC - 1)))/FRAMEINC; @@ -269,8 +272,8 @@ void process_frame(void) fft(FFTLEN, fft_out); // calculate the power spectrum - for (k = 0; i < FFTLEN; ++l) { - power_in[k] = pow(fft_out[k].r, 2) + pow(fft_out[k].i, 2); + for (k = 0; k < FFTLEN; ++k) { + power_in[k] = fft_out[k].r * fft_out[k].r + fft_out[k].i * fft_out[k].i; } // Get average of fft_out and write to Spectrum @@ -285,15 +288,15 @@ void process_frame(void) if(++m_ptr == NUM_M) m_ptr = 0; M[m_ptr].sum = 0; for(i = 0; i < FFTLEN; ++i) { - M[m_ptr].pow[i] = power_in[k]; - M[m_ptr].sum += power_in[k]; + M[m_ptr].pow[i] = power_in[i]; + M[m_ptr].sum += power_in[i]; } } // max(lambda, |N(w)/g(w)| for (k = 0; k < FFTLEN; ++k) { float g; - mag_N_X = 1 - alpha * noise[k]/power_in[k]; + mag_N_X = sqrt(1 - alpha * noise[k]/power_in[k]); g = mag_N_X > lambda ? mag_N_X : lambda; fft_out[k] = rmul(g, fft_out[k]); } |