專利名稱:用內(nèi)嵌的循環(huán)冗余校驗校驗eeprom數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機存儲器。更具體地說,本發(fā)明涉及校驗存儲在電子可擦除編程只讀存儲器(EEPROM)內(nèi)的數(shù)據(jù)的完整性的方法及設(shè)備。
許多年以來,循環(huán)冗余校驗(CRC)已經(jīng)成為計算機產(chǎn)業(yè)的組成部分。實際的算法可以在因特網(wǎng)上免費得到。對循環(huán)冗余校驗的簡要介紹已經(jīng)由加州圣瓊斯市(San Jose)的ACI US公司的Ruffin Scott先生寫出。他的技術(shù)說明可以在http//www.acius.com/ACIDOC/CMU/CMU79909.HTM上得到。另一個介紹由Eric-Paul Rebel(埃里克-保羅.瑞貝爾)先生寫出,并可以在http//utopia.knoware.nl/users/eprebel/Communication/CRC上得到。但是,對CRC最好的總體介紹是由Rocksoft Pty有限公司的Ross Williams寫出。它被稱為“CRC誤差檢測算法的輕松指南”,可以在ftp//ftp.rocksoft.com/clients/rocksoft/papers/crc_v3.txt上得到。所有文章在這里插入用于參考。
存在不同方法來計算用于二進制數(shù)據(jù)的校驗號,以便能夠例如在經(jīng)過某些通信信道發(fā)送之后查看數(shù)據(jù)是否改變。循環(huán)冗余校驗(CRC)是用于以這種方式保護二進制數(shù)據(jù)的通用方法。存在不同的CRC,在過去已經(jīng)導(dǎo)致了命名問題。
CRC發(fā)生器可以構(gòu)建成一件如
圖1所示的硬件。特定發(fā)生器多項式是初始化為0xFFFF的g(x)=x16+x12+x5+x0。例如,二進制數(shù)據(jù)的每個位(b)在用CRC最高有效位“異或”(XOR)運算之后移至CRC寄存器。發(fā)生器的這部分確保CRC的循環(huán)形態(tài)(aspect)?!爱惢颉边\算結(jié)果也被插入CRC位5和12。在處理位b期間,所有當前的CRC位(修正的或未修正的)向左移一位。如果必須處理一字節(jié),則所有8位必須一個接一個地進行處理。最高有效位首先被處理。
人們可以以軟件構(gòu)建CRC發(fā)生器,它類似于硬件方案。該方案單獨處理每個位。利用C編程語言,源代碼可以是<pre listing-type="program-listing"><![CDATA[unsigned short crc=0xFFFF;unsigned short temp;unsigned short byte=0x5A;//僅僅作為示例unsigned short index;for(index=0;index<=7;index++){temp=(crc>>15)^(byte>>7);crc<<=1;if(temp){crc^=0x1021;}byte<<=1;}]]></pre>首先計算b“異或”c15(循環(huán)值)。然后CRC位向左移位(c0成為0)。循環(huán)值必須在c0、c5和c12中進行處理。如果循環(huán)值等于1,則位c0、c5和c12同時通過利用值0001、0000、0010、0001(0x1021)對CRC“異或”來改變。如果循環(huán)值等于0,則CRC與值0000 0000 0000 0000進行“異或”運算。用0x0000“異或”CRC不會改變CRC,因此可以跳過。最后,準備處理下一位。
只讀存儲器(ROM)是具有即使在掉電的情況下也不會改變內(nèi)容的簡單存儲器。該內(nèi)容是在制造期間編寫的,并且在以后不可改變的。ROM用于非常高容量控制應(yīng)用,其中通過在存儲芯片內(nèi)大規(guī)模生產(chǎn)程序而獲得的簡單性、低單件成本是重要的。
其它通用非易失性存儲器是PROM、EPROM和EEPROM??删幊讨蛔x存儲器(PROM)可以通過不可逆處理由用戶進行編程;一旦寫入,PROM不能改變??刹脸齈ROM(EPROM)是可以通過強紫外線光的照射允許可逆進行的編程。電可擦除PROM(EEPROM)是可以通過利用重設(shè)內(nèi)部存儲單元的更大電流來改變。EPROM和EEPROM十分有用,因為它們可以不受掉電的影響;但是,它們僅能夠非常緩慢地進行重新編程(寫入),并僅能夠使用有限次的時間量。EEPROM的進一步探討可以在William D.Brown和Joe E.Brewer所著的“非易失性半導(dǎo)體存儲器技術(shù),一個理解和應(yīng)用NVSM裝置的綜合指南”(IEEEpress,Piscataway,NJ,1998)的第37-39、42-47、67、115-120、129-133、192-193、309以及352頁中得到,這里引用作參考。
由于缺少對編程高電壓的良好控制,所以在電池或缺少電池的環(huán)境下,EEPROM的操作可能是不確定的。結(jié)果,誤寫入的機會大于具有良好控制的環(huán)境的情況。希望知道被存儲的數(shù)據(jù)是否有誤。因此本技術(shù)需要一種用于確保存儲在PROM中的數(shù)據(jù)的完整性的方法和設(shè)備。
本發(fā)明通過提供至少一個連接到兩組塊的保持鎖存器(holding latch)來解決本技術(shù)的固有問題。第一組塊包含數(shù)據(jù)。第二組塊包含對應(yīng)于第一組塊中的數(shù)據(jù)的CRC信息。一旦從第一數(shù)據(jù)塊中讀取數(shù)據(jù),則還要從對應(yīng)的CRC塊中讀取CRC信息。讀取的數(shù)據(jù)應(yīng)用于CRC算法以產(chǎn)生當前CRC值。然后將當前CRC值與從對應(yīng)的CRC塊中獲得的CRC信息進行比較。如果兩個CRC值相同,則認為數(shù)據(jù)有效。否則,認為該數(shù)據(jù)無效?;谶@個結(jié)果,發(fā)送適當?shù)男盘枴?br>
通過以下對結(jié)合附圖和用于公開目的本發(fā)明優(yōu)選實施例的描述,本發(fā)明的其它和進一步的目的、功能和優(yōu)點將會變得更加清楚。
圖1描述現(xiàn)有技術(shù)的CRC硬件;圖2是本發(fā)明的數(shù)據(jù)塊和CRC塊的示意圖;圖3是本發(fā)明的生成CRC值的方法的流程圖;圖4是根據(jù)本發(fā)明的寫入驗證(verifiable)信息的方法的流程圖;圖5是根據(jù)本發(fā)明的讀取驗證信息的方法的流程圖;本發(fā)明應(yīng)用于PROM、EPROM以及EEPROM。但是,本發(fā)明可以用于任意存儲器類型,在其中希望知道包含在存儲器內(nèi)的數(shù)據(jù)是否與寫入時的數(shù)據(jù)相同,或者數(shù)據(jù)在其寫入時間和其讀取時間之間已經(jīng)被誤用。
用于基于可寫EEPROM的RFID標記的防損耗(anti-tearing)實例防損耗問題術(shù)語“防損耗”指在電子裝置操作期間該裝置與其電源脫離。這個問題特別集中在由智能卡或任何存儲裝置完成的金融或保安交易中,其中相關(guān)的帳戶數(shù)據(jù)存儲在卡本身而不是存儲在中央數(shù)據(jù)庫中。由ATM卡處理的銀行帳戶數(shù)據(jù)存儲在銀行數(shù)據(jù)庫中,而不是存儲在ATM卡本身。這種情況不會存在防損耗問題,因為ATM卡上的數(shù)據(jù)不會改變。
如果人們具有遠程存儲的數(shù)據(jù)庫而沒有中央數(shù)據(jù)庫,則需要某種安全裝置(safeguard)來保證數(shù)據(jù)正確地從數(shù)據(jù)庫中接收或?qū)懭霐?shù)據(jù)庫中。這些安全裝置需要了解在交易期間以及在交易之間出現(xiàn)的環(huán)境條件。如果這些智能卡放在錢夾中或遺留在汽車里,則它們會遇到擠壓、扭曲、溫度、沖擊和濕度的環(huán)境因素。包含在這種卡中數(shù)據(jù)的完整性在這些壓力之后不可能被認為是正確的。
本發(fā)明利用CRC保護,從而內(nèi)容的遲后查詢可以確定存儲的數(shù)據(jù)與原先寫入的數(shù)據(jù)相同,還是它已經(jīng)改變。這個概念廣泛地由硬盤驅(qū)動器部門使用,盡管直至本發(fā)明的出現(xiàn)為止,它還沒有應(yīng)用于可編程只讀存儲器。
EEPROM操作EEPROM狀態(tài)通過將高電壓施加于其一定數(shù)量的時間來改變。經(jīng)過薄絕緣層的高電壓使得小數(shù)量的電荷穿過薄氧化物層。當足夠的電荷已經(jīng)穿過該氧化物層時,EEPROM的浮動?xùn)派系慕Y(jié)果電壓(resulting voltage)的變化使得數(shù)字數(shù)據(jù)狀態(tài)改變。數(shù)據(jù)狀態(tài)通過導(dǎo)通單元并讀取單元電流從EEPROM讀取。當柵極上的正電荷引起電流時,n通道單元的浮動?xùn)派系呢撾姾刹粫痣娏髁鲃?。?shù)據(jù)從0變成1或相反情況的點,在某種程度上是任意的,而且依賴于在感應(yīng)放大器中測量的電流閾值。
EEPROM的另一個方面是其數(shù)據(jù)的保存。電荷僅可以保存在浮動?xùn)派嫌邢迶?shù)量的時間,盡管這通常是幾百年。因此,我們不會希望在EEPROM開始讀取正確值的第一瞬間停止編程單元,因為在以后時間,某些單元可能偏離其狀態(tài)。電荷損失由于更高的溫度而加劇,當然每個單元將會具有不同的電荷損失特性。已知這種如何編程EEPROM的情況,總是希望確保對EEPROM足夠好地編程,以便在以后的使用壽命中電荷損失不會使其數(shù)據(jù)失效。如果不能保護好穩(wěn)健的編程周期,則在以后只知道有效無效的日期是否足夠。本發(fā)明解決了有效/無效的狀態(tài)問題。
無線EEPROM操作當電壓和操作電源來自RF場(field)時,保證足夠高的電壓以編程卡中的EEPROM的問題變得更加嚴重。相對于需要物理電子觸面(contact)的卡,近似RF處理(transaction)卡具有方便的優(yōu)點。具體地說,人們不必向機器交出他們的卡并希望它們將其交還。而且,卡上的物理觸面會引起不適當?shù)哪p,并有可能被損壞。RF處理的不利方面是RF場的每個點的場強是未知的,并且隨時間可以改變。詢問器線圈(interrogator coil)的標記間距和方向?qū)⒋_定場強。標記可以只進入或處于可用的RF場的邊緣。標記可以在這個場內(nèi)移動,或者它可以在試圖進行操作時離開該場。如果具有多個詢問器線圈則形成場“null(零)”。因此,RF環(huán)境的不確定性很難確定高電壓和時間是否足夠用于適當?shù)赝瓿删幊滩僮鳌?br>
本發(fā)明克服了上述問題中的一些問題。盡管這些“認可”高電壓以便EEPROM不會無法編程的方法已經(jīng)是現(xiàn)有技術(shù)的課題,但是那些現(xiàn)有技術(shù)的方法不會形成穩(wěn)健操作。如果人們想要在編程之前執(zhí)行預(yù)檢(pre-check)以認定高電壓為衰耗(die),則在編程期間不保證高電壓對每個單元是足夠的。預(yù)檢可以工作但高電壓可能會在編程期間消失。而且,預(yù)檢會占用相當數(shù)量的時間。例如,如果人們希望對高電壓執(zhí)行預(yù)檢和后檢(post-check),則這會有用。但是,測試處理突出了有關(guān)電壓檢測方案的另一個不確定性你如何知道高電壓電平和時間對特定單元的成功編程而言是十分足夠的?由于處理變化,EEPROM單元甚至可以一位一位地變化,并且真正知道的途徑只有之后讀取數(shù)據(jù)。這已經(jīng)成為智能卡集成電路的公知問題,即確定高電壓足夠用于編程。本發(fā)明的一個安全裝置是在程序處理之后,RF標記在編程之后立刻讀取回EEPROM內(nèi)容。如果詢問器不能在處理時間取回正確的數(shù)據(jù),則響起警報,從而提醒人們發(fā)生了不適當事件。這對于立刻檢查很好,但人們?nèi)绾未_定幾個月后讀取的數(shù)據(jù)與現(xiàn)在寫入的數(shù)據(jù)相同?這個問題由本發(fā)明解決。
現(xiàn)在回到附圖。在本發(fā)明中,如圖2所示存儲器被描述成對于每個塊都具有數(shù)據(jù)部分和對應(yīng)CRC部分。盡管在不脫離所附權(quán)利要求的范圍和實質(zhì)的情況下的可選實施例中可以是其它類型的存儲器,然而本發(fā)明的優(yōu)選實施例是EEPROM存儲器。每個數(shù)據(jù)塊(22、24、26、...、28)具有相關(guān)的CRC塊(分別為32、34、36、...、38)。另外描述的是保持將要寫入存儲器中的數(shù)據(jù)的保持鎖存器。這些鎖定器是直接用于保持將要寫入的數(shù)據(jù),并不真正與本發(fā)明的方法相關(guān)。任何鎖定器或其等同裝置可用于本發(fā)明。
CRC值的生成在圖3中描述。首先,數(shù)據(jù)40通過隨后生成CRC值44的CRC計算器發(fā)送。在優(yōu)選實施例中,CRC塊將包含在寫入命令正在發(fā)送到該裝置時計算的CRC值。因此,每當寫入數(shù)據(jù)塊時,CRC計算器計算在命令正在發(fā)送和當編程實際發(fā)生時的CRC值,CRC被編程到與數(shù)據(jù)塊有關(guān)的CRC塊中。這個命令通常包括數(shù)據(jù)塊和數(shù)據(jù)地址。結(jié)果,數(shù)據(jù)塊對應(yīng)的CRC值將包含與該塊本身的數(shù)據(jù)以及該塊的地址相關(guān)的信息。
寫入操作將包括向裝置發(fā)送命令,該裝置在CRC發(fā)生器42于命令期間正在計算CRC值44時會放置將要寫入到數(shù)據(jù)保持鎖存器12。注意,正在計算的CRC值44是通常包括寫入操作(op)代碼、存儲地址以及存儲數(shù)據(jù)的完整寫入命令。命令(包括數(shù)據(jù)和塊地址)隨傳輸?shù)臋z查CRC發(fā)送。如果結(jié)果CRC與檢查CRC相匹配,則該結(jié)果CRC隨塊數(shù)據(jù)裝載到一個或多個保持鎖存器中。整個保持鎖存器數(shù)據(jù)(附加了CRC值的數(shù)據(jù))同時被寫入EEPROM。
具體的寫入操作在圖4中描述。首先,將要寫入EEPROM的數(shù)據(jù)在步驟404中提供。接著,利用提供的數(shù)據(jù)在步驟406中計算CRC值。之后,在步驟408,將數(shù)據(jù)寫入EEPROM的數(shù)據(jù)塊的數(shù)據(jù)部分中。最后,在步驟410中,將CRC值寫入數(shù)據(jù)塊的CRC部分,并且處理在步驟412結(jié)束。
當讀取數(shù)據(jù)塊時,讀取該數(shù)據(jù)塊和相關(guān)的CRC塊。讀取子系統(tǒng)必須會計算該CRC塊中的數(shù)據(jù),并確定CRC是否正確。隨后,為了進行讀取處理,讀取器子系統(tǒng)1)發(fā)送讀取命令;2)從存儲器中讀取數(shù)據(jù)塊,包括正常的數(shù)據(jù)和CRC值;3)為將剛剛讀取的數(shù)據(jù)寫入的寫入命令計算CRC;以及4)用比較器將計算的CRC與從存儲器讀出的CRC值進行比較。比較器是現(xiàn)有技術(shù)中已知的簡單電路,它用于比較兩個相同規(guī)模的數(shù)據(jù)。比較器僅僅得出兩個數(shù)據(jù)是否相同。來自比較器的信號可以用于為其它電路提供該數(shù)據(jù)是有效還是無效的信號。
如果最近計算的CRC值(基于讀取的數(shù)據(jù))與從存儲器讀取的CRC值不匹配,則下述條件之一已經(jīng)發(fā)生1)數(shù)據(jù)塊中的數(shù)據(jù)已經(jīng)改變;2)存儲在CRC塊中的CRC值已經(jīng)改變;或者3)裝置將數(shù)據(jù)寫入錯誤的塊中。在任何情況下,該數(shù)據(jù)被認為是無效,并且發(fā)送適當?shù)男盘?。例如,如果?shù)據(jù)被認為是有效,則可以發(fā)送VALID(有效)信號,否則可以發(fā)送INVALID(無效)信號?;蛘?,信號僅在數(shù)據(jù)被認為是有效時發(fā)送。在這種情況下,電路必須尋找該信號,而且如果沒有出現(xiàn),則認為數(shù)據(jù)是有效的,并進行相應(yīng)的處理。在另一可選實施例中,信號僅在數(shù)據(jù)被認為是無效時發(fā)送。在這種情況下,電路必須尋找該信號,而且如果出現(xiàn),則認為數(shù)據(jù)是無效的,并進行相應(yīng)的處理。
本發(fā)明的讀取操作在圖5中描述。具體地說,操作在步驟504開始,其中數(shù)據(jù)從EEPROM的數(shù)據(jù)塊的數(shù)據(jù)部分中讀取。接著,在步驟506中,從與先前讀取的數(shù)據(jù)塊的數(shù)據(jù)部分相對應(yīng)的數(shù)據(jù)塊的CRC部分讀取CRC值。本領(lǐng)域的技術(shù)人員會理解上述兩個讀取操作可以減少成單個讀取操作,其中讀取單個數(shù)據(jù)流,然后分成數(shù)據(jù)分量(component)和CRC分量。在任何情況下,當前CRC值在步驟508利用CRC計算器進行計算。比較器在步驟510用于比較當前CRC值(基于讀取的數(shù)據(jù))和讀取的CRC值(基于寫入的數(shù)據(jù))。在步驟512中確定兩個CRC值是否相等(即該數(shù)據(jù)是否有效)。如果測試為正(是)則執(zhí)行步驟514,發(fā)送VALID信號。否則,執(zhí)行過程進行到步驟516并發(fā)送INVALID信號,而且處理在步驟518結(jié)束。本領(lǐng)域的技術(shù)人員會理解,在不脫離本發(fā)明的實質(zhì)的情況下,本發(fā)明的可選實施例可以僅當確定為有效數(shù)據(jù)(即,CRC值相等)時或者僅當確定為無效數(shù)據(jù)(即,CRC值不相等)時發(fā)送信號。
因此,本發(fā)明很好地用于實現(xiàn)上述目的并獲得所述的功能和優(yōu)點,以及其內(nèi)在的其它益處。盡管已經(jīng)敘述和說明了本發(fā)明并參照發(fā)明的具體優(yōu)選實施例限定了本發(fā)明,但是這種參考不意味著本發(fā)明的限制,而且也無法推出這種限制。對于相關(guān)領(lǐng)域的普通技術(shù)人員而言,本發(fā)明可以考慮在形式和/或功能上進行各種變形、改進、修改以及等同替代。本發(fā)明說明和描述的優(yōu)選實施例僅用于示例,而不用于限定發(fā)明范圍。因此,本發(fā)明僅通過所附權(quán)利要求的實質(zhì)和范圍來限定,在各方面對等同物給出全面的認識。
權(quán)利要求
1.一種具有可驗證的可編程只讀存儲器的計算機系統(tǒng),所述計算機系統(tǒng)包括在所述可編程只讀存儲器中的至少一個數(shù)據(jù)塊,所述數(shù)據(jù)塊具有數(shù)據(jù)部分,構(gòu)建和排列所述數(shù)據(jù)部分用于存儲數(shù)據(jù),所述數(shù)據(jù)塊還包括CRC部分,所述CRC部分對應(yīng)于所述數(shù)據(jù)部分,構(gòu)建和排列所述CRC部分用于包含CRC值;CRC計算器,構(gòu)建和排列所述CRC計算器用于根據(jù)從所述數(shù)據(jù)部分讀取的數(shù)據(jù)生成當前CRC值;以及比較器,構(gòu)建和排列所述比較器用于將當前CRC值與存儲在所述CRC部分中的所述CRC值比較;其中根據(jù)所述當前CRC值是否等于存儲在所述CRC塊中的所述CRC值發(fā)送信號。
2.如權(quán)利要求1所述的計算機系統(tǒng),其中所述可編程只讀存儲器是PROM。
3.如權(quán)利要求1所述的計算機系統(tǒng),其中所述可編程只讀存儲器是EPROM。
4.如權(quán)利要求1所述的計算機系統(tǒng),其中所述可編程只讀存儲器是EEPROM。
5.如權(quán)利要求1所述的計算機系統(tǒng),其中所述所述系統(tǒng)還包括連接到所述數(shù)據(jù)塊以及所述CRC塊的保持鎖存器。
6.一種用于驗證從可編程只讀存儲器中讀取的數(shù)據(jù)的方法,所述方法包括以下步驟a)從所述可編程只讀存儲器中的數(shù)據(jù)塊的數(shù)據(jù)部分讀取數(shù)據(jù);b)從所述數(shù)據(jù)塊的CRC部分讀取CRC值,所述CRC部分對應(yīng)于所述數(shù)據(jù)部分;c)利用從所述數(shù)據(jù)部分讀取的所述數(shù)據(jù)計算當前CRC值;d)將當前CRC值與從所述數(shù)據(jù)塊讀取的所述CRC值比較;e)發(fā)送響應(yīng)于所述當前CRC值與從所述數(shù)據(jù)塊讀取的所述CRC值的比較結(jié)果的信號。
7.一種用于將驗證數(shù)據(jù)寫入可編程只讀存儲器的方法,所述方法包括以下步驟a)提供數(shù)據(jù);b)根據(jù)所述數(shù)據(jù)計算CRC值;c)將所述數(shù)據(jù)寫入所述可編程只讀存儲器的數(shù)據(jù)塊的數(shù)據(jù)部分;以及d)將所述CRC值寫入所述數(shù)據(jù)塊的CRC部分。
8.一種具有EEPROM存儲器的無線射頻識別(RFID)系統(tǒng),所述RFID系統(tǒng)還包括在所述EEPROM存儲器中的至少一個數(shù)據(jù)塊,所述數(shù)據(jù)塊具有數(shù)據(jù)部分,構(gòu)建和排列所述數(shù)據(jù)部分用于存儲數(shù)據(jù),所述數(shù)據(jù)塊還包括CRC部分,所述CRC部分對應(yīng)于所述數(shù)據(jù)部分,構(gòu)建和排列所述CRC部分用于包含CRC值;CRC計算器,構(gòu)建和排列所述CRC計算器用于根據(jù)從所述數(shù)據(jù)部分讀取的數(shù)據(jù)生成當前CRC值;以及比較器,構(gòu)建和排列所述比較器用于將當前CRC值與存儲在所述CRC部分中的所述CRC值比較;其中響應(yīng)于所述當前CRC值與存儲在所述CRC塊中的所述CRC值的比較結(jié)果發(fā)送信號,所述比較結(jié)果用于識別所述數(shù)據(jù)塊中的所述數(shù)據(jù)是否有效。
全文摘要
一種用于確定存儲在PROM中數(shù)據(jù)的完整性的方法和設(shè)備,其中PROM配置了至少一個連接到兩組塊的保持鎖存器。第一組塊包含數(shù)據(jù)。第二組塊包含對應(yīng)于第一組塊中的數(shù)據(jù)的CRC信息。一旦從第一數(shù)據(jù)塊中讀取數(shù)據(jù),則還從對應(yīng)的CRC塊中讀取CRC信息。將讀取的數(shù)據(jù)應(yīng)用于CRC算法以產(chǎn)生當前CRC值。當前CRC值與從對應(yīng)的CRC塊中獲得的CRC信息進行比較。如果兩個CRC值相同,則數(shù)據(jù)被認為有效。否則,該數(shù)據(jù)被認為無效。
文檔編號G06F12/16GK1436308SQ01802245
公開日2003年8月13日 申請日期2001年6月20日 優(yōu)先權(quán)日2000年6月22日
發(fā)明者塞繆爾·E·亞歷山大, 羅納德·D·薩爾斯基 申請人:密克羅奇普技術(shù)公司