【FPGA开发】Xilinx FPGA差分输入时钟的使用方法

正文

以前在使用ZYNQ的领航者ZYNQ7020进行FPGA学习时,它们使用的单端50M的输入时钟,在verlog代码编写上比较简单,而现在使用Alinx的AXU3EG开发板时,发现它使用的是200M的差分输入时钟,哪这个时候,输入时钟要怎么使用呢?

先说答案,使用 IBUFDS 源语解决!

先介绍一下什么是 IBUFDS,它的全称为 Dedicated Differential Signaling Input Buffer with Selectable I/O Interface,即专用差分输入时钟缓冲器 。它用来把差分时钟转换成单端时钟来作为全局的时钟。

​ 它的结构如下图所示:

对于其而言,有两路输入,用I和IB表示。其真值表如下:

I IB O
0 0 No Change
0 1 0
1 0 1
1 1 No Change

可以看出,只有 I 和 IB 不同时,输出才会发生改变,且与 I 相同。而对于差分时钟而言,I 和 IB 时钟是逻辑上相异的,所以可以通过 IBUFDS 后可以产生单端的时钟信号。

在 Xilinx 的 Vivado 中,可以采用以下方式进行例化:

verilog 复制代码
IBUFDS #(
      .DIFF_TERM("FALSE"),       // Differential Termination
      .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE" 
      .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
   ) IBUFDS_inst (
      .O(O),  // Buffer output
      .I(I),  // Diff_p buffer input (connect directly to top-level port)
      .IB(IB) // Diff_n buffer input (connect directly to top-level port)
   );

更简洁的,可以省略上面的参数,而直接采用默认参数

verilog 复制代码
IBUFDS IBUFDS_inst (
      .O(sys_clk),   // 1-bit output: Buffer output
      .I(sys_clk_p),   // 1-bit input: Diff_p buffer input (connect directly to top-level port)
      .IB(sys_clk_n)  // 1-bit input: Diff_n buffer input (connect directly to top-level port)
	);

参考资料

【XINLIX 原语】XILINX 原语的使用之 IBUFDS 差分转单端、OBUFDS 单端转差分

相关推荐
hahaha60164 小时前
Xilinx 325T FPGA 中的 GT(GTP 或 GTX)收发器和普通 LVDS 接口的差模和共模电压
fpga开发
hahaha601610 小时前
FPGA没有使用的IO悬空对漏电流有没有影响
fpga开发
贝塔实验室21 小时前
FPGA 动态重构配置流程
驱动开发·fpga开发·硬件架构·硬件工程·射频工程·fpga·基带工程
GateWorld1 天前
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
fpga开发·mipi csi2
思尔芯S2C1 天前
思尔芯携手Andes晶心科技,加速先进RISC-V 芯片开发
人工智能·科技·fpga开发·risc-v·debugging·prototyping·soc validation
tiantianuser1 天前
RDMA简介5之RoCE v2队列
fpga开发·verilog·fpga·rdma·高速传输·rocev2
碎碎思1 天前
打破延迟极限的 FPGA 机械键盘
fpga开发·计算机外设
ALINX技术博客2 天前
【新品解读】一板多能,AXRF49 定义新一代 RFSoC FPGA 开发平台
射频工程·fpga·amd·rfsoc·alinx
hahaha60162 天前
Flash烧录速度和加载配置速度(纯FPGA & ZYNQ)
fpga开发
hahaha60162 天前
ARINC818编解码设计FPGA实现
fpga开发