Device Clock Generation
AI 深度解读
Device Clock Generation(设备时钟生成)深度解读
背景
在构建复杂的数字系统时,如 CPU、总线互连单元、多个 DMA(直接内存访问)控制器和内存控制器之后,工程师往往需要将大量精力投入到设计内部模块与外部外设之间的接口上。这是许多硬件设计项目中最具挑战性的环节之一。
许多高性能外设(如 Flash 存储、高速串行接口等)需要由主控设计(Master Design)提供时钟信号。然而,随着外设速度的提升和协议的复杂化,生成一个稳定、灵活且符合时序要求的“设备时钟”变得异常困难。
作者基于其在 NOR Flash 控制器、HyperRAM、NAND Flash 以及 SDIO/eMMC 控制器等 ASIC 和 FPGA 平台上的实际设计经验,指出传统的整数分频方法在处理现代高速外设时钟时存在诸多局限。本文旨在探讨如何在不依赖模拟组件的情况下,通过纯数字逻辑生成满足多种严苛要求(如动态频率、非连续时钟、DDR 信号偏移等)的设备时钟。
核心内容
1. 时钟生成的双重挑战
现代高速外设设计涉及两个主要的时钟处理问题:
- 生成时钟:由主控生成并发送给外设的时钟信号(本文重点讨论的内容)。
- 处理返回时钟:处理从外设返回的时钟信号(如 DDR 内存、eMMC、HyperRAM 或 NAND Flash 协议中常见)。处理返回时钟同样关键,但属于另一篇独立文章的主题。
2. 不同应用场景下的时钟需求演变
-
FPGA 平台的 NOR Flash 控制器:
- 需求:时钟频率固定,但需要支持“暂停”功能。
- 具体逻辑:空闲时关闭时钟;片选信号(Chip Select)拉低后需关闭时钟一个周期;事务完成但片选未拉高前,需关闭时钟数个周期。
- 教训:早期尝试控制 HyperRAM 时,因未准备好处理返回时钟而导致设计失败。
-
ASIC 平台的动态频率需求:
- 痛点:与 FPGA 不同,ASIC 的最终时钟频率在运行时(Run-time)才确定。设计可能以较低频率启动,随后在运行时加速至全速。
- 不可逆性:ASIC 一旦流片,无法像 FPGA 那样通过重新编译来适配不同的频率或硬件。如果设计不支持较慢的外设,重建设计的成本极高。因此,ASIC 时钟生成器必须具备高度的灵活性和鲁棒性。
-
NAND Flash 的启动协议:
- 协议要求:必须从低速频率开始建立连接,连接建立后允许切换到高速频率。
- 实现困境:早期 ASIC 设计依赖模拟组件生成时钟,这虽然有效,但限制了设计的复用性。当该设计需要移植到 FPGA 平台时,模拟组件方案不再适用,暴露了纯数字解决方案的必要性。
-
DDR(双倍数据率)信号的相位偏移:
- 技术细节:许多协议(如 DDR)要求在时钟的上升沿和下降沿都进行数据采样。
- 90度偏移:为了保证从设备(Slave Peripheral)的建立时间(Setup Time)和保持时间(Hold Time),时钟信号必须相对于数据信号延迟 90 度。这样,时钟跳变发生在数据有效窗口的中间,而不是边缘。这与传统的单数据率(SDR)时钟有本质区别。
-
SDIO/eMMC 控制器的复杂性:
- 动态调整:SDIO 控制器需先在 400kHz 下初始化 SD 卡,随后根据卡片、PCB 和控制器能力,将速度提升至 25MHz、50MHz、100MHz 甚至 200MHz。
- 流量控制:时钟必须能够随时停止。例如,当 CPU 处理内部缓冲区速度较慢,无法及时排空数据时,接口时钟必须暂停,以防止外部卡片发送超出缓冲区容量的数据块。
3. 其他相关设备的时钟需求
- 以太网控制器:10M/100M/1Gb 以太网控制器虽然可能使用单一时钟,但构建真正的三模(Tri-mode)控制器需要额外工作。
- SDRAM 控制器:从 FPGA 角度看相对简单,主要是产生时钟,但为了功耗优化,需要支持时钟门控(Clock Gating)。
- I2S 与 I2C/I3C:
- I2S 时钟可以以任意频率生成。
- 传统 I2C 速度较慢,不是本文重点;但基于 I2C 的 I3C 协议可能适用本文讨论的技术。
- SPI 从设备(Slave)的时钟处理逻辑与本文描述的 SPI 主设备(Master)生成时钟的逻辑根本不同。
4. 理想设备时钟生成器的六大特征
作者总结了一个优秀的纯数字时钟生成器应具备以下特性:
- 输出信号:生成由接口“主设备”输出的数字接口时钟。可通过 ODDR 或 OSERDES 等组件实现,可选配模拟延迟。
- 非连续性(Discontinuous):支持时钟暂停。在空闲、缓冲区溢出风险或流量控制期间,时钟应能安全停止,仅在有数据传输时翻转。
- 动态频率(Dynamic Frequency):支持在运行时改变频率。例如,SDIO 协议要求从 400kHz 启动并逐步提升至 25MHz 或更高。
- 最小脉冲宽度与无毛刺:
- 频率切换必须平滑,严禁时钟毛刺(Glitches)。
- 时钟的高电平和低电平持续时间必须至少为最快允许时钟周期的一半,避免出现过窄的脉冲。
- DDR 信号的 90 度偏移:对于需要双边沿采样的协议,时钟需相对于数据延迟 90 度,以确保数据在时钟跳变时处于稳定状态。
- 超频生成能力:在某些设计中(如作者提到的 eMMC 设计),需要从较慢的系统时钟(如 100MHz)生成较快的设备时钟(如 200MHz DDR)。
5. 技术路线选择:数字逻辑 vs 模拟组件
尽管模拟工程师可能会指出“一切皆模拟”,但本文的核心目标是利用纯数字逻辑来实现时钟分频和生成。这主要是为了在 FPGA 和 ASIC 之间实现设计的可移植性,避免依赖特定的模拟 IP 或组件。
关键要点
- 接口设计是瓶颈:在现代 SoC 设计中,处理内部模块与外部高速外设之间的接口时钟生成是主要的时间消耗点。
- ASIC 与 FPGA 的差异:ASIC 设计必须考虑运行时频率的动态变化和不可修改性,因此时钟生成器必须比 FPGA 设计更具灵活性和鲁棒性。
- 协议复杂性驱动硬件需求:NAND Flash 的启动序列、SDIO 的频率协商、DDR 的相位偏移等协议细节,直接决定了时钟生成器的硬件复杂度。
- 时钟暂停机制至关重要:为了配合 CPU 缓冲区的读写速度,时钟生成器必须支持精确的暂停和恢复,以防止数据溢出或丢失。
- DDR 时序要求严格:支持 DDR 协议不仅要求时钟频率翻倍,还要求时钟与数据之间有严格的 90 度相位关系,以保障建立和保持时间。
- 纯数字实现的必要性:为了跨平台(FPGA/ASIC)复用设计并降低对模拟 IP 的依赖,使用数字逻辑实现动态分频、无毛刺切换和相位偏移是更优的工程选择。
意义与影响
这篇文章揭示了高速数字接口设计中一个常被忽视但至关重要的细节:时钟生成不仅仅是简单的分频,而是一个涉及时序控制、流量管理和协议合规性的复杂系统工程。
- 设计复用性的关键:通过提出一种基于纯数字逻辑的通用时钟生成方案,作者为解决 ASIC 和 FPGA 之间设计移植难题提供了思路。这降低了硬件 IP 的耦合度,提高了设计模块的通用性。
- 可靠性提升:强调“无毛刺”切换和严格的脉冲
查看原文 →zipcpu.com
