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.

C28377S

Dear Sir ,

1. we are developing board that contain TMS320C28377S and FPGA, the interface between them is via  EMIF1 16 bit  asynchronous.

2.we are able to read / write from to FPGA (there is actually memory implemented in the FPGA)

3.we are seeing some behavior that we don't fully understand, when we make continues write or  read (e.g reading few words or writing to few words)  , we are seeing 

  that CS signal asserting and deasserting for every word (16bit) , while we expected to see the CS signal asserted for at least few words, we have try is using DMA and CPU.

  while reading application note Design and Usage Guidelines for the C2000™ External Memory Interface (EMIF)  its written in chapter 1.2

 " The EMIF will hold CS asserted between pipelined operations ... "

 

Is this expected behavior ?

  • Hello,
    Concerned experts have been notified of this query.
    Note that TI US office is closed today so please expect a delayed response.


    Regards
    Himanshu
  • Hi,

    That is expected behavior. CS will get de-asserted after every access unless 32bit access is made to 16bit memory interface when there will be back-2-back 2 16bit access.

    We'll look into the document and make appropriate correction to avoid confusion.

    Regards,
    Vivek Singh
  • HI Vivek Singh ,

     can you please elaborate what do you 32bit access  on  16 bit memory , e.g. read value(x)=EMIF(ADDRESS)  , value(x+1)=EMIF(ADDRESS+1) 

      the condition is that address will increment by 1 ?

    the situation on my hardware is continues Read of chunk of data from EMIF , e.g value(x)=EMIF(ADDRESS)  , value(x+1)=EMIF(ADDRESS+2) 

    Eyal.

  • Hi,

    CPU can do 16bit read or 32bit read based on how the read pointer is defined.

    value (x) = *(int * EMIF(address)) will issue 16bit read

    value(x) = *(long int * EMIF(address)) will issue 32bit read.

    You need to increment the address accordingly (+1 for 16bit read and +2 for 32bit read). If you have defined the pointers then increment will be done as per the pointer definition.

    Incase you have connected 16bit external memory to EMIF interface then a 32bit read from CPU will go out as 2 back-to-back 16bit read.

    Hope this is clear.

    Regards,

    Vivek Singh