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