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使用的几个问题

1、SRIO门铃中断的相关寄存器DOORBELL[0-3]_ICSR/ICCR/ICRR,其中的0-3是不是与port对应?

2、通过ICRR配置doorbell到INTDST的映射时,发现INTDST值只能是0-15,那么INTDST 16-23是如何配置的呢?是不是说如果routing mode是dedicated interrupts,那么门铃自然会被路由到INTDST16-23?

3、SRIO完成中断有两组寄存器:LSU0-对应SRCID0-16;LSU1-对应LSU 0-7; 这两组寄存器是可以同时起作用的吗?

4、SRIO的多个LSU可以同时启动,是否意味着它们承担的数据传输任务可以在链路上并行传输?

谢谢!

  • 1. 与port没有对应关系,有DOORBELL_INFO决定。参见user guide的“Figure 2-22 Examples of DOORBELL_INFO Designations”。

    2. 参见附件的"2.5  Interrupt setup ".

    3. 参见附件的"2.3  LSU (Load Store Unit) setup".

    4. 如果出口是不同port可以并行,如果出口是同一port就要优先级仲裁。

    SRIO_Programming_Performance.pdf
  • 您好:

           附件已看到,谢谢您的回答!另外还有2个问题想请您进一步解答一下:

          1、SRIO发出数后,如果已经收到completion code( context bit = 期望值),是否意味着数据已经到达对方内存?还是说数据刚刚从端口发送完毕?

           2、NWRITE_R的传输速率是否会经NWRITE慢?(因为我自己测得的速率是一样的,不知道是否正确)

           谢谢!

  • 1. 对要求响应的传输类型(NWRITE_R, NREAD, message), completion意味着数据已经到达目的地;对不要求响应的传输类型(SWRITE, NWRITE, STREAM),completion意味着数据刚刚出端口。

    2. 在没有多个并发传输的条件下可能看不出明显区别。NWRIT_R的响应会占用相反方向的带宽,如果相反方向有并行传输的话,就会相互影响。

  • 您好:

            就NWRITE的completion这一点,我们在之前的项目应用中曾经出现过因为FPGA没有在物理层给出反馈,使得DSP未收到completion响应的情况,显然DSP需要获得来自接收方的某种反馈数据才能确认completion,这一点是否证明收到completion时数据已经到达对方内存?亦或仅仅是到达了对方端口?

            SRIO协议中有没有明确规定过这一点呢?谢谢!

  • 我没有仔细研究过协议,只能讲一下我的理解。

    对于NWRITE类型传输,只要数据从逻辑层buffer送到物理层buffer, LSU的就complete了。

    SRIO物理层要保证物理层buffer的数据发送出去并收到正确的物理层响应才会把本地数据清除并释放物理层buffer,否则会自动重传。

    所以,假设有两个NWRITE传输,第一个传输全部从LSU送到物理层buffer,并刚好把物理层buffer填满,第一个NWRITE传输就complete了,而不用管数据是否正确送到对端;但第二个NWRITE能完成的前提条件是前一个传输已经正确送到目的地(收到物理层响应),释放了物理层buffer。所以第二个NWRITE的complete实际上间接依赖于第一个包收到物理层响应。

    注意,NWRITE_R还需要收到逻辑层响应,和上面讨论的物理层响应不一样。