Hello,

I've trying to use the FFT Accelerator on a 21469 processor, everything is
working fine in NOREPEAT mode but when I try to use the REPEAT mode I only get
the two first interrupts (one for the input DMA and the other for the output
DMA). My hardware is a ADSP-21469 EZ-Kit and the processor is a ENG version
(thought that could be relevant).

My original project is a VDK project but I modified the example in EE322 to make
things simpler but whith the same "no-morking" results. Please, any help will be
appreciated. The code is as follows:

In file FIR_IIR_FFT_Init.c : (modified lines are in bold text)

/* This file includes the initialization codes for FIR, IIR and FFT Accelerators
*/

#include "def21469.h"

#include "Cdef21469.h"

void Init_FFT();

/* Declaring the external buffers needed for FFT Accelerator*/

extern int FFT_IP_buff[];

extern int FFT_OP_buff[];

extern int FFT_CF_buff[];

/*Adding the TCB for FFT Accelerator*/

int FFT_IP_TCB[6]={

(int)0x80000,

(int)FFT_IP_buff,

512,

512,

1,

(int)FFT_IP_buff

};

int FFT_OP_TCB[6]={

(int)0x80000,

((int)FFT_OP_buff),

512,

512,

1,

(int)FFT_OP_buff

};

int FFT_CF_TCB[6]={

(int)FFT_IP_TCB+5-0x80000,

(int)FFT_CF_buff,

512,

512,

1,

(int)FFT_CF_buff

};

/* Adding the FFT Initialization Code Now */

void Init_FFT()

{

int temp;

//Mapping the FFT DMA interrupt

temp=*pPICR0;

temp&=~(P0I0|P0I1|P0I2|P0I3|P0I4);

temp|=P0I0|P0I1|P0I3|P0I4;

*pPICR0=temp;

*pPMCTL1&=~(BIT_17|BIT_18);

*pPMCTL1|TACCSEL;

//PMCTL1 effect latency

asm("nop;nop;nop;nop;");

//Clearing the FFTCTL registers

*pFFTCTL2=0;

*pFFTCTL1T_RST;

asm("nop;nop;nop;nop;");

temp=(int)FFT_CF_TCB;

*pCPIFFT=0x100000|temp+5-0x80000;

*pCPOFFT=(int)FFT_OP_TCB+5-0x80000;

*pFFTCTL2=VDIMDIV16_16|FFT_LOG2VDIM_8 | FFT_RPT;

*pFFTCTL1T_EN|FFT_START|FFT_DMAEN;

};

And in file main.C : (modified lines are in bold)

/* This is to test working of the GUI Generated Code for FFT Accelerator N%6
Points */

#include

#include

#include

#include

extern void Init_FFT();

void FFT_DMA_ISR();

#define N 256

float FFT_IP_buff[2*N]={

#include "fft_input.dat"

};

float FFT_OP_buff[2*N];

float FFT_OP1_buff[N/2];

float FFT_CF_buff[2*N]={

#include "twiddle_256.dat"

};

int fft_done=0;

int isr = 0;

int main()

{

int i = 0;

interrupt(SIG_P0,FFT_DMA_ISR);

Init_FFT();

while(1)

{

}

for(i=0;i
{

FFT_OP1_buff[i]=sqrt(FFT_OP_buff[2*i]*FFT_OP_buff[2*i]+FFT_OP_buff[2*i+1]*FFT_OP_buff[2*i+1]);

}

return 0;

}

void FFT_DMA_ISR()

{

isr++;

if((*pFFTDMASTAT&ODMACHIRPT)!=0)

fft_done=1;

}

I kept the program running for a little while and then stopped and saw the value
on isr, I expected a value greater than 2 but the value was exactly 2.

Thanks a lot,

jcgalveza

# FFT Accelerator Repeat mode

Started by ●October 5, 2011

Reply by ●October 5, 20112011-10-05

If you don't get an answer here you might try the ADI Engineer Zone

(http://ez.analog.com/index.jspa)

On Tue, 4 Oct 2011, Galvez wrote:

> Hello,

> I've trying to use the FFT Accelerator on a 21469 processor, everything is working fine in NOREPEAT mode but when I try to use the REPEAT mode I only get the two first interrupts (one for the input DMA and the other for the output DMA). My hardware is a ADSP-21469 EZ-Kit and the processor is a ENG version (thought that could be relevant).

> My original project is a VDK project but I modified the example in EE322 to make things simpler but whith the same "no-morking" results. Please, any help will be appreciated. The code is as follows:

>

> In file FIR_IIR_FFT_Init.c : (modified lines are in bold text)

>

(http://ez.analog.com/index.jspa)

On Tue, 4 Oct 2011, Galvez wrote:

> Hello,

> I've trying to use the FFT Accelerator on a 21469 processor, everything is working fine in NOREPEAT mode but when I try to use the REPEAT mode I only get the two first interrupts (one for the input DMA and the other for the output DMA). My hardware is a ADSP-21469 EZ-Kit and the processor is a ENG version (thought that could be relevant).

> My original project is a VDK project but I modified the example in EE322 to make things simpler but whith the same "no-morking" results. Please, any help will be appreciated. The code is as follows:

>

> In file FIR_IIR_FFT_Init.c : (modified lines are in bold text)

>