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.

TMS320C6678: EMIF SPEED

Part Number: TMS320C6678


Hi

My tools:

CCS: V7

DSP: C6678

OS: win7

I want to read and write data from/to FPGA via EMIF but the speed of writing and especially reading was too slow(1.6 Mega sample per second). It seems it is possible to have faster EMIF by setting some registers according the thread below:

Please, guide me how to set that registers? Is there any example code?

Best Regards 

  • Dariush,

    Are you trying this on the EVM. If yes, can you look at the SYSCLKOUT pin and let us know the frequency you are seeing. SYSCLK7 derived from the main PLL is used as module clock for EMIF16. By default this comes up at (1/6) * SYSCLK where SYSCLK = Main PLL frequency that the core is running at. If device is configured to run at 1 Ghz then EMIF16 module clock will be 166.67 Mhz.

    Are you using GEL file or platform/board library to setup the device clocks. Also, please share how you are setting up setup and hold times on the EMIF peripheral.

    Regards,
    Rahul

    PS: If you are not already aware, we recommend users to use Processor SDK RTOS package for this device which has example code for reading /writing to NAND which also sets up EMIF16
  • Hi Rahul

    I'm working on a customized board but i have the EVM too. I used " evmc6678l.gel " as my gel file. The PLL macro values are as below:

    #define PLL1_M 39
    #define PLL1_D 1

    Question 1:

    How can I measure the SYSCLOCK?(either EVM and customized board)

    I didn't set any time specification for the EMIF pripheral. I made a pointer and assigned the start addres of CE2 to it and read the data as below:

    unsigned short *PtrR,data[1000],i=0;

    PtrR = 0x780000000;

    while(i<1000){

    data[i]=*(PtrR++);

    i++;

    }

    Question 2:

    How can I set the timings for the EMIF peripheral? Can you introduce some example code and references?

    Thanks

  • Dariush,

    The only examples in our software development Kit for configuring EMIF16 are related to configuring the chip to access asynchronous non-volatile flash media like NAND and NOR. the EMIF16 config to access this interface for NAND access is provided in the function NANDConfig() in the platform library in the source file evm66x_nand.c under the path pdk_c667x_2_0_3\packages\ti\platform\evmc6678l\platform_lib\src in processor SDK RTOS.

    We also provide EMIF configuration to access NOR in the BootROM code here:
    processors.wiki.ti.com/.../Keystone_Device_Architecture
    (look under the folder hw\emif25)

    HEre is an App Note for interfacing Xilinx FPGA with TI DSP using EMiF:
    www.xilinx.com/.../xapp753.pdf

    There are other e2e posts that also discuss FPGA interface with EMIF:
    e2e.ti.com/.../160581

    Hope this helps.

    Regards,
    Rahul
  • The SYSCLKOUT can be measured using test point TP12 on the EVM as you can see from the snapshot below:

  • Hi

    Thank you so much, I study the the links that you send for me.

    Question 1:

    For using EMIF to communicate with FPGA we should use Asynchronous Mode and for having a better speed we should config timing registers consist of

    setup, strobe and hold time. This registers are CECTL[3,0].

    Am I thinking right?

    Question 2:

    Can I measure CLKIN directly?

    Regards