跳转到主要内容

Xilinx PCIe高速接口入门实战(四)

judy 提交于

<p>作者:<a id="js_name">FPGA技术实战<br/></a></p><section>引言:本文介绍PCIe IP核时钟结构、PCIe板卡时钟方案及复位设计相关内容。</section><p></p><section><strong>1.&nbsp;PCIe IP核时钟</strong></section><p></p><p>图1以 Kintex 7 Gen2×8为例,显示了PCIe集成块时钟结构框图。</p><p style="text-align: center;"><img src="/files/ueditor/108/upload/image/20241231/1735628606218763.jpg" title="1735628606218763.jpg" alt="图1:PCIe IP核时钟结构框图.JPG"/></p><p>集成块输入系统时钟信号称为sys_clk,该时钟频率必须为100MHz、125MHz或250MHz。使用的时钟频率必须与Vivado IDE中的时钟频率选择相匹配。</p><p></p><section><strong>1.1 同步和非同步时钟&nbsp;</strong></section><section>有两种方法可以为PCI Express系统提供时钟:&nbsp;</section><section>●使用同步时钟,即所有设备都使用共享时钟源。&nbsp;</section><section>●使用非同步时钟,每个设备都有自己的时钟源。 &nbsp;</section><section>建议:推荐使用核心时使用同步时钟。由于所提供的参考时钟的特性,所有附加卡设计都必须使用同步时钟。对于使用插槽时钟的设备,必须在Vivado IDE中启用链路状态寄存器中的插槽时钟配置设置。</section><p></p><p style="text-align: center;"><img src="/files/ueditor/108/upload/image/20241231/1735628615418608.jpg" title="1735628615418608.jpg" alt="图3:嵌入式系统使用125、250MHz参考时钟.JPG"/></p><p></p><section>对于同步时钟系统,每个链路伙伴设备共享相同的时钟源。图2和图3显示了使用100MHz参考时钟的嵌入式系统。当使用125MHz或250MHz参考时钟选项时,必须使用外部PLL进行5/4和5/2的乘法,将100MHz时钟分别转换为125 MHz和250 MHz。此外,即使设备是嵌入式系统的一部分,如果系统使用商用PCIe根复合体或交换机以及典型的主板时钟方案,仍应使用同步时钟。&nbsp;</section><section>图4、图5显示了典型PCIe附加卡时钟设计方案。</section><p></p><p style="text-align: center;"><img src="/files/ueditor/108/upload/image/20241231/1735628629853075.jpg" title="1735628629853075.jpg" alt="图4:使用100 MHz参考时钟的开放系统附加卡.JPG"/></p><p style="text-align: center;"><img src="/files/ueditor/108/upload/image/20241231/1735628636395387.jpg" title="1735628636395387.jpg" alt="图5:使用125、250 MHz参考时钟的开放系统附加卡.JPG"/></p><p><br/></p><section style="text-align: center;"><img src="/files/ueditor/108/upload/image/20241231/1735628643757673.jpg" title="1735628643757673.jpg" alt="图6:XC7K325T-FFG900芯片PCIe×8设计.JPG"/></section><p></p><section><strong>2.&nbsp;PCIe IP核复位</strong></section><section>PCIe IP核使用sys_rst_n复位系统,它是异步、低有效复位信号。插入此信号会导致整个IP核(包括GTX收发器)的硬复位。复位解除后,IP核试图连接训练并恢复正常运行。在典型的端点应用程序中,例如附加卡,通常存在边带(sideband)复位信号,应将其连接到sys_rst_n。对于没有边带系统复位信号的端点应用,应在本地生成初始硬件复位。PCI Express中可能发生三个重置事件:</section><section>●冷复位(cold reset):在通电时发生的上电复位,信号sys_rst_n被插入会导致IP核的冷复位; &nbsp;</section><section>●热复位(warm reset):由硬件触发的基本复位,无需移除和重新施加电源。sys_rst_n信号被插入以导致内核的热复位;&nbsp;</section><section>●热复位(hot reset):通过协议在PCIe链路上带内发送复位,在这种情况下,不使用sys_rst_n。在该复位的情况下,接收到的_Hot_Reset信号被断言以指示复位的来源。</section><section>IP核的用户应用程序界面有一个名为user_reset_out的输出信号。此信号相对于user_clk_out同步停用。信号user_reset_out在以下任何一种情况下都会被断言:&nbsp;</section><section>●基本复位:由于sys_rst_n的断言而发生(冷或热);&nbsp;</section><section>●IP核内的PLL:失锁,表明时钟输入的稳定性存在问题;</section><section>●收发器PLL锁定丢失:任何收发器都失去锁定,表明PCIe链路存在问题。&nbsp;</section><section>在上述所有条件得到解决后,user_reset_out信号与user_clk_out同步解除,允许IP核尝试训练并恢复正常运行。</section><section>需要注意的是:根据PCIe电气规范设计的系统提供边带复位信号使用3.3V信号电平,当该信号接入FPGA IO接口时,要考虑电平兼容性问题,如图7所示,显示了来自系统提供的+3.3V边带复位信号PCIE_PERST与FPGA DDR Bank互联时,需将电平转换为+1.5V。</section><p></p><p style="text-align: center;"><img src="/files/ueditor/108/upload/image/20241231/1735628663833198.jpg" title="1735628663833198.jpg" alt="图7:系统提供的+3.3V边带复位信号互联设计.JPG"/></p><p>文章来源:<a href="https://mp.weixin.qq.com/s/moGv7bKk4MijpC6nbcdzPw&quot; target="_self">FPGA技术实战</a></p>