当前位置: 首页 > article >正文

FPGA 使用门控时钟

使用门控时钟
赛灵思器件内置专用时钟网络,可提供高扇出低偏差时钟资源。如果在 HDL 代码中包括精细粒度时钟门控技术,则会
干扰此功能及防止专用时钟资源的有效使用。因此,在将 HDL 写入器件时,赛灵思不建议把时钟门控结构编码在时钟
路径上。与此相反,出于功能或功耗考虑而停止设计的某些部分,应使用通过编码推断时钟使能的方法来控制时钟。
将时钟门控转换为时钟使能
如果编码中已经含有时钟门控结构,或是另有技术要求这样编码,赛灵思建议使用综合工具把已经布局在时钟路径上
的门控重新映射到数据路径上的时钟使能。这样做可以更理想地映射到时钟资源,并简化与进 / 出门控时钟域的数据有
关的电路时序分析。例如,利用 -gated_clock_conversion auto 选项与 Vivado 综合使用,以尝试自动转换为寄
存器时钟使能逻辑。对于复杂的门控时钟结构,使用 RTL 代码中的 GATED_CLOCK 属性来指导 Vivado 综合。
门控时钟缓存
当时钟网络的较大部分可以关闭一段时间时,您可以使用 BUFGCE BUFGCTRL 启用或禁用时钟网络。此外,在定向
UltraScale 器件时,可以门控 BUFGCE_DIV BUFG_GT 。对于 7 系列器件,还可以使用 BUFHCE BUFR BUFMRCE
来门控时钟。
当时钟可以在一段时间内减慢时,您也可以使用这些缓存和附加逻辑来周期性地使能时钟网络。用户也可以使用
BUFGMUX BUFGCTRL 将时钟源从速度较快的时钟信号切换为速度较慢的时钟信号。
这些技巧中的任何一项都可以有效降低动态功耗。但是根据要求和时钟拓扑结构,某种技巧可能比另一种更加行之有
效。例如,在 7 系列器件中:
如果 BUFR 是外部生成的时钟 (低于 450 MHz ),则只需要提供三个时钟区域, BUFR 便可能以最佳状态运行。
对于 Virtex-7 器件,也可能需要对多个时钟区域 (但最多只能有三个垂直相邻的区域)使用 BUFMRCE 技术。
• BUFHCE 更适合能够包含在单个时钟区域中的高速时钟。虽然 BUFGCE 可以跨越器件,并且是最灵活的方法,但
是它或许并不是最节能的选择。
控制和同步器件启动
FPGA 器件完成配置后,器件需要经历一系列事件才能退出配置状态,进入一般工作状态。在大多数配置序列中,最后
步骤之一是全局置位复位 (GSR) 解除,然后是全局使能 (GWE) 信号解除。这个步骤完成之后设计进入已知的初始状态,
然后释放进入工作状态。
如果上述释放点未同步到给时序钟域,或如果时钟的运行速度快于 GWE 安全释放的速度,部分设计就会进入未知状
态。对于一些设计,这没有关系。在其他设计中,这可能导致设计变得不稳定或不正确地处理初始数据集。
如果设计必须在已知状态下启动,赛灵思建议您使用以下任何方法来控制启动同步过程:
使用具有时钟使能能力的示例化时钟缓存组件。在使能设计时钟之前,将复位释放延迟所需的多个周期。以下示
例显示了在 UltraScale 器件中复位后,如何延迟第一个设计时钟边沿。通过在同步寄存器上设置
ASYNC_REG=TRUE ,可以讲所有寄存器都放在单个 SLICE 中,因此不需要由全局时钟资源驱动。要防止在同步器
时钟上插入时钟缓存,请在输入时钟端口上使用 CLOCK_BUFFER_TYPE=NONE 属性。
使用 MMCM 时,可以从时钟向导中选择 “Safe Clock Startup” 选项,以确保只有在设计时钟稳定可靠之后才能使能
设计时钟。以下示例显示了连接到 BUFGCE CE 引脚的 UltraScale 器件 MMCM LOCKE D 信号的同步阶段,该引
脚驱动用户逻辑。第二个 BUFGCE 并行连接到高扇出 BUFGCE (用户时钟),专用于控制 BUFGCE/CE 引脚的逻
辑。此拓扑结构通过最小化同步器和 BUFGCE 引脚之间的时钟偏移,有助于 UltraScale 器件中的 BUFGCE/CE 时序
收敛。
提示: 如果 MMCM PLL 补偿模式设置为 ZHOLD BUF_IN ,则来自 CLKOUT0 的所有时钟都与反馈时钟分组,并使
用相同的 CLOCK_ROOT 。如果这在 BUFGCE/CE 上引入了时序违规,则仅在高扇出时钟和反馈时钟之间创建
CLOCK_DELAY_GROUP 约束。或者,您还可以将低扇出时钟网络上的 USER_CLOCK_ROOT 约束设置为与 MMCM 相同
的时钟区域。对于 7 系列器件,由于不同的时钟架构,通常不需要第二个时钟缓存来帮助时序收敛。
在设计的关键部分 (例如状态机)上使用时钟使能,本地复位 (同步)或两者,以确保设计的这些部分的启动受
控和已知。

http://www.kler.cn/a/566397.html

相关文章:

  • 8个Linux进程管理命令详解及示例(四):kill、pkill 和 killall 命令
  • 养生保健:为健康生活筑牢基石
  • 人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式
  • 深度学习笔记17-马铃薯病害识别(VGG-16复现)
  • 验证码识别:一文掌握手机验证码的自动化处理
  • 爬虫下载B站视频简单程序(仅供学习)
  • 【考研】复试相关上机题目
  • 【西瓜书《机器学习》四五六章内容通俗理解】
  • IPoIB源码深度解析:如何基于TCP/IP协议栈实现高性能InfiniBand通信
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_list_t
  • python-leetcode-颜色分类
  • Spark核心算子对比:`reduceByKey`与`groupByKey`源码级解析及生产调优指南
  • ESP32-S3 42引脚 语音控制模块、设备运转展示 GOOUUU TECH 果云科技S3-N16R8 控制舵机 LED开关 直流电机
  • 【Qt QML】QML鼠标事件全面解析
  • 家政一城一店融合小程序怎么开通,需要哪些资质?
  • 软件工程复试专业课-软件生命周期
  • 敏捷原则与实践(Agile principles and practices)
  • Docker02 - 深入理解Docker
  • linux有哪些常用命令?
  • CSS—引入方式、选择器、复合选择器、文字控制属性、CSS特性