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.

Why NWRITE and NREAD has different transfer speed and the difference is very large in DSP C6455?

Hi, 

       I want to test the srio DirectIO transfer speed, and the project I used is TI supplied in the boards/dsk6455/example/srio directory, I want to test the speed of transfer. My test method is letting the data transfer 500ms to acquire how many times the data transfer from master to slave, so bandwidth = data_size*transfer_cnt / time. I used a array to store the transfer count each 500ms and to get the average count. My program is shown in the below picture.

TMR_GetTime() is to get the start of time and the paramter Bandwidth_time_pass in TMR_Delta() can get the time pass of function body, The theroy speed is 1.25G, and the speed I test is 0.98Gbps, the result looks like right, but when I mask the NREAD function, The speed is 2.4Gbps, it is wrong, and when I mask the NWRITE function, the speed is 0.5Gbps. The difference between the NREAD and NWRITE is so large, could you tell me why this happen and how to test the speed of DirectIO correctly?  

Thank you so much.

  • I'm not familiar with the test you are using but I can say that the difference between the LSU handling of  NREAD and NWRITE packets.  With NWRITE, the LSU bsy bit goes low as soon as the TX packet is transferred into the physical layer TX buffer for transmission.  It isn't even guaranteed to be sent out the device at that point.  With NREAD, the LSU bsy bit only goes low when the packet is sent AND the response packet is received.

    Regards,

    Travis