一、Pierce振荡器电路

Inv:内部反相器,作用等同于放大器;

Q:石英晶体或陶瓷晶振;

RF:内部反馈电阻(使反相器工作在线性区);

RExt:外部限流电阻(防止石英晶体被过分驱动);

CL1、CL2:外部负载电容;

Cs:杂散电容;

二、负载电容CL

  CL值取决于外部电容CL1和CL2,及电路板上的杂散电容Cs。晶振制造商会给出CL值,为了保证振荡频率精度,需要使标称CL与实际CL尽可能接近。CL表达式如下:

    ——式1

  Cs一般是3~5pF

三、振荡器的增益裕量

  增益裕量是最重要的参数,它决定振荡器是否能够正常起振,其表达式为:

    ——式2

  其中:

  a.gm是反相器的跨导,其单位是mA/V(高频)或者是μA/V(低频)——这个需要从微控制器的Datasheet中查找

  b.gmcrit的值取决于晶振本身的参数——要通过晶振给出的数据计算得出

  假定CL1=CL2,并假定晶振的CL与标称一致,则gmcrit表达式如下:

                ——式3

  ESR指晶振的等效串联电阻。

  为保证晶振可靠起振,增益裕量的最小值一般设为5

四、驱动等级测量

  驱动等级可以由下式计算得出:

                  ——式4

  IQRMS是交流电流的均方根有效值。

  这个电流可以使用小电容(<1pF)分布的示波器探头在放大器的输入端,即OSC_IN引脚,测量电压变化得到。相对于流经CL1的电流,放大器的输入电流可以忽略不计(输入电阻无穷大);因此可以假定经过晶振的电流等于流经CL1的电流。这样在这点上,电压的均方根有效值与电流的均方根有如下关系:

                ——式5

  其中:

  a.F是晶体的频率

  b.,这里Vpp是在CL1端测量电压的峰-峰值

  c.  (Cprobe是探头的电容量)

  这样,驱动级别可以由下式得出:

              ——式6

  DL数值超过标称值时,需要添加RExt。同时,DL也不可以远小于标称值。

五、外部电阻RExt计算

  这个电阻的作用是限制晶振的驱动级别,并且它与CL2组成一个低通滤波器,以确保振荡器的起振点在基频上,而不是在其他高次谐波频率上(避免3次、5次、7次谐波频率)。如果晶振的功耗超过晶振制造商的给定值,外部RExt是必须的,避免晶振被过分驱动。如果晶振的功耗小于标称值,不需使用外部电阻。

  对RExt值的预估可以通过考虑由RExt和CL2的电压分压RExt/CL2实现(注意到RExt和CL2构成一个分压/滤波器,考虑通带宽度不小于振荡器频率),则由RExt的值等于CL2的电抗:

              ——式7

  优化REXt的方法:首先确定CL1、CL2的值,然后用电位器代替RExt,RExt值可设为CL2的电抗值。然后调整电位器的值直到它满足驱动级别的需要,此时电位器的值就是RExt的值

注意:在计算完RExt的值后,仍然需要重新计算gainmargin的值,以确保RExt对起振没有影响。

              ——式8

六、启动时间

  启动时间指振荡器启动并达到稳定所需的时间。这个时间受外部电容CL1、CL2影响,同时它随着晶振的频率的增加而减少,石英晶体的起振时间要比陶瓷晶振的时间要长得多。

Pierce振荡器设计的更多相关文章

  1. [硬件项目] 1、汽车倒车雷达设计——基于API8108A芯片简易智能语音模块的设计与实现

    前言 汽车倒车防碰撞系统是一种辅助汽车泊车装置.低配的由超声波收发电路.回波放大电路.语音提示电路.数码显示.报警及温度补偿电路组成,高配的有时会带有后视视频系统.[1]      一.工作原理 如下 ...

  2. 全数字锁相环(DPLL)的原理简介以及verilog设计代码

    随着数字电路技术的发展,数字锁相环在调制解调.频率合成.FM 立体声解码.彩色副载波同步.图象处理等各个方面得到了广泛的应用.数字锁相环不仅吸收了数字电路可靠性高.体积小.价格低等优点,还解决了模拟锁 ...

  3. 关于AD9516芯片的硬件设计和FPGA程序编写心得

    最近在做一个项目,其中有涉及时钟芯片AD9516的硬件设计和软件编程,有些使用心得,供大家参考讨论. AD9516,这是一个由ADI公司设计的14路输出时钟发生器,具有亚皮秒级抖动性能,还配有片内集成 ...

  4. PCB设计流程

    一般PCB基本设计流程如下:前期准备->PCB结构设计->PCB布局->布线->布线优化和丝印->网络和DRC检查和结构检查->制版. 第一.前期准备. 这包括准备 ...

  5. 2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微处理 计算机

    现代计算机的各个部件到底是如何通过逻辑电路构成的呢   半加器 我们说过了门电路 看似简单的三种门电路却是组成了整个逻辑电路的根基 真值表--其实就是根据输入输出状态枚举罗列出来的所有可能 比如有一台 ...

  6. 【设计经验】4、SERDES关键技术总结

    一.SERDES介绍 随着大数据的兴起以及信息技术的快速发展,数据传输对总线带宽的要求越来越高,并行传输技术的发展受到了时序同步困难.信号偏移严重,抗干扰能力弱以及设计复杂度高等一系列问题的阻碍.与并 ...

  7. CC1150 针对低功耗无线应用设计的高度集成多通道射频发送器

    Low Power Sub-1 GHz RF Transmitter 单片低成本低能耗 RF 发送芯片 应用 极低功率 UHF 无线发送器 315/433/868 和 915MHz ISM/SRD 波 ...

  8. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

  9. 文献翻译|Design of True Random Number Generator Based on Multi-stage Feedback Ring Oscillator(基于多级反馈环形振荡器的真随机数发生器设计)

    基于多级反馈环形振荡器的真随机数发生器设计 摘要 真随机数生成器(trng)在加密系统中起着重要的作用.本文提出了一种在现场可编程门阵列(FPGA)上生成真随机数的新方法,该方法以 多级反馈环形振荡器 ...

随机推荐

  1. pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory

    delete redundant path

  2. Shell数值比较

    Shell数值比较 比较 描述 n1 -eq n2 检查n1是否与n2相等 n1 -ge n2 检查n1是否大于或等于n2 n1 -gt n2 检查n1是否大于n2 n1 -le n2 检查n1是否小 ...

  3. 如何让线程A等待B执行结束后执行?

    1. 使用条件变量 判断是否任务B已经做完,然后再执行任务A. 测试代码可看:https://blog.csdn.net/guochao6531/article/details/78075882 2. ...

  4. [LOJ] 分块九题 5

    区间开平方,区间查询. lazy标记改为区间是否全是1或者0,这样的区间是没有更新价值的. //Stay foolish,stay hungry,stay young,stay simple #inc ...

  5. 查询SYS_ORG_TB树的层级

    WITH N(SYS_ORG_ID,SYS_ORG_NAME,LEVEL) AS( AS LEVEL FROM SYS_ORG_TB WHERE SYS_ORG_UPID IS NULL UNION ...

  6. Python中的函数(2)

    一.实参和形参        def greet_user(username): """显示简单的问候语,且显示用户名""" print(& ...

  7. p3386 二分图匹配模板

    https://www.luogu.org/problemnew/show/P3386 可以只做一边的匹配 #include <bits/stdc++.h> using namespace ...

  8. 牛客网暑期ACM多校训练营(第四场) J 贪心

    链接: https://www.nowcoder.com/acm/contest/143/J #include<bits/stdc++.h> using namespace std; lo ...

  9. Tomcat启动慢(运行shutdown.sh的时候报错)

    Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: / ...

  10. luogu3960 列队

    参考这篇 #include <iostream> #include <cstdio> #include <vector> using namespace std; ...