采用MXT5611的高精度可配置定時電路
在工業控制、家電應用、民用爆破、武器引信等領域,利用到很多時間類控制事件,這些時間類控制控制事件需要用到不同功能的定時器電路,這些時間控制事件要求的定時長度各不相同,需要的定時器數目也不一樣,針對不同的應用領域,定時的進制、定時方式也不盡相同。在某些應用中,可能會利用到多個時間事件,但是時間長度不是很長,而別的應用中卻是單個時間事件,但是要求時間長度很長。也有可能某些應用中定時方式是要求總共定時多長時間,而別的應用中要求定時方式為從某一時刻到另一時刻。總之,應用領域的不同,對定時電路的要求也不盡相同。這就要求定時器電路具備一定的配置功能,已滿足該定時器電路在不同領域的應用。
本文設計的定時電路具備以下配置能力:時間長度、定時方式、定時進制、定時器的啟動、定時達到后輸出、數據通信方式等主要可配置項。

圖1 可配置定時電路原理框
電路內嵌128×16 B 容量EEPROM存儲陣列,把需要處理的數據做為一個最小項,把EEPROM空間按地址順序分為8個16×16 B存儲窗口。其中固定一個窗口為功能配置信息存儲窗口,其余窗口為定時數據存儲窗口。功能配置信息中設置一個“有效定時數據存儲窗口”控制字,可以把一些常見固定的定時出具寫入EEPROM某些窗口中,如果需要進行某種固定的定時時,只需要把功能配置字中““有效定時數據存儲窗口”控制字進行改寫,即可立即進行需要的定時功能。EEPROM與寄存器組映射關系如圖2。
電路在上電后,由上電引導模塊把EEPROM中的配置信息載入到功能寄存器組中,再根據功能寄存器組配置狀態(主要指“有效定時數據存儲窗口控制字)把相應的定時數據載入到定時寄存器組中。完成上電引導過程后,可由DATAin進行電路配置更改和定時數據更新等功能,確認配置方式和定時數據無誤后,可以通過電路定時啟動端口發送啟動電平脈沖或者由DATAin發送定時器啟動禎來啟動內部定時器,三個定時器可以同時或者分時啟動,可根據控制需要進行啟動。

定時器配置
表1 定時器配置字
表1為定時器配置字,電路內每個定時器對應都對應一個定時器配置字,這樣,可以根據應用定時要求,對三個定時器進行任一定時器的配置。同時要說明的是,定時器的啟動方式配置和輸出脈沖控制所定義的信號類型基本一致,這樣就可以實現啟動一個定時器定時完畢后立即啟動另一個定時器的定時功能。
電路內含三個16位定時器,三個16位定時器之間進行一定規律的級聯,以構成更大定時范圍的定時器。配制方式如下圖:

級聯公式: 這樣,電路可通過配制C0、C1、C2來使定時器實現不同方式的組合。當然,當C0、C1、C2都為1時,定時器電路將無外部時鐘輸入,此時電路不具備定時功能。
其中定時器0和定時器1的組成基本一致,以五個觸發器(其中4個觸發器處理正常計數功能,一個觸發器處理進位、置數使能)作為“定時單元”,四個“定時單元”構成16位定時器,通過對“定時單元”定時過程中置數使能的產生和置數值的設定來設置不同的定時狀態(如十進制定時則“定時單元”在從9減到0這個過程的下一個時鐘周期為置數周期,產生置數使能信號,同時置數值設定為1001;而如果是六進制定時則“定時單元”在從5減到0這個過程的下一個時鐘周期為置數周期,產生置數使能信號,同時置數值設定為0110。其他進制的定時過程同理。)通過對4個定時單元的不同設置,可產生全十進制定時方式,二進制定時方式,六十進制定時方式(應用于北京時間的分、秒處理)、二十四進制定時方式(應用于北京時間的小時處理)、三十進制定時方式(應用于北京時間的日處理,因為沒有“0天”這種說法,故該處理需要在定時單元的結構上增加一個判定)。
在此結構上,如果需要增加新的定時進制處理,只需要對置數rom邏輯進行增加即可。
定時器T2的設計是針對北京時間二進制表示的定時設計,同時具備基本的二進制定時。它主要處理北京時間小時級及小時以上的數據處理。做為基本二進制定時時,它可單獨使用,也可以與定時器T0和定時器T1做級聯使用。當它需要處理北京時間二進制表示高位信息處理時,和定時器T1組成32位定時器,定時器1處理“秒”、“分”信息,定時器T2處理“小時”、“天”“月”“年”數據。T2+T1的級聯方式,主要用于處理從某一時刻到另一時刻的定時方式。
精度控制
電路提供兩種可選擇時鐘源輸入:內部集成硅振蕩器和外部晶體振蕩器輸入。電路設計了兩種精度控制方法,其一是時基腳準,時基校準就是解決因定時時鐘誤差引起的定時累計誤差的辦法。如果我們能得到一個精確的定時時鐘,則沒有這部分定時誤差。但是不管怎么樣的校準,始終是無法得到一個完全精確的定時時鐘的,我們要做的是最大可能的得到一個精確定時時鐘。
其二是定時校正,指在定時過程中,電路根據設定的某一固定值對定時過程進行校正或者接受外部校正信號對定時過程進行校正。這一方法旨在解決引非時鐘誤差問題引起的定時誤差。同時,該校正方法也可以用于解決因時鐘規律性偏差所引起的誤差問題,比如時鐘的溫度漂移偏差問題。
硅振蕩器的精度調整方法總的來說有兩種:模擬方法和數字方法。模擬調整方法主要是在電路中測過程對電路中的電容陣列進行熔絲處理,調整電容值大小,得到一個較為精確的時鐘,但是這種方法需要很大的成本,并且調整后的精度范圍為1%左右,如果要得到更高精度的硅振蕩器,則需要付出更大的成本,并且給電路設計帶來很大的挑戰。本電路提供一種更高精度的數字調整方法,該方法可以在電路正常工作前對電路進行在線校準,也可以在測試過程中對批電路進行一次性校準。
本電路的時基校準方法是通過外部端口輸入標準512ms時間長度,以振蕩器輸出頻率對512ms時間進行采樣計數,得出一個計數值。然后把該計數值除以512,得到商值和余數。商值做為1ms時鐘的基本長度,然后通過判斷再次基本長度上增加或者不增加1個計數脈沖來得到最終的1ms時鐘信號,這樣每一個1ms輸出時鐘最大誤差為1T(硅振蕩器輸出時鐘周期),而512ms時間最大誤差也為1T。上述判斷過程以512位周期,即每一個512ms對商和余數做同樣的處理。
那么,在不考慮溫度等條件的情況下,以該方案得到的時鐘進行Nms(N=512X+Y,X=0,1,2,3,……;0≤Y≤511)時間長度定時,最大誤差為
(X+Y/4)·T。我們通過分析,可以得出以下幾句數據:
438s時間長度定時誤差為103T(T為內建振蕩器輸出時鐘周期,當設計值為1us時,此時的定時精度約為2ppm)。
82m時間長度定時誤差為104T(T為內建振蕩器輸出時鐘周期,當設計值為1us時,此時的定時精度約為2ppm)。
142h時間長度定時誤差為106T(T為內建振蕩器輸出時鐘周期,當設計值為1us時,此時的定時精度約為2ppm)。
在不考慮硅振蕩器的溫度特性條件下,利用本方法產生時鐘進行的定時精度為2ppm,可以等同于壓控制式晶體振蕩器頻率精度的10^(-6)~10^(-5)量級。
本電路給出的定時校正方法主要是用以解決定時過程中因外部環境所引起的定時偏差,或者解決因控制需要而改變定時時間長度的問題。電路在定時過程中,接受外部信號,對定時過程進行實時校正。

圖4為定時器的結構示意圖,以減計數器為核心,同時接受定時數據和修正數據。定時數據做為減計數器的定時起點,而修正數據主要是用來對進入定時器的定時時鐘進行調整。定時器的修正功能模塊可以保證,在任何一時刻,處理一幀數據,緩存一幀數據,讓進入修正模塊處理的數據完成后,緩存器中的數據立刻進入修正模塊,而修正總線上的數據進入緩存器。
修正方法是根據外部修正數據的符號位進行增減判斷,如果是增長定時過程N個時鐘周期,則,在對定時時鐘進行N個時鐘周期的上升沿磨平處理,如果是縮短N個時鐘周期,則在N個時鐘周期內,定時器進入雙沿觸發定時過程。
圖5為定時修正波形圖,從ADJUST端口輸入具體修正時間,圖中第一幀為定時增長7個時鐘周期,第二幀為定時縮短7個時鐘周期。CLKIN為定時時鐘,CLKOUT為修正后時鐘。T0counter[15:0]為定時器的數據。

根據電路的工作狀態,可以把電路分為配置工作狀態和定時狀態。任意工作狀態下,并非所有的模塊都處于工作狀態下。在設計模塊間接口信號時,同時設計模塊電源控制信號。在進行配置工作狀態下,通信模塊和儲存單元處于工作狀態,而整個定時處理工作模塊處于等待狀態。在這段時間,定時處理工作模塊一直處于清零狀態,而且對定時器時鐘信號進行鎖定不工作。當處于定時狀態下,大部分的通信模塊及存儲單元不會發生數據變化,此時可以關斷EEPROM的參考電流源來降低電路功耗。
結論
通過本文的配置方案和精度方案,可以保證電路定時精度在2ppm左右。采用菊花鏈式配置定時器結構,可以通過簡單的配置得到多種定時應用,滿足多種控制要求。
評論