【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 单端转差分

相关推荐
落雨无风18 分钟前
fpga板级调试常见问题
fpga开发
码农小韩8 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
FPGA小迷弟9 小时前
FPGA 与千兆以太网:各类物理接口的形式、区别、使用方法与应用场景详解
tcp/ip·macos·fpga开发·udp·fpga
NamoAmitabha1289 小时前
Zynq 的 AXI GPIO,是“ARM 通过一条国际标准高速公路(AXI 总线),去遥控 FPGA 里的一个寄存器”。---deepseek
fpga开发·zynq--ps
NamoAmitabha12810 小时前
ARM 不懂寄存器,它只懂内存地址---deepseek
fpga开发·zynq--ps
FPGA小迷弟12 小时前
FPGA 千兆以太网帧格式全解:从 IEEE 802.3 帧结构到 Verilog 收发实现
人工智能·5g·fpga开发·架构·硬件架构
幻智星科技13 小时前
FPGA数据采集接口选型终极指南
fpga开发·udp·硬件架构
星夜离尘5614 小时前
用 SystemVerilog 写一个可背压的流式 RLE 编码器:计数拆分、包尾与 flush 的完整实现
fpga开发
NamoAmitabha12818 小时前
ARM 不懂寄存器,它只懂内存地址--deepseek
fpga开发·zynq--ps
hahaha60161 天前
3NRD降噪算法FPGA实现8并行度设计
fpga开发