提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Xilinx FPGA资源解析与使用系列——Transceiver(一)参考时钟解析

  • 前言
  • IP核的部分设置
  • Quad 的定义是什么?
  • 使用QPLL还是CPLL
  • REFCLK0 Q2、REFCLK1 Q2这些时钟输入的架构?
  • QPLL输入为什么可以选择4个 输入源?
  • 总结

前言

高速串行Transceiver是FPGA的精华所在,没用过它都不好意思说自己是玩FPGA的。但其复杂的结构确实劝退了一大波人。尽管目前xilinx的example已经做的很牛逼了,可以帮我们把大部分不关系的逻辑和时序都封装起来不用我们管。但有时候还是希望能够学习的更深入点,更多的了解其架构。
接下来,我们就看图说话——从IP核的时钟配置来学习transceiver的参考时钟架构细节。

IP核的部分设置

这里使用的是Serdes系列总结——Xilinx serdes IP使用(一)——3G serdes这篇文章中的例子,我们来详细看一下参考时钟部分的设置

1、这是器件所有transceiver的一个指示图,包含了Quad0、Quad1、Quad2、Quad3。在我们的实例中我们使用的是Quad3

2、Quad3中的四条lane我们都用上了

3、PLL可以选择CPLL和QPLL,这里我们使用的是QPLL
TX/RX Clock Source时钟源使用的是REFCLK0 Q3。实际上我们还可以选择
REFCLK0 Q2、REFCLK1 Q2、REFCLK0 Q3、REFCLK1 Q3

Xilinx的example实在是比较强大,我们不需要太理解transceiver里面的细节我们就能用起来了,但是呢,不出问题还好。一出问题的话也就无从下手了。transceiver模块中引出来的引脚虽然正常情况下大部分都用不上。但异常的时候定位的问题的时候可能就需要他们来进行排查了。

好了,以上就是transceiver的时钟源的设置。我们带着以下问题。
1、 Quad0、Quad1、Quad2、Quad3的定义是什么?
2、 REFCLK0 Q2、REFCLK1 Q2这些时钟输入的架构?
3、 QPLL输入为什么可以选择4个 输入源?
4、 使用QPLL还是CPLL?

这一节,我们就搞清楚参考时钟的方方面面。

Quad 的定义是什么?

我们假定我们的收发器类型是GTX。
Quad是由以下一些元件构成:
1、 4个GTXE2_CHANNEL 原语
2、 1个GTXE2_COMMON 原语
3、 2对专用外部参考时钟输入差分管脚
4、 专用参考时钟路由

使用QPLL还是CPLL

数据手册中对于QPLL和CPLL有比较详细的说明,这边就不在详细的阐述了,因为这个东西似乎对于我们关系不太大,因为只要你在transceiver wizard设置好之后就行了,具体细节就算了解也用处不大。
我们只要知道的是
QPLL支持的线速率是大于CPLL的,因此我一般来说都是直接用QPLL。

REFCLK0 Q2、REFCLK1 Q2这些时钟输入的架构?

参考时钟输入架构如下图所示,其使用IBUFDS_GTE2原语进行例化。

原语模型:

  IBUFDS_GTE2 #(.CLKCM_CFG("TRUE"),   // Refer to Transceiver User Guide.CLKRCV_TRST("TRUE"), // Refer to Transceiver User Guide.CLKSWING_CFG(2'b11)  // Refer to Transceiver User Guide)IBUFDS_GTE2_inst (.O(O),         // 1-bit output: Refer to Transceiver User Guide.ODIV2(ODIV2), // 1-bit output: Refer to Transceiver User Guide.CEB(CEB),     // 1-bit input: Refer to Transceiver User Guide.I(I),         // 1-bit input: Refer to Transceiver User Guide.IB(IB)        // 1-bit input: Refer to Transceiver User Guide);


实际使用:

assign Q3_CLK0_GTREFCLK_OUT = q3_clk0_gtrefclk;//IBUFDS_GTE2IBUFDS_GTE2 ibufds_instQ3_CLK0  (.O               (q3_clk0_gtrefclk),.ODIV2           (),.CEB             (tied_to_ground_i),.I               (Q3_CLK0_GTREFCLK_PAD_P_IN),.IB              (Q3_CLK0_GTREFCLK_PAD_N_IN)
);

QPLL输入为什么可以选择4个 输入源?

GTXE2_common中QPLL的输入可以选择
本Quad的两对输入时钟差分对,也可以选择相临近的(手册定义为南和北)两对输入时钟差分对。因为我们使用的是Quad3,已经属于最北边,因此只能使用本地Quad的专用差分输入对REFCLK0 Q3、REFCLK1 Q3、或者南边的输入对REFCLK0 Q2、REFCLK1 Q2


代码中从 IBUFDS_GTE2 的O端口输出后的时钟输入到了GTXE2_COMMON原语中的GTREFCLK0端口,这与我们Wizard上设置的一致。

    GTXE2_COMMON #(// Simulation attributes.SIM_RESET_SPEEDUP   (WRAPPER_SIM_GTRESET_SPEEDUP),.SIM_QPLLREFCLK_SEL  (SIM_QPLLREFCLK_SEL),.SIM_VERSION         ("4.0"),//----------------COMMON BLOCK Attributes---------------.BIAS_CFG                               (64'h0000040000001000),.COMMON_CFG                             (32'h00000000),.QPLL_CFG                               (27'h06801C1),.QPLL_CLKOUT_CFG                        (4'b0000),.QPLL_COARSE_FREQ_OVRD                  (6'b010000),.QPLL_COARSE_FREQ_OVRD_EN               (1'b0),.QPLL_CP                                (10'b0000011111),.QPLL_CP_MONITOR_EN                     (1'b0),.QPLL_DMONITOR_SEL                      (1'b0),.QPLL_FBDIV                             (QPLL_FBDIV_IN),.QPLL_FBDIV_MONITOR_EN                  (1'b0),.QPLL_FBDIV_RATIO                       (QPLL_FBDIV_RATIO),.QPLL_INIT_CFG                          (24'h000006),.QPLL_LOCK_CFG                          (16'h21E8),.QPLL_LPF                               (4'b1111),.QPLL_REFCLK_DIV                        (1))gtxe2_common_i(//----------- Common Block  - Dynamic Reconfiguration Port (DRP) -----------.DRPADDR                        (tied_to_ground_vec_i[7:0]),.DRPCLK                         (tied_to_ground_i),.DRPDI                          (tied_to_ground_vec_i[15:0]),.DRPDO                          (),.DRPEN                          (tied_to_ground_i),.DRPRDY                         (),.DRPWE                          (tied_to_ground_i),//-------------------- Common Block  - Ref Clock Ports ---------------------.GTGREFCLK                      (GTGREFCLK_IN),.GTNORTHREFCLK0                 (GTNORTHREFCLK0_IN),.GTNORTHREFCLK1                 (GTNORTHREFCLK1_IN),.GTREFCLK0                      (GTREFCLK0_IN),.GTREFCLK1                      (GTREFCLK1_IN),.GTSOUTHREFCLK0                 (GTSOUTHREFCLK0_IN),.GTSOUTHREFCLK1                 (GTSOUTHREFCLK1_IN),//----------------------- Common Block -  QPLL Ports -----------------------.QPLLDMONITOR                   (),//--------------------- Common Block - Clocking Ports ----------------------.QPLLOUTCLK                     (QPLLOUTCLK_OUT),.QPLLOUTREFCLK                  (QPLLOUTREFCLK_OUT),.REFCLKOUTMONITOR               (),//----------------------- Common Block - QPLL Ports ------------------------.QPLLFBCLKLOST                  (),.QPLLLOCK                       (QPLLLOCK_OUT),.QPLLLOCKDETCLK                 (QPLLLOCKDETCLK_IN),.QPLLLOCKEN                     (tied_to_vcc_i),.QPLLOUTRESET                   (tied_to_ground_i),.QPLLPD                         (tied_to_ground_i),.QPLLREFCLKLOST                 (QPLLREFCLKLOST_OUT),.QPLLREFCLKSEL                  (QPLLREFCLKSEL_IN),.QPLLRESET                      (QPLLRESET_IN),.QPLLRSVD1                      (16'b0000000000000000),.QPLLRSVD2                      (5'b11111),//------------------------------- QPLL Ports -------------------------------.BGBYPASSB                      (tied_to_vcc_i),.BGMONITORENB                   (tied_to_vcc_i),.BGPDB                          (tied_to_vcc_i),.BGRCALOVRD                     (5'b11111),.PMARSVD                        (8'b00000000),.RCALENB                        (tied_to_vcc_i));

注意一些比较重要的信号:

QPLLLOCKDETCLK ,这是用于检测QPLL一些状态的信号,外部连到了drp_clk_i。
QPLLLOCK_OUT:判定QPLL是否锁定
QPLLREFCLKSEL: IN 3’b001,选择的是 GTREFCLK0口作为参考时钟输入
QPLLOUTREFCLK:这是QPLL输入的时钟
QPLLOUTCLK:这是QPLL输出的时钟
QPLLRESET:这是QPLL的复位信号

总结

最后,自己通过画一个参考时钟输入框图,加深印象,并标出其主要输入输出结构,作为结束。

Xilinx FPGA资源解析与使用系列——Transceiver(一)参考时钟解析相关推荐

  1. Xilinx FPGA资源解析与使用系列——Transceiver(十)PRBS、RX Equalizer、CDR

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(十)PRBS.RX Equalizer.CDR PRBS测试序列 ...

  2. Xilinx FPGA资源解析与使用系列——Transceiver(九)TX buffer使用和旁路

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(九)TX buffer使用和旁路 TX buffer vs 相位对 ...

  3. Xilinx FPGA资源解析与使用系列——CLB

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--CLB 前言 CLB Overview Device Resources Recommen ...

  4. Xilinx FPGA资源解析与使用系列——DSP48E(一)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--DSP48E(一) 前言 DSP48E1 Slice Features 结构细节 总结 前 ...

  5. Xilinx FPGA资源

    一.可配置逻辑块 7系列: 1 * CLB = 2 * Slice = 1 * Slice_L + 1 * Slice_M = 2 * Slice_L SLICE_M:包括两个附加功能 A)组成分布式 ...

  6. FPGA资源平民化的新晋- F3 技术解析

    摘要: FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性,在传统通信领域和IC设计领域大放异彩.一路走来,FPGA并非一个新兴的硬件器件,由于其开发门槛过高,硬件加速算法的发布和部署保 ...

  7. XILINX FPGA时钟资源

    Xilinx FPGA时钟资源 Xilinx FPGA时钟包括全局时钟资源.局部时钟资源和I/O时钟资源.Xilinx FPGA除了提供丰富的时钟网络之外,还提供了强大的时钟管理模块,并不断改进,从V ...

  8. Xilinx FPGA内部资源之时钟篇1

    以下时钟介绍以Virtex5系列芯片作为参考芯片 从时钟的角度可以将Xilinx FPGA划分为若干个时钟域(Clock Region),不同的FPGA芯片具有不同数量的时钟域,XC5VLX30有8个 ...

  9. Xilinx FPGA时钟资源的使用

    赛灵思FPGA时钟资源的类型:DCM.PLL.PMCD.MMCM DCM:数字时钟管理器 PLL:锁相环 PMCD:相位匹配时钟分频器 MMCM:混合模式时钟管理器 DCM实际上就是一个DLL(延迟锁 ...

最新文章

  1. 链表问题11——两个单链表相交的系列问题(一):找到有环链表的环入口节点
  2. SQL Server中的命名规范(个人使用)
  3. 51Nod1556 计算
  4. Apache ZooKeeper - 使用原生的API操作ZK_ACL权限
  5. 大数据WEB阶段Mybatis(二)
  6. Ajax判断图片类型
  7. SAP Fiori Elements 框架里 Smart Table 控件的工作原理介绍
  8. JQuery Mobile - 处理图片加载失败!
  9. php图片转化为base64,php获取图片转为base64
  10. 7c盘满了怎么扩容_iPhone 备份文件太大,C 盘不够放怎么办?
  11. ios图片放大之后如何不模糊_图片放大后模糊怎么办 怎么放大图片不失真|放大图片保持清晰度的方法...
  12. 调手表(蓝桥杯2018年B组真题)
  13. pycharm中的Run with Python console功能是什么意思?
  14. 小米刷入Recovery
  15. 1M = 1048576 字节 1G = 1073741824 字节 1T = 1099511627776 字节
  16. 这10条认知,可能就是你和大厂UI 设计师的差距
  17. android 粒子爆炸特效
  18. 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第二章:类和对象初步(新标准C++程序设计)
  19. 在java中如何根据三角函数中的正弦值 余弦值 正切值求该角度值
  20. python爬取网页小说去除nbsp_python爬虫 爬取内容的时候nbsp 空格内容变成问号‘?’...

热门文章

  1. 用python实现相声、评书自动下载(二)
  2. Centos7.2/3/4/5镜像(1511,1611,1708,1804),附Centos官网镜像,旧版全镜像链接及仓库下载地址
  3. feishu-飞书api
  4. 朱建辉php,“神采·朱建辉版画艺术展”在尼泊尔加德满都开幕
  5. 兼职程序员可以从什么平台接私活?
  6. 要数字孪生实现,你只需这款数据可视化大屏软件就够了
  7. 恢复VMware误删虚拟机
  8. 软件项目管理_作业1
  9. Cutting Sticks
  10. 年终回顾 | 小米技术最受欢迎的技术文章TOP20