振荡器 Oscillator 是电子电路很重要的一环,有了振荡器后,模拟电路才开始迈向通讯领域,数字电路则开始有「时间序」的概念,也才有后来状态机 state machine 的应用,所以振荡器的起振非常重要,没振起来一切免谈,有振起来,频率也要准才行,现今最常用的是晶体振荡器 XTAL 。
今天有人问我上电后的石英晶体需要多久时间才会稳定振荡?这我倒没真的测试过,既然有人问了我们就来测看看吧!
晶体振荡—线路
下图是一般常见的考毕兹晶体振荡线路(Colpitts Oscillator),虽然说振荡线路百百种,但利用石英晶体 Crystal(XTAL)作为振荡组件的方式仍然是主流,因为石英晶体的 Q 值非常高,频率可以很准。
所谓 Q 值是组件储能与耗能的比例,有些人或许会有点陌生,但基本上它只是一个用来叙述储能组件或系统的名词。
Q=储能/耗能
以敲钟来举例,你敲它一下,钟声会余音缭绕,这就是钟罩外层的振荡所致,声音缭绕越久,表示 Q 值越高,如果你在钟罩内铺上棉絮等布料,声音会很快被布料吸走,甚至只剩下敲钟当下的打击声,这样的情况就表示 Q 值很低;如果有个钟,它能让人只敲一下就响到无穷无尽,那就表示它零耗能,也就是 Q 值无限大,当然这样的东西并不存在。
石英晶体的高 Q 值,只要配上两个电容就能形成一个共振腔,但共振腔内的振荡讯号终究会停止,若再配上一个放大器把输出的讯号放大再加回到原来的输入端,就形成了可永久振荡的振荡器。
以上只是简略叙述振荡器怎么回事,真的要写起来会无穷尽,我今天只是要来看看多久会起振而已。
实体电路
身为实作派的助教,除了画画线路图跑模拟之外,当然也要拿实际的线路真枪实弹地电路板跑看看才行。下图是某个半残的电路板,虽然功能上有点问题,但它还能开机、LED 也会闪烁,这表示系统有跑起来,晶体振荡器有正常工作。
下图中的蓝色线,就是我的测量点,XTAL 石英晶体的其中一根脚,我将它直接接到示波器的探棒;但我必须说,这样的接法是不及格的,因为当我们直接把探棒接在 XTAL 的组件上,它的寄生电容会影响系统的振荡频率,甚至有可能不起振。
正确的做法应该要使用主动探棒,但主动探棒很贵,除非需要经常用到,不然买起来还真心疼。如果你对芯片的 SDK 很熟,可以从芯片内部将频率 clock 的讯号从 GPIO 绕出来,这样间接地测量才不会影响到振荡频率。
我自己会直接用探棒接触,是不得已的,一来这块板子的 Firmware 不是我写的,二来这颗芯片并没有 GPIO 可以让你把频率讯号绕出来;还好探棒直接接触后,XTAL 仍然有起振,示波器还是能观察到,但频率绝对有偏差,只是频偏目前不是我关心的重点。
晶体振荡器电路板
附带一提,量个振荡讯号,不是只要拉一条蓝色线接上 XTAL(虽然这样接不及格)就好吗?上图中其它的线是怎么回事?原来这颗芯片只是整块电路板的一个子电路,我不想让它受到 main chip 的指令干扰,所以我用外部的 3.3 V 直接供电给子电路,另外这颗芯片有 Reset# pin,要将它 pull high 才能让芯片开始工作,否则 XTAL 不会起振。
频偏的问题
刚刚提到,我这种直接接触的测量方式会导致频偏,那么频偏会造成什么问题吗?系统依旧可以开机,程序也可以跑,到底哪里会有问题?
我举个例子好了,模拟电视 NTSC 的色彩讯号频率 spec 是 3.579545 MHz,电视机的振荡频率理论上要跟它一样,但 spec 规范的容忍度规范是多少呢?只有+/-10 Hz,这大约是 2.8 ppm,也就是说你的色彩讯号可能因为你用示波器触碰石英晶体的关系,造成多 2.8 ppm 的频偏,而这就足以让你的电视机从彩色变黑白,而且还附带很多噪声,因为颜色讯号已经变成画面的一部份了。
不过还好,我多年前自己试验的结果,电视机通常会自己追彩色讯号的频率,除非你偏得太离谱,电视机才会秀黑白画面给你看。如果 3.58 MHz的讯号都能让机器误动作了,那现在流行的 Wifi 频率在 2.4 GHz/5 GHz,当然对频率又更敏感了。
也许你会问频偏可以从示波器观察到吗?我的答案是不行。如果你观察过示波器的频率测量,你会发现一般示波器的频率测量位数只到小数点下 2 位,少数机型会到小数点下 4 位,但它会不断跳动,我不认为你有机会能稳定观察到这 10 Hz 的变化,除非你用的是高档货。
石英晶体起振
回到我原本的问题上,直接上电观察何时起振,如下图 10 ms 以内就起振稳定了,当然每个电路起振的时间不同,我这里只是要表达,它不会让你等超过 1 sec。
振荡器是由小到大渐渐起振的,它不会马上有弦波,而是需要时间将能量累积,才能振出稳定的讯号。这很像设计不良的扩音系统,当它发生回授时,那尖锐的噪音并非马上出现,而是由小到大渐进出现,虽然它出现的时间只有短短几秒钟,仔细观察还是能发现麦克风的噪音是由小渐进到大。
事实上,振荡器就是利用回授系统将噪声中的特定频率不断地放大,而晶体振荡的频率是由石英晶体的构造决定的,就好像钟声的高低音,是由它的形状决定的一样,而噪声在振荡器里的角色,就如同敲钟的槌子一般,而我们的电路最不缺噪声,因为有温度就有噪声,甚至外来的噪声也不少,我们就好好利用噪声吧。
晶体振荡的起振波形
我展开前段波形的其中一部分,来看看频率是多少,由于振福太小没办法用自动量测,我只好以 cursor 大概的量一下,确实是 16 MHz。
晶体振荡波形放大
在振荡器起振的这段时间,为避免 Chip 误动作,最好能在这段时间让 chip 处于 Reset 状态,减少对系统的影响。系统上每个 chip 的 reset 时间长短也都需要与软件的 timeout 搭配,如果设计得太刚好,可能会在有些 API 呼叫时 fail,而且还不是每次都 fail,这里就是软硬件工程师要合作的地方。
-
振荡器
+关注
关注
28文章
3812浏览量
138860 -
晶体
+关注
关注
2文章
1339浏览量
35365 -
电子电路
+关注
关注
78文章
1190浏览量
66792
发布评论请先 登录
相关推荐
评论