大容量NOR Flash與8位微控制器的介面設計

2021-04-24 01:19:56 字數 3618 閱讀 5398

引 言nor flash是flash儲存器中最早出現的乙個品種,與其他種類的flash儲存器相比具有以下優勢:可靠性高、隨機讀取速度快,可以單位元組或單字程式設計, 允許cpu直接從晶元中讀取**執行等。因此nor flash儲存器在嵌入式系統應用開發中占有非常重要的地位。本文以sst公司的nor flash晶元sst39sf040和mcs-51微控制器為例,針對大容量norflash在8位低檔微控制器中應用的特殊性,詳細介紹了其介面硬體和介面 軟體的設計方法。

1 sst39sf040晶元介紹

1.1 晶元內部功能結構和外部引腳

圖1是sst39sf040的內部功能結構框圖,由super-flash儲存單元、行解碼器、列 解碼器、位址緩衝與鎖存器、輸入/輸出緩衝和資料鎖存器以及控制邏輯電路等部分組成。圖2是其外部引腳分布圖,其中a18~a0為位址線,ce為晶元選通 訊號,oe可作為讀訊號,we為寫訊號,dq7~dq0為資料線。

1.2 晶元的主要特性

① 容量為512 kb,按512k×8位結構組織。

② 採用單一的5 v電源供電,程式設計電源vpp在晶元內部產生。

③ 晶元可反覆擦寫100 000次,資料儲存時間為100年。

④ 工作電流典型值為10 ma,待機電流典型值為30μa。

⑤ 扇區結構:扇區大小統一為4 kb。

⑥ 讀取、擦除和位元組程式設計時間的典型值:資料讀取時間為45~70 ns;扇區擦除時間為18 ms,整片擦除時間為70 ms;位元組程式設計時間為14μs。

⑦ 有記錄內部擦除操作和程式設計寫入操作完成與否的狀態標誌位。

⑧ 具有硬、軟體資料保護功能。

⑨ 具有位址和資料鎖存功能。

1.3 晶元的操作

1.3.1 晶元的軟體操作命令序列

sst39sf040的軟體操作可以分成兩類:普通讀操作和命令操作。

普通讀操作非常簡單,與ram的讀操作類似,當oe和ce訊號同時為低電平時,即可從晶元讀出資料。

晶元的命令操作包括晶元的識別、位元組程式設計、扇區擦除以及整片擦除等。這些操作分別由各自的軟體操作 命令序列來完成,如表1所列。其中,ba為待程式設計位元組的位址,data為位元組程式設計資料,sax為待擦除扇區的位址。命令中的位址只有低15位有效,高4位 可任意設定為「0」或「1」。

sst39sf040的軟體操作命令序列實際上是由乙個或多個匯流排寫操作組成的。以 sst39sf040的扇區擦除為例,其操作過程包括3個步驟:第1步,開啟擦除方式,用表1中給出的第1至第5週期的匯流排寫操作來實現;第2步,裝載扇 區擦除命令(30h)和待擦除扇區的位址,用其對應的第6週期的匯流排寫操作來實現;第3步,進行內部擦除。內部擦除時間最長為25 ms。

匯流排寫操作時,oe必須保持為高電平,ce和we應為低電平。位址和資料的鎖存由ce和we兩個訊號的邊沿進行控制。它們當中後出現的下降沿將鎖存位址,先出現的上公升沿將鎖存資料。

1.3.2 位元組程式設計和擦除操作的狀態檢測

晶元在進行內部位元組程式設計或擦除操作時都需要花費一定的時間,雖然可以採用固定的延時來等待這些操作 的完成,但為了優化系統的位元組程式設計和擦除操作時間,以及時判斷內部操作的完成與否,sst39sf040提供了兩個用於檢測的狀態位,即跳變位dq6和數 據查詢位dq7。在晶元進行內部操作時,只要根據圖3的流程對dq6或者dq7進行查詢就能及時作出判斷。

2 sst39sf040與mcs-51的介面設計

2.1 硬體設計

硬體設計就是搭建合適的介面電路,將sst39sf040連線到mcs-51的系統匯流排上。根據 sst39sf040和mcs-51系列微控制器的結構特性,我們發現sst39sf040的資料線和讀、寫訊號線可以很容易地連線到mcs-51的系統總 線上,所以要考慮的主要問題是sst39sf040位址線的連線。由於其容量已經超出了mcs-51的定址範圍,19根位址線無法全部連線到mcs-51 的位址匯流排上,因此必須在該系統中進行進一步的儲存器擴充套件。儲存器擴充套件通常可利用微控制器空閒的i/o口線作為頁面位址輸出引腳來實現。但是許多應用系統當 中,微控制器的i/o口線都是非常緊張的,在沒有多餘的i/o口線時,頁面位址就必須提前從資料匯流排輸出並存放在鎖存器中備用。具體做法是:將鎖存器直接掛 在資料匯流排上,為其安排乙個i/o位址,從而構成頁面暫存器,在訪問儲存器時,提前將頁面位址作為資料寫入頁面暫存器即可。

根據以上分析可設計出sst39sf040與mcs-51之間的介面電路,如圖4所示。本系統中, 將512 kb的儲存器分為32頁面,每頁大小為16 kb。由此可得,頁面位址需要5位,頁內偏移量需要14位。頁面位址的給出是在進行儲存器訪問之前完成的,具體的方法是:用一條「movx"』命令將頁面 位址輸出到鎖存器74ls374中,再由74ls374將頁面位址保持在儲存器的位址引腳a14~a18上。頁內偏移量則直接在儲存器的讀寫命令中給出, 執行命令時,低8位位址a0~a7從p0口輸出到74ls373中保持;位址a8~a13則由微控制器的p2.0~p2.5直接提供。以上分時輸出的位址信 號a0~a18將在讀/寫控制訊號開始作用後,同時有效,以實現對sst39sf040的512kb全位址空間的訪問。p2.6和p2.7分別用作 skt39sf040和鎖存器74ls374的片選訊號,sst39sf040的片選訊號位址範圍是8000h~bfffh,74ls374的片選訊號地 址範圍是4000h~7fffh。

2.2 軟體設計

軟體設計就是編寫對sst39sf040的操作程式,包括位元組讀出、扇區或整片擦除以及位元組程式設計等。下面給出第1個扇區的擦除程式,其中delay25為25 ms延時子程式,其他操作程式可參照編寫。

程式編寫過程中的難點是,如何將sst39sf040中待訪問的單元位址進行分解並對應到讀寫命令 中去。以扇區擦除操作的第1個命令為例,該命令的功能是將資料aah寫入位址5555h中。對於位址5555h,其最高5位a18~a14是01h,低 14位a13~a0為1555h。最高5位位址決定的頁面號必須先作為資料寫入鎖存器74ls374中,再將資料aah寫入該頁中由低14位位址決定的單 元。寫入頁面號時,指令中的位址可在4000h~7fffh範圍內任選乙個,即選中鎖存器74ls374;寫人資料aah時,指令中的位址可由低14位地 址1555h加上8000h得到,其值為9555h。

第1扇區擦除程式**如下:

結 語

本文從硬體和軟體兩個方面對大容量nor flash儲存器與8位微控制器的接**術進行了分析、**,給出了具體的設計方案。其思想和方法對嵌入式系統的應用設計具有較高的參考價值,筆者已將它應用到一款考勤機產品的設計開發當中。

記憶體位址 位寬與容量

首先說明一下單位 1k 2 10,1m 2 20 1mb 1m byte 2 20 byte 8 2 20 bit 1mb 1m bit 2 20 bit 儲存容量 定址範圍 x 計算機處理位寬 字長 注意位址一般用十六進製制表示,0x1表示2 1,0x3表示2 2,0x7表示2 3,0xf表示2 ...

記憶體顆粒位寬和容量 DRAM與記憶體基礎概念

sdram 與記憶體基礎概念 一 sdram 記憶體模組與基本結構 我們平時看到的 sdram 都是以模組形式出現,為什麼要做成這種形式呢?這首先要接觸到 兩個概念 物理 bank 與晶元位寬。pc133 時代的168pin sdram dimm 物理bank 傳統記憶體系統為了保證 cpu的正常工...

8位16位32位資料的拆分與合併程式

拆分 16位拆成兩個8位 u16 data16 0x1234 u8 data8 h,data8 l data8 h u8 data16 8 data8 l u8 data16 32位拆成4個8位 方法一 u32 data32 0x12345678 u8 data8 1,data8 2,data8 3...