大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是CFI標准及SLC Parallel NOR。
NOR Flash是嵌入式世界里最常見的存儲器,常常內嵌在微控制器里(Parallel型)或外置作為內存擴展(Serial型),作為代碼存儲器。對於嵌入式開發而言,NOR主要分為兩大類:Serial NOR、Parallel NOR,最早出現的NOR是Parallel NOR,后來為了簡化引腳數,逐漸發展出了Serial NOR,目前的格局是Serial NOR主要占據低容量NOR市場(128Mb以下),而Parallel NOR主要占據高容量NOR市場(128Mb以上),生產Parallel NOR的廠商有很多,但無論是哪個廠商的Parallel NOR基本上都兼容CFI接口標准,這給軟件驅動開發帶來了便利。
一、CFI-JESD68標准由來
關於NOR Flash發展史,我們知道早在1988年Intel便發表了NOR Flash結構,從此改變了由EPROM/EEPROM一統天下的局面。早期的NOR產品主要是Parallel NOR,作為半導體行業領導大廠,為了使NOR產品發展標准化,Intel於1996年制定了CFI 1.0標准(1.0版本屬於draft版本,正式版本是1997年發布的1.1),CFI標准的存在是為了讓Host能夠從NOR Flash device中直接獲取制造商ID、設備ID、Flash大小以及各種物理特性,從而使得NOR Flash產品在前后兼容性上表現更好,軟件驅動設計也更加標准化。
鑒於CFI已慢慢發展成為NOR Flash事實上的接口標准,JEDEC組織於1999年9月正式將CFI標准命名為JESD68,下表是CFI-JESD68標准制定的時間關系:
時間 | NOR標准 | 制定者 |
---|---|---|
1996.07 | CFI 1.0 | Intel |
1997.05 | CFI 1.1 | Intel |
1999.09 | JESD68 | JEDEC |
2001.12 | CFI 2.0 | AMD |
2003.09 | JESD68.01 | JEDEC |
Note: CFI-JESD68標准原則上是為Parallel NOR制定的,但是部分Serial NOR也支持這一標准。
二、SLC Parallel NOR原理
2.1 Parallel NOR分類
從軟件驅動開發角度而言,Parallel NOR可以從以下幾個方面進一步細分:
單元層數(bit/cell):SLC(1bit/cell) / MLC(2bit/cell)
地址模式: ADP / ADM / AADM
數據線寬度:x8 / x16
信號線模式:Asynchronous / Synchronous
數據采集模式:SDR / DDR
接口標准:CFI
本文的主要研究對象是兼容CFI 2.0 (JESD68.01)標准的Asynchronous SDR SLC Parallel NOR Flash。
2.2 Parallel NOR內存模型
NOR內存單元從大到小一般分為如下5層:Device、Block、Sector、Page、Byte,其中Byte、Page和Sector是必有的,因為Byte是讀取的最小單元(即可以任意地址隨機訪問),Page是編程的最小單元,Sector是擦除的最小單元,而Block則不是必有的(如沒有,可認為Block=1)。
Note: 關於Block有一點需要特別說明,即NOR的RWW(Read While Write)特性,我們知道NOR是可以存儲代碼直接原地執行XIP的,如果在某個Block里執行代碼(即CPU從NOR中讀取指令數據)的同時去擦除或編程這塊Block會發生什么情況呢?有些NOR是支持這種RWW操作的,但也有的NOR不支持RWW(此時會產生hardfault/lockup),Block的存在是為了規避RWW問題,RWW問題的作用范圍是Block,如果某Block中執行代碼擦除/編程的是另一塊Block,則完全不用擔憂RWW問題。
2.3 Parallel NOR信號與封裝
CFI手冊里並沒有明確規定Parallel NOR信號線與封裝,但業界有默認的標准,從信號線角度來說NOR和SRAM基本是一樣的,如下是典型的Parallel NOR內部結構圖,除了內存單元外,還有三大組成,分別是控制單元、地址譯碼單元和輸出緩沖單元,信號線主要掛在這三大組成上,關於各信號線具體作用,請查閱相關文檔。

NOR芯片根據Flash size大小不同封裝也不盡相同,以經典的128Mb容量的ADP NOR芯片為例,其封裝一般有三種TSOP-56, TFBGA-56, LFBGA-64,下圖是TSOP-56封裝信號分布:

2.4 Parallel NOR接口命令
CFI手冊里也沒有明確規定Parallel NOR接口命令,同樣地業界還是有默認的標准,如下是從Micron MT28EW系列手冊里截取的部分基本命令,包括Reset、Read、Read CFI、Program(Word program)、Buffer Program、Block(Sector) Erase,涵蓋讀寫擦最基本的三種操作,這些基本命令在主流廠商的NOR產品里都被支持。此外,NOR還支持更多高級命令(Blank Check、security/protect相關,lower power相關等),那些命令因Device而異,不是本文討論重點。









除了讀寫擦這三個最基本命令外,還有一個Data Polling機制也非常常用,這個機制用於獲取命令(主要是Program/Erase)執行狀態與結果,當Program/Erase命令發給NOR device之后,NOR device是通過DQ[7:0]引腳來返回命令執行狀態的,各bit意義如下圖所示,簡單來說DQ3(Erase timer bit)表明操作的開始,DQ5(Error bit)表明操作過程中是否發生硬件錯誤,DQ6(Toggle bit)表明操作是否結束。


下圖為Toggle bit檢測的流程圖,這個檢測流程是最常用的,主要用於確認Program/Erase操作是否成功地執行了。

此外,還有一個必有命令不得不提,這個命令是Read CFI,用於獲取芯片內部存儲的出廠信息(包括內存結構、特性、其他行為參數等),這個query table最多由五部分組成,其結構已由CFI規定如下表,痞子衡已經圈出了一些重要信息,在設計NOR軟件驅動時,可以通過獲取這個query table來做到代碼通用。




2.5 Parallel NOR數據速率
數據存取速率是個重要的技術指標,對於這個指標,CFI手冊里並沒有定義,所以需要根據NOR Flash手冊里的AC characteristics表來確定。以異步模式Read命令為例講解(以Micron生產的型號為MT28EW128ABA為例),下面是Read的兩種模式Random Read和Page Read完整時序簡圖:


從上述時序圖,我們可以知道Page Read平均數據率肯定是比Random Read要高的,那么這兩種數據率分別能達到多少呢?可繼續參看如下時序參數表,tRC最小為70ns,那么Random Read數據率最大為2Bytes/70ns = 228.571Mbps,而tPAGE最大為20ns,那么Page Read的數據率最小為2Bytes / 20ns = 800Mbps。(注:均以x16 Device為例)
如果想快捷地了解NOR Flash的性能,最簡單的就是打開NOR Flash手冊,看首頁的feature介紹,如下是MT28EW128ABA的簡要feature:
• Single-level cell (SLC) process technology
• Density: 128Mb
• Supply voltage
– VCC = 2.7–3.6V (program, erase, read)
– VCCQ = 1.65 - VCC (I/O buffers)
• Asynchronous random/page read
– Page size: 16 words or 32 bytes
– Page access: 20ns
– Random access: 70ns (VCC = VCCQ = 2.7-3.6V)
– Random access: 75ns (VCCQ = 1.65-VCC)
• Buffer program (512-word program buffer)
– 2.0 MB/s (TYP) when using full buffer program
– 2.5 MB/s (TYP) when using accelerated buffer program (VHH)
• Word/Byte program: 25us per word (TYP)
• Block erase (128KB): 0.2s (TYP)
• Memory organization
– Uniform blocks: 128KB or 64KW each
– x8/x16 data bus
• CFI (Common Flash Interface) support
三、SLC Parallel NOR產品
最后痞子衡收集了可以售賣SLC Parallel NOR芯片的廠商及產品系列:
廠商 | 芯片系列 | 官方網址 |
---|---|---|
Micron | MT28EW, MT28FW | https://www.micron.com parallel-nor-part-catalog |
Macronix | MX68GL MX29LA, MX29GL, MX29GA, MX29LV MX29VS, MX29NS, MX29SL, MX29F |
http://www.macronix.com parallel-nor-part-catalog |
Winbond | W29GL | http://www.winbond.com.tw parallel-nor-part-catalog |
Spansion | S29GL, S29AL, S29AS, S29PL | http://www.cypress.com/ parallel-nor-part-catalog |
ISSI | IS29GL | www.issi.com parallel-nor-part-catalog |
Microchip | SST38VF, SST39VF | https://www.microchip.com parallel-nor-part-catalog |
至此,CFI標准及SLC Parallel NOR痞子衡便介紹完畢了,掌聲在哪里~~~
歡迎訂閱
文章會同時發布到我的 博客園主頁、CSDN主頁、微信公眾號 平台上。
微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。