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