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

相关推荐
s09071369 小时前
【FPGA实战】基于Verilog的MCP2515 CAN控制器SPI驱动详解 | 附完整代码
fpga开发·硬件设计·can通信·mcp2515
szxinmai主板定制专家9 小时前
基于 ARM+FPGA 数据机床实时工业控制设计--以雕刻机为例
arm开发·人工智能·嵌入式硬件·fpga开发
XMAIPC_Robot9 小时前
基于RK3588 ARM+FPGA电火花数控机床控制系统设计,兼顾ethercat软硬件实时
linux·arm开发·人工智能·嵌入式硬件·fpga开发
XMAIPC_Robot10 小时前
基于 ARM+FPGA 数据机床控制系统设计--以雕刻机为例
arm开发·fpga开发
GateWorld10 小时前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之点屏一
fpga开发·lcd显示·fpga点亮屏幕·minilvds·fpga点屏
風清掦1 天前
【STM32学习笔记-14】WDG看门狗 - 14.2 WWDG窗口看门狗
笔记·stm32·单片机·嵌入式硬件·学习·fpga开发
尤老师FPGA1 天前
HDMI数据的接收发送实验(十二)
fpga开发
坏孩子的诺亚方舟1 天前
FPGA神经网络数学基础0
人工智能·神经网络·线性代数·fpga开发
熠速1 天前
PolarBox高性能实时仿真系统
arm开发·fpga开发·嵌入式实时数据库·硬件在环半实物仿真
南檐巷上学1 天前
基于Zynq-7020的带有正弦波发生器的8051软核设计
单片机·嵌入式硬件·fpga开发·fpga