← 全局时钟

推荐答案 测试一下

PLL0有三个输出:CLKOUT0、CLKOUT1、CLKOUT2,分别为22MHz、171.6MHz和22MHz反向。clk22_out为22MHz时钟的I/O输出信号,故不经BUFG直接输出;clk22为22MHz经过BUFG后的信号…

问答题 中等 经典问答问答题

参考答案

本题目描述了PLL三路输出时钟的后处理路径,需关注时钟资源使用的合理性与潜在时序问题。 1. **clk22_out**:22MHz不经BUFG直接驱动I/O输出。这是正确做法,因为输出到外部管脚的时钟通常由ODDR或专用输出逻辑驱动,无需经过全局时钟网络;若强行插入BUFG反而会增加路径延迟、浪费资源,且BUFG输出不能直接接I/O。 2. **clk22**:22MHz经BUFG成为全局时钟。BUFG将时钟分配到整个器件的全局网络,具有低偏斜、低抖动特性,适合驱动内部同步逻辑。22MHz频率较低,BUFG足以满足时序要求。 3. **clk171p6**:171.6MHz经BUFG成为全局时钟。高频时钟使用BUFG能确保到达所有触发器的时钟偏斜在可接受范围。171.6MHz与22MHz并非整数倍关系(171.6/22=7.8),两时钟虽同源但异步,跨时钟域交互需同步处理。 4. **clk22_inv**:22MHz反向经BUFGCE与t_rn做逻辑与后输出。这是关键风险点: - BUFGCE内部实现为时钟使能(CE)与输入时钟做与运算。若t_rn是组合逻辑信号且存在毛刺,会在时钟上升沿附近产生毛刺,导致时钟沿不干净(glitch),破坏时序。 - 22MHz反向时钟与原始22MHz相位差180°,但经过BUFGCE后时钟边沿受t_rn影响,若t_rn变化时间与时钟边沿对齐,可能产生短脉冲,引发触发器误触发。 - 通常建议将时钟使能逻辑放在触发器的CE端,而非直接门控时钟。实在需要门控时,应使用专用时钟门控单元(如CGB)或确保t_rn与时钟同步且满足setup/hold。 5. **全局时钟资源冲突**:Xilinx 7系列器件最多有32个BUFG,本设计用了3个(BUFG×2 + BUFGCE×1),资源充足。但需注意BUFGCE的输入来自PLL的CLKOUT2(22MHz反向),而T_RN信号可能来自不同时钟域,需通过同步器消除亚稳态。 6. **跨时钟域设计**:clk22、clk171p6、clk22_inv三者均为全局时钟,但频率不同且相移不同。若模块间信号跨越这些时钟域,必须使用异步FIFO或双级同步器,并分析时序收敛。 7. **建议**:若仅需22MHz反向时钟驱动内部逻辑,可直接用PLL的CLKOUT2经过BUFG得到,避免BUFGCE引入的门控风险。若确实需要使能,将t_rn信号用clk22_inv的上升沿打一拍再送入BUFGCE,或使用全局时钟网络上的专用CE引脚(如FDCE)。

涉及知识点

  • PLL输出时钟路径规划
  • BUFG与BUFGCE的区别与正确使用
  • 时钟门控(Glitch风险)与处理方法
  • 全局时钟资源分配与约束
  • 跨时钟域同步策略
  • I/O时钟输出无需BUFG
← 上一题
登录后反馈错题