本發(fā)明涉及一種分段累加計時方法及裝置,尤其涉及一種采用分段累加秒計數(shù)的32位時間表示方法及裝置,屬于信息計數(shù)領(lǐng)域。
背景技術(shù):
通常的時間表示需要年月日,并根據(jù)精度需求表示時分秒。用數(shù)字較直觀的是直接表示,如數(shù)字20141208表示2014年12月8日,及133559表示13點(diǎn)35分59秒,包括二進(jìn)制的分段表示均如此。其優(yōu)點(diǎn)是觀看直接明了。缺點(diǎn)之一是占位較長,即表達(dá)一個完整的時間需要較長的數(shù)據(jù)位元,如數(shù)字20141208,其占位32位(比特),采用BCD編碼每4比特表示一個十進(jìn)制數(shù)值,8個數(shù)值占位32比特。缺點(diǎn)之二是產(chǎn)生這樣的日期與時間流不是直接對應(yīng)的,原因是分鐘、秒為60進(jìn)制,甚至還有閏秒,而月是12進(jìn)制,日期更復(fù)雜,不同的月份里的天數(shù)并不相同,甚至還有閏月(2月為29天)。使得直接表示在產(chǎn)生時間的應(yīng)用中并不方便和經(jīng)濟(jì)。
現(xiàn)有技術(shù)在方便性、經(jīng)濟(jì)型和兼容性方面分別存在以下缺點(diǎn):
方便性:只是時間表示的數(shù)值較容易,但時間的產(chǎn)生較為復(fù)雜,要兼顧不同的進(jìn)制及月歷的復(fù)雜性。
經(jīng)濟(jì)性:表達(dá)方式占位少,以減少存貯所需的存儲空間,時間傳輸?shù)拈_銷或代價,表達(dá)時間的位數(shù)越少,則經(jīng)濟(jì)型越高。
兼容性:目前計算機(jī)內(nèi)存、外存均已字節(jié)為單位,常用的包括8位、16位、32位等,如果一個時間表達(dá)采用了33位,實(shí)際存儲就不那么經(jīng)濟(jì),多數(shù)情況下要占用5個字節(jié)甚至為方便需要64位保存或傳輸。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是一種解決現(xiàn)有技術(shù)中計時方法的時間的產(chǎn)生較為復(fù)雜,并要兼顧不同的進(jìn)制及月歷的復(fù)雜性的問題。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:提供一種分段累加計時方法,包括:
步驟1:前段計數(shù)器接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到預(yù)設(shè)值時產(chǎn)生進(jìn)位信號;所述前段計數(shù)器用于存儲根據(jù)秒脈沖累加得到的所有數(shù)據(jù);
步驟2:后段計數(shù)器接收進(jìn)位信號,將所述進(jìn)位信號與后段計數(shù)器內(nèi)存儲的數(shù)據(jù)進(jìn)行累加;所述后段計數(shù)器用于存儲根據(jù)進(jìn)位信號累加得到的所有數(shù)據(jù)。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下具體規(guī)定。
進(jìn)一步,所述預(yù)設(shè)值包括預(yù)設(shè)閏秒值和預(yù)設(shè)最大值;所述預(yù)設(shè)閏秒值與所述預(yù)設(shè)最大值的差為一。
進(jìn)一步,所述前段計數(shù)器采用N位計數(shù)器,其中N為不大于32的整數(shù)值;所述后段計數(shù)器為M位計數(shù)器,其中M和N的和為32。
進(jìn)一步,所述N為0時,秒脈沖等于進(jìn)位信號,所述后段計數(shù)器為32位計數(shù)器;
進(jìn)一步,所述N不為0時,所述前段計數(shù)器包括至少兩個子段,所有所述子段的長度之和為N。
進(jìn)一步,所述子段包括第一子段和第二子段;
所述第一子段接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到第一預(yù)設(shè)值時產(chǎn)生第一子進(jìn)位信號;
所述第二子段接收所述第一子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第一子進(jìn)位信號達(dá)到第二預(yù)設(shè)值時產(chǎn)生進(jìn)位信號,執(zhí)行步驟2。
進(jìn)一步,所述子段包括第一子段、第二子段和第三子段;
所述第一子段接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到第一預(yù)設(shè)值時產(chǎn)生第一子進(jìn)位信號;
所述第二子段接收所述第一子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第一子進(jìn)位信號達(dá)到第二預(yù)設(shè)值時產(chǎn)生第二子進(jìn)位信號;
所述第三子段接收所述第二子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第二子進(jìn)位信號達(dá)到第三預(yù)設(shè)值時產(chǎn)生后段進(jìn)位信號;執(zhí)行步驟2。
進(jìn)一步,所述前段計數(shù)器和后段計數(shù)器都采用單向累加計數(shù)器。
本發(fā)明針對上述技術(shù)問題還提供一種分段累加計時裝置,包括:
前段計數(shù)器,用于接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到預(yù)設(shè)值時產(chǎn)生進(jìn)位信號;所述前段計數(shù)器用于存儲根據(jù)秒脈沖累加得到的所有數(shù)據(jù);
后段計數(shù)器,用于接收進(jìn)位信號,將所述進(jìn)位信號與后段計數(shù)器內(nèi)存儲的數(shù)據(jù)進(jìn)行累加;所述后段計數(shù)器用于存儲根據(jù)進(jìn)位信號累加得到的所有數(shù)據(jù)。
采用分段累加計時方法及裝置,由前段計數(shù)器和后段計數(shù)器組成。所述計數(shù)器為可預(yù)置的的單向二進(jìn)制累加計數(shù)器。前段計數(shù)器為N位計數(shù)器,N根據(jù)不同需求設(shè)定具體數(shù)值,且N為不大于32的整數(shù)值。后段計數(shù)器為32-N位計數(shù)器。前段計數(shù)器與后段計數(shù)器的計數(shù)值所共同組成32位數(shù)值,即為裝置當(dāng)前時間值,該時間值可通過計算轉(zhuǎn)換為常見的數(shù)據(jù)格式。
本發(fā)明的有益效果是:本發(fā)明提出的方法,采用分段累加秒計數(shù)表示的32位時間表示方法及裝置,提供一種兼顧普通分段表示的方便之處,同時又避免了常用分段同時表達(dá)日期和時間時,32位長度不夠的問題的32位時間表示方法及裝置,且時間產(chǎn)生簡單,僅使用多個計數(shù)器即相應(yīng)的邏輯單元即可實(shí)現(xiàn)。同時具備累加方式的表達(dá)時間長久及分段式的直觀和適應(yīng)多種不同應(yīng)用場景的優(yōu)點(diǎn)。同時,實(shí)現(xiàn)起來簡單易行,特別適合采用簡單硬件及低端單片機(jī)的實(shí)現(xiàn)。同時本方法還很好地解決了閏秒的表示,即閏秒發(fā)生時,仍然可以正確地表達(dá)出來,而不是簡單地停鐘一秒。
所述前段計數(shù)器是一種秒脈沖(1PPS)的特殊計數(shù)器,其長度為N位二進(jìn)制長度(0≤N≤32)。后段計數(shù)器是一種以前段進(jìn)位信號為計數(shù)單位,且長度為M=32-N位可預(yù)置初始值的普通二進(jìn)制計數(shù)器。
所述前段計數(shù)器和所述后段計數(shù)器共同組成一個32位寄存器,該32位寄存器的內(nèi)容就是32位長度的時間表示。
附圖說明
圖1為本發(fā)明分段累加計時方法的一個實(shí)施例的流程圖;
圖2為本發(fā)明分段累加計時裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。
附圖中,各標(biāo)號所代表的部件列表如下:
1、前段計數(shù)器,2、后段計數(shù)器。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
圖1為本發(fā)明分段累加計時方法的一個實(shí)施例的流程圖,如圖1所示,包括:
步驟1:前段計數(shù)器接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到預(yù)設(shè)值時產(chǎn)生進(jìn)位信號;所述前段計數(shù)器用于存儲根據(jù)秒脈沖累加得到的所有數(shù)據(jù);
步驟2:后段計數(shù)器接收進(jìn)位信號,將所述進(jìn)位信號與后段計數(shù)器內(nèi)存儲的數(shù)據(jù)進(jìn)行累加;所述后段計數(shù)器用于存儲根據(jù)進(jìn)位信號累加得到的所有數(shù)據(jù)。
在上述一個實(shí)施例的基礎(chǔ)上,所述預(yù)設(shè)值包括預(yù)設(shè)閏秒值和預(yù)設(shè)最大值;所述預(yù)設(shè)閏秒值與所述預(yù)設(shè)最大值的差為一。
其中預(yù)設(shè)閏秒值對應(yīng)時間存在閏秒的情況,此時一分鐘包括61秒,而正常情況一分鐘包括60秒,因此預(yù)設(shè)潤秒只與所述預(yù)設(shè)最大值的差為一。
本發(fā)明另一實(shí)施例中,在上述實(shí)施例的基礎(chǔ)上,所述前段計數(shù)器采用N位計數(shù)器,其中N為不大于32的整數(shù)值;所述后段計數(shù)器為M位計數(shù)器,其中M和N的和為32。
上述另一實(shí)施例中存在幾種情況,
第一種,所述N為0時,前段計數(shù)器就是一根短路線,秒脈沖等于進(jìn)位信號,所述后段計數(shù)器為32位計數(shù)器。
第二種,所述N不為0時,包括以下三種情況:
(1)前段計數(shù)器為一個6位計數(shù)器,后段計數(shù)器為一個26位計數(shù)器。在此情況下,前段計數(shù)器為秒計數(shù)器,其內(nèi)容為當(dāng)前時間的秒數(shù)值。后段計數(shù)器為分鐘累計值A(chǔ)M(Accumulated Minutes)。主要步驟為:
秒脈沖1PPS到來時,前段計數(shù)器進(jìn)行數(shù)據(jù)累加,每次加1。當(dāng)前段計數(shù)器數(shù)值到達(dá)60或61秒產(chǎn)生進(jìn)位信號,即:整分鐘時刻產(chǎn)生進(jìn)位信號,后段計數(shù)器加1。其中進(jìn)位信號是60還是61取決于當(dāng)前秒時刻是否是閏秒。發(fā)生閏秒時刻為61,否則為60。
該實(shí)施例實(shí)現(xiàn)的有益效果是,由于前段計數(shù)器為秒計數(shù)器,且計數(shù)器內(nèi)容就是當(dāng)前時間的秒數(shù)值而無須再轉(zhuǎn)換即可使用,因而能夠直觀的了解時間表達(dá)中的秒數(shù)值。這對于僅需要秒時刻進(jìn)行定時或操作的裝置使用起來更為方便。且支持閏秒的時刻表達(dá)。
(2)前段計數(shù)器為一個12位計數(shù)器,后段計數(shù)器為一個20位計數(shù)器。在此情況下,前段計數(shù)器為秒計數(shù)器,后段計數(shù)器為小時累計值A(chǔ)H(Accumulated Hours)。主要步驟為:
秒脈沖到來時,前段計數(shù)器進(jìn)行數(shù)據(jù)累加,每次加1。當(dāng)前段計數(shù)器的計數(shù)器數(shù)值到達(dá)3600或3601秒時,產(chǎn)生進(jìn)位信號,即:整小時時刻產(chǎn)生進(jìn)位信號,后段計數(shù)器加1。其中進(jìn)位信號是3600還是3601取決于當(dāng)前秒時刻是否是閏秒。發(fā)生閏秒時刻為3601,否則為3600。
在前段計數(shù)器為12位計數(shù)器時,上述12位前段計數(shù)器內(nèi)容還可以做如下改善,其主要內(nèi)容為:
前段計數(shù)器為一個12位計數(shù)器,內(nèi)容分為兩個子段,即第一子段秒6位計數(shù)器和第二子段分6位計數(shù)器,后段計數(shù)器為一個20位計數(shù)器。所述第一子段接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到第一預(yù)設(shè)值時產(chǎn)生第一子進(jìn)位信號;所述第二子段接收所述第一子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第一子進(jìn)位信號達(dá)到第二預(yù)設(shè)值時產(chǎn)生進(jìn)位信號,執(zhí)行步驟2。
在此情況下,前段計數(shù)器為別為秒計數(shù)器和分計數(shù)器,其內(nèi)容為當(dāng)前時間的秒數(shù)值和分鐘數(shù)值。后段計數(shù)器不變,仍為小時累計值A(chǔ)H(Accumulated Hours)。具體實(shí)施過程包括:
秒脈沖到來時,前段計數(shù)器進(jìn)行數(shù)據(jù)累加,每次加1。當(dāng)前段計數(shù)器中第一子段,即6位秒計數(shù)器數(shù)值到達(dá)60或61秒時,秒計數(shù)器清零并同時產(chǎn)生內(nèi)部進(jìn)位信號,使得第二子段的分位計數(shù)器值加1,當(dāng)?shù)诙佣?位分計數(shù)值到達(dá)60時,秒計數(shù)器和分計數(shù)器兩個子段同時清零,并產(chǎn)生前段計數(shù)器的進(jìn)位信號,即:整小時時刻產(chǎn)生進(jìn)位信號,后段計數(shù)器加1。其中第一個子段的進(jìn)位信號是60還是61取決于當(dāng)前秒時刻是否是閏秒。發(fā)生閏秒時刻為61,否則為60。
該實(shí)施例實(shí)現(xiàn)的有益效果是,由于前段計數(shù)器的兩個6位子段的二進(jìn)制數(shù)內(nèi)容分別為當(dāng)前時間的分鐘和秒數(shù)值,因而能夠直觀的得到時間表達(dá)中的分、秒數(shù)值,而不必再通過轉(zhuǎn)換或計算。這對于僅需要分及秒信息進(jìn)行定時或操作的裝置使用起來更為方便。且支持閏秒的時刻表達(dá)。
(3)前段計數(shù)器為一個17位計數(shù)器,后段計數(shù)器為一個15位計數(shù)器。在此情況下,前段計數(shù)器為秒計數(shù)器,后段計數(shù)器為日累計值A(chǔ)D(Accumulated Days)。
具體實(shí)施過程包括:
秒脈沖到來時,前段計數(shù)器進(jìn)行數(shù)據(jù)累加,每次加1。當(dāng)前段計數(shù)器的計數(shù)器數(shù)值到達(dá)86400或86401秒時,產(chǎn)生進(jìn)位信號,即:每天零點(diǎn)整時刻產(chǎn)生進(jìn)位信號,后段計數(shù)器加1。其中進(jìn)位信號是86400還是86401取決于當(dāng)前秒時刻是否是閏秒。發(fā)生閏秒時刻為86401,否則為86400。
本實(shí)施例中還可以將上述17位前段計數(shù)器內(nèi)容還可以做如下改進(jìn),將所述前段計數(shù)器分為第一子段、第二子段和第三子段三個子段;
所述第一子段接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到第一預(yù)設(shè)值時產(chǎn)生第一子進(jìn)位信號;
所述第二子段接收所述第一子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第一子進(jìn)位信號達(dá)到第二預(yù)設(shè)值時產(chǎn)生第二子進(jìn)位信號;
所述第三子段接收所述第二子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第二子進(jìn)位信號達(dá)到第三預(yù)設(shè)值時產(chǎn)生后段進(jìn)位信號;執(zhí)行步驟2。
在具體實(shí)施例時:前段計數(shù)器為一個17位計數(shù)器,內(nèi)容分為三個子段,分別第一子段(6位秒計數(shù)器)、第二子段(6位分計數(shù)器)和第三子段(5位時計數(shù)器)。后段計數(shù)器為一個15位計數(shù)器,為天累加計數(shù)器。在此情況下,前段計數(shù)器的三個子段分別為時計數(shù)器、分計數(shù)器和秒計數(shù)器,其內(nèi)容為當(dāng)前時間的小時數(shù)值、分鐘數(shù)值和秒數(shù)值。后段計數(shù)器不變,仍為天累計值A(chǔ)D。
當(dāng)秒脈沖到來時,前段計數(shù)器中的第一子段的6位秒計數(shù)器進(jìn)行數(shù)據(jù)累加,每次加1。當(dāng)前段計數(shù)器中第一個子段的6位秒計數(shù)器數(shù)值到達(dá)60或61秒時,秒計數(shù)器清零,同時第二個子段的6位分計數(shù)器加1,當(dāng)分計數(shù)值到達(dá)60時,分計數(shù)器清零,同時第三個子段的時計數(shù)器加1。當(dāng)時計數(shù)器為60時,時計數(shù)器清零,并產(chǎn)生進(jìn)位信號,后段計數(shù)器加1。其中進(jìn)位信號是60還是61取決于當(dāng)前秒時刻是否是閏秒。發(fā)生閏秒時刻為61,否則為60。
該實(shí)施例實(shí)現(xiàn)的有益效果是,由于前段17位計數(shù)器的時5位計數(shù)器、分6位計數(shù)器和秒6位計數(shù)器內(nèi)容分別為當(dāng)前時間的小時、分鐘和秒數(shù)值,因而能夠直觀的了解時間表達(dá)中的時、分、秒數(shù)值。這對于僅需要時、分、秒信息而不關(guān)心日期信息進(jìn)行定時或操作的裝置使用起來更為方便。且支持閏秒的時刻表達(dá)。
綜合上述幾個實(shí)施例,本技術(shù)方案還可以進(jìn)一步改善,以更好地支持不同應(yīng)用情況,具體包括:
前段計數(shù)器是一個可預(yù)先設(shè)置的邏輯部件,除包括N位計數(shù)器功能外,可以達(dá)到如下功能:
1.前段計數(shù)器可根據(jù)預(yù)先設(shè)定,如:長度為6位,12位和17位;
2.在前段計數(shù)器長度確定的情況下,可確定前段計數(shù)器的內(nèi)部子段,并確定子段間的進(jìn)位規(guī)則,具體為:
A1.12位長度的前段計數(shù)器,可分為兩個子段,均為6位計數(shù)器,并規(guī)定當(dāng)?shù)谝粋€子段的計數(shù)器置到達(dá)60或61時,計數(shù)器值清零,并產(chǎn)生進(jìn)位脈沖;
A2.當(dāng)?shù)谝粋€子段產(chǎn)生進(jìn)位脈沖時,第二個子段的計數(shù)器加1,并當(dāng)?shù)诙€子段計數(shù)器的計數(shù)值到達(dá)60時,計數(shù)器清零,并產(chǎn)生前段計數(shù)器的進(jìn)位信號。
B1.17位長度的前段計數(shù)器,可分為三個子段,第一個和第二個子段均為6位計數(shù)器,第三個子段為5位計數(shù)器,并規(guī)定當(dāng)?shù)谝粋€子段的計數(shù)器置到達(dá)60或61時,計數(shù)器值清零,并產(chǎn)生第一進(jìn)位脈沖;
B2.當(dāng)?shù)谝粋€子段產(chǎn)生進(jìn)位脈沖時,第二個子段的計數(shù)器加1,并當(dāng)?shù)诙€子段計數(shù)器的計數(shù)值到達(dá)60時,計數(shù)器清零,并產(chǎn)生第二進(jìn)位脈沖;
B3.當(dāng)?shù)诙€子段產(chǎn)生進(jìn)位脈沖時,第三個子段的計數(shù)器加1,并當(dāng)?shù)谌齻€子段計數(shù)器的計數(shù)值到達(dá)24時,計數(shù)器清零,并產(chǎn)生所述前段計數(shù)器的進(jìn)位信號。
采用上述進(jìn)一步改進(jìn)的有益效果是,由上述改進(jìn)所組成的裝置可以適應(yīng)多種不同應(yīng)用場景,包括僅關(guān)心秒信息、同時關(guān)心分鐘和秒信息,及同時關(guān)心時、分、秒信息的多種不同裝置的需求,并可以通過簡單設(shè)定完成上述要求。
上述實(shí)施例中前段計數(shù)器與后段計數(shù)器與常見年(Y)、月(M)、日(D)、時(h)、分(m)、秒(s)的轉(zhuǎn)換過程如下:
情況1:17位前段計數(shù)器和15位后段計數(shù)器組成的裝置:
在此情況下,17位前段計數(shù)器的二進(jìn)制內(nèi)容表示為b16-b0,其中高5位二進(jìn)制數(shù)值,b16-b12為h,中間6位b11-b6為m,最后6位b5-b0為s,即:時(h)、分(m)、秒(s)均無需轉(zhuǎn)換,直接讀取相應(yīng)位值即可;
15位后段計數(shù)器的內(nèi)容為天計數(shù)值A(chǔ)D(Accumulated Days),AD與年、月、日的對應(yīng)關(guān)系與MJD(儒略日)轉(zhuǎn)換為年、月、日的對應(yīng)關(guān)系類似,均可通過一些簡單運(yùn)算得到,主要差別是因?yàn)槠鹗既?AD=0)對應(yīng)的日期與MJD如果不同,需引入相應(yīng)的調(diào)整因子。
在上述情況下,15位日計數(shù)器可以表示的有效范圍為不到90年。
情況2:12位前段計數(shù)器和20位后段計數(shù)器組成的裝置:
在此情況下,12位前段計數(shù)器的二進(jìn)制內(nèi)容表示為b11-b0,其中高6位b11-b6為m,最后6位b5-b0為s,即:分(m)、秒(s)均無需轉(zhuǎn)換,直接讀取相應(yīng)位值即可;
20位后段計數(shù)器的內(nèi)容為時計數(shù)值A(chǔ)H(Accumulated Hours),AH與年、月、日、時的對應(yīng)關(guān)系為:
h=AH(mod 24) 公式(1)
AD=int(AH/24) 公式(2)
其中,x(mod y)表示x對y取模的結(jié)果,int(z)表示z的整數(shù)部分。
AD與年、月、日的對應(yīng)關(guān)系同情況一。
在上述情況下,20位時計數(shù)器可以表示的有效范圍可超過100年。
情況3:6位前段計數(shù)器和26位后段計數(shù)器組成的裝置:
在此情況下,6位前段計數(shù)器的二進(jìn)制內(nèi)容即為秒(s),無需轉(zhuǎn)換,直接讀取相應(yīng)位值即可;
26位后段計數(shù)器的內(nèi)容為分計數(shù)值A(chǔ)M(Accumulated Minites),AM與年、月、日、時、分的對應(yīng)關(guān)系為:
m=AM(mod 60) 公式(3)
AH=int(AM/24) 公式(4)
其中,x(mod y)表示x對y取模的結(jié)果,int(z)表示z的整數(shù)部分;AD見公式(2),AD與年、月、日的對應(yīng)關(guān)系同情況一。
在上述情況下,26位分計數(shù)器可以表示的有效范圍可超過100年。
應(yīng)用具體實(shí)例:
以下應(yīng)用實(shí)例,采用如下定義:
起始日期為2000-3-1 00:00:00,為簡化計算,本專利舉例的有效日期至2100-2-28 23:59:59。且采用前段計數(shù)器長度N=6,后段計數(shù)器長度為26位的分累加計數(shù)(AM)方式,即32bit時間信息b31-b0中,b5-b0為秒信息,b31-b6為AM信息:
AM:計數(shù)時AH有效值范圍為0-52594559,對應(yīng)2000-3-1 0:0:xx至2100-2-28 23:59:xx,即AM=0,對應(yīng)時間為2000-3-1 0時0分,AH=52594559對應(yīng)時間為2100-2-28 23:59。
當(dāng)時間為2000-3-1 00:00:00時,AM=0,s=0,故該時間的分段累計的32位二進(jìn)制表達(dá)為:
b00000000000000000000000000000000
當(dāng)時間為2100-2-28 23:59:59時,AM=52594559(0x322877f),s=59(0x3b),該時間的分段累計的32位二進(jìn)制表達(dá)為:
b11001000101000011101111111111011
通過日期(Y,M,D)、時(h)分(m)各值計算計數(shù)時(AH)的方法為:
如果M==1或M==2,則L=1,否則L=0;
AD=D+int[(Y-L-2000)*365.25)+int((M+1+L*12)*30.6)-123]
公式(1.1)
AH=h+24*AD 公式(1.2)
AM=m+60*AH 公式(1.3)
如2015年2月18日21:31:59;即Y=2015,M=2,D=18,h=21,m=31,s=59(0x3B)。按照公式(1.1)計算的到:AD=5467。
按照公式(1.2)計算得到:AH=131229。
按照公式(1.3)計算得到:AM=7873771(0x7824EB)。
因此,2015年2月18日21:31:59的N=6情況下分段累計的32位二進(jìn)制表達(dá)為:
b00011110000010010011101011111011
反過來,通過AM計算日期、時間各值的具體方法為:
m=AM mode(60) 公式(1.4)
AH=int(AM/60) 公式(1.5)
h=AH(mod 24) 公式(1.6)
AD=int(AH/24) 公式(1.7)
Y’=int((AD+0.8)/365.25) 公式(1.8)
M’=int((AD+122.9–int(Y’*365.25))/30.6) 公式(1.9)
D=AD+123–int(Y’*365.25)–int(M’*30.6) 公式(1.10)
如果M’=14或15,則K=1,否則K=0
Y=Y(jié)’+K+2000 公式(1.11)
M=M’–1–12*K 公式(1.12)
WD=1+(AD+2)(mod 7) 公式(1.13)
公式1.13中,WD為星期數(shù),即該日期是星期幾,WD=0表示星期日。
如N=6情況下分段累計的32位二進(jìn)制表達(dá)為:
b00011110000010010011101011111011
即:s=b111011=59。
AM=b00011110000010010011101011=7873771
按照公式(1.4)得到:m=31。
按照公式(1.5)及公式(1.6)得到:AH=131229,h=21。
按照公式(1.7)得到:AD=5467。
按照公式(1.8)及公式(1.9)得到:Y’=14,M’=15,因此K=1。
按照公式(1.10)得到:D=18。
按照公式(1.11)得到:Y=2015。
按照公式(1.12)得到:M=2。
按照公式(1.13)得到:WD=3。
即計算得到結(jié)果為2015年2月18日21:31:59,星期三。
圖2為本發(fā)明分段累加計時裝置的一個實(shí)施例的結(jié)構(gòu)示意圖,該實(shí)施例的裝置可用于實(shí)現(xiàn)本發(fā)明上述各方法實(shí)施例。如圖2所示,本實(shí)施例裝置包括:
前段計數(shù)器1,用于接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到預(yù)設(shè)值時產(chǎn)生進(jìn)位信號;所述前段計數(shù)器用于存儲根據(jù)秒脈沖累加得到的所有數(shù)據(jù);
后段計數(shù)器2,用于接收進(jìn)位信號,將所述進(jìn)位信號與后段計數(shù)器內(nèi)存儲的數(shù)據(jù)進(jìn)行累加;所述后段計數(shù)器用于存儲根據(jù)進(jìn)位信號累加得到的所有數(shù)據(jù)。
工作模式設(shè)定過程包括:
根據(jù)使用需求,設(shè)定前段計數(shù)器和后段計數(shù)器的長度,即前段計數(shù)器內(nèi)部的子段:包括各子段的長度及其最大計數(shù)值,當(dāng)該子段計數(shù)到達(dá)最大值時,產(chǎn)生進(jìn)位信號,使得后一級子段計數(shù)。
根據(jù)初始時間,設(shè)定分段表示的32位時間計數(shù)模塊內(nèi)的初值,即計數(shù)器起始數(shù)值。該初值通過32位計數(shù)讀寫寄存器進(jìn)行。即對該寄存器進(jìn)行寫操作,即完成初值的初始化。
工作模式設(shè)定后,分段表示的32位時間計數(shù)模塊將按照設(shè)定的模式進(jìn)行和觸發(fā)條件進(jìn)行計數(shù)和產(chǎn)生進(jìn)位信號。
通過32位計數(shù)讀寫寄存器完成對前段計數(shù)器和后段計數(shù)器內(nèi)容的讀操作和寫操作。對該寄存器的寫操作即完成對裝置啟動時間的起始時間設(shè)定,也可以通過寫寄存器完成前段計數(shù)器內(nèi)容的清零,對該寄存器進(jìn)行讀操作得到的結(jié)果就是分段累加秒計數(shù)的32位時間表示。
上述實(shí)施例中,所述秒脈沖根據(jù)時間產(chǎn)生,一秒鐘時間產(chǎn)生一個秒脈沖。
上述實(shí)施例中,所述預(yù)設(shè)值包括預(yù)設(shè)閏秒值和預(yù)設(shè)最大值;所述預(yù)設(shè)閏秒值與所述預(yù)設(shè)最大值的差為一。
本發(fā)明裝置的另一個實(shí)施例中,在上述實(shí)施例的基礎(chǔ)上所述前段計數(shù)器采用N位計數(shù)器,其中N為不大于32的整數(shù)值;所述后段計數(shù)器為M位計數(shù)器,其中M和N的和為32。
上述實(shí)施例中,所述N為0時,秒脈沖等于進(jìn)位信號,所述后段計數(shù)器為32位計數(shù)器;
所述N不為0時,所述前段計數(shù)器1包括至少兩個子段,所有所述子段的長度之和為N。
所述子段包括第一子段和第二子段;
所述第一子段接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到第一預(yù)設(shè)值時產(chǎn)生第一子進(jìn)位信號;
所述第二子段接收所述第一子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第一子進(jìn)位信號達(dá)到第二預(yù)設(shè)值時產(chǎn)生進(jìn)位信號,執(zhí)行步驟2。
所述子段包括第一子段、第二子段和第三子段;
所述第一子段接收秒脈沖,根據(jù)累加的秒脈沖達(dá)到第一預(yù)設(shè)值時產(chǎn)生第一子進(jìn)位信號;
所述第二子段接收所述第一子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第一子進(jìn)位信號達(dá)到第二預(yù)設(shè)值時產(chǎn)生第二子進(jìn)位信號;
所述第三子段接收所述第二子進(jìn)位信號并進(jìn)行累加,根據(jù)累加的第二子進(jìn)位信號達(dá)到第三預(yù)設(shè)值時產(chǎn)生后段進(jìn)位信號;執(zhí)行步驟2。
本發(fā)明各實(shí)施例中涉及的所述前段計數(shù)器1和后段計數(shù)器2都采用單向累加計數(shù)器。
以上所述僅為本發(fā)明的一種特殊情況的實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。