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