XTAL1和XTAL2指的是8051系单片机上常见的用于接“晶振”(晶体谐振器-Crystal Resonator”)的两个引脚。从原理上来说,这两个引脚和MCU内部一个反相器相连接。这个反相器与外部的“晶振”组成一个构成一个皮尔斯振荡器(Pierce oscillator)。因为这个振荡器集成在器件内部的组件实在是不能更简单啦,就一个反相器和一个电阻,非常合适于各种数字IC的设计制造流程。 深入地分析这个皮尔斯振荡器的工作原理时,不妨把它表述成以下理想的电路形式:
模电知识告诉我们,当期望得到一个输出信号频率为的振荡电路时,这个电路在必须满足两个条件:
的环路相移。
闭环增益为1。
在上面的皮尔斯振荡器的电路原理图中,不难发现反相器U1对任意的频率分量均提供了180°,即的相移量。同时,反相器在输入输出之间可以看作是一个buffer,因此通过对反相器的输出特性进行调教,较容易得到1的loop gain。 到这里有人会问了,相移量只有,上面的两个条件连一个都没达到,这哪能起振呢?问题的关键在于电路中的其它元件上。 首先,对电路中的一颗“晶振”来说,石英晶体本身具有压电效应,对石英晶体进行适当处理后可以得到一种压电谐振器件,这就是常见的石英晶体谐振器(以下简称QCR)。对QCR的物理特性进行分析,可以发现QCR的压电谐振过程可以用以下的理想电路模型近乎完美地表示出来。
右图的电路模型中,L1-C1-R1组成了一个RLC串联谐振电路,再加上一个实际很小的C0,整个QCR电路模型有两个很接近的谐振点。QCR在电路中与反相器并联,充当的是一个选频网络的作用。整个振荡电路在上电时可以看作是反相器的输出端打进去了一个阶跃信号,QCR把阶跃中谐振点频率的信号挑出来,其他没用的踢掉,在环路增益为1的情况下整个电路趋于稳态平衡。 模电的知识告诉我们,在QCR // inverter的组合下,这个皮尔斯振荡器已经具备了一个理想的振荡电路中的两大网络(选频+放大)。貌似振荡器中的R1和C1//C2没有什么卵用啊。且慢,这个R1和C1//C2,正是这个电路中最美妙的地方。 把R1与C1//C2单独抽出来配合反相器的电路组合貌似并不好理解,假如我们换种方式呢?
图中引进R’是为了方便理解反相器中的loop voltage gain 右边的运放电路除了反相结构本身提供的-180°相移外,R-C组合也提供了额外的相位延迟。更加奇妙的是这个电路组合在设计得当的情况下能够根据实际电路中各元件的误差自动调整相移大小与反相结构相互匹配(当然了谐振频率也会有少许改变),进而保证整个loop的相移满足条件1。这个“自动调整”的过程推导起来很占篇幅,在这里略过不表。 在上面的图中,还有一个很巧妙的地方,即R1是并联在反相器的输入输出端的。这个小小的电阻和反相器构成了一个反馈通路,进而使得人们能将各种模拟电路的分析设计方法用在这样一个逻辑门电路上,比如通过反馈的方法提高反相器的线性度。在这里将现实电路中反相器的非理想特性引入设计考虑的同时,却又能使电路图保持简洁易懂。 实际的MCU振荡电路是“Isolated” Pierce-Gate Oscillator,要考虑的因素比这个理论模型复杂得多,但根本原理都是一样的。振荡电路输出的波形,通过下一级的时钟发生电路(Clock Generator)进行整形调整后,得到具有稳定形状的矩形信号并输出至时钟树,作用于整个MCU的同步逻辑。