本帖最后由 xiepeng00100_744317985 于 2022-11-15 10:18 编辑

        这个高精度RC振荡器电路作为MCU芯片的主系统时钟,电路参数要求:
        1. 输出24MHz 时钟;
        2. 在电源电压2~3.6V,温度-40~85度范围内,频率偏差不超过正负1%;
        3. 功耗不超过300uA。
        我的电路具体如下所示
         osc.png       
        电路原理如下:
        电路结构为松弛振荡器结构,两路比较器交替控制电容充放电。
        初始值设计为q=1, qb=0 ; 当振荡器电路使能,开始对图中右边电容C充电,
        当充电到比较器阈值电压Vref时, 图右边比较器输出翻转,outr 输出由0跳变为1,
        经过RS锁存器,q=0,qb=1, 图中右边电容C快速放电,同时左边电容开始充电;
        当左边电容电压充电到比较器阈值电压Vref时,图左边比较器输出翻转,outs输出
        由0跳变为1,经过RS锁存器,q=1, qb=0 ,图中左边电容C快速放电,同时右边
        电容又开始充电,如此交替。两路的比较器相同,RC时间常数相同,因此振荡器
        输出的占空比为50% 。
        振荡频率推导:
        设电路中的电流源为Is , 那么根据电路中的PMOS镜像比,      
        电阻支路的电流为 8*Is ; 对电容充电的支路电流为 2*Is ;
        比较器的参考阈值电压为 : Vref= 8*Is*R
        根据公式CV=IT, 可以计算电容充电到比较器翻转的阈值电压时间:
         C*8*Is*R = 2*Is*T  --->  Trc = 4RC
         因此振荡器的周期Tosc = 2Trc + 2Td_com = 8RC + 2Td_com ,
         其中Td_com 为比较器的延时时间。
         振荡频率 Fosc = 1/Tosc
         设计比较器的延时时间为2ns, 那么2Td_com=4ns
         设计电容为0.8pF, 电容值太大,占芯片面积,太小的话对寄生电容敏感。
         设计电阻为5.885 kohm, 那么振荡器周期为 :
          Tosc = 8 * 5.885 * 0.8 + 4 = 41.66 ns  (24MHz)
         振荡器频率随电源电压和温度变化的影响因素主要有以下两点:
        1. 电阻值随温度变化,影响振荡器频率。
        2. 比较器的延时随温度和电压的变化,影响振荡器频率。
        因此电路中的电阻采用正温度系数和负温度系数的两种类型电阻组合,起到补偿温度补偿的作用。
        难点在于比较器的延时随温度或电压的变化是非线性的,所以要尽可能减少比较器延时在整个
        振荡器周期中的比例,比较器为常见的7管差分结构,它的延时是与电流成正比的,与比较器的
        负载电容成反比,通过优化参数,当比较器电流为100uA 时,比较器延时约为2ns, 在整个电源
       电压和温度范围内,延时的变化范围为正负0.2ns , 造成的频率精度偏差为正负0.5% 。
         通过上面的措施是可以满足振荡器频率偏差正负1%的规格要求。
         为了减少比较器的延时时间,功耗主要消耗在比较器上,两个比较器功耗~200uA, 电流源
         电流Is 设计为2uA, 电阻参考电压支路16uA , 电容充电支路4uA 。总功耗小于300uA。