出于保修原因,最好計算某些事件,例如電源循環(huán)、工作時間、硬(按鈕)復位和超時。雖然數(shù)字計數(shù)器很容易構(gòu)建,但如何使它們非易失性和不可復位并不明顯。本文介紹如何使用現(xiàn)成串行EEPROM的EPROM仿真模式以及一種不尋常的編碼方案來解決問題。
賦予動機
出于保修原因,有時需要計算和記錄某些事件,例如電源循環(huán)、工作時間、硬(按鈕)復位和超時。用于此目的的傳統(tǒng)電子計數(shù)器由觸發(fā)器構(gòu)建,使用二進制代碼,如圖1所示。設置所有觸發(fā)器時達到最大計數(shù),因此計數(shù)器的大小由感興趣的間隔內(nèi)要計數(shù)的最大事件數(shù)決定。
位號 | ||||||||||
N+1 | n | ... | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2n | 2N-1 | ... | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
圖1.在自然二進制代碼中,位值從一個位加倍到下一個位。
滿足需求
雖然基于人字拖的計數(shù)器很容易構(gòu)建,但它有很大的缺點。當達到計數(shù)限制時,它會滾動到零(自行重置)。它的操作也是不穩(wěn)定的——它需要電源來維持其計數(shù)狀態(tài)。第一個問題可以通過在計數(shù)器達到其限制時凍結(jié)計數(shù)器來解決;您可以通過連接電池以保持計數(shù)器的電源來解決第二個問題。但這些措施可能是不可接受的,因為它們會增加成本并且只能在有限的時間內(nèi)起作用。
還有另一種選擇。您可以在 EEPROM 或某種其他形式的非易失性 (NV) 存儲中備份計數(shù)值。下次上電時,計數(shù)器可以預加載存儲在該NV存儲器中的值。然而,除非NV存儲器嵌入到微控制器或FPGA等另一個芯片中,否則存儲器內(nèi)容是不安全的,因為存儲器芯片可以很容易地在電路板上移除、重新編程(重置)和更換。因此,此方法不滿足不可重置的要求。
過去的把戲
EPROM是另一種不需要電池的非易失性存儲器。EPROM在1970年代隨著微處理器的出現(xiàn)而變得流行。剛出廠,所有 EPROM 字節(jié)都讀取 FFh。 通過對從 1(擦除)到 0(編程)的單個位進行編程來存儲數(shù)據(jù);編程需要 12V 至 13V 的脈沖。在加載新數(shù)據(jù)之前,您必須通過封裝中內(nèi)置的窗口將芯片暴露在高強度紫外線下來擦除整個內(nèi)存。一次性可編程 (OTP) EPROM 沒有窗口,因此無法擦除。由于這些不便,EPROM的普及已經(jīng)減少,取而代之的是EEPROM和高密度閃存,兩者都可以在5V或更低的電壓下工作和編程。盡管如此,通過將OTP EPROM的單向編程(1比0)和缺乏可擦除性與現(xiàn)代EEPROM技術相結(jié)合,您可以獲得稱為EPROM仿真模式的新功能。EPROM仿真模式是實現(xiàn)非易失性、不可復位計數(shù)器的關鍵技術。
EPROM仿真模式
串行接口EEPROM的一個常見特性是頁面寫入緩沖器,它允許您在一次沖程中對整個存儲器頁面進行編程。收到寫入命令后,系統(tǒng)會自動使用尋址內(nèi)存頁面中的數(shù)據(jù)加載頁面寫入緩沖區(qū)。對于 EPROM 仿真模式,寫緩沖器作為移位寄存器實現(xiàn)(圖 2)。傳入的新數(shù)據(jù) (D-IN) 饋送到 AND 門,該門在進入緩沖區(qū) (S-IN) 之前將其與緩沖區(qū)數(shù)據(jù) (S-OUT) 組合在一起。因此,AND門確保存儲器位在編程為0后不能更改為1。在對頁面的所有位進行完整循環(huán)后,緩沖區(qū)中的數(shù)據(jù)再次與內(nèi)存頁面中的數(shù)據(jù)對齊?,F(xiàn)在可以開始寫入周期,將整個緩沖器復制回非易失性EEPROM。
圖2.EPROM仿真將新數(shù)據(jù)和現(xiàn)有數(shù)據(jù)的按位邏輯AND寫回存儲器。
在 EPROM 中計數(shù)
由于EPROM位只能在一個方向上改變,因此傳統(tǒng)的計數(shù)代碼不起作用。相反,您必須將整個內(nèi)存數(shù)組視為 n 位的單個實體。最初,n位都沒有編程(全部為1)。若要對事件進行計數(shù),必須將其中一個未編程位更改為 0。您可以簡單地隨機選擇下一個位進行編程,但圖 3 中的方案更容易實現(xiàn)。它從最低有效位開始,并按順序繼續(xù),直到對該字節(jié)的所有位進行編程。然后,它逐位編程下一個字節(jié),依此類推。在EPROM仿真模式下,具有1024位的存儲芯片適用于計算1024個事件。
計數(shù) 值 |
十六進制 代碼 |
位號 | |||||||
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | ||
0 | FFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | FEh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
2 | ECK | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
3 | F8h | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
4 | F0h | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
5 | E0h | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
6 | C0h | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 80h | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8 | 00h | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
圖3.在EPROM中計數(shù)需要一個代碼,每個位都具有相同的位值。
支持EPROM仿真模式的芯片
雖然EPROM仿真模式易于實現(xiàn),但在撰寫本文時,只有Maxim提供此類產(chǎn)品。存儲器密度為1Kb(DS2431、DS28CN01和DS28E01)和20Kb(DS28EC20)。所有這些芯片都帶有一個唯一的工廠編程識別號。除DS2431和DS28EC20外,具有EPROM仿真模式的產(chǎn)品均為安全存儲器;只有基于設備特定密鑰生成消息身份驗證代碼的主服務器才能獲得寫入訪問權限。
示例流程圖
例如,考慮DS2431存儲器芯片,其中存儲器頁0配置為在EPROM仿真模式下實現(xiàn)256位計數(shù)器。32 字節(jié)頁面可以使用 64 位暫存器作為中間存儲,以每個 8 字節(jié)的塊的形式更新。圖4中的算法檢測具有未編程位的第一個塊,遞增計數(shù)值,然后將該塊寫回EEPROM。
圖4.此算法遞增 32 字節(jié)內(nèi)存頁中的計數(shù)器。
結(jié)論
包含EPROM仿真模式的EEPROM是實現(xiàn)非易失性、不可復位計數(shù)器的首選產(chǎn)品。內(nèi)存芯片的序列號可用于檢測篡改,即用計數(shù)值較低的內(nèi)存芯片替換內(nèi)存芯片。為了防止計數(shù)器的未經(jīng)授權的增量,應使用需要消息身份驗證代碼進行寫入訪問的安全存儲芯片。
審核編輯:郭婷
-
電源
+關注
關注
184文章
17207瀏覽量
247788 -
計數(shù)器
+關注
關注
32文章
2241瀏覽量
93977 -
EEPROM
+關注
關注
9文章
1002瀏覽量
81061
發(fā)布評論請先 登錄
相關推薦
評論