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.

用SRIO实现DSP与FPGA通信



我在做fpga与dsp的SRIO通信,我用的是论坛上提供的SRIO test程序,目前dsp端能够实现端口0的外部回环测试。fpga端的协议还没做通,我想用dsp直接给fpga发包,fpga根据收到的包解析协议。遇到的问题是:

(1)我用两个dsp测试的那个程序,让dsp发包给fpga,但是dsp端口一直打不开。这是什么原因啊?

(2)我在外部回环测试的时候端口是能够打开的,为什么连接到fpga就打不开了?在打开端口的时候需要fpga进行什么配置吗?

  • 1)请在保证眼图正常的情况下,检查DSP的port配置,速率配置,同时也请检查下FPGA侧的相应配置

    2)FPGA侧需要做相应的端口,速率配置,建议仔细阅读使用手册

  • leeen,您好,

    请问外部循环测试你是用两块DSP做的的,还是用一块DSP将端口0的TX和RX短接进行测试的呢?

  • 现在已经能够和fpga连接了,之前主要是对SRIO物理层协议没有完全搞清楚,fpga端一直没能发正确的maintaince包和连接请求,导致DSP端的端口一直处在initialization状态。

    Bruce Yang你好,我外部回环测试是在一个DSP上做的,把TX 和RX用SMA—SMA线短接。

  • leeen你好,请教你一下端口打不开的问题:

    我按照你说的把端口0的TXn、Txp分别和RXn、RXp用sma线短接

    用的KeyStone_SRIO程序,程序中修改了以下几点:

    1.

    SRIO_1x2x4x_Path_Control external_path[]=

    {

    SRIO_PATH_CTL_1xLaneA

    // SRIO_PATH_CTL_1xLaneA_1xLaneB_1xLaneC_1xLaneD,

    // SRIO_PATH_CTL_2xLaneAB_2xLaneCD

    };//只用Lane1

    2.

    SRIO_Loopback_Mode loopback_mode= SRIO_EXTERNAL_LINE_LOOPBACK;

    3.

    srio_signle_port_external_line_loopback_test()中,将

    // srio_cfg.blockEn.bLogic_Port_EN[0]= FALSE;

    // srio_cfg.blockEn.bLogic_Port_EN[1]= FALSE;

    注释

    但是while(0==(srioRegs->RIO_SP[i].RIO_SP_ERR_STAT&

    CSL_SRIO_RIO_SP_ERR_STAT_PORT_OK_MASK));端口还是打不开?

    请问还需要修改哪些地方,这几天搞得这个比较头大,帮帮忙谢谢!!!

  • Bruce Yang 你好,

    (1)我就是在SRIO_PATH_CTL_1xLaneA_1xLaneB_1xLaneC_1xLaneD模式下做的端口0外部回环。srio_cfg.blockEn.bLogic_Port_EN[0]= TRUE;其他三个都是FALSE。

    (2)检查一下你的接口连接是不是用的你打开的那个端口,TXp,TXn,RXp,RXn接没接正确。

    (3)你的SMA—SMA连接线是不是满足查分信号要求。

    (4)你是不是在6678开发板上做的还是自己的板子啊???如果是自己的板子你看看你的SRIO输入参考时钟是吧是与板子上设置的不一致。

  • leeen你好,十分感谢你的回复

    我用的是6678le开发板,我感觉好像是我的SMA同轴电缆的问题,我使用的是安捷伦频谱分析仪上的同轴电缆,每根线大概有四五十cm长,我后来试了下偶尔能打开端口,但是校验数据时候不对。

    [C66xx_0] SRIO link speed is 1.250Gbps

    [C66xx_0] SRIO path configuration 1xLaneA_1xLaneB_1xLaneC_1xLaneD

    [C66xx_0] SWRITE   from 0x10802200 to 0x10806200,      8 bytes,   4179 cycles,    15 Mbps, completion code = 0

    [C66xx_0] data mismatch at unit 0, 0x1 (at 0x10802200) != 0xffffffff (at 0x10806200)

    [C66xx_0] SWRITE   from 0x10802200 to 0x10806200,     16 bytes,   4183 cycles,    30 Mbps, completion code = 0

    [C66xx_0] data mismatch at unit 0, 0x2 (at 0x10802200) != 0xffffffff (at 0x10806200)

    [C66xx_0] SWRITE   from 0x10802200 to 0x10806200,     32 bytes,   4462 cycles,    57 Mbps, completion code = 0

    [C66xx_0] data mismatch at unit 0, 0x3 (at 0x10802200) != 0xffffffff (at 0x10806200)

    [C66xx_0] SWRITE   from 0x10802200 to 0x10806200,     64 bytes,   4754 cycles,   107 Mbps, completion code = 0

    [C66xx_0] data mismatch at unit 0, 0x4 (at 0x10802200) != 0xffffffff (at 0x10806200)

    [C66xx_0] SWRITE   from 0x10802200 to 0x10806200,    128 bytes,   5114 cycles,   200 Mbps, completion code = 0

    [C66xx_0] data mismatch at unit 0, 0x5 (at 0x10802200) != 0xffffffff (at 0x10806200)

    有专用的适合差分传输的SMA线吗?

  • 你单独测试下Message passing看看可以吗?我的同轴线就是在淘宝上买的,长度跟你的差不多。

  • leeen 你好,我现在在做用srio实现DSP与FPGA通信,也用两个DSP测试的程序,但是dsp端口一直打不开,请问dsp和FPGA配置上有哪些需要注意的?需要检查哪些问题?谢谢!