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