文獻標識碼: A
文章編號: 0258-7998(2014)12-0066-03
0 引言
高精度實時時鐘是現(xiàn)代智能電表的關(guān)鍵技術(shù),我國智能電表對時鐘精度的要求為日計時誤差必須小于等于0.5 s/天,這要求計時電路的時鐘偏差控制在5.7 ppm以內(nèi)。目前國內(nèi)智能電表實時時鐘的產(chǎn)生主要依靠高精度RTC芯片,此類RTC芯片目前90%以上依賴從國外進口,造成我國的電表生產(chǎn)嚴重依賴國外進口芯片。
近年來國內(nèi)集成電路行業(yè)開始研究集成高精度RTC模塊的微控制器(Micro Controller Unit,MCU)芯片。采用這種MCU芯片的電表方案,不再需要單獨的RTC芯片,可以逐步擺脫對國外RTC芯片的進口依賴,也可以使表方案設計簡單,成本降低。這類MCU設計面臨的問題是,如何能對集成在MCU內(nèi)的RTC模塊進行全溫區(qū)調(diào)教,使其計時精度滿足國網(wǎng)對電表的精度要求。
本文首先介紹了晶體的溫度頻率誤差特性,介紹了目前較常用的RTC溫度補償?shù)姆椒ǎ岢隽嘶?a class="innerlink" href="http://www.j7575.cn/tags/累積誤差" title="累積誤差" target="_blank">累積誤差控制的溫度補償算法,該算法能將累積計時誤差控制在15.3 ppm以內(nèi),計時時間越長,計時精度越高。并在集成有RTC模塊的MCU內(nèi)完成了補償電路的設計,開發(fā)了自動補償電路,該MCU能很好地滿足國網(wǎng)電表的計時精度要求。
1 補償原理及算法
1.1 補償原理及傳統(tǒng)補償方式
MCU中的實時時鐘通常是用32 768 Hz晶振來產(chǎn)生,32 768 Hz石英晶振的振蕩頻率會隨溫度變化,稱之為溫度特性[1]。晶振的溫度特性如圖1所示,呈二次函數(shù)關(guān)系。
從圖1的曲線可以看出,在橫軸的兩頭即低溫和高溫區(qū)晶體的頻率偏差很大。32 768 Hz晶振的這種特性決定了其本身無法達到國網(wǎng)對智能電表的計時精度要求,必須加入溫度補償電路以提高計時精度。通常的溫度補償系統(tǒng)中,首先通過溫度傳感器,獲得當前的晶振溫度,然后根據(jù)圖1的曲線計算出晶體的振蕩頻率偏差,根據(jù)這個偏差值進行頻率補償。
目前常見的溫度補償方法,有改變振蕩器的負載電容來調(diào)整振蕩頻率[2]。此方法的優(yōu)勢在于調(diào)整精細,可以實現(xiàn)步距±1 ppm的校準,實現(xiàn)精確微調(diào),但為保證晶振起振和穩(wěn)定運行,電容的大小有一定限制,電容補償?shù)钠罘秶ǔO薅ㄔ凇?0 ppm以內(nèi)。且電容占據(jù)較大的芯片面積,補償成本比較大,還有就是電容本身隨集成電路的工藝穩(wěn)定性比較差。另外也可以通過對32 768 Hz振蕩器的秒標輸出進行數(shù)字調(diào)校[3]的方式來調(diào)整計時精度。由于32 768 Hz振蕩器一個時鐘周期能帶來30.5 ppm的頻率變化,所以該方法必須設定一個較長時間的校準周期才能達到較高的調(diào)教精度,比如參考文獻[3]中的例子,校準周期假定為10 s。并且此方法,10 s校準完成那一刻,計時精度是最高的,在校準之前的時間內(nèi),計時誤差是在累積增長的。
1.2 基于累積誤差控制的補償算法
利用32.768 kHz晶體振蕩電路計數(shù),計數(shù)周期滿32 768時計為一個秒周期。所以計數(shù)器的一個計數(shù)周期,相當于秒周期改變量為:
如果簡單的對秒脈沖進行數(shù)字補償,能獲得的計時精度是30.5 ppm,對于小于30.5 ppm的頻率偏差,無法得到補償,且這些偏差會形成累積效應,隨著計時時間的加長,計時偏差會越來越大。
經(jīng)過研究,本文提出了基于累積誤差控制的補償算法。補償算法公式如下:
式中,Xn為當前時刻根據(jù)晶振溫度得到的需要補償?shù)念l率誤差(單位ppm),Yn-1為上次補償后遺留的剩余誤差,N為當前秒需要數(shù)字補償?shù)恼麜r鐘周期數(shù),Y為本次數(shù)字補償后的剩余頻率偏差。由于對補償值N進行了四舍五入,所以Y的值會小于15.3 ppm,且由于本次補償?shù)氖S嗾`差會累積到下次需要補償?shù)恼`差值中,所以計時誤差不會隨著計時時間的變長累積變大。
2 補償算法電路實現(xiàn)
2.1 補償電路實現(xiàn)
根據(jù)補償算法式(2)設計了新的全數(shù)字時鐘補償電路,結(jié)構(gòu)示意圖如圖2所示。
圖2中X對應新輸入的頻率偏差值,Y代表上次補償后殘余誤差,N為運算后需要對秒標進行調(diào)整的計數(shù)周期數(shù)。該電路采用全數(shù)字電路實現(xiàn),電路受集成電路工藝波動的影響小,且實現(xiàn)簡單。
2.2 MCU的硬件自動補償流程
國網(wǎng)電表要求在無市電情況下,依靠1 200 mA電池能工作至少5年,這對智能電表主控芯片提出很高的功耗要求。為了節(jié)省功耗,該MCU中實現(xiàn)了硬件自動補償電路,即對上面的補償電路實現(xiàn)硬件自動定時觸發(fā)調(diào)教。當MCU處在休眠狀態(tài)時,CPU及除RTC外的電路都在斷電模式下,以降低芯片功耗。 當預設的調(diào)教時間到時,硬件自動打開溫度傳感器、ADC及調(diào)教電路的電源,并依次通過溫度傳感器獲得溫度值,通過ADC轉(zhuǎn)化為數(shù)字數(shù)據(jù),然后再用此數(shù)據(jù)從查找表獲得此溫度下需要校準的頻率誤差值,開啟自動補償電路完成頻率誤差的補償,完成后重新設計相關(guān)電路進入休眠。整個補償過程不需要CPU參與,通過RTC的定時報警功能自動打開相關(guān)電路開始補償,完成后再自動關(guān)閉這些電路以節(jié)省功耗。工作流程如圖3所示。
3 電路仿真及結(jié)果分析
對基于累積誤差控制的時鐘補償電路的仿真結(jié)果如圖4所示。
圖4 中對式(2)中的數(shù)據(jù)都乘以10以實現(xiàn)整數(shù)運算,圖中的變量分別為:trim_value,根據(jù)溫度獲得的新的ppm值;rtc_sum,累計誤差;rtc_quo,累積誤差除以30.5以后的商值;rtc_remainder,累積除以30.5以后的余數(shù);rtc_quo_new,對rtc_quo校正過的新商值;rtc_remainder_new,rtc_remainder校正過的新余數(shù)值;clk_second,秒脈沖輸出。
圖4中rtc_quo_new為每秒實際需要調(diào)整的計數(shù)周期數(shù),負值代表計數(shù)個數(shù)減少,比如正常計數(shù)32 768個周期為1 s,當rtc_quo_new為-4表示計數(shù)只需要計數(shù)到32 764個時鐘周期即可;rtc_remainder_new為本次補償遺留的誤差值,需要與下次需要補償?shù)恼`差值進行累積。
由式(2)和仿真結(jié)果都可以看出,該補償電路能確保每次補償后的累積誤差都控制在15.3 ppm以內(nèi),累積誤差不隨時間變長而變大,所以當達到累積10 s時長時,平均誤差達到1.53 ppm,時間越長精度越高,計時精度遠高于國網(wǎng)電表的標準要求。
該新方法與負載電容調(diào)整方式相比,電路簡單,面積小,成本低,受集成電路工藝波動影響小。與傳統(tǒng)的數(shù)字補償調(diào)校方式相比,在控制每秒誤差同時,不會累積誤差,有效保證了實時時鐘在長期運行的情況下累積誤差維持在15.3 ppm內(nèi),計時精度的補償效果如圖5所示。
本文新提出一種基于累積誤差控制的RTC溫度補償算法,累積誤差控制在15.3 ppm內(nèi)。開發(fā)了硬件補償電路,并在MCU中設計了硬件自動補償流程,能很好地滿足國網(wǎng)電表計時精度高、功耗低的應用需求。
參考文獻
[1] 鄒云.溫度補償晶體振蕩器的研究[D].天津:南開大學,2010.
[2] 張昭.一種溫度補償晶體振蕩器芯片的設計[D].成都:四川大學,2006.
[3] 鄧乾中.自校準實時時鐘RTC的研究和設計[D].武漢:華中科技大學,2008.