我们经常会看到一些小数点后带有多位数字的晶振频率,例如19.6608MHz、3.072MHz、20.48MHz、33.1776MHz、25.000625MHz。大部分频率是根据系统需求反向推导得到的结果。
晶振只是整个时钟系统最基础的参考时钟,后面通常还会连接PLL倍频器、分频器,以及多个独立的外设时钟域。时钟设计的关键,是让各级时钟在倍频、分频以及通信协议之间尽量保持整数关系。这样既能方便时钟转换,也能减少频率误差和时序偏差。
1、整数分频:分频不是整数,就会产生频率误差,最终导致通信错误。例如1.8432MHz、3.072MHz、19.6608MHz等频率都是为了满足整数分频关系而设计出来的。为满足整除关系,通常会反向选择时钟频率。
波特率 = 系统时钟频率 /分频系数
例:115200bps = 1.8432 MHz/16
2、二进制分频:很多时钟设计会围绕2的幂展开,其优势是分频简单、误差小、也更容易实现。例如20.48MHz可以表示为2048×10kHz,类似的频率还有10.24MHz、5.12MHz等。这些频率看起来不像整数频点,但在系统内部非常规整,因为它们可以通过连续二分频构建完整的时钟体系。这类频率通常用于MCU、DSP或工业控制系统中。
3、PLL倍频和分频:现代SoC和高速通信芯片几乎都会使用PLL锁相环来生成系统时钟。晶振本身只提供一个比较低、比较稳定的基础频率,例如24MHz、25MHz。但芯片内部不同模块需要的频率往往差别很大,有的甚至高达几百MHz或几GHz。PLL可以把基础时钟进行倍频、分频,生成系统真正需要的各种频率。25.000625MHz、33.1776MHz、74.25MHz等的频率是PLL根据通信协议、采样率或者网络接口要求合成出来的。
1、PLL:理论上PLL可以通过倍频与分数分频生成任意目标频率,但频率合成会影响输出时钟的相位噪声与抖动性能。在高速接口应用中,时钟抖动会直接降低信号质量,例如增加误码率、降低信噪比或影响采样精度。
2、电磁兼容性:时钟信号本身会产生周期性电磁辐射,其频率及谐波可能与系统中的其他信号源发生耦合或干扰,包括开关电源频率、音频采样频率以及射频工作频段等。
3、历史设计:在许多通信协议中,时钟体系在早期设计阶段已经固定,包括参考频率、分频结构以及外设时序关系。
常用的频率有如下几个特点: