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 SRIO 如何看Serdes读取和发送的数据?

Other Parts Discussed in Thread: CDCE62005

TI的工程师你们好

现在正在调试6678与K7 325tFPGA之间的通信

连接方式为直连,没有交换芯片!想要完成的功能是FPGA端发送数据,DSP能够接受到即可

目前的问题是,FPGA端TX发送出BC FD FB等数据,正确的时候RX端收到的应该也是这些,这时候FPGA端的Port_initialled拉高,进入下一步;

但是目前从FPGA端收到的都是乱码(部分数据有BC FD FB等),所以导致FPGA的Port_initialled没有拉高,导致无法继续进行。

所以想问问如何看到DSP的Serdes的读取和发送的数据(并行数据),来判断两者连接是否有问题。

FPGA端使用的是Chipscope读取的GTX模块的RX和TX数据,不知道DSP端怎么看!

DSP工程使用的是  cifae_KI_STK_Deyi  里的SRIO测试程序 Loop_back模式为No_loopback 然后DSPNUM=1 即让DSP处于Slave模式

目前已经进行不下去了,这个总过不了!另外DSP在测试链路是否联通的时候也是发送BC FD FB等数据吗?(好像叫IDLE1码)

  • DSP端没办法看到物理层的数据,物理层基本是个黑盒子,只有一些状态可查,原始数据看不到。

    你可以试一下SRIO_EXTERNAL_LINE_LOOPBACK,或者FPGA内部环回。把FPGA一级一级的环回调通了再调DSP和FPGA互通。

  • 你好 谢谢你的回复!

    FPGA端,我使用其他路并直通TX与RX的方法测试通过了,port_initialled 引脚是可以拉高的,至少说明第一步是没问题的!

    但是若是经过DSP的话,port_initialled拉不高,说明FPGA与DSP的物理层连接都没有完成,这样是没办法再进行更高级的测试的!

    port_initialled没有拉高即使双方的逻辑层和BUFF层都没有问题也没有用了。

  • 测一下眼图看看怎么样?

  • 现在没法测眼图,不过有些进展

    我想问问6678与K7可以直连吗?

    目前发现的问题是:

    正常情况下 FPGA发送并且接受到2000组(仿真得到的数据,不一定正确,一组包含4个 FB FD BC数据)数据之后,port_initialled就会拉高,进入下一步

    但是现在的情况是,DSP向FPGA发送160多组(FD FB BC)之后就会发送十几组其他数据,这样不断循环,导致FPGA的port_initialled始终拉不高,同时DSP的

    port_ok状态也始终拉不高,导致无法进入下一步。

    所以我想问问,6678与K7之间可以不通过交换芯片而直接连接吗?

    目前感觉以上错误的原因是他们对于port ok的判据不一样,FPGA需要发送接收2000组IDLE码才回认为port_initialled 然后发送link测试码判断link_initialled

    但是DSP好像只发送100多组之后就认为port_initialled(当然DSP没有这个信号,只是比喻下),然后发送link测试码(我认为就是那十几组非IDLE码数据)

    但这时候FPGA的port_initialled没有拉高,FPGA认为这些非IDLE码都是错误的,所以最终DSP与FPGA之间的物理层连接始终不成立。

    还有可能的问题是时钟不稳定或者编程的问题。我的CDCE62005因为输出312.5MHz时钟好像并不稳定,所以我在实际使用的时候将时钟输出设定为250MHz

    具体操作为,对于cifae_KI_STK_Deyi工程

    内的SRIO_test.c文件内

    main函数下部分代码

    DSP_Board_Type= KeyStone_Get_dsp_board_type();
    if(C6678_EVM==DSP_Board_Type)
    {
    //DSP core speed: 100*10/1=1000MHz
    KeyStone_main_PLL_init(100, 10, 1);

    serdes_cfg.commonSetup.inputRefClock_MHz = 312.5//这里从312.5改为250;
    }

    不知道这样的改动是否正确,工程内的的其他文件应该是会通过这个频率自动改变PLL的倍频系数。

    最后的问题,我将DSP设置为EXTERNAL_LINE_LOOPBACK的DSP1模式(直通模式),但是在这个模式下DSP好像并不是简单地将TX与RX直连起来,因为即使设置为这个模式下,我从FPGA看到的结果也会受到DSP的时钟的影响,并且与我直接使用电阻串接FPGA的TX与RX看到的结果不一样。(FPGA如果直接串接TX与RX,那么port_initialled会拉高)

    以上有点长3个问题总结起来就是:

    1、6678与K7 FPGA之间可否不经过交换芯片直连;

    2、DSP的参考时钟改为250MHz,程序中如上改法是否正确;

    3、测试工程内的EXTERNAL_LINE_LOOPBACK模式下的DSP1与 TX与RX外部直接用电阻连接是否一样?

  • 按道理只要双方都满足SRIO协议就可以直连,你们FPGA里是用的成熟的IP吗?

    两个芯片的SRIO参数时钟是同源的吗?

    DSP代码中的时钟修改是对的。

  • 你好!

    FPGA用的是ISE14.3下的SRIO GEN2 1.5版本的调试IP核

    调试IP核的话关于port_initialled引脚拉高的那部分是看不到的,所以不知道也不能修改拉高的条件。

    因为不是花钱买的正式核,所以这部分改不了,难道是需要买正版核,修改这部分让两者连通吗?

    时钟是不同源的,DSP和FPGA是使用的不同的CDCE62005拉出来的时钟。

    目前125MHz和250MHz的时钟,实验结果都一样,这点很奇怪,因为DSP文档上写着,DSP只支持156.25 250 312.5三个时钟

    所以我怀疑我的250MHz的实验结果也是错的。

    而且我的CDCE62005的输出频率不稳定,总觉得在1MHz左右的抖动,不知道是不是这个原因。

  • 时钟最好是同源的。

    时钟问题请去时钟相关的版提问。

     

  • 是的 对于同一块板子上的芯片交互 用同源可能是更好地选择

    不过SRIO好像不局限于单板上的交互吧。我看有些无线数据传输也可用SRIO好像。

    对于时钟我找到了TI提供的FPGA程序,我再试试有机会的话。

  • shiyan sun :

    您好,我也调DSP和FPGA通过SRIO通信,看了你的帖子,感触很深;有点不明白,希望指点下。我是调DSP的,辅助FPGA工程师调SRIO,真的很急,谢谢!

    1.DSP端,我也是用论坛提供的STK 包下的SRIO例子,那么要和FPGA通信,第一步就是双方首先建立链接;那么在dsp端,和FPGA通信需要配置那些参数?

    现在我觉是在SRIO初始化函数里面来做这件事的?。

    2.DSP端,它到底做了什么事,来判断port_ok是ok的?

    3.您在dsp端,用SRIO例程,除过您上面说的,改过的地方?再有没有配置与FPGA通信的其他地方?是否论坛的例子拿来,改这些就够了?就可以和FPGA间可以通信了?