AnsweredAssumed Answered

PDAP Interface to FPGA

Question asked by Kilohercas on Apr 17, 2014
Latest reply on Apr 17, 2014 by Kilohercas

Hello, i have project that needs to send data from ADC to ADSP-21489 at 480Mbps. FPGA is responsible of generating timings to CCD sensor, and ADC readout all data. Detector is 128 points long at 16b resolution. AT first i was trying to use AMI, but somehow it is too slow, and since PDAP is capable 1Gbps, it should meet my needs.

Taimingas.png


FPGA will generate Valid signal, CLK from ADC, and data. All i need is to load this data as fast as possible to internal memory, so i could do single point DFT.

 

Question is:

Can i load 128 words of data to internal memory without processor interruption, but at the same time know index of valid rising edge ? (index of current valid data packet inside memory, and when my valid signal goes high, and i finish my math, i will reset index to zero, and start to wait another one data burst from FPGA)

If i can't do in this way, how can i reed current data in PDAP register (in c language)

 

i found example how to configure PDAP, but i was unable to find hardware reference how can i reed data. (and please don't just give link to hardware reference, i am trying to read and understand how to do that, i just started to work with dsp, i don't have debugger  so i could see what is inside memory or registers so i could do trail and error method programming)
PDAP config from example:

void Enable_PDAP(void)

{

 

    *pIDP_CTL0 = 0;

    *pIDP_CTL1 = 0;

//    disable the CIDP globally

 

    *pIDP_PP_CTL = 0;

//    clear the PDAP control register   

 

    *pIDP_PP_CTL |= IDP_PDAP_RESET;

//    reset the PDAP state machine   

 

    *pIDP_PP_CTL |= IDP_PDAP_PACKING3;

//    select the mode11, i get data in MSB of 32b word, so i will shift data to left then i do math

 

//    Enable the PDAP Mask bits for DAI_PIN05..20   

    *pIDP_PP_CTL |= IDP_P20_PDAPMASK|

                    IDP_P19_PDAPMASK|

                    IDP_P18_PDAPMASK|

                    IDP_P17_PDAPMASK|

                    IDP_P16_PDAPMASK|

                    IDP_P15_PDAPMASK|

                    IDP_P14_PDAPMASK|

                    IDP_P13_PDAPMASK|

                    IDP_P12_PDAPMASK|

                    IDP_P11_PDAPMASK|

                    IDP_P10_PDAPMASK|

                    IDP_P09_PDAPMASK|

                    IDP_P08_PDAPMASK|

                    IDP_P07_PDAPMASK|

                    IDP_P06_PDAPMASK|

                    IDP_P05_PDAPMASK;

      

 

    *pIDP_PP_CTL |= IDP_PDAP_CLKEDGE;

// define the active clock edge    for the PDAP

 

    *pIDP_PP_CTL |= IDP_PDAP_EN    ;

//    enable the PDAP       

 

    *pIDP_DMA_M0  = 0x1;

    *pIDP_DMA_C0 =  dma_count;

    *pIDP_DMA_I0 =  dma_index;

//    configure PDAP DMA parameter registers       

 

    *pIDP_CTL1 |= IDP_EN0|IDP_DMA_EN0;

    *pIDP_CTL0 |= IDP_DMA_EN|IDP_EN;

//    Enable the PDAP with DMAs

}

 

So can some one guide me how to make it work ?

Attachments

Outcomes