SRIO调试(C6678->SRIO和Virtex6->FPGA)

本文详细介绍了C6678 DSP通过SRIO与Virtex6 FPGA通信时的调试过程,包括初始化、数据发送、Doorbell中断的使用。在Doorbell中断问题上,讨论了DSP接收中断的限制以及如何避免中断丢失。同时,文章提到了FPGA主动发起读写数据的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C6678->SRIO和Virtex6->FPGA

 

设计的板子到了SRIO调试阶段了,在板子上,一片V6和两片6678通过4XSRIO互联,中间没有Switch,总算搞定了相互之间的通信。

  首先,感谢Ti论坛提供的SRIO程序范例,但是其硬件平台是EVM板,更多的只能用于loopback测试,但是可以在其基础上修改。

1.初始化DSP的SRIO,主要是对SerDes进行配置,然后是Lane和Speed的配置,最后需要等待FPGA的LinK建立,我们在建立时候碰到一点困难,每次建立并不都是4X,一直没有找到问题,我们使用了一个别的办法来保证link为4X。

2.数据发送,DSP上提供的数据发送方法主要有两种,DirectIO和Message,主要区别为DirectIO需要TX和RX双方知道地址映射关系,而Message是通过Message中mail信息得到数据需要保存的地址,我们使用的为DirectIO方法,6678上提供了8组LSU来进行DirectIO数据发送,每个LSU有6个寄存器,当5th寄存器写完后,数据会发送出去,第6个寄存器主要用于检测当前的LSU状态。LSU还有16(32)个影子寄存器 

3.SWRITE/NWRITE/NREAD:对DSP来说,初始化完SRIO后,FPGA便可以通过SRIO来发送数据,但是要注意,Designer并不知道什么时候FPGA会发送数据,所以通常会先发送一个DoorBell信息来告知DSP,FPGA要发送数据了,DoorBell可以触发中断,对于NREAD来说,FPGA发送这个命令后,DSP会自动的将请求的数据发送出去,Designer也并不知道数据发送出去,这些都需要DoorBell来支持。

 

1 问题:

你好,我们现在也能DSP发数据到fpga,但是存在如下问题:
   dsp用Nwrite给fpga写数据,fpga能收到数据但是没有响应数据给dsp?(请问需不要两边都确认下 读写的地址??)

  dsp用Nread给fpga发,尝试着读取fpga里的数据,但是fpga这边没反应?

  fpga主动发起给dsp读写数据,dsp那边该怎么写程序啊?

 

答:

   采用DirectIO模式,FPGA不会主动响应的

   DSP发送Nread命令,FPGA应该使用用户接口将Nread命令中请求的地址空间中的数据发送出去
   可以采用先发送Doorbell,再发送数据

 

2 问:

现在我们已经能dsp主动发起对fpga进行读写,但可是fpga无法主动发起对dsp进行读写? 不知道fpga这边需要怎样配置ip核才能实现 dsp,fpga都能主动发起读写数据请求??

答:

如果没记错的话,FPGA发送NREAD命令就可以了,DSP会自动将数据发送过去,注意NREAD命令中的地址是DSP的实际访问地址

 

3 问:

你好,请问用DirectIO传输数据是用DMA传输的吗?
这个需要寄存器配置还是直接默认的就是?
还有,FPGA这端有没有DMA这个说法?需不需要进行配置啊?

答:


应该不需要 FPGA没有DMA这个东西 一般FPGA的DMA都是和上位机配合完成的本身没有DMA的吧

 

 

注:在编辑模式下可以看到详细问答

 

 
 
 
好文要顶  已关注  收藏该文   
 
 
我在关注他  取消关注
1
0
 
 
 
« 上一篇: MII接口全家福
» 下一篇: TI Davinci 五年七宗罪
posted @  2012-07-13 23:11 FPGA/DSP 阅读(4373) 评论(19) 编辑 收藏

 
 
   回复引用
#1楼   2012-08-16 13:51 gavincj  
你好,很高兴能看到你的博客,最近我也正在调试 C6678与Virtex 5 之间的SRIO,刚起步,觉得有些迷惑,还望指点指点;
我主要负责FPGA这一部分,用的是IP核V5.6,核程序里面用到了 ILA VIO 的核,请问我能不用这些核吗? 我想直接自己建立.cdc文件抓自己想抓的数据? 如果是自己建立的.cdc文件,那该怎么去触发核呢(该怎么去给核发Nread,Nwrite之类的请求?)?原来是用VIO 触发的吧。
因为是新手,所以可能问的也不是很清楚,还望多包涵包涵~~~~
   回复引用
#2楼 [ 楼主] 2012-08-26 13:30 FPGA/DSP  
@ gavincj
我们是在V6上使用的,FPGA也不是我负责的部分,不过用chipscope抓取数据是没有问题的,主要抓取对用户接口那边的数据,不过里面有两个时钟,chipscope用的时钟需要注意。触发的时候你让DSP发送数据,然后使用ip核里面对用户接口的有个rdy之类的信号做出发既可以
   回复引用
#3楼   2012-08-29 23:58 gavincj  
@ FPGA/DSP
你好,我们现在也能DSP发数据到fpga,但是存在如下问题:
1、dsp用Nwrite给fpga写数据,fpga能收到数据但是没有响应数据给dsp?(请问需不要两边都确认下 读写的地址??)

2、dsp用Nread给fpga发,尝试着读取fpga里的数据,但是fpga这边没反应?

3、 fpga主动发起给dsp读写数据,dsp那边该怎么写程序啊?
   回复引用
#4楼 [ 楼主] 2012-09-22 00:12 FPGA/DSP  
@ gavincj
不知道问题解决没
1、采用DirectIO模式,FPGA不会主动响应的
2、DSP发送Nread命令,FPGA应该使用用户接口将Nread命令中请求的地址空间中的数据发送出去
3、可以采用先发送Doorbell,再发送数据
   回复引用
#5楼 [ 楼主] 2012-09-22 00:12 FPGA/DSP  
@ gavincj
DSP支持Doorbell中断
   回复引用
#6楼   2012-11-25 22:58 gavincj  
@ FPGA/DSP
你好,好久没上博客园了,感谢你的回答,现在我们已经能dsp主动发起对fpga进行读写,但可是fpga无法主动发起对dsp进行读写? 不知道fpga这边需要怎样配置ip核才能实现 dsp,fpga都能主动发起读写数据请求??
 &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值