3、时钟源选择:晶振、PLL、外部时钟源,时钟抖动与漂移对同步的影响
时钟,说白了就是多摄像头系统的「心跳」。
我做过不少多相机项目,最头疼的问题往往不是图像处理算法,而是几个摄像头之间的「心跳」能不能对齐。你想想看,如果每个摄像头用的时钟都不一样,那拍出来的画面怎么可能同步?
这一节,我们就来聊聊时钟源怎么选,以及时钟抖动和漂移到底会带来什么麻烦。
3.1 三种常见的时钟源
做硬件设计,时钟源无非就三种:晶振、PLL、外部时钟源。每种都有它的脾气。
3.1.1 晶振(Crystal Oscillator)
晶振是最基础的时钟源。它靠石英晶体的压电效应产生稳定的频率。
- 优点:频率稳定度高,相位噪声低。我个人习惯在要求不高的场合用普通晶振,但在多摄像头同步场景下,我建议用温补晶振(TCXO)甚至恒温晶振(OCXO)。
- 缺点:频率固定,不能调。而且晶振起振需要时间,大概几毫秒到几十毫秒不等。
- 适用场景:对同步精度要求中等(微秒级)的系统。
3.1.2 PLL(锁相环)
PLL可以从一个参考时钟倍频出更高的频率。很多摄像头模组内部都集成了PLL。
- 优点:灵活,可以从一个低频参考源得到高频时钟。
- 缺点:PLL会引入额外的抖动。尤其是当倍频倍数很大时,抖动会明显增加。
- 适用场景:需要高频时钟,但对抖动容忍度较高的场景。
3.1.3 外部时钟源
外部时钟源,就是用一个独立的时钟发生器给所有摄像头统一送时钟。这是多摄像头同步最推荐的方式。
- 优点:所有摄像头共享同一个时钟源,理论上可以实现纳秒级的同步精度。
- 缺点:需要额外的硬件,而且时钟信号在PCB上走线时要小心,避免信号完整性问题。
- 适用场景:对同步精度要求极高的系统(比如高速视觉测量、3D扫描)。
我个人最偏爱外部时钟源方案。虽然成本高一点,但省心。你想想看,所有摄像头都听同一个「指挥官」的指令,怎么可能不同步?
3.2 时钟抖动与漂移
这两个概念,很多工程师容易搞混。我简单解释一下。
3.2.1 时钟抖动(Jitter)
抖动,是时钟边沿在时间轴上的短期随机偏移。说白了,就是时钟的「心跳」不太规律,有时候快一点,有时候慢一点。
- 周期抖动:相邻两个时钟周期的差异。
- 累积抖动:多个周期后累积的偏差。
抖动对同步的影响:如果两个摄像头用的时钟抖动特性不同,那么它们的帧起始时间就会逐渐错开。我见过一个项目,两个摄像头刚开始同步得很好,但运行几分钟后,画面就开始错位了。查了半天,发现是其中一个摄像头的PLL抖动太大。
3.2.2 时钟漂移(Drift)
漂移,是时钟频率随时间的长期缓慢变化。通常由温度变化、老化等因素引起。
- 温度漂移:温度每变化1℃,晶振频率可能变化几个ppm(百万分之一)。
- 老化漂移:晶振使用几年后,频率会逐渐偏移。
漂移对同步的影响:两个摄像头即使初始同步了,但如果它们的时钟漂移速率不同,那么经过一段时间后,同步就会失效。这就是为什么长时间运行的同步系统,必须定期做时钟校准。
3.3 如何选择时钟源?
我一般按照以下思路来选:
- 先看同步精度要求:如果要求纳秒级同步,直接上外部时钟源。如果微秒级可以接受,晶振+PLL方案也能用。
- 再看运行时长:如果系统只运行几分钟,抖动和漂移的影响不大。但如果要运行几小时甚至几天,必须考虑漂移补偿。
- 最后看成本:外部时钟源方案成本最高,但效果最好。晶振方案性价比高,但需要做校准。
下面这个表格是我自己整理的,供你参考:
| 时钟源类型 | 典型抖动 | 典型漂移 | 同步精度 | 成本 |
|---|---|---|---|---|
| 普通晶振 | ~10 ps | ±50 ppm | 微秒级 | 低 |
| TCXO | ~5 ps | ±2 ppm | 亚微秒级 | 中 |
| OCXO | ~1 ps | ±0.1 ppm | 纳秒级 | 高 |
| 外部时钟源 | 取决于发生器 | 取决于发生器 | 纳秒级 | 最高 |
3.4 避坑指南
最后,分享几个我踩过的坑:
- 我曾经在一个项目里用了PLL倍频,结果发现倍频后的时钟抖动太大,导致摄像头之间的帧同步误差达到了几十微秒。后来我改用外部时钟源直接驱动,问题就解决了。
- 我曾经忽略了晶振的起振时间,导致摄像头启动后前几帧的时序完全乱掉。后来我在软件里加了延时等待,等晶振稳定后再开始采集。
- 我曾经在PCB布局时,把时钟信号走线走得太长,结果引入了额外的抖动。后来我缩短了走线,并加了终端匹配电阻,信号质量明显改善。
嗯,时钟源的选择就聊到这里。下一节,我们会讲硬件触发信号的设计,到时候你会看到,时钟源选好了,触发信号才能精准地传递下去。