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
 
 
 
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都能主动发起读写数据请求??

#7楼[楼主] 2012-12-03 22:15 FPGA/DSP 

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

#8楼 2012-12-28 13:08 gavincj 

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

#9楼[楼主] 2012-12-31 01:02 FPGA/DSP 

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

#10楼 2013-01-04 14:23 gavincj 

@ FPGA/DSP
你好,那DSP这一端呢?DMA该怎么配置啊?

#11楼 2013-07-11 19:50 天空才是极限 

Hi,你好,我以前调通了srio,也用在了好几个板卡上,但最近总是出现连不通的情况(我们现在也是是fpga V6跟DSP 6678互联),好几个板卡都有这个情况,但是我用IBERT 测试,让他跑srio协议,并且远端,这样跟dsp竟然能通,这似乎说明硬件没什么问题; 可是我也是完全相同的srio程序(只有管脚分配不一样),有些板卡能通,有些不能,甚至有些bank跟dsp连的能通,有些bank不行; 这点让我很苦恼,因为既有证据证明硬件是好的,也有证据证明软件也是好的,请问这大概是啥原因?我也是知识很有限,希望能得到你的指点、交流。
PS:我用一代核V5.6和二代核都试过,都是这样的情况;

#12楼 2013-08-07 15:49 迷途的驴 

您好,我们也遇到“每次建立并不都是4X”的问题,请问您使用什么方法来“保证link为4X”的?是判断如果不为4x的话重新训练吗?

#13楼[楼主] 2013-08-08 23:40 FPGA/DSP 

@ 迷途的驴

#14楼 2013-08-10 11:06 迷途的驴 

感谢您的回答!
我们在上电训练的时候进行了判断,能以4x进行工作,但在传输过程中又掉成了1x。这时如果此时再次训练的话对实时处理系统来说是个大问题。您遇到过类似问题吗?
我查了一些资料,信号质量应该是关键。所以我觉得每次上电情况不同以及工作过程中掉成1x可能是硬件问题,电源纹波和时钟质量应该都有影响。我们将电源纹波降低后,训练成4x的概率明显提高,但还是不能保证每次上电训练都是4x,而且还会出现4x跑一段时间后掉成1x。您在信号质量方面有什么建议吗?
谢谢您!

#15楼[楼主] 2013-08-31 10:32 FPGA/DSP 

@ 迷途的驴
我们只碰到了训练的时候不是4x,但是不会出现4x变成1x的情况,可以用示波器看看你们的srio的眼图

#16楼 2013-08-31 18:08 迷途的驴 

@ FPGA/DSP
好的,谢谢您!

#17楼 2013-09-16 00:10 superdragon 

您好,我现在也用SRIO在V6和C6678之间通信,配置的4X,3.125G,输入参考时钟125MHz。FPGA和DSP之间可以保证能够通信,但是不能保证4X模式,初始化完毕之后有时候可以4X,有时候不可以,您的通过判断mode_sel是如何控制重新开始训练的,可否告知一下?
另外,不知道您是如何测试FPGA发送数据给DSP时的速度的,配置4X,3.125G的时候,最高能跑到多高?
谢谢!

#18楼 2013-10-23 21:41 lucky1991 

您好。
1.DSP和FPGA,四对LVDS收发线相连。
2.我们准备FPGA发数据给DSP,DSP再发送给FPGA;后期会DSP处理完后再发回给FPGA。
请问,FPGA如何通知DSP接收数据?FPGA何时开始发送数据?DSP怎么知道何时接收完毕;完毕后,又怎么通知FPGA接收数据?FPGA何时开始接收数据?
我只了解一些大概,真正实现,还有很多疑惑。
期待您的回复,能否留下您的QQ号?即时向您请教几个问题?非常感谢!

转载自:http://www.cnblogs.com/fpga/archive/2012/07/13/2590929.html

C6678 SRIO DSP接收Doorbell中断问题

此问题有建议答案
 
 
    •  
      作者 WU LANBIN

      发表于 2015-1-8 17:05
      举人844分

      在公司自己开发的板卡上调试SRIO

      使用的DSP是TMS320C6678,FPGA是K7系列芯片,芯片间通过SRIO连接

      C6678使用的开发环境是CCS5.3,编译器版本为C6000_7.4.1,MCSDK版本为2.1.2.6。

      在调试过程中,C6678与FPGA互相用nwrite方式写数据均成功。调试Doorbell中断时,C6678向FPGA发送Doorbell没有问题,

      但是FPGA向C6678发送Doorbell中断时,C6678最多只能接收999次Doorbell中断,之后就再也不能响应,此时FPGA在ChipScope中还能观察到Doorbell已发送出去。

      附上调试用的C6678 SRIO程序,请各位工程师帮我看看程序中哪里配置有问题,导致有这个现象产生

      谢谢!

       
       
       
       
       
    •  
      进士5125分

      每次Doorbell中断服务程序中都要清除Doorbell标志,否则后面的Doorbell就不能再触发中断,下面是示例代码:

      //read doorbell. this test only use doorbell reg 0
      doorbell= gpSRIO_regs->DOORBELL_ICSR_ICCR[0].RIO_DOORBELL_ICSR;

      //clear doorbell interrupt
      gpSRIO_regs->DOORBELL_ICSR_ICCR[0].RIO_DOORBELL_ICCR= doorbell;

       
       
       
       
       
    •  
      秀才161分

      请问楼主,问题解决了吗?我也遇到了相似的问题,我的C6657接收门铃中断的次数远小于FPGA发送的门铃包数,DSP的门铃中断使用的是intdst16,不存在INTDSTX_Rate_CNTL寄存器设置的问题。

       
       
       
       
       
    •  
      探花13445分

      响应时间间隔是多少?程序中有没有其他更高优先级的中断会占用?中断函数处理占用时间是多少?

       

      上述内容如果回答了您的问题,请点击标签栏“是”按钮。您的轻轻一点,会帮助我们更好的管理论坛内容,谢谢!

       
       
       
    •  
      秀才161分

      谢谢 Thomas Yang1,问题有了进展,增加了FPGA发送门铃的间隔,DSP就不丢门铃中断了。DSP测试程序然虽然开了几个中断,但只有一个门铃中断会被触发。

      我使用的是FPGA的SRIO IP核,IP核中测试例程会向外发起多个SRIO通信(写、读、门铃、stream等),每种SRIO通信的间隔都很小,我就是把这些SRIO通信都改为门铃,就出现了DSP了丢失门铃中断问题。我现在的困惑是FPGA的SRIO IP核测试例程为什么不增加每种SRIO通信的间隔。

       
       
       
       
       
    •  
      作者 Anni Zhang

      建议答案
      秀才161分

      DSP门铃中断服务程序只有三行代码,除了下面2行,另外一行就是给一个全局变量置位。

      //read doorbell. this test only use doorbell reg 0
      doorbell= gpSRIO_regs->DOORBELL_ICSR_ICCR[0].RIO_DOORBELL_ICSR;

      //clear doorbell interrupt
      gpSRIO_regs->DOORBELL_ICSR_ICCR[0].RIO_DOORBELL_ICCR= doorbell;

      另外,我们的C6657与FPGA通信不太稳定,经常会出现无法建立连接的问题,也就时等不到port OK。关于这些问题我会在另外的帖子中提问,这个问题基本算有个结论了。谢谢大家。

       
       
       
       
       
    •  
      秀才30分

      Anni Zhang,

      你好,我们也遇到了doorbell中断只能进一次的问题,并且ICCR好像被锁住了还是怎么样,无法对ICCR进行写操作,这是为什么你知道吗?

       
       
       
       
       
    •  
      秀才40分

      只能进一次中断,主要是这两个寄存器设置有问题(6678 DSP):

      3.8.9.2 Interrupt Rate Counter Register(对于映射到INTDST0-INTDST15):

      INTDSTn_RATE_CNTL Interrupt Rate Control Counter 和 INTDST_RATE_DIS Interrupt Pacing Disable (Address Offset 0x0310)这两个寄存器没有设置正确。如果

      在INTDST_RATE_DIS Interrupt Pacing Disable = 0x0000的情况下,不重复写INTDSTn_RATE_CNTL Interrupt Rate Control Counter寄存器的话中断就只能进去一

      次。如果你不想重复写INTDSTn_RATE_CNTL Interrupt Rate Control Counter寄存器,就将INTDST_RATE_DIS Interrupt Pacing Disable = 0xFFFF。

       
       
       
       
       
    •  
      秀才40分

      我在调试的过程中发现如果DSP(6678)中断服务程序占用时间较长的话,在Doorbell间隔比较小的情况下会造成doorbell丢包(可以从chipscope看到Doorbell应答消息

      (Hello Format)的错误标志位有时候为1),如果想分析问题,在调试程序时,尽量减少printf这些语句的使用。我觉得应该是中断服务子程序的时间决定doorbell的

      时间间隔。而要及时的触发中断(INTDST0-INTDST15),则可以设置INTDST_RATE_DIS Interrupt Pacing Disable 和 INTDSTn_RATE_CNTL Interrupt Rate Control Counter寄存器。

       
       
       
       
 
转载自:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/78807.aspx
 

SRIO调试(C6678->SRIO和Virtex6->FPGA)的更多相关文章

  1. C6678 srio communication via Switch

    First, I don't often give praise for support but I must say Travis, Karthik and Derek from TI have b ...

  2. FPGA和DSP间基于SRIO的高速通信系统设计

    作者:陈婷,岳强,汪洋 解放军信息工程大学 摘要: 现代信号处理系统通常需要在不同处理器之间实现高速数据通信,SRIO协议由于高效率.低延时的特性被广泛使用.本文研究了在FPGA和DSP两种处理器之间 ...

  3. FPGA+DSP SRIO通信(一)——DSP端参数设置(通道)

    FPGA+DSP SRIO通信(一)——DSP端参数设置(通道) 原创 2017年04月19日 18:56:45 标签: SRIO-C66x 1217 经过漫长的探索之后,博主发现关于TI的板子调试和 ...

  4. Aurora 8B/10B、PCIe 2.0、SRIO 2.0三种协议比较

    在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...

  5. TMS320C6455 SRIO 实现方案

    TMS320C6455 SRIO 实现方案 SRIO(Serial RapidIO)构架是一种基于高性能包交换的互连技术,主要功能是完成在一个系统内的微处理器.DSP.通信和网络处理器.系统存储器以及 ...

  6. 204-基于Xilinx Virtex-6 XC6VLX240T 和TI DSP TMS320C6678的信号处理板

    基于Xilinx Virtex-6 XC6VLX240T 和TI DSP TMS320C6678的信号处理板 1.板卡概述  板卡由我公司自主研发,基于VPX架构,主体芯片为两片 TI DSP TMS ...

  7. FPGA设计思想与技巧(转载)

    题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...

  8. FPGA高速ADC接口实战——250MSPS采样率ADC9481

    一.前言 最近忙于硕士毕业设计和论文,没有太多时间编写博客,现总结下之前在某个项目中用到的一个高速ADC接口设计部分.ADC这一器件经常用于无线通信.传感.测试测量等领域.目前数字系统对高速数据采集的 ...

  9. FPGA设计者必须精通的5项基本功

    FPGA设计者的5项基本功:仿真.综合.时序分析.调试.验证. 对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下: 1. 仿真:Modelsim, Quartu ...

随机推荐

  1. 1、Flask实战第1天:第一个Flask程序

    Flask是流行的python web框架...(* ̄︶ ̄) 零基础到企业级论坛实战,人生苦短,我用python,开启FLask之旅吧... 安装开发环境 下载Python win版安装包 双击运行, ...

  2. python aiohttp sancio 框架性能测试

    开头先啰嗦两句: 由于本人有开发一个博客的打算,所以近期开始选型python的web框架重头学习,选了两款非常火的 aio web框架 aiohttp 和 sancio 进行性能测试以及开发喜好的调研 ...

  3. [HNOI/AHOI2018]寻宝游戏

    题目大意: $n(n\le1000)$个$m(m\le5000)$位的二进制数,第$0$个数为$0$.用$\wedge$和$\vee$将这些数连接起来.$q(q\le1000)$次询问,每次给定一个$ ...

  4. MySQL第三方客户端工具

    如前所述,MySQL是一个基于客户机--服务器的DBMS,因此,为了使用MySQl,你需要有一个客户机软件给MySQL提供要执行的命令.即你需要一个编写和测试MySQL脚本的工具. 1.MySQL命令 ...

  5. 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之工作流开发随笔三

    前言 “厂长,APP的那几个功能都差不多了,接下来要做工作流,工作流这东西我完全没概念啊.” “查尔斯,一般来说工作流就是指将指定的数据.文件.任务按照预定的规则进行传递流转.比如说你要请假,拿个请假 ...

  6. mongodb聚合(转)

    聚合 是泛指各种可以处理批量记录并返回计算结果的操作.MongoDB提供了丰富的聚合操作,用于对数据集执行计算操作.在 mongod 实例上执行聚合操作可以大大简化应用的代码,并降低对资源的消耗. 聚 ...

  7. 最简单的PHP socket

    服务端 <?phperror_reporting(E_ALL);set_time_limit(0); $ip = "127.0.0.1";$port = 1935; func ...

  8. 【java】为数组全部元素赋同样的值 以及 数组之间的复制

    为数组全部元素赋同样的值 : boolean[] resArray=new boolean[100]; Arrays.fill(resArray, true); 数组之间的复制: System.arr ...

  9. [HTML5] Render Hello World Text with Custom Elements

    Custom elements are fun technology. In this video, you will learn how to set one up and running in l ...

  10. HTML5 Canvas 绘制库存变化折线 计算出库存周转率

    <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type&quo ...