專利名稱:一種具有魯棒性的非接觸式ic卡收數(shù)方法
技術領域:
本發(fā)明涉及符合IS0/IEC14443Type A協(xié)議的非接觸式IC卡的收數(shù)模塊實現(xiàn),尤其是針對適用數(shù)據(jù)解調(diào)寬度有變化,采樣時鐘有偏差,具有魯棒性的收數(shù)方法。
背景技術:
IC卡的概念是20世紀70年代初提出來的,法國布爾(BULL)公司于1976年首先創(chuàng)造出智能卡樣品,并將這項技術應用于金融、交通、醫(yī)療和身份證明等多個行業(yè),它將微電子技術和計算機技術結合在一起,提高了人們生活和工作的現(xiàn)代化程度。根據(jù)卡與外界數(shù)據(jù)傳送的形式,IC卡可以分為接觸式IC卡和非接觸式IC卡。非接觸式 IC 卡的國際標準有 ISO/I EC10536、IS0/IEC14443 和 IS0/IEC15693 及 IS0/IEC7816中對非接觸式IC卡也適用的部分標準。非接觸式卡國際標準中主要討論了卡的物理特性、發(fā)射/接受電信號、防沖突機制、復位應答和傳輸協(xié)議。IS0/IEC14443協(xié)議規(guī)定了兩種信號接口:Type A和Type B。本文討論的非接觸式 IC 卡遵從 IS0/IEC14443type A 協(xié)議。根據(jù)IS0/IEC14443-2A協(xié)議規(guī)定,智能卡讀卡器產(chǎn)生耦合到IC卡的RF電磁場,用以傳送能量和雙向通信。IC卡獲得能量后將其轉化成直流電壓。RF場的場強范圍是I.5Α/m 7.5A/m,載波頻率 f。為 13.56MHz±7kHz。數(shù)據(jù)傳輸率=13.56MHz/128=106Kb/s, —位數(shù)據(jù)所占的時間周期為9.4us。如圖1所示,智能卡讀卡器向非接觸式IC讀傳送信號(01001)。調(diào)制方式采用100%的ASK,在RF場中創(chuàng)造一個“間隙(pause)”來傳輸二進制數(shù)據(jù)。Pause波形如圖2所示。編碼方式采用 變形米勒編碼,如圖3所示,有三種時序:時序X,在64/f。之處產(chǎn)生一個pause ;時序Y,在整個位期間不發(fā)生調(diào)制;時序Z,在位期間的開始產(chǎn)生一個pause。每位數(shù)據(jù)占9 4US,調(diào)制信號在載波滿幅時為1,在pause期間為0,其中pause持續(xù)的時間寬度可參考圖2中的參數(shù)。編碼的邏輯I為時序X。邏輯O為時序Y。假如相鄰有兩個或更多的0,從第二個O開始采用時序Z。假如幀的起始位后的第一位為0,則用時序Z來表示這一位和直接跟隨其后的O。通信開始:時序Z ;通信結束:邏輯0,跟隨其后為時序Y ;無信息:至少有兩個時序Y。圖4和圖5表不了傳輸?shù)慕碡懜袷?。圖4表不的是短巾貞,用于初始化通信,其包含通信起始位S,7位數(shù)據(jù)(最低有效位低位LSB先發(fā)送)和通信結束位S。圖5表示的是標準幀,用于數(shù)據(jù)交換,其組成為通信起始位S,N*(8個數(shù)據(jù)位+奇校驗位)和通信結束位E。其中數(shù)據(jù)字節(jié)的最低有效位先發(fā)送,每一數(shù)據(jù)字節(jié)后有一奇校驗位。根據(jù)協(xié)議規(guī)定,100% ASK調(diào)制的,pause波形有一定的參數(shù)范圍(如圖2),RF射頻場強有一定范圍(1.5 7.5Α/πι)。對于不同參數(shù)的pause解調(diào)的數(shù)據(jù)寬度不同。另外隨著RF場強不同,天線包絡不同,因此解調(diào)的數(shù)據(jù)寬度也不同。而且解調(diào)的數(shù)據(jù)可能有一定的毛刺或噪聲影響有一定抖動。
另一方面,在pause期間天線上沒有載波,這樣非接觸式IC卡在pause期間不能提取出載波時鐘。不論是用時鐘恢復電路或用時鐘切換電路,得到的時鐘與載波時鐘比都
有一定的偏差。為了讓非接觸式IC更具有魯棒性,必須能在協(xié)議規(guī)定的各種情況下收到數(shù)據(jù),并且能在協(xié)議范圍上留有一定裕度。
發(fā)明內(nèi)容
為了能適用于IS0/IEC14443Type A協(xié)議不同pause形狀,不同RF場強下解調(diào)的數(shù)據(jù)寬度變化,并且能解決時鐘偏差的影響,本發(fā)明提供一種具有魯棒性的非接觸式IC卡的收數(shù)方法。本發(fā)明的特征在于,在非接觸式IC卡中依次按以下步驟實現(xiàn)的:步驟(I),模擬前端中的整流穩(wěn)壓電路從天線RF接收的RF載波信號中獲取非接觸式IC卡工作所需的直流電壓;步驟(2),模擬前端中的載波提取電路從所述載波中提取RF載波時鐘RF_CLK,輸入時鐘恢復或切換電路;步驟(3),模擬前端的所述時鐘恢復或切換電路接收到載波時鐘RF_CLK后,在間隙pause期間切換為頻率接近13.56MHz的時鐘,以此作為采樣時鐘CLK_S輸入到收數(shù)模塊中的128+16位的數(shù)據(jù)緩存中,步驟(4),所述解調(diào)電路過采樣從RF載波中解調(diào)的數(shù)據(jù)RF_DIN,在所述采樣時鐘CLK_S同步下,將其移入所述128+16位數(shù)據(jù)緩存中;步驟(5),所述收數(shù)模塊利用數(shù)據(jù)緩存中的數(shù)據(jù)去檢測通信起始位:當檢測到至少連續(xù)三個零時認為數(shù)據(jù)為“0”,檢測到的第一串連續(xù)“O”作為通信起始位,并以此連續(xù)“O”的中心位置作為位同步的基準,記錄最長連續(xù)“O”的長度;步驟(6),當連續(xù)“O”的中心位置移到數(shù)據(jù)緩存中,用X序列、Y序列和Z序列表示的三種變形米勒編碼序列中任何一個序列中,用第32 63位的中心位置作為前64位半位周期的中心位置,用第96 127位的中心位置作為后64位半位周期的中心位置:當前64位半位周期、后64位半位周期中“O”的個數(shù)都小于最長連續(xù)“O”長度的一半時,則整個位周期沒有“0”,數(shù)據(jù)為所述的Y序列,當所述前64位半位周期中“O”的個數(shù)大于所述后64位半位周期中“O”的個數(shù)時,數(shù)據(jù)為Z序列,其他情況下認為是X序列;步驟(7),所述收數(shù)模塊中的狀態(tài)機在收到步驟(5)中的所得到的通信起始位和位同步基準后,隔128個時鐘周期判斷所述通信起始位后的第一位數(shù)據(jù):若第一位數(shù)據(jù)是Y序列,則返回步驟(5),重新檢測通信起始位;步驟(8),所述狀態(tài)機在位同步基準后,每隔128個時鐘周期進行所述變形米勒編碼的序列判斷,判斷方法同步驟(6);步驟(9),以所述位同步基準為中心,開啟一個32個時鐘周期的校正“窗”,來檢測下一位數(shù)據(jù)的連續(xù)“O”的中心位置:若為Z序列,比較連續(xù)“O”的中心位置與對應的數(shù)據(jù)緩存中第96 127位的中的
位置之差,若為X序列,比較連續(xù)“O”的中的位置與對應的數(shù)據(jù)緩存中第32 63位的中的位置之差,若為Y序列,認為整個位周期沒有“O”,不去比較位置偏差,在所述校正“窗”結束時用所述的中心位置的偏差調(diào)整位同步基準,校正范圍為±8個時鐘周期,步驟(10),在所述校正“窗”結束時,用步驟⑶判斷的序列,判定序列緩存seq_buf [3:0],X序列與1101,Y序列與1111,Z序列與0111,并直起序列有效標志seq_val ;步驟(11),解碼后,得到:當前位cur_bit,當前位的有效標志bit_en在seq_buf [3:0] = 1101 時,cur_bit 為 1,其他情況下 cur_bit 為 O,在 seq_buf[7:0] = 0111-1111或1111-1111時,結束標識end_flag為I。本發(fā)明的有益效果是,能解調(diào)出pause解調(diào)寬度0.37 6.3us,每位時鐘偏差±8個周期的數(shù)據(jù),并且能很好的抵抗解調(diào)數(shù)據(jù)的毛刺和抖動,具有很好的魯棒性。
圖1為IS0/IEC14443Type A協(xié)議的接口通信信號舉例,調(diào)制方式采用ASK100%,編碼方式為變形米勒編碼,數(shù)據(jù)傳輸率為106k bit/s。圖2 為 IS0/IEC14443Type A 協(xié)議 100% ASK 調(diào)制的 pause 波形圖。圖3為IS0/IEC14443Type A協(xié)議變形米勒編碼的三種序列。圖4為IS0/IEC14443Type A協(xié)議的數(shù)據(jù)傳輸?shù)亩處袷?。圖5為IS0/IEC14443Type A協(xié)議的數(shù)據(jù)傳輸?shù)臉藴蕩袷健D6為本發(fā)明的收數(shù)模塊和模擬前端的結構框圖。圖7為模擬前端從RF獲得的解調(diào)數(shù)據(jù)RF_DIN和載波時鐘RF_CLK。圖8為天線載波時鐘RF_CLK和時鐘恢復后的采樣時鐘CLK_S。圖9為128+16位的數(shù)據(jù)緩存data_buf。圖10為檢測連續(xù)“O”的時序圖。圖11為狀態(tài)機。圖12為起始位檢測、狀態(tài)機變化和時鐘校正的關鍵時序圖。圖13為起始位檢測、狀態(tài)機變化和時鐘校正時對應的數(shù)據(jù)緩存data_buf中“O”位置變化圖。圖14為測試的pause解調(diào)寬度和對應pause期間允許的最小時鐘頻率。圖中RF表示接收到的天線波形,RF_CLK表示提取的載波時鐘,VDD表示整流穩(wěn)壓后的直流電壓,RF_DIN表示解調(diào)的數(shù)據(jù),CLK_S表示載波時鐘填補缺失后的采樣時鐘,data_buf表示128+16位的數(shù)據(jù)緩存,data_0表示檢測到連續(xù)零的標志,zero_ptr表示連續(xù)零的中心位置在數(shù)據(jù)緩存中的位置,max_len0表示最長連續(xù)零長度,halfl_cnt表示前半位周期中的零個數(shù),half2_cnt表示后半位周期中的零個數(shù),start_flag表示通信起始位標志,seq_x表示檢測的序列為X序列,seq_y表示檢測的序列為Y序列,seq_z表示檢測的序列為Z序列,bit_cnt表示位計數(shù)器,cnt表示計數(shù)器,window表示“窗”狀態(tài)標志,rec_cnt表示校正計數(shù)器,seq_val表示序列有效標志,seq_buf表示序列緩存,state表示狀態(tài)機狀態(tài),end_flag表示通信結束位標志,cur_bit表示位數(shù)據(jù),bit_en表示位數(shù)據(jù)有效標志,IDLE表示初始化狀態(tài),F(xiàn)IRST_CNT表示第一位數(shù)據(jù)位計數(shù)狀態(tài),F(xiàn)IRST_WIN表示第一位數(shù)據(jù)時鐘校正“窗”狀態(tài),F(xiàn)IRST_SEQ表示第一位數(shù)據(jù)序列判斷狀態(tài),BIT_CNT表示數(shù)據(jù)位 計數(shù)狀態(tài),REC_WIN表示時鐘校正“窗”狀態(tài),JUDGE_SEQ表示序列判斷狀態(tài)。
具體實施例方式本發(fā)明解決其技術問題所采用的技術方案是:首先,將從RF解調(diào)的數(shù)據(jù)用載波時鐘過采樣,存入128+16位的數(shù)據(jù)緩存data_buf中。其中采樣的載波時鐘是從RF提取的載波時鐘,在pause期間切換為接近載波頻率13 -56MHz的時鐘。根據(jù)協(xié)議IS0/IEC14443Type A規(guī)定,一位數(shù)據(jù)占128個載波周期,這樣就可以用128+16位數(shù)據(jù)緩存中的數(shù)據(jù)來判斷收到的是什么序列。變形米勒編碼有三種序列:X序列(1101)、Y序列(1111)和Z序列(0111)。每個序列由四個數(shù)組成,記為“S3S2S1S0”。這樣可以用數(shù)據(jù)緩存data_buf的O 31位表示S0, 32 63位表示SI, 64 95位表示S2,96 127位表示S3。然后,用數(shù)據(jù)緩存data_buf中的數(shù)據(jù)去檢測通信起始位。因為解調(diào)的數(shù)據(jù)可能有一定的毛刺或噪聲影響有抖動,所以在判斷序列的時候,認為一串連續(xù)“O”才為數(shù)據(jù)“0”,并且以連續(xù)“O”的中心位置作為位同步的基準。在沒有信息的時候,天線為滿幅,當收到第一串連續(xù)“O”的時候,認為檢測到了通信起始位。當?shù)谝淮B續(xù)O的中心位置移到S3中心位置時,數(shù)據(jù)緩存表示的序列為“0111”,即通信起始位,以此作為位同步基準。接著判斷后續(xù)序列和檢測通信結束位。在位同步基準后,隔128個時鐘周期,下一個序列剛好移入數(shù)據(jù)緩存data_buf中,可以判斷其對應的序列。根據(jù)IS0/IEC14443Type A協(xié)議的規(guī)定,如圖2所示,間隙pause有不同波形,從而解調(diào)的數(shù)據(jù)寬度有一定范圍。為了既能適用于比較寬的解調(diào)寬度,又能適用于比較窄的解調(diào)寬度,我們認為如果前半位周期有零,數(shù)據(jù)為X序列;如果后半位周期有零,數(shù)據(jù)為Z序列;如果整個位周期沒有零,數(shù)據(jù)為Y序列。這里用兩個計數(shù)器,分別記錄數(shù)據(jù)緩存data_buf中以S3和SI為中心的64位數(shù)據(jù)中O的個數(shù)。將收到數(shù)據(jù)中的最長連續(xù)O長度的一半,作為判斷半位周期中有沒有零的閾值。如果兩個序列為“YY”或“ZY”,則為通信結束位。時鐘偏差校正。在位同步起點后,隔128個時鐘周期,下一個序列剛好移入數(shù)據(jù)緩存data_buf中。如果沒有時鐘偏差,X序列“O”中心位置應該在數(shù)據(jù)緩存data_buf的SI的中心,Z序列“O”中心位置應該在數(shù)據(jù)緩存data_buf的S3的中心。如果有時鐘偏差,比較“O”中心位置與S3,S1的中心位置的偏差,就可以知道丟失了或增加了幾個時鐘,在下一位數(shù)據(jù)位同步的時候可以進行時鐘偏差校正。如果是Y序列就不能判斷時鐘偏差,但是通信期間,不會有兩個連續(xù)的Y序列,除非是通信結束位,因此可Y序列的前一位和后一位都能進行時鐘校正。本專利中,用一個32位的“窗”進行時鐘校正,每次能校正±16的時鐘偏差,考慮Y序列時不能校正時鐘偏差,因此能校正的時鐘偏差數(shù)為±8。本發(fā)明提出一種具有魯棒性的非接觸式IC卡的收數(shù)方法,能適用于不同pause形狀,不同RF場強下解調(diào)的數(shù)據(jù)寬度變化,并且能解決時鐘偏差。為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。圖6是本專利的非接觸式IC卡的收數(shù)模塊和模擬前端的結構框圖。I.模擬前端非接觸式IC卡是無源的,從天線RF接收的載波信號中獲取能量,模擬前端通過整流穩(wěn)壓電路得到IC卡工作所需的直流電壓VDD。通過天線RF的載波包絡解調(diào)出數(shù)據(jù)RF_DIN,通過時鐘提取時鐘電路獲得載波時鐘RF_CLK,如圖7所示。由于調(diào)制方式為100% ASK,所以在間隙pause期間,載波時鐘RF_CLK有一定缺失。載波時鐘RF_CLK通過時鐘恢復電路或時鐘切換電路,在間隙pause期間填補接近13.56ΜΗζ的時鐘,作為采樣時鐘CLK_S,如圖8所示。最終的采樣時鐘CLK_S有一定的時鐘缺失,并在間隙pause期間鐘頻率有變化。在圖7中,從RF解調(diào)出的數(shù)據(jù)RF_DIN,在天線波形滿幅時,為高電平1,在pause期間為低電平O。根據(jù)14443A協(xié)議的規(guī)定,pause的波形由四個參數(shù)tl,t2, t3, t4確定(參考圖2)。對于不同參數(shù)的pause解調(diào)出的數(shù)據(jù)寬度tpase不同。另外隨著RF場強不同,天線包絡也有變化,從而影響pause的解調(diào)寬度tpause。因此,解調(diào)的數(shù)據(jù)寬度tpause隨RF場強和pause參數(shù)的變化而變化。從理論上來講,根據(jù)圖2,pause解調(diào)寬度tpause,最寬不超過timax+tsmax = 3 *0+1 *5 = 4.5(us),最窄不窄于 t2niin = O *5us,即 0.5us ( tpause ( 4 *5us,換句話說pause解調(diào)的連續(xù)零的時間為6到60個時鐘周期。2.數(shù)據(jù)緩存模擬前端解調(diào)的數(shù)據(jù)RF_DIN,用采樣時鐘CLK_S同步采樣,移入數(shù)據(jù)緩存data_buf 中 .根據(jù)IS0/IEC14443Type A協(xié)議規(guī)定,數(shù)據(jù)傳輸率為 13.56ΜΗζ/128=106Κν8,這樣一位數(shù)據(jù)占128個載波周期。變形米勒編碼有三種序列:Χ序列(1101)、Υ序列(1111)和Z序列(0111)。每個序列由四個數(shù)組成,記為“S3S2S1S0”。一個序列占128個載波周期,因此序列中每一個數(shù)占32個載波周期。這樣就可以用數(shù)據(jù)緩存data_buf的O 31位表示SO,32 63位表示SI,64 95位表示S2,96 127位表示S3,如圖9所示。3.檢測連續(xù)零、記錄連續(xù)零的長度和位置如圖10所示,此當data_buf最低位data_buf [O]連續(xù)出現(xiàn)3個O,將data_0置為高,然后記錄連續(xù)零的長度zero_len和最長的連續(xù)零個數(shù)max_len0。由于連續(xù)“O”的兩邊可能有毛刺或抖動,但連續(xù)“O”的中心位置是比較準確的,因此在判斷序列和位同步的時候都是以連續(xù)“O”的中心位置作為基準去判斷。所以在連續(xù)“O”結束后,用計數(shù)器Zeix)_ptr記錄連續(xù)“O”的中心位置在數(shù)據(jù)緩存data buf的位置。在滿一位周期前,如果出現(xiàn)更長的連續(xù)零,zero_ptr將記錄更長的連續(xù)零的中心位置。4.半位周期零計數(shù)器與序列判斷 觀察三種序列:X序列(1101 )、Y序列(1111)和Z序列(0111 ),可以發(fā)現(xiàn)X序列只有SI是0,Z序列只有S3是0,而Y序列沒有零??梢娕袛嘈蛄嘘P鍵是判斷“O”的位置,也就是pause的位置。根據(jù)前面介紹pause的解調(diào)寬度tpause為0.5us 4.5us。因此“O”的寬度可能會大于四分之一的位周期2.36us,但是不會大于一半的位周期4.7us。為了適用于不同的解調(diào)寬度,所以我們認為如果“O”出現(xiàn)在前半位周期,數(shù)據(jù)為X序列;若“0”出現(xiàn)在后半位周期,數(shù)據(jù)為Z序列;若沒有零,則數(shù)據(jù)位Y序列。 在判斷序列時,我們已經(jīng)將“O”的中心位置移到數(shù)據(jù)緩存S3或SI的中心位置。所以只需要判斷如圖所示的計數(shù)器halfl_cnt和half2_cnt,它們分別計算了前半位周期和后半位周期中的零的個數(shù)。有數(shù)據(jù)“O”的時候,比較halfl_cnt和half2_cnt的大小就可以知道是序列X還是Z。沒有數(shù)據(jù)“0”,序列為Z序列。在判斷有沒有數(shù)據(jù)“O”的時候,因為一些毛刺或前后序列中比較寬的“O”影響,Z序列中halfl_cnt和half2_cnt不會為O。因此需要一個閾值去判斷有沒有數(shù)據(jù)“O”。我們認為在一次收數(shù)的過程中,pause的解調(diào)寬度基本保持不變,因此可以用最大連續(xù)零的長度max_lenO的一半half_lenO作為閾值。綜上,判斷序列:當halfl_cnt和half2_cnt均小于max_len0的一半,序列為Y ;否則,當halfl_cnt大于half2_cnt時,序列為Y ;其他情況下,序列為Z。5.起始位判斷在沒有信息的時候,天線為滿幅(Y序列)。當收到一串數(shù)據(jù),先有通信起始位,即Z序列。所以當檢測到第一個Z序列,就開始收數(shù)了。當?shù)谝淮B續(xù)“O”的中心位置移到data_buf的S3的中心位置的時候,可能找到了起始位,所以將start_f lag置為高。然后以此為位同步起點,進行后面序列的判斷。6.狀態(tài)機與時鐘校正本專利用狀態(tài)機去控制序列判斷和時鐘校正。如圖11所示,狀態(tài)機共有七個狀態(tài)分別是:初始化狀態(tài)IDLE,第一位數(shù)據(jù)位計數(shù)狀態(tài)FIRST_CNT,第一位數(shù)據(jù)的時鐘校正“窗”狀態(tài)FIRST_WIN,第一位數(shù)據(jù)序列判斷狀態(tài)FIRST_SEQ,其他位數(shù)據(jù)位計數(shù)狀態(tài)BIT_CNT,時鐘校正“窗”狀態(tài)REC_WIN和序列判斷狀態(tài)JUDGE_SEQ。初始化的時候,狀態(tài)機為IDLE狀態(tài)。當檢測到通信起始位,start_flag置為I,狀態(tài)機進入FIRST_CNT狀態(tài),位計數(shù)器bit_cnt開始計數(shù)。這樣就以start_flag置起的時刻為起點,進行位同步。起始位后等128個時鐘周期,(^丨3_131^中的序列為起始位后的第一位數(shù)據(jù)。因此當位計數(shù)器bit_cnt計到128時,第一位數(shù)據(jù)剛好完全移入data_buf中,此時可以判斷第一位數(shù)據(jù)。因此在bit_cnt=128時,判斷halfl_cnt,half2_cnt和max_len0/2的關系,從而判斷是什么序 列:若為X序列置起seq_x’若為Y序列置起seq_y,若為Z序列置起seq_z。同時,在bit_cnt=128時,檢測下一位數(shù)據(jù)零的中心位置zero_ptr,用于校正時鐘偏差。當下一個序列為Z序列,中心位置應該為128-16=112,但若丟失時鐘,zer0_ptr會大于112,若增加了時鐘周期,zero_ptr會小于112??紤]到zero_ptr有大有小,直接跟112相減比較差值,會有負數(shù)出現(xiàn),為了表示方便,zeiO_ptr加16肯定比112大,所記校正計數(shù)器 rec_cnt= (zero_ptr+16) -(128-16) =zero_ptr_96。這樣就可以用 rec_cnt 表不時鐘偏差數(shù)了。同理當下一個序列為X序列,記為rec_cnt=(zero_ptr+16)_ (64-16) =zero_ptr-32。由于pause期間時鐘有一定偏差,所以我們在位計數(shù)器計bit_cnt=128前后,開啟一個以128為中心的32個時鐘周期的“窗”,來檢測下一位數(shù)據(jù)連續(xù)“O”的中心位置,從而校正時鐘偏差。這個“窗”就用時鐘糾正“窗”狀態(tài)FIRST_WIN來表示。當位計數(shù)器bit_cnt計到 127-16=111 時,進入 FIRST_WIN 狀態(tài);ibit_cnt 計到 127+16=134 時,結束 FIRST_WIN狀態(tài)。只有下一序列為X、Z序列時才能校正時鐘偏差,而且一次校正能校正的時鐘偏差數(shù)為±16。如果下一序列為Y序列,沒有連續(xù)零“0”,不能校正這一位的時鐘偏差。在通信過程中,不會出現(xiàn)連續(xù)兩個Y序列,除非是通信結束位。因此32個時鐘周期長度的窗可以校正時鐘個數(shù)偏差為±8。換句話說,一位數(shù)據(jù)中時鐘多8個周期或少8個周期都可以糾正回來。當位計數(shù)器bit_cnt計到127+16=134時,狀態(tài)機進入FIRST_SEQ狀態(tài),根據(jù)已判斷的序列做相應處理。如果在bit_cnt=128時,判斷的序列為seq_x或seq_z,在seq_buf低4位寫入1101或0111,并置起序列有效標志seq_val。若判斷的序列為seq_y,由于起始位后只能是,此時起始位有可能判斷錯誤,所以將狀態(tài)回到IDLE狀態(tài)。同時在FIRST_SEQ狀態(tài)下,將校正計數(shù)器rec_cnt中的數(shù)給bit_cnt,開始下一序列的判斷,這樣就完成了時鐘偏差糾正。若序列不為Y序列,狀態(tài)機進入位計數(shù)狀態(tài)BIT_CNT,與FIRST_CNT相同。然后當bit_cnt=127-16時,狀態(tài)進入校正“窗”狀態(tài)REC_WIN,與FIRST_WIN相同。再當bit_cnt=127+16時,狀態(tài)進入序列判斷狀態(tài)JUDGE_SEQ,與FIRST_SEQ相似。不同的是JUDGE_SEQ狀態(tài)中判斷的序列可以有Y序列,當序列為Y序列時,Seq_buf后四位標記為1111。另夕卜,因為兩個連續(xù)序列為“ZY”或“YY”是通信結束位,所以當seq_buf為“0111-1111”或“1111-1111 ”時,將置起通信結束標志end_f lag,回到IDLE狀態(tài)。若沒有end_f lag,狀態(tài)機繼續(xù)到BIT_CNT進行下一位數(shù)據(jù)的判斷,直到檢測到通信結束位為止。如圖12和圖13,舉例說明判斷起始位,第一位數(shù)據(jù)的判斷和時鐘校正時關鍵信號的變化和數(shù)據(jù)緩存中數(shù)據(jù)的變化。①時刻,第一個長度為η的連續(xù)“O”剛好完全移入data_buf中,“O”的中心位置指針zero_ptr表示的是[n/2+l]([]取整操作)。②時刻,第一個連續(xù)“O”的中心位置移到了 data_buf的S3的中心位置的,檢測到了通信起始位,置起起始位標識start_flag。③時刻,bit_cnt=127_16,狀態(tài)機進入第一個時鐘矯正“窗”狀態(tài)FIRST_WIN。④時刻,bit_cnt=128,進行序列判斷和時鐘偏差判斷。如例中,前半位周期中的零個數(shù)halfl_cnt大于最長零長度max_len0的一半,且前半位周期中的零個數(shù)halfl_cnt大于后半位周期中的零個數(shù)half0_cnt,因此序列為Z序列,置起seq_z。此時,如果時鐘沒有偏差,第二個序列的“O”中心位置應在S3或SI的中心位置。但此例中zero_ptr=116,第二個序列“O”中心位置距S3中心位置差4位,所以丟失了 4個時鐘周期的時鐘。rec_cnt=zeix)_ptr-96=l 16-96=20ο⑤時刻,cnt=127+16,時鐘校正“窗”結束,將校正計數(shù)器rec_cnt的值賦給bit_cnt,開始下一位數(shù)據(jù)的計數(shù)。如果沒有時鐘丟失,此時bit_cnt應從16開始。而此例中bit_cn從20開始, 這樣起點推后了 4個時鐘周期,相當于彌補了丟失的4個時鐘。7.解碼通過變形米勒編碼,邏輯I可表示為X序列(1101 ),邏輯O可表示為Y序列(1111)或Z序列(0111)。因此當seq_val有效時,若seq_buf低4位為“1101”時,數(shù)據(jù)為“1”,其他情況下,數(shù)據(jù)為“O”。即seq_buf [3:0] = 1101時,cur_bit為I,其他情況下,cur_bit為
O。同時置起bit_en,標志當前數(shù)據(jù)有效。本實施例在臺灣積體電路制造股份有限公司ISOnm工藝下進行設計,最終芯片測可知,根據(jù)協(xié)議改變pause的不同參數(shù),改變天線RF的不同場強,本實例能解出的正確的數(shù)據(jù)。如圖14為pause期間的解調(diào)寬度和對應pause期間時鐘允許的最小頻率,本實例能解出pause解調(diào)寬度在范圍是0.37 6.2ιι 在協(xié)議范圍上還能留有一定裕度。,因此pause解調(diào)寬度從6.2 I ^lus,解調(diào)寬度越小,允許的最小時鐘頻率越低,因為能糾正的時鐘偏差個數(shù)一定。當pause解調(diào)寬度小于I.Ius后,pause期間允許的時最小時鐘頻率反而增大,因為至少采到三個連續(xù)零才認為是數(shù)據(jù)零。所以pause。另外在測試過程中,在天線RF加入一定的噪聲,本實例也能很好的解調(diào)出正確的數(shù)據(jù)。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種具有魯棒性的非接觸式IC卡的收數(shù)方法,其特征在于,是在非接觸式IC卡中依次按以下步驟實現(xiàn)的: 步驟(1),模擬前端中的整流穩(wěn)壓電路從天線RF接收的RF載波信號中獲取非接觸式IC卡工作所需的直流電壓; 步驟(2),模擬前端中的載波提取電路從所述載波中提取RF載波時鐘RF_CLK,輸入時鐘恢復或切換電路; 步驟⑶,模擬前端的所述時鐘恢復或切換電路接收到載波時鐘RF_CLK后,在間隙pause期間切換為頻率接近13.56MHz的時鐘,以此作為采樣時鐘CLK_S輸入到收數(shù)模塊中的128+16位的數(shù)據(jù)緩存中, 步驟(4),所述解調(diào)電路過采樣從RF載波中解調(diào)的數(shù)據(jù)RF_DIN,在所述采樣時鐘CLK_S同步下,將其移入所述128+16位數(shù)據(jù)緩存中; 步驟(5),所述收數(shù)模塊利用數(shù)據(jù)緩存中的數(shù)據(jù)去檢測通信起始位:當檢測到至少連續(xù)三個零時認為數(shù)據(jù)為“O”,檢測到的第一串連續(xù)“O”作為通信起始位,并以此連續(xù)“O”的中心位置作為位同步的基準,記錄最長連續(xù)“O”的長度; 步驟(6),當連續(xù)“O”的中心位置移到數(shù)據(jù)緩存中,用X序列、Y序列和Z序列表示的三種變形米勒編碼序列中任何一個序列中,用第32飛3位的中心位置作為前64位半位周期的中心位置,用第96 127位的中心位置作為后64位半位周期的中心位置:當前64位半位周期、后64位半位周期中“O”的個數(shù)都小于最長連續(xù)“O”長度的一半時,則整個位周期沒有“O”,數(shù)據(jù)為所述的Y序列,當所述前64位半位周期中“O”的個數(shù)大于所述后64位半位周期中“O”的個數(shù)時,數(shù)據(jù)為Z序列,其他情況下認為是X序列; 步驟(J),所述收數(shù)模塊中的狀態(tài)機在收到步驟(5)中的所得到的通信起始位和位同步基準后,隔128個時鐘周期判斷所述通信起始位后的第一位數(shù)據(jù):若第一位數(shù)據(jù)是Y序列,則返回步驟(5),重新檢測通信起始位; 步驟(8),所述狀態(tài)機在位同步基準后,每隔128個時鐘周期進行所述變形米勒編碼的序列判斷,判斷方法同步驟(6); 步驟(9),以所述位同步基準為中心,開啟一個32個時鐘周期的校正“窗”,來檢測下一位數(shù)據(jù)的連續(xù)“O”的中心位置: 若為Z序列,比較連續(xù)“O”的中心位置與對應的數(shù)據(jù)緩存中第96 127位的中的位置之差, 若為X序列,比較連續(xù)“O”的中的位置與對應的數(shù)據(jù)緩存中第32飛3位的中的位置之差, 若為Y序列,認為整個位周期沒有“O”,不去比較位置偏差, 在所述校正“窗”結束時用所述的中心位置的偏差調(diào)整位同步基準,校正范圍為±8個時鐘周期, 步驟(10),在所述校正“窗”結束時,用步驟⑶判斷的序列,判定序列緩存seq_buf [3:0],X序列與1101,Y序列與1111,Z序列與0111,并直起序列有效標志seq_val ; 步驟(11),解碼后,得到:當前位cur_bit,當前位的有效標志bit_en在seq_buf [3:0] =1101 時,cur_bit 為 1,其他情況下 cur_bit 為 O,在 seq_buf [7:0] =0111-1111 或1111-1111 時,結束標識 end_flag 為 I。
全文摘要
一種具有魯棒性的非接觸式IC卡的收數(shù)方法,屬于IC卡接收數(shù)據(jù)的技術領域,其特征在于適應不同的數(shù)據(jù)解調(diào)寬度,校正時鐘偏差。用恢復的載波時鐘過采樣解調(diào)數(shù)據(jù),并存入128+16位的數(shù)據(jù)緩存中;檢測數(shù)據(jù)緩存中連續(xù)零,并記錄連續(xù)零的中心位置和最長連續(xù)零的長度;通過判斷數(shù)據(jù)緩存中前、后64位中零的個數(shù)和最長連續(xù)零長度的關系來判斷序列,以適應不同的數(shù)據(jù)解調(diào)寬度;將檢測到的第一串較長連續(xù)零的中心位置作為位同步基準,以此為通信起始位;其后每128個時鐘周期進行序列判斷,并比較Z或X序列中零的中心位置與數(shù)據(jù)緩存第32~63位或第96~127位的中的位置的偏差,用以調(diào)整位同步基準,從而校正時鐘偏差。
文檔編號G06K7/00GK103106379SQ201310007250
公開日2013年5月15日 申請日期2013年1月9日 優(yōu)先權日2013年1月9日
發(fā)明者魏元珍, 林平分, 萬培元, 莊曉青, 吳旭文, 周成沖, 王素琴, 李鑫輝, 張陽, 王長弘 申請人:北京工業(yè)大學