你們好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給你們介紹的是CFI標準及SLC Parallel NOR。html
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接口標準,這給軟件驅動開發帶來了便利。編程
關於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標準制定的時間關係:dom
時間 | 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也支持這一標準。異步
從軟件驅動開發角度而言,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。code
NOR內存單元從大到小通常分爲以下5層:Device、Block、Sector、Page、Byte,其中Byte、Page和Sector是必有的,由於Byte是讀取的最小單元(便可以任意地址隨機訪問),Page是編程的最小單元,Sector是擦除的最小單元,而Block則不是必有的(如沒有,可認爲Block=1)。orm
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問題。htm
CFI手冊裏並無明確規定Parallel NOR信號線與封裝,但業界有默認的標準,從信號線角度來講NOR和SRAM基本是同樣的,以下是典型的Parallel NOR內部結構圖,除了內存單元外,還有三大組成,分別是控制單元、地址譯碼單元和輸出緩衝單元,信號線主要掛在這三大組成上,關於各信號線具體做用,請查閱相關文檔。對象
NOR芯片根據Flash size大小不一樣封裝也不盡相同,以經典的128Mb容量的ADP NOR芯片爲例,其封裝通常有三種TSOP-56, TFBGA-56, LFBGA-64,下圖是TSOP-56封裝信號分佈:
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來作到代碼通用。
數據存取速率是個重要的技術指標,對於這個指標,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芯片的廠商及產品系列:
廠商 | 芯片系列 | 官方網址 |
---|---|---|
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痞子衡便介紹完畢了,掌聲在哪裏~~~