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.

6678与FPGA通信握手问题-如何获知发送数据所在的地址和长度



6678通过SRIO与FPGA通信,FPGA发起,向DSP的内存写数据,DSP再将数据写回FPGA。

问题1:DSP如何得知何时发送完毕?是否必须通过中断(门铃中断或者GPIO中断)
问题2:DSP如何获知写数据所在的地址和数据长度?有没有寄存器可供查询?是否必须自定义一个寄存器,用来存储地址和长度,当发送完毕后,dsp读该寄存器,然后进行操作?
问题3:以下流程是否正确?为提高带宽?是否需要完善?
1、FPGA写数据到dsp内存
2、FPGA写完数据后,写地址和长度到寄存器
3、FPGA发送中断
4、dsp响应中断,读取寄存器
5、dsp根据寄存器的内容,读对应地址和长度,并写回FPGA

问题4:上述流程中,如果DSP改用查询方式,是否可以?

  • 1  如果DSP写到FPGA空间,可以通过Non-post write类型去写,在完成后会有DIO中断。如果是FPGA写到DSP,可以FPGA在发送完成后,发doorbell给DSP

    2  如果采用DIO模式,需要FPGA和DSP预先协商好。可以用一个原子操作的memory作为握手memory

    3 可以,提升带宽需要具体场景考虑,比如采用EDMA去读FPGA写的memory

    4 可以

  • 你好,请问如何建立DSP和FPGA之间利用SRIO通信呢,DSP端的代码可否参考loop back 测试例程中的两片DSP之间通信的代码?有什么需要改动的地方吗?

    谢谢!

  • DSP侧可以参考STK的代码,FPGA侧需要根据协议做相应改动,具体你可以咨询FPGA vender

  • 感谢!使用了gpio中断。事先协商好了地址。FPGA可以写到dsp中。也能收到dsp回写的数据。

    现在碰到一个问题:访问SL2时的带宽正常,测得值可以到200MB。但是访问ddr3时,有很大的延时:要过大概2s,FPGA才能收到回写的数据。

    其中,ddr3的leveling已经做过了。

    问题1:这么慢是否不正常?

    问题2:如果要提速,都有哪些手段?是否只有dma一条路可走?

    问题3:如果要用dma方式的话,是否必须要要用pktdma?还是edma也可以?我看资料上说pktdma支持消息,pktdma是否支持DIO操作?

    问题4:之前一直用DIO,没用pktdma。stk的例程里也只有一个从核的设置,但是不明所以srio下pktdma的配置和使用方法。烦请点拨一二

    谢谢

  • 对,dsp端参考no loopback段代码,dsp和FPGA两端的ID和地址要设对。

  • 楼主不知道是否方便发一下源码,我用官方例程都卡在Port enable这一步,一直在这里跑飞。