痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

痞子衡發表於2018-07-01

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是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以上),雖然這兩類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介面標準(CFI-JESD68)及SLC Parallel NOR簡介

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

痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

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而異,不是本文討論重點。

痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

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

痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

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

痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

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

痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

2.5 Parallel NOR資料速率

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

痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

  從上述時序圖,我們可以知道Page Read平均資料率肯定是比Random Read要高的,那麼這兩種資料率分別能達到多少呢?可繼續參看如下時序參數列,tRC最小為70ns,那麼Random Read資料率最大為2Bytes/70ns = 228.571Mbps,而tPAGE最大為20ns,那麼Page Read的資料率最小為2Bytes / 20ns = 800Mbps。(注:均以x16 Device為例)
痞子衡嵌入式:通用NOR介面標準(CFI-JESD68)及SLC Parallel NOR簡介

  如果想快捷地瞭解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痞子衡便介紹完畢了,掌聲在哪裡~~~

相關文章