Xilinx FPGA资源解析与使用系列——Transceiver(一)参考时钟解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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(一)参考时钟解析相关推荐
- Xilinx FPGA资源解析与使用系列——Transceiver(十)PRBS、RX Equalizer、CDR
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(十)PRBS.RX Equalizer.CDR PRBS测试序列 ...
- Xilinx FPGA资源解析与使用系列——Transceiver(九)TX buffer使用和旁路
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(九)TX buffer使用和旁路 TX buffer vs 相位对 ...
- Xilinx FPGA资源解析与使用系列——CLB
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--CLB 前言 CLB Overview Device Resources Recommen ...
- Xilinx FPGA资源解析与使用系列——DSP48E(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--DSP48E(一) 前言 DSP48E1 Slice Features 结构细节 总结 前 ...
- Xilinx FPGA资源
一.可配置逻辑块 7系列: 1 * CLB = 2 * Slice = 1 * Slice_L + 1 * Slice_M = 2 * Slice_L SLICE_M:包括两个附加功能 A)组成分布式 ...
- FPGA资源平民化的新晋- F3 技术解析
摘要: FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性,在传统通信领域和IC设计领域大放异彩.一路走来,FPGA并非一个新兴的硬件器件,由于其开发门槛过高,硬件加速算法的发布和部署保 ...
- XILINX FPGA时钟资源
Xilinx FPGA时钟资源 Xilinx FPGA时钟包括全局时钟资源.局部时钟资源和I/O时钟资源.Xilinx FPGA除了提供丰富的时钟网络之外,还提供了强大的时钟管理模块,并不断改进,从V ...
- Xilinx FPGA内部资源之时钟篇1
以下时钟介绍以Virtex5系列芯片作为参考芯片 从时钟的角度可以将Xilinx FPGA划分为若干个时钟域(Clock Region),不同的FPGA芯片具有不同数量的时钟域,XC5VLX30有8个 ...
- Xilinx FPGA时钟资源的使用
赛灵思FPGA时钟资源的类型:DCM.PLL.PMCD.MMCM DCM:数字时钟管理器 PLL:锁相环 PMCD:相位匹配时钟分频器 MMCM:混合模式时钟管理器 DCM实际上就是一个DLL(延迟锁 ...
最新文章
- 链表问题11——两个单链表相交的系列问题(一):找到有环链表的环入口节点
- SQL Server中的命名规范(个人使用)
- 51Nod1556 计算
- Apache ZooKeeper - 使用原生的API操作ZK_ACL权限
- 大数据WEB阶段Mybatis(二)
- Ajax判断图片类型
- SAP Fiori Elements 框架里 Smart Table 控件的工作原理介绍
- JQuery Mobile - 处理图片加载失败!
- php图片转化为base64,php获取图片转为base64
- 7c盘满了怎么扩容_iPhone 备份文件太大,C 盘不够放怎么办?
- ios图片放大之后如何不模糊_图片放大后模糊怎么办 怎么放大图片不失真|放大图片保持清晰度的方法...
- 调手表(蓝桥杯2018年B组真题)
- pycharm中的Run with Python console功能是什么意思?
- 小米刷入Recovery
- 1M = 1048576 字节 1G = 1073741824 字节 1T = 1099511627776 字节
- 这10条认知,可能就是你和大厂UI 设计师的差距
- android 粒子爆炸特效
- 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第二章:类和对象初步(新标准C++程序设计)
- 在java中如何根据三角函数中的正弦值 余弦值 正切值求该角度值
- python爬取网页小说去除nbsp_python爬虫 爬取内容的时候nbsp 空格内容变成问号‘?’...
热门文章
- 用python实现相声、评书自动下载(二)
- Centos7.2/3/4/5镜像(1511,1611,1708,1804),附Centos官网镜像,旧版全镜像链接及仓库下载地址
- feishu-飞书api
- 朱建辉php,“神采·朱建辉版画艺术展”在尼泊尔加德满都开幕
- 兼职程序员可以从什么平台接私活?
- 要数字孪生实现,你只需这款数据可视化大屏软件就够了
- 恢复VMware误删虚拟机
- 软件项目管理_作业1
- Cutting Sticks
- 年终回顾 | 小米技术最受欢迎的技术文章TOP20