实时时钟芯片是目前运用最广泛的消费类电子产品之一,需为系统提供精确的时间基准,当前实时时钟采用精度较高的晶体振荡器作为时钟源。但是由于晶体的频率会随温度的变化而改变,且晶体在常温下由于封装等原因其频率也会产生一个固定的频率偏差,导致了实时时钟计时精度的降低。
在常温下(25℃),实时时钟精度约为±20 ppm。本文针对晶体振荡器的温漂特性,参考微处理器温度补偿晶体振荡器原理,根据实时时钟的电路特点,设计了一种基于分频链的频率校准算法。该算法可通过一组数字校准寄存器校准分频后的时钟频率,在不改变晶体振荡器的情况下可调节分频后的时钟频率,校准精度达±0.25 ppm,校准范围±32 ppm,间接对时钟进行校准。当实时时钟和温度传感器及MCU一起工作时,可根据温度和出厂前的设置查表进行自校准。
本文在分析校准算法的基础上,采用自顶向下(TOP-DOWN)的设计方法,实现了实时时钟的设计和验证。文中在分析多时钟域同步的基础上,针对I2C接口和内部计时两个时钟域,设计了既可满足EDA工具要求,又不增加功耗的多时钟域数据传递方案,在综合和自动布局布线后通过多种验证方法证明其功能和时序均能满足要求。该方案适合频率相差较大的时钟域的同步,避免了采用时钟切换方法导致的功耗增加,对其他芯片的设计具有参考价值。
本文采用Verilog HDL实现实时时钟的前端设计,使用Synopsys公司的EDA工具进行后端设计和验证。通过对全芯片的后仿真和功耗分析显示该设计方法满足了实时时钟的高精度和低功耗要求。