目前想做的是,c66芯片通过SRIO接口连接FPGA,FPGA有SRIO的IP,
初看SRIO协议,不是很了解,有几个问题,谢谢:
1. 因为交互数据量比较大,考虑用DirectIO的模式,那么FPGA得有双口RAM或者FIFO,
在DSP端的地址映射是什么,地址自己定义吗? 具体就是SRIO 的socket编程里面,的目标结构体里面的目的地址,
如果DSP一次send一块ram的数据,那么这个地址是ram的起始地址吗?
2. DSP使用SRIO的socket发送数据到FPGA,如果一次send的数据量比较大,硬件会自动分成若干256byte的packet吗?
那么这些packet里面的目的address,是在前面的起始地址上自己增加的了?
3. 因为FPGA没有srio_socket这个东西,那么在FPGA接收到这些个packet后,直接按照packet中的address将数据写到ram里面?
4. 如果send一次数据完成后,希望发送一个doorbell,那么是不是要重新配置socket为另外的模式?什么模式?
5. DSP的SRIO的DirectIO 的DMA工作大概流程是什么样的?配置好SRIO后由DMA自动将source地址的数据发送到SRIO模块,
以及从SRIO模块接收到DSP内部destination地址吗? 看文档好像DMA只能在L2 mem和SRIO接口之间传输数据?
如果设置数据在DDR怎么办?
6. 针对这个架构,DSP这边是不是使用提供的socket驱动模型就OK了?会不会有什么问题?
或者需要绕开socket这个模型进行SRIO的编程?
初看了论坛上的SRIO编程范例,不是太明白,其作用和功能是什么?直接利用CSL配置SRIO的寄存器进行收发?
目前没考虑好DSP与FPGA之间的数据交互的过程,希望各位提示! 3X!
Allen35065:
DIO方式DSP需要知道FPGA里的内存地址,这样直接在包里携带这个地址,
建议你先读一读SRIO的User Guide 了解一下DIO 的概念和LSU的配置方法,同时借助例子看如何编程;
例子位于
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
Lin Kong:
回复 Allen35065:
你没有回答楼主的问题,我想问一下为什么用 C:\ti\pdk_C6678_1_1_2_5\packages\ti\drv\exampleProjects\SRIO_LoopbackDioIsrexampleproject.自带的例程基础上来实现与FPGA的通信就不行呢?而且后面得到数据之后我们还要做多核交互处理,所以想利用基于bios的编程方式,论坛上给的那个例程,对我们了解SRIO通信协议的确起了很大的作用,但是不是基于bios的。楼主问题里很大的一部分同样是我的困惑,麻烦解答一下。
我知道基于socket的发送模式,是dsp的一个封装,不是那么的透明。如果dsp往FPGA里写数据,在FPGA那端的话是直接把源数据往目的地址里存放就ok了吗?dsp这边可以通过判断completecode 位是否变成0判断发送完成,但是在FPGA那端该如何判断数据接收完毕呢?那端是不是只要做个初始化配置就ok了,接收端的程序该如何实现。反之FPGA给dsp发送数据亦然。