FPGA 使用门控时钟

embedded/2025/3/5 12:09:39/
使用门控时钟
赛灵思器件内置专用时钟网络,可提供高扇出低偏差时钟资源。如果在 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.ppmy.cn/embedded/170179.html

相关文章

脑电信号在注意力训练中的实时反馈系统设计

设计一个基于脑电信号(EEG)的实时注意力训练反馈系统,需结合硬件、算法、人机交互和用户体验优化。以下为系统设计的核心框架: 1. 系统整体架构 系统包括 数据采集 → 预处理 → 特征提取 → 实时反馈 → 用户界面 五大模块&…

HashMap 的底层结构详解:原理、put和get示例

HashMap 的底层结构详解 在 Java 中,HashMap 是基于哈希表实现的键值对存储结构,其核心设计目标是高效的数据存取(理想情况下时间复杂度为 O(1))。以下是其底层结构的详细解析: 1. 基本结构:数组 链表/红…

yum源选要配置华为云的源,阿里云用不了的情况

curl -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo

2025嵌入式软件开发工程师--音频方向

一、选择题(每题3分,共30分) 1.以下哪个不是C语言中的关键字?( ) A. int B. Float C. Define D. Return 2.以下代码的输出是: ( ) inta 5, b 10; printf("%d“, a b); A. 15 B.16 …

深度学习代码分析——自用

代码来自:https://github.com/ChuHan89/WSSS-Tissue?tabreadme-ov-file 借助了一些人工智能 1_train_stage1.py 代码功能总览 该代码是弱监督语义分割(WSSS)流程的 Stage1 训练与测试脚本,核心任务是通过 多标签分类模型 生成…

【数据挖掘]Ndarray数组的创建

在 NumPy 中,ndarray(N-dimensional array)是最核心的数据结构,创建 ndarray 数组的方式有多种,主要包括以下几类: 目录 1. 通过列表或元组创建 2. 使用 NumPy 内置的创建函数 (1&#xff0…

详解DeepSeek模型底层原理及和ChatGPT区别点

一、DeepSeek大模型原理 架构基础 DeepSeek基于Transformer架构,Transformer架构主要由编码器和解码器组成,在自然语言处理任务中,通常使用的是Transformer的解码器部分。它的核心是自注意力机制(Self - Attention),这个机制允许模型在处理输入序列时,关注序列中不同位…

DeepSeek集成到VScode工具,让编程更高效

DeepSeek与VScode的强强联合,为编程效率树立了新标杆。 DeepSeek,一款卓越的代码搜索引擎,以其精准的索引和高速的检索能力,助力开发者在浩瀚的代码海洋中迅速定位关键信息。 集成至VScode后,开发者无需离开熟悉的编辑…