基于FPGA的存儲解決方案——閃存
不像SRAM,閃存不能通過簡單的寫入操作進(jìn)行更新。對閃存設(shè)備的每一次寫入操作都需要一個寫指令,包含一組固定的讀寫操作序列。閃存在寫入前需要先進(jìn)行擦除。所有的閃存設(shè)備都被劃分為一定數(shù)量的可擦模塊,或扇區(qū),二者的差異是可擦區(qū)域的大小,依據(jù)閃存廠商和設(shè)備大小而定。
優(yōu)點
閃存存儲器的主要的優(yōu)點是非易失性?,F(xiàn)代嵌入系統(tǒng)廣泛使用閃存來存儲啟動代碼和設(shè)置值,以及較大的數(shù)據(jù)模塊如音頻或視頻流等。很多嵌入系統(tǒng)使用閃存作為硬盤驅(qū)動的低能耗、高穩(wěn)定性的替代品。
相對與其它非易失性存儲器,閃存由于下面四種原因更加常用:
健壯性
可擦性
可重復(fù)擦寫
成本低
閃存存儲器可以與共享其它閃存設(shè)備共享總線,甚至與其它種類的外部存儲器,如外部SRAM或SDRAM。
缺點
閃存的主要缺點是它的寫入速度。由于你只能通過專用的命令寫入閃存設(shè)備,每次閃存寫入都需要多個總線轉(zhuǎn)換操作。更進(jìn)一步說,一旦送出寫入命令,實際的寫入時間可能達(dá)到幾微秒。依據(jù)時鐘速度,實際寫入時間可達(dá)幾百個時鐘周期。由于扇區(qū)擦除受到約束,如果你需要改變閃存中的一個字?jǐn)?shù)據(jù),你必須完成下面步驟:
1. 復(fù)制整個扇區(qū)的內(nèi)容到暫時的緩沖區(qū)
2. 擦除整個扇區(qū)
3. 改變在緩沖區(qū)中的單個字?jǐn)?shù)據(jù)
4. 緩沖區(qū)內(nèi)容寫回到閃存
這個流程導(dǎo)致閃存存儲器設(shè)備的寫入速度較慢。由于其糟糕的寫入速度,閃存通常只用于存儲必須斷電后保持的數(shù)據(jù)。
最佳應(yīng)用場合
閃存存儲器適用于儲存任何你希望在斷電后保持的數(shù)據(jù)。常見的閃存應(yīng)用與存儲下面項目:
微處理器的啟動代碼
微處理器在系統(tǒng)開始時復(fù)制到RAM中的應(yīng)用程序代碼
恒定的系統(tǒng)設(shè)置,例如:網(wǎng)卡MAC地址、校準(zhǔn)數(shù)據(jù)、用戶信息
FPGA參數(shù)圖像
多媒體(音頻、視頻)
不適于應(yīng)用場合
由于閃存存儲器是寫入速度較慢,不應(yīng)使用閃存存儲不需要斷電后保持的數(shù)據(jù)。如果可以使用易失性存儲器時可以選用SRAM。使用閃存存儲器的系統(tǒng)通常也會同時使用SRAM。
一個很不適于閃存的應(yīng)用場合是在微處理器的應(yīng)用程序代碼的直接執(zhí)行。如果這些代碼的可寫部分被部署在閃存中,這些軟件根本不會工作,因為閃存不使用專用的寫入命令便不能夠?qū)懭?。將?yīng)用程序代碼儲存在閃存中的系統(tǒng)通常會在執(zhí)行之前先將這些應(yīng)用程序復(fù)制到SRAM中。
閃存的種類
閃存設(shè)備有多種,最常用的種類如下:
CFI閃存 – 這是最常用的閃存存儲器種類。它使用并行接口。CFI代表常見閃存接口,這是所有CFI閃存設(shè)備都固有的一種標(biāo)準(zhǔn)。SOPC Builder和Nios II processor都有對CFI閃存的內(nèi)置支持。
串行閃存 – 這種閃存使用串行接口以節(jié)省Pin腳和板上空間。由于很多串行閃存設(shè)備都有自己專用的接口協(xié)議,最好是先通讀串行閃存設(shè)備的數(shù)據(jù)表然后進(jìn)行選擇。Altera ECOS配置設(shè)備便是一種串行閃存。
NAND閃存 – NAND閃存是最近才興起的一種新型的閃存存儲器。NAND閃存可以達(dá)到很高的數(shù)據(jù)容量,單個設(shè)備可高達(dá)數(shù)GB。相對于CFI閃存,NAND閃存的接口稍有變復(fù)雜。它需要一個專用的控制器或是智能的低級驅(qū)動軟件。你可以在Altera FPGA中使用NAND閃存,但是Altera不會提供任何內(nèi)置的支持。
編輯:博子
評論