一、Clocking Wizard 是什么?
Clocking Wizard 是 Xilinx Vivado 设计套件中的一个 IP 核,用于自动化和简化 FPGA 中的时钟管理。它提供了一个图形化界面来配置 MMCM(混合模式时钟管理器)和 PLL(锁相环),让开发者无需深入理解底层复杂的时钟架构,就能生成稳定、精确的时钟信号。
核心价值:
- 将复杂的时钟管理设计图形化、自动化
- 降低设计难度和出错风险
- 优化时钟网络的性能和资源使用
二、基本使用方式
2.1 在 Vivado 中调用 Clocking Wizard
常规用法是打开之后保持默认,给定输入时钟,给定输出时钟,它就能产生一个或多个不同频率或相位的时钟供工程中各个模块使用,也具有时钟去抖动以及相位调整的功能,几乎每个 FPGA 项目都需要用到它。


2.2 IP 例化
// 生成的例化模板 clk_wiz_1 instance_name (
.clk_out1(clk_100m), // 输出时钟 100MHz
.clk_out2(clk_50m), // 输出时钟 50MHz
...
.reset(reset_i), // 异步复位
.locked(locked_o), // 时钟锁定信号 - 非常重要!
.clk_in1(clk_100m) // 输入时钟 100MHz
);
三、资源消耗:理解成本
它的内部逻辑如下:外部时钟通过 IBUFG 送入 IP 核,再通过 BUFG 送入 MMCM/PLL,输出之后的时钟再过 BUFG 成为最后获得的时钟信号。

如果 1 个 clk_in 产生 7 路时钟,那消耗就是 8 个 BUFG。在 BUFG 资源紧张的时候,可以通过选择输出时钟的资源属性来进行资源平衡,比如使用 BUFGCE 等等。

CMT - 时钟管理片
- 每个 CMT 包含 1 个 MMCM + 1 个 PLL
- 关键理解:使用 MMCM 或 PLL 都会消耗整个 CMT
- XC7A100T 示例:6 个 CMT → 最多 6 个 MMCM 或 6 个 PLL
BUFG - 全局时钟缓冲器
- 每个时钟输入/输出通常需要 1 个 BUFG
- 示例:1 输入 + 7 输出 = 8 个 BUFG




