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 与v6 fpga pcie连接问题



这个pcie调的纠结了很久了

现在有些新的问题,发上来,不知道有没有高手给以建议和解答。

我们现在大致的情况是,有一定概率能够link up上,后续的东西还没有测,至少按照mcsdk里的例程读取remote端(FPGA 为ep)的相应寄存器应该不对

现在主要在调试以是link up稳定。

对于各种寄存器进行配置(主要是使fpga和dsp两端相应的配置相同)

发现有这样几个寄存器:

1. PL_GEN2

经过了这样的配置之后(配置为5GT)

/* Setting PL_GEN2 */
memset (&setRegs, 0, sizeof(setRegs));
gen2.numFts = 0xF;
gen2.dirSpd = 0x1;//speed=gen2
gen2.lnEn = 2;
setRegs.gen2 = &gen2;

应该得到0x2020f才对,但是读出来一直是0x20f

甚至之后我在程序里加了如下内容,结果依然是0x20f:

  uint32_t *pl_gen2=(uint32_t *)0x2180180c;

*pl_gen2=0x2020f;
System_printf("force pl_gen2 to 0x2020f!!!!!!!!!!!!!!! \n");

System_printf("pl_gen2 is %x\n",*pl_gen2);

2.link_ctrl2

uint32_t *link_ctrl2=(uint32_t *)0x218010a0;

/* Setting linkCtrl2 */
memset (&setRegs, 0, sizeof(setRegs));
linkCtrl2.tgtSpeed = 0x2;//0x2 5g 0x1 2.5g wander 2013.1.22
setRegs.linkCtrl2 = &linkCtrl2;

这个link_ctrl2 的tgtspeed是要配置成5g才会变成gen2么?

还是只配置pl_gen2就可以了?

我现在的情况是linkctrl2配置为5g后,如果连上,在fpga那端用chipscope抓到才有可能为5g~如果不配置这个,fpga和dsp均显示只支持2.5g,即使两端都配为5g(dsp端只配置了pl_gen2)

3.link_cap

在link_cap寄存器中,如下图:

我试图修改L1_EXIT_LAT 和L0s_exit_lat,因为在这两个field的解释力有写Writable from internal bus interface.我将其理解为,可在内部配置(虽然上图中显示R为只读),事实上,在修改PM_CTL_STAT等寄存器类似的field时,这种field的是可以改的。

但是在此寄存器中,我按照如下:

*link_cap= (uint32_t )0x0003f422;进行修改时,得到的结果却是

[C66xx_0] link_cap is 133422

也就是,L1_EXIT_LAT 和L0s_exit_lat既不是我要的7,7

也不是默认的6,5

而是6,3

好奇怪~

  • 您好,我也在调pcie,请问你用的是自己写的程序还是已有的demo啊?我用的自带的demo运行,自己画的转接板把6678evm和v6两块开发板连起来,但是link training都过不去,这个demo是用来连接连片dsp用的,不知用在dsp和fpga可不可以?谢谢!

  • 我用的demo在调试,中间做了一些修改,但是基本没有大变化。其实第一次连接就link up上了,但是之后发现这只是个概率问题,现在可能也就30%不到。

    基本感觉就是与信号质量关系挺大的,可是也没办法,只能硬着头皮看改些什么东西能让效果好一点

    我不知道你的转接板怎么弄的。我们实在自己画的板子上连的,fpga抓出来发现信号跳变什么的很严重。转接板的话可能效果会更差点

    因为之前也试过从evm板的amc那里连线出来通过sma头连v6开发板试过,也不太行的~

  • 我的板子是amc转pcie的,就是直接把amc的pcie信号线连接到pcie槽上,试了很多次,都没能link up上,你用的是pdk文件夹里的哪个demo么?能把你用的demo给我发一份么?你都修改了里面的哪些部分?我的邮箱:chendongcheng8710@163.com,谢了

  • 就是pdk里的demo,我一开始没做改动,只把loopback改掉之后就连上过的,后来改了一些配置,主要是hi配合fpga的,没有发现明显的变化

    给你也没什么用的

    我又实质性进展肯定会在帖子里说的,大家都交流吧。我现在这些东西确实没太多用~

    信号完整性的问题好像挺重要的

  • 我把6678evm通过转接板连到fpga上了,在linktraining时过不去,死循环里是等待ltssmState== pcie_LTSSM_L0(0x11),我读出ltssmState的值是0x02 (POLL_ACTIVE),这是什么意思?你遇到过这个问题么?