Other Parts Discussed in Thread: C2000WARE, CONTROLSUITE
Tool/software: Code Composer Studio
I am trying to implement FFT on the F28m36x board I am using. I have used the 2837x_vcu0_rfft_512 example as a template. I have configured vcu0 unit on my board properly I believe. After compilation, I looked at the memory and see functions defined in vcu0_cfft_utils.asm and vcu0_cfft_256.asm are written to memory. I took example input from rfft_512_data.asm and pointed the fft input pointer to the data and ran the code to see if the output from the fft matched the expected output. When I looked at the disassembly I see the function label is loaded into the working registers but I don't see the assembly code for the functions within the disassembly window. I continue to step through code and see the work buffer is filled with new data but after finishing the code I look at the contents of the input buffer and the data hasn't changed. It believe that the assembly functions are supposed to write back to the input buffer if the number of points are even, in which case they are. I'm a tad bit stumped
cfft16_t fft = rfft16_512P_DEFAULTS;
ComplexShort fft_work_buffer[256];
void rfft16(cfft16_t *fft_hnd);
void main(void){
fft.ipcbptr = (int *)RFFT16_512p_in_data + 0;
fft.workptr = (int *)fft_work_buffer + 0;
fft.init(&fft);
rfft16(&fft);
int k;
int s,t,v;
for (k = 0; k<DATA_LENGTH; k++){
if(abs(RFFT16_512p_out_data[k] - RFFT16_512p_in_data[k]) > EPSILON){
s = RFFT16_512p_out_data[k];
t = RFFT16_512p_in_data[k];
v = abs(s-t);
fail++;
}
else{
pass++;
}
}
After iterating through the for loop I have 512 fails. the fft structure and functions are included in the vc0_fft.h/vcu_types.h files from the dsp library under v2_10_00_00/include/vcu0