Xilinx 7系列FPGA收发器架构之共享功能(二)

本文转载自:FPGA技术实战的CSDN博客

引言: 接着上篇引言,我们在进行高速接口设计时经常会用到如PCIe、SATA、SRIO以及JESD204B等协议,Xilinx相关IP核的物理层进行高速串行数据交互时都采用了串行收发器架构,理解收发器结构能够帮助我们更好的理解上述协议。该文章是7系列FPGA收发器架构第二篇介绍,本博文(内容文字较多,请结合配图仔细深入理解该部分)主要对GTX/GTH收发器的共享资源进行介绍。通过该文档,了解以下内容:

  • 收发器有哪些共享资源
  • 如何使用这些共享资源
  • 1.收发器共享资源概述
    收发器共享资源除了图1 Quad内所红色标记的三种外,还包括复位和初始化、电源关电、回环测试、动态配置端口和数字监控器五部分结构。图1中显示了时钟相关结构的输入输出信号流向。

    图1、Quad内部结构

    2.收发器共享资源使用
    2.1输入参考时钟结构
    输入参考时钟结构如图2所示。Xilinx FPGA基本都是采用端口(Port)和属性(Attribute)实现参数化组件控制。输入参考时钟必须通过IBUFDS_GTE2原句才能使用,这一点在图1所示的结构中可以看到。图3给出了使用GTX收发器时例化IBUFDS_GTE2的例子。例子中并没有显示原句的属性参数,这是因为该原句的属性均为预留,无需用户设置。

    图2、输入参考时钟结构

    图3、输入参考时钟使用举例

    2.2参考时钟选择及分配结构
    图4显示了GTXE2_COMMON参考时钟选择器结构,图中我们可看到每路时钟的来源:来自IBUFDS_GTXE2、Q(n-1)以及Q(n+1)。

    图4、GTXE2_COMMON参考时钟选择器结构

    那么这些时钟,在项目开发时又是如何选择的呢?在图5和图6中我们看到如何进行这些时钟的选择。图5中选择来自IBUFDS_GTXE2的参考时钟作为GTX收发器参考时钟。

    图5、7系列FPGA向导截图

    图6、PLL参考时钟选择举例

    同样,对于该组件Xilinx FPGA也是采用端口和属性来进行参数化控制。我们在项目开发时通常采用Xilinx提供的收发器向导通过GUI图形界面方式来实现控制,而不是通过繁琐的的输入参数来实现。当我们通过GUI实现参数配置后,软件在生成源码文件时自动回帮我们生成好。如图7所示。我们在二次修改GTX IP核参数时,要么重新替换首次IP核文件,或者通过首次生成的源码文件进行修改,强烈推荐前者。

    图7、GTX收发器例化举例

    图8、GTXE2_COMMON原句配置参数源码文件

    图8中,我们可以看到GTXE2_COMMON原句是如何通过端口和属性进行配置,我们完全可以通过对照UG文档,修改该文件来实现GTX IP的重新配置,但不建议这么做!

    图9、CPLL参考时钟选择器结构

    对于如图9所示的CPLL的输入选择网络和QPLL基本类似,不在进行详述。

    2.3外部参考时钟使用模式
    外部参考时钟有四种设计方法供我们项目设计选择。

    第一种:单个时钟驱动一个Quad内的四个收发器,如图10所示。

    图10、单个时钟驱动一个Quad内的四个收发器

    第二种:单个收发器驱动多个Quad内多个收发器,如图11所示。

    图11、单个收发器驱动多个Quad内多个收发器

    第三种:多个参考时钟驱动一个Quad内的多个收发器,如图12所示。

    图12、多个参考时钟驱动一个Quad内的多个收发器

    第四种:多个参考时钟驱动多个Quad内的多个收发器,如图13所示。

    图13、多个参考时钟驱动多个Quad内的多个收发器

    注意:第二种和第四种方案在使用时必须遵循Xilinx推荐的规则:

    1)外部参考时钟输入Quad(源Quad)的上方Quad的数量不能超过1个(参照图5);
    2)外部参考时钟输入Quad(源Quad)的下方Quad数量不能超过1个(参照图5);
    3)一个外部参考差分时钟对(MGTREFCLKN/MGTREFCLKP)驱动Quad的数量不能超过3个(或12个收发器)。如果需要驱动多余12个收发器,需要使用多个外部参考时钟差分对,为确保时钟对之间偏移最小,必须使用同一个晶振来驱动时钟缓冲器(buffer),然后时钟缓冲器的多个输出时钟再驱动多个收发器(超过12个)。如图14外部参考时钟举例PCIe×16时钟方案。

    图14外部参考时钟PCIe×16时钟方案

    最新文章