系統斷電時FPGA數據保護方法
從消費電子設備到工業控制設備,越來越多的系統都在使用FPGA。這些應用通常需要設備在斷電時存儲一些數據,比如校準信息、用戶設置、辨認標簽等。如果設備使用了微處理器,則還需要存儲微處理器的代碼。
對于那些對成本、器件數量以及電路板尺寸不敏感的系統,可采用標準的閃存來存儲這些數據。但在許多情況下,成本、器件數量和電路板尺寸等方面的限制導致系統不得不采用雙用器件。無論采用單片非易失存儲器,還是采用引導用的SRAM器件,FPGA總是具有與它們相聯系的非易失存儲器。一個顯然的問題是,這些非易失存儲器是否能在系統關閉時存儲數據。
在選擇采用哪種方法之前,應考慮應用的要求。這些問題包括: 是否需要進行讀/寫操作,或者是否接受只讀操作;存儲的數據有多大;寫周期的數量。最后,必須復查與讀和寫操作相關的特性、時序等。
1.初始化塊RAM
大多數FPGA允許其內置的塊RAM在引導器件時被初始化。這是一個很好的方法,它提供了較大容量的ROM,可用于存儲查找表或程序代碼。ROM支持高速隨機讀取操作,能很容易地對FPGA配置進行再次編程。如果設計需要小容量的ROM,這個方法也不可忽視。
2. SPI重使用
現在所有的SRAM FPGA都允許用SPI存儲器來進行配置。因為SPI存儲器的附加位很便宜,不會占用電路板的面積,使用SPI存儲器的附加空間來存儲數據是合理的。在FPGA用其進行配置之后(盡管是各式各樣的,設計者使用這個方法前要進行確認),構建SPI接口只需少量邏輯。使用SPI存儲器時,要小心避免寫到FPGA配置空間中。通過接口邏輯的設計可將其封鎖,或者使用在許多SPI Flash存儲器中可找到的扇區鎖定方法 。
在許多應用中SPI器件允許隨機讀。用FPGA的存儲器塊,通過高速緩沖存儲當前區技術可實現較高的性能。由于寫操作首先要求擦除這個區域,高速緩沖存儲方法具有更大的靈活性。利用SPI存儲器,擦除/編程周期在正常情況下超過100K。這個規范包括正常的運作期間要若干個上電和斷電周期。然而,如果存儲器寫的次數超過這個數值,則可再次使用存儲器高速緩沖方法,防止系統到達SPI的極限。
3.非易失FPGA TAG存儲器
現在許多非易失FPGA集成了小的TAG存儲器。例如,LatticeXP2提供 0.6~3.4kb的存儲器用于此目的。這通常是存儲設備設置和校準數據所要求的存儲器容量。如圖1(b)所示,可以通過JTAG接口或片內邏輯訪問LatticeXP2 TAG存儲器。在LatticeXP2 FPGA中,對這個存儲器的讀和寫是定序的,支持的寫周期超過1K。為簡化存儲器接口,并使存儲器寫周期次數最小,可再次利用高速緩沖存儲數據技術的優點。TAG存儲器與FPGA配置是分開的,因此在這些操作期間,不會寫到FPGA的配置中。對集成小的、串行EEPROM而言,片上TAG存儲器非常理想。
圖1:(a) 用LatticeECP2 FPGA再次使用SPI配置;(b) LatticeXP2 TAG存儲器。
4.閃存影子塊RAM
LatticeXP2還提供使用閃存初始化位的功能。配置時,閃存初始化位初始化器件中的每個塊RAM。這些存儲器可以讀和寫,就像SRAM一樣。當FPGA內必須存儲配置數據時,則切換適當的信號使當前的RAM值轉入閃存(圖2)。這個方法能夠對與非易失閃存組合在一起的RAM進行高速讀和寫 。在LatticeXP2器件中,這個操作支持數千個擦除和寫周期。如同TAG存儲器,與塊RAM在一起的閃存在邏輯上是分開的,這樣就能確保FPGA邏輯配置不會意外地被改寫。
圖2 :LatticeXP2閃存影子SRAM操作示意圖。
以上四種方法,每一種方法有其應用優勢。如果設計工程師希望采用中等容量的ROM來存儲代碼或者用作查找表,那么初始化塊RAM的方法也許最佳。如果需要存儲少量的數據,例如校準信息、當前設置信息或者系統辨別信息,那么TAG存儲器方案更方便一些。對于需要再次寫入的較大容量的存儲器,重使用SPI存儲器,或者閃存影子塊RAM方法是有用的。當然,無論采用哪種方法,都可以降低電路板的面積和成本。
評論