环形振荡器与片上时钟:奇数个反相器为什么会自己振荡
更新时间:2026-09-24。本文是「集成电路大类 · 芯片设计」入门层(beginner) 数字逻辑基础的一篇正文。读到这里,前面的时序电路都默认存在一个现成的
clk,可这个时钟最初从哪来?这一篇看最简单的全数字片上时钟源——环形振荡器(Ring Oscillator,RO):它只用反相器,却同时是理解门延迟、PVT 和很多片上传感器的钥匙。
本文要回答的问题
- 反相器首尾接成环为什么会振荡?为什么必须是奇数个?
- 振荡频率由什么决定?为什么算出来是
f = 1/(2N·tpd)? - 环形振荡器为什么不准、抖动大?工艺、电压、温度(PVT)怎么影响它?
- 这么不精确的时钟有什么用?怎么用它测温度、做随机数和芯片指纹?
- 晶振、RC 振荡、环形振荡、PLL 各适合干什么?
一、时钟不会凭空出现:从反相器的延迟说起
先回顾一个最朴素的事实:反相器的输出不是跟着输入瞬间翻转的。输入跳变后,输出要等一小段时间才响应,这段时间叫传播延迟 tpd(propagation delay),典型工艺下从几皮秒到几十皮秒不等。它来自晶体管对负载电容充放电需要时间,和 逻辑门电气特性 里讲的驱动电阻、负载电容直接相关。
在普通组合逻辑里,tpd 是个需要被时序约束「嫌弃」的东西——它决定最高工作频率。但环形振荡器反过来利用它:延迟不再是缺陷,而变成了计时的刻度。既然一个门能把边沿「推迟」tpd,那么把若干个门串起来,就能把推迟时间累加;再让信号首尾循环,就得到一个自己往复、永不静止的电路。这就是片上时钟最省钱的来源,不需要晶振、电感、电容,只要标准单元库里人人都有的反相器。
先把要造的东西说清楚。所谓时钟,就是一个按固定节奏在 0 和 1 之间来回跳变的方波,数字电路里所有触发器都在它的上升沿或下降沿统一动作,时钟与复位 里见过它的地位。造出它要回答两个问题:每次翻转隔多久(决定频率),以及怎么让翻转自动持续(总不能靠人反复拨开关)。环形振荡器给出了最省的答案——隔多久由门延迟说了算,能否持续由奇数级反相环的拓扑矛盾来保证。
二、奇数级反相环:任何稳态都自相矛盾
把 N 个反相器串成一条链,再把最后一级的输出接回第一级的输入。关键问题来了:N 必须是奇数还是偶数?
- 若 N 为偶数,信号经过偶数次反相,整体相当于一条同相链路:输入是 0,绕一圈回来还是 0;输入是 1,回来还是 1。环路存在自洽的稳定状态,输出会停在某个固定电平,本质上和 锁存器交叉耦合 是同一类双稳态结构,不振荡;
- 若 N 为奇数,整链是反相的。假设某刻输入是 0,绕环一圈回来变成 1——这和最初的假设矛盾;再假设输入是 1,绕一圈又变成 0,同样矛盾。任何一个假设的稳态都会被环路自己否定,电路无法停住,只能让上升沿、下降沿在环里一圈圈传播,形成持续振荡。
这张图把振荡条件画得很直白:信号每穿过一级就被反相一次,图中反馈边把输出送回起点。N 为奇数时,沿这条反馈边回来的电平永远和出发时相反,矛盾无法消除,于是唯一的「解」就是让电平随时间不断变化。换句话说,振荡不是谁外加的激励,而是电路找不到稳态后的被迫行为。
严格说 N 至少为 3。N=1 时反相器输出直接接回自己的输入,它会停在传输特性上「输入等于输出」的模拟偏置点,此时反相器工作在放大区,像一个线性放大器而不是数字振荡器;级数太少,环路总增益也不足以把小扰动撑成满幅方波。工程上实际用的 RO 通常是几十级甚至上百级。
有人会追问:上电瞬间环里若恰好是完美的中间电平怎么办?那只是个不稳定平衡点。任意一级上的热噪声把电平推偏一点点,经过高增益反相器逐级放大,扰动在几圈之内就长成完整的数字电平并开始绕圈。真实芯片里热噪声、电源扰动从不缺席,所以 RO 几乎不存在「起不来」的问题——这和需要外部激励、起振要花毫秒的晶体很不一样。
三、周期 2N·tpd:边沿要绕两圈才复原
知道会振荡,接下来算频率。一个边沿经过每一级反相器都要花一个 tpd。绕完整环一次,它穿过 N 级门、耗时 N·tpd,此时电平被反相了奇数次——一个上升沿变成了下降沿。电平还没有复原,它必须再绕一圈(又穿过 N 级、又耗时 N·tpd),下降沿才变回上升沿,回到出发时的状态。
所以完整周期和频率分别是:
T = 2N · tpd
f = 1 / (2N · tpd)这张图是理解频率公式的关键:它画出了同一边沿在环里的「行程账」。前半圈(0 到 N·tpd)只完成了反相,后半圈(N·tpd 到 2N·tpd)才完成复原,两段缺一不可,这就是系数 2 的来源。设计时想调频率,最直接的旋钮就是级数 N:增加一级,周期就多两个 tpd。比如单级延迟 20ps 时,31 级环的频率约为 1/(2×31×20ps) ≈ 806MHz,101 级环就降到约 248MHz。除了加级数,还可以给每级加大负载电容、或用电流饥饿(current-starved)结构限制充放电电流来调慢每级延迟——后者正是压控振荡器(VCO)的基本手法。
公式里的 tpd 严格说应取上升延迟和下降延迟的平均值。由于 NMOS 和 PMOS 驱动能力天生不对称,若两者延迟不一致,沿环累积下来输出方波的占空比就会偏离 50%,工程上靠加大 PMOS 尺寸补偿、或在输出后加一级整形反相器来解决。另外上面的推导默认每级延迟固定,真实电路里它随电源噪声逐拍起伏,频率公式给出的只是平均值。
四、为什么不准:频率被 PVT 牵着走
公式里 tpd 看起来是个确定值,可惜它在真实芯片上从不恒定,而是随 PVT 剧烈变化:
| 因素 | 怎么影响门延迟 | 对频率的影响 |
|---|---|---|
| Process 工艺 | 管芯间晶体管有快有慢(slow/typical/fast corner),阈值电压分散 | 出厂频率就有 ±几十 % 的离散 |
| Voltage 电压 | 电压高,过驱动大、电容充放电快,tpd 变小 | 电压降低则频率明显下降 |
| Temperature 温度 | 通常升温使载流子迁移率下降、门变慢;低压下可能出现反温度效应 | 频率随温度漂移,方向还可能反转 |
除了这些慢变化,电源噪声还会耦合进每一级,造成周期逐拍的微小起伏,这就是抖动(jitter)——边沿该来的时刻每拍都不太一样。未校准的环形振荡器频率误差可能达到 ±20% 到 ±50%,完全不能直接当 UART 波特率或 USB、以太网的精确时基。它输出的也不是干净正弦波,而是一串边沿不太陡、占空比未必是 50% 的方波。时钟质量通常看三个指标:频率精度(随 PVT 和时间的偏差)、抖动/相位噪声(边沿时刻的短期不稳,对高速 建立保持时序 和 SerDes 尤其致命)、占空比与边沿质量。环形振荡器在这三项上都不算好。
抖动还分两种看法。逐周期抖动比较相邻两个周期的长度差,反映噪声的瞬时大小;累积抖动则随时间发散——RO 是自由运转的振荡器,没有任何反馈把它「拽回」标称频率,误差只积累不收敛,跑得越久时间偏差越大,这正是精确通信必须用能被锁相环锁定的稳定参考的原因。电压影响也可以给个量级感受:常见纳米工艺上,电源电压下降 10%,RO 频率可能下跌 15% 以上,频率对电压近似非线性正相关,动态调压降频(DVFS)时必须按这个灵敏度留时序余量。温度的方向更微妙:常规电压下迁移率下降主导,升温变慢;低压先进工艺上,阈值电压随升温降低带来的电流提升反而占上风,出现越热越快的反温度效应,且各工艺角的反转点不同。所以用 RO 当温度传感器,必须在多个电压、温度点逐颗或分档标定,不能指望一条固定换算曲线。
五、不精确,但极有用
精度差没有挡住环形振荡器,因为它有几个晶振给不了的优点:零外部元件、起振几乎瞬间、面积极小、纯数字可综合、上电即活。这让它在以下位置不可替代:
- 上电默认/备用时钟:晶振起振和 PLL 锁定(lock)都需要时间,这段空窗里芯片不能是死的。典型流程是:上电释放复位,RO 立刻提供数 MHz 到数十 MHz 的时钟,CPU 从启动 ROM 取指、配置电源和 IO,再使能外部晶振、等待稳定,启动 PLL 并等锁定,最后由切换器在两边沿对齐的窗口换到高精度时钟,整个过程逻辑一刻不停;低功耗待机时也常用 RO 或 RC 时钟兜底,见 无毛刺时钟切换;
- PLL 内 VCO 的思想原型:压控振荡器本质就是「每级延迟受电压控制的环形振荡」,控制电压升高、延迟变小、频率升高。理解了 RO,就理解了 VCO,进阶可看 全数字 PLL;
- PVT/温度/老化传感器:既然频率正比于门速度,那么在一个固定时间窗里数 RO 的振荡次数,就能反推当前工艺快慢、电压高低、温度几何。实现上用参考时钟开一个已知宽度的闸门去数 RO 脉冲:闸门开 1ms,慢工艺时可能数到 50 万个周期,快工艺时数到 80 万个,查表即得状态。在芯片四角和中心布一组 RO 阵列,还能看出片上参数梯度,用于工艺监测(PVT monitor)、温度传感器、NBTI 老化监测和 DVFS 调度——这是「缺点」变「卖点」最典型的例子;
- 真随机数(TRNG)熵源:抖动主要来自晶体管热噪声,相邻两次振荡的细微时间差不可预测、也不可复现。常见做法是用一个高频时钟去采样慢速 RO 的输出,采到 0 还是 1 取决于飞秒级的噪声差,再经异或压缩和在线随机性自检,得到硬件随机数,配合健康检查和后处理见 安全飞地与密钥;
- 物理不可克隆函数(PUF):即便版图完全相同,不同管芯上的反相器也因制造失配而频率略有差异。经典 RO PUF 选两个布局对称的环,用计数器同时计数固定时间再比较谁多,每对贡献 1 比特,几十上百对的胜负串起来就是芯片天生的唯一指纹,可用于设备认证和密钥派生;难点是让响应在温度、电压变化后仍稳定不翻转。
六、时钟来源怎么选
把常见时钟源摆在一起,差别一目了然:
| 来源 | 精度 | 代价 | 典型用途 |
|---|---|---|---|
| 环形振荡器 | 差(±数十 %) | 零外部元件、起振快、面积小 | 启动时钟、片上监测、TRNG/PUF |
| RC 振荡器(片内/片外) | 中低(±1% 到数 %) | 低功耗,常需出厂校准 | RTC 32kHz、看门狗、低功耗待机 |
| 晶体/陶瓷谐振器 | 高(ppm 级) | 外部元件、起振慢、占板面积 | UART/USB/以太网、系统主时基 |
| PLL | 精度继承参考源、可倍频 | 结构复杂、有锁定时间 | 高频内核时钟、多频点、SerDes |
真实系统几乎从不押注单一来源,而是「高精度晶振做参考 → PLL 倍频出高速主时钟 → RO/RC 负责启动和低功耗兜底」的组合,再配合时钟切换器和 分频与时钟使能 在各来源、各频点之间安全换挡。选型的本质,是在精度、成本、启动速度这个不可能三角里取舍:板级系统宁可多焊一颗便宜晶振;裸芯片要在无外部元件的待机域计时、或在封测前先跑自检,就只能靠片上 RC 和 RO。车规、工业芯片还会加时钟监控电路,一旦外部晶振停振就自动切回 RO 并报错——理解了环形振荡器,就理解了这条时钟树最底端那块「随时能亮」的备胎为什么删不掉。
这一篇在知识体系里的位置
本篇属于芯片设计入门层的数字逻辑基础,回答「时钟最初从哪来」。前置知识是 CMOS 反相器与门延迟 和 逻辑门电气特性;配套阅读 时钟与复位 与 分频与时钟使能,可以看清时钟树如何产生和分配;继续深化则进入 无毛刺时钟切换、全数字 PLL、建立保持与抖动,以及 RO 抖动与失配的安全应用 安全飞地与密钥。
总结
环形振荡器与片上时钟就是把奇数个反相器首尾相连:偶数级整体同相会停在固定电平(等价锁存),奇数级整体反相让任何稳态都自相矛盾,边沿只能在环里反复传播,绕两圈才复原,故周期 T=2N·tpd、频率 f=1/(2N·tpd);这个频率直接由门延迟决定,因而对工艺、电压、温度和电源噪声极其敏感,未校准时误差可达数十个百分点且带抖动,不能当精确时基,但它零外部元件、起振快、纯数字,正好做上电和 PLL 锁定前的默认时钟、VCO 的思想原型、「以频率测延迟」的 PVT/温度/老化传感器,其不可预测的抖动是 TRNG 熵源、制造失配可做 PUF;实际系统按「晶振给参考、PLL 倍频出主时钟、RO/RC 兜底启动与低功耗」组合,并用无毛刺切换在时钟源间安全换挡。