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.

关于C6678 SRIO 的ACK ID问题



Ti guys:

你好!我在使用C6678,利用论坛上keystone_srio的示例程序测试DSP,DSP互联及DSP与V6系列FPGA的互联。在两个srio设备相连时有ACKID设置的问题。我想请问一下,ACK id中有inbound,outbound,outstand三种ID,请问在两个设备间这几种ID应该怎么设置?比如是localinbound=remoteinbound,localoutbound=remoteinbound?或者是其他?另外,SPn_ACKID_STAT寄存器还有一个CLR_OUTSTD_ACK_ID域应该怎么设置?keystone_srio历程中提供的Keystone_SRIO_match_ACK_ID函数看不太懂。其中:

uiMaintenanceValue= ((uiRemote_In_ACK_ID+1)<<    CSL_SRIO_RIO_SP_ACKID_STAT_INB_ACKID_SHIFT)|uiLocal_In_ACK_ID;

while(uiResult|(uiLocal_In_ACK_ID+1 != uiRemote_out_ACK_ID));

 

这两处为什么要加1??

 

谢谢!

 

  • ACK ID 是用来确认通信是否正常,inbound ID会和本地存储的ID比较,匹配的话才接收。outbound ID是发送时需要填进去的值,每次成功发送接收后,对应的outbound和inbound 都需要加1. 值是在0~31之间变化。