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.

多个C6678作PCIE的ep端HOST一片都枚举不到

各位大神好,

        目前我们公司做了一个机箱,有两块板子,上面各一块C6678,通过背板走PCIE与HOST通信,我已经调通了一块板子的C6678的PCIE作为EP与HOST进行通信(驱动也已经写好),现在的问题是我两个6678烧相同的程序,随便选择某一块板单个插入都枚举到并与HOST通信,但是如果同时插上的话HOST一个设备都枚举不到(两个板子的插在不同的PCI总线上)。

        目前我做了以下工作:

1.修改其中一片6678的PCIE的vendor和device,两片还是都枚举不到

2.修改其中一片6678的BAR,两片还是都枚举不到

3.查看两片是否都Link up,发现上电时等待Link up那一步确实过了,能Link up,说明debug0寄存器的状态位当时读取时值是0x11,但是等windows起来后,枚举不到俩设备,我再通过仿真器去看debug0的值发现状态位是0x00,也就是说Link在之后被down掉了,这应该是枚举不到的原因。

请问各位大神为什么Link up 起来后会被down掉?down的情况我只有在HOST关机时才碰到过,现在是不是因为两个6678的程序都一样,多片的话需要哪个寄存器做修改?

  • 请问你的背板用的是否是Spread Spectrum Clocking (SSC)? 如果是SSC,时钟需要同源。

  • Shine Zhang 说:

    请问你的背板用的是否是Spread Spectrum Clocking (SSC)? 如果是SSC,时钟需要同源。

    请问您是指需要把HOST也就是RC的时钟和两个EP同源还是指只需要两个EP同源?

    因为单个C6678的时候我也没同源RC和EP,没有出问题

  • 要求RC和EP都同源。

    Note that a common clock for a PCI express root complex and endpoint are not required unless a spread-spectrum clock is used. If a spread-spectrum clock is used by one device at the far end of a PCI express link, the same clock must be used as a reference by the KeyStone I device.
    http://www.ti.com/lit/an/sprabi2c/sprabi2c.pdf

    在PCIe文档里也有说明。

    Many PCIe connections, especially backplane connections, require a synchronous reference clock between the two link partners. To achieve this a common clock source, referred to as REFCLK in the PCI Express Card Electromechanical Specification, should be used by both ends of the PCIe link. If Spread Spectrum Clocking (SSC) is used it is required that a common reference clock be used by the link partners. Most commercially available platforms with PCIe backplanes use Spread Spectrum Clocking to reduce EMI. 

    http://www.ti.com/lit/ug/sprugs6d/sprugs6d.pdf