This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-TDAX: Questions about working buffer, rounding and FFT 16 Bit-Input on EVE

Part Number: PROCESSOR-SDK-TDAX

Hi Guys,

Greetings. I have several questions about EVE, which are basics.

  1. When I use FFT processing, I see, that WBUF is switched to System, than to EVE and than back to ARP32. But when I malloc this buffer on ARP32, first step isn't necessary?! Then I want to ask, when I pass the FFT-function an input and output pointer on WBUF, why I need these switching?

    VCOP_BUF_SWITCH_SET(WBUF_SYST, IBUFHB_SYST, IBUFLB_SYST,
    IBUFHA_SYST, IBUFLA_SYST);
    vcop_fft_512_32inter_stage_1_init(pInput, pScratchWBUF, pScratchWBUF16_lo, pScratchWBUF16_hi, pScratchH, pScratchH16_lo, pScratchH16_hi, pOutput, pTwiddleFactor, pitch, scale, numOfLines, __pblock_vcop_fft_512_32inter_stage_1);

    VCOP_BUF_SWITCH_SET(WBUF_VCOP, IBUFHB_VCOP, IBUFLB_VCOP,
    IBUFHA_VCOP, IBUFLA_VCOP);
    vcop_fft_512_32inter_stage_1_vloops(__pblock_vcop_fft_512_32inter_stage_1);

    _vcop_vloop_done();
    VCOP_BUF_SWITCH_SET(WBUF_SYST, IBUFHB_SYST, IBUFLB_SYST,
    IBUFHA_SYST, IBUFLA_SYST);

  2. Will be allocate this Working buffer in main memory, which is used by ARP32 and VCOP?
  3. On FFT function with 16 bit input and 16 bit output is the opportunity to pass a scale factor. When I look in .vcop_fft_512_16ix16o_32inter_kernel.k, I see that scaling is executed by rounding with this scaling factor. I don't understand, how you realize a scaling with rounding?
  4. FFT functions on EVE have always 16-bit input. Is it possible to pass an 32-bit input? Input and output work on WBUF. Since 32-bit output is on WBUF possible, should 16-bit input also possible?

Thank you in advance for the support.

Regards,

Lukas

  • Hi Lukas,

    When I use FFT processing, I see, that WBUF is switched to System, than to EVE and than back to ARP32. But when I malloc this buffer on ARP32, first step isn't necessary?! Then I want to ask, when I pass the FFT-function an input and output pointer on WBUF, why I need these switching?

        At  a time only VCOP or ARP32 can access WBUF. During the init WBUF is accessed by ARP32 as it contains the parameter memory block of the kernel and thats initialized during init call. During execution of _vloop function, WBUF is switched to VCOP and at this time ARP32 is not expected to access WBUF.

    • Will be allocate this Working buffer in main memory, which is used by ARP32 and VCOP?

        I am not sure if I follow your question here. WBUF is one of the internal buffer of EVE and its a separate buffer which will be used by both VCOP and ARP32.

    On FFT function with 16 bit input and 16 bit output is the opportunity to pass a scale factor. When I look in .vcop_fft_512_16ix16o_32inter_kernel.k, I see that scaling is executed by rounding with this scaling factor. I don't understand, how you realize a scaling with rounding?

      As mentioned in the documentation mathematically scale is defined as follows :
    if x is the output and n is the scaling factor then the output would be (x + 1 << ( n + 15 - 1)) >> (n + 15)

    FFT functions on EVE have always 16-bit input. Is it possible to pass an 32-bit input? Input and output work on WBUF. Since 32-bit output is on WBUF possible, should 16-bit input also possible?

    As far as I remember Doppler FFT can take 32 bit input. But one thing to note is that input and output's are not kept in WBUF as during execution WBUF is always owned by VCOP as it contains parameter blocks of the kernel. Hence intermediate outputs can be kept in WBUF but final output is expected to be in IBUF


    Regards,

    Anshu