關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > AM30L V0064D在單片機系統中的典型應用

        AM30L V0064D在單片機系統中的典型應用

        作者: 時間:2004-12-08 來源:網絡 收藏

        摘要:D公司生產的一種新型超與非(U1traNAND)結構的閃速存儲器(Flash)。本文介紹它的工作原理,以及它與AT89LS8252單片機的硬件接口電路和PLD內部邏輯控制設計的代碼,并對編程操作的軟件流程進行了描述。

        關鍵詞: U1traNAND 閃速存儲器

        1 概述

        AM是AMD公司生產的一種新型非易失性閃速存儲器。或非(NOR)結構的Flash具有高速的隨機存取功能,但成本較高;新的UltraNAND結構的Flash相對于NOR結構的Flash,具有價格低,容量特別大的優勢,支持對存儲器高速地連續存取。諞芯片工作電壓范圍在2.7~3.6V,特別適用于需要批量存儲大量代碼或數據的語音、圖形、圖像處理場合,在便攜式移動存儲和移動多媒體系統中應用前景廣闊。

        2 工作原理與命令字設置

        AM30LV0064D采用與工業級NAND結構兼容的UltraNAND結構,內部包含1024個存儲塊(單元容量為8K字節+256字節緩存);存儲塊中的數據按頁存放,每頁可存儲512字節,還有16字節緩存用作與外部數據交換時的緩沖區,每塊共16頁。所以,主存儲區一共有16 384數據頁,相當于64 Mbit的數據存儲器。

        圖1為AM30LV0064D的內部結構和主要引腳示意圖。

        圖1 AM30LV0064D的內部結構和主要引腳示意圖

        AM30LV0064D的主要引腳定義:

        CE--片選使能輸入;

        ALE--地址輸入使能;

        CLE--命令字輸入使能;

        SE--緩沖區使能輸入,低電平有效;

        RE--讀使能輸入,低電平有效;

        WE--寫使能輸入,低電平有效;

        WP--寫保護輸入,低電平有效;

        RY/BY--內部空閑/忙信號輸出;

        I/O7~0--8位數據輸入/輸出口;

        VCC--3.3V核心電源;

        VCCQ--I/O口電源;

        VSS--地。

        AM30LV0064D的讀、編程和擦寫等操作都可以在3.3V單電源供電狀態下進行,同時它提供的VCCQ引腳在接5V時,I/O口可兼容5V電平。AM30LV0064D支持對主存高速地連續存取和編程操作,連續讀取數據的時間可小于50ns/字節(隨機讀取數據的響應時間為7μs,所以連續讀取時第一個數據的響應時間也是7μs);對Flash的編程是以頁為單位的,步驟是先寫入數據,再執行編程命令,編程速度為200μs/頁(平均約400ns/字節);芯片擦除操作以存儲塊為單位,擦除其中某一塊對其它存儲塊的數據沒有影響,擦除時間2ms/存儲塊,而且還有延緩擦降/得擦除命令,允許用戶在必要時暫緩擦除操作,轉而處理對其它存儲塊進行數據讀、寫、編程等操作;此外,主機可以通過讀RY/BY引腳狀態的方法了解Flash內部操作是否已經完成,RY/BY也可用于實現硬件判忙接口。AM30LV0064D還具有寫保護功能,這一功能通過將WP引腳設為低電平實現。

        圖2 AM30LV0064D應用電路

        所有操作都建立在命令字基礎上。對主存操作時,所有命令字都通過芯片的8個I/O引腳寫到命令寄存器中,激活狀態機進行相應的操作。存儲器地址以及數據也從8位I/O腳寫入。對存儲器地址進行連續操作或對存儲塊操作時都要先向地址寄存器寫入1個起始地址。地址分3次寫進去,從低字節開始傳送,具體的地址位傳送順序分配如表1所列。(由于對存儲器的讀操作分前后2個半頁,每半頁256字節,在命令字中已經包含了此信息,而編程以頁為單位、擦除以塊為單位,所以傳送的地址位中不含A8)

        表1 地址分配表

         I/O7I/O6I/O5I/O4I/O3I/O2I/O1I/O0
        第1周期A7A6A5A4A3A2A1A0
        第2周期A16A15A14A13A12A11A10A9
        第3周期A22A21A20A19A18A17

        AM30LV0064D通過片選引腳CE使能,先是CLE和WE信號有效,通過I/O口寫入命令字;接著ALE和WE有效,寫入數據存取的起始地址。最后根據命令要求,讀數據或數據。由于具有多元的控制總線,對應AM30LV0064D的操作方式也是多樣的。根據命令字的定義可進行以下操作,如表2所列。

        表2 命令字定義表

        命令字序列總 線 周 期
        123456
        操作數據操作數據操作數據操作數據操作數據操作數據
        讀數據區-前半頁00HSASASA數據Etc.Etc.
        讀數據-后半頁01HSASASA數據Etc.Etc.
        讀數據-無縫隙讀02HSASASA數據Etc.Etc.
        讀預留區50HSASASA數據Etc.Etc.
        讀ID號90H00H01HE6H    
        讀狀態70HSREtc.Etc.      
        輸入數據80HSASASA數據Etc.Etc.
        編程10H          
        塊擦除60HBABAD0H    
        延緩擦除B0H          
        重擦除D0H          
        復位FFH          

        注:SA表示起始地址,BA表示塊地址,Etc.表示操作同前一個周期。

        3 應用電路設計

        AM30LV0064D的外圍電路設計簡單。其控制總線包括CE(片選)、CLE(命令字鎖存使能)、ALE(地址鎖存使能)、WE(寫使能)、RE(讀使能)、SE(預留區使能)、WP(寫保護)等。對于那些具有可編程的I/O口的微控制器或DSP來說,可以直接把引腳與控制線相連。如果沒有可編程的I/O口,則需要加一些簡單的邏輯控制。下面介紹AM30LV0064D與AT89LS8252單片機接口時的一種應用設計電路。由于單片機缺少UltraNAND閃存所需的多元控制總線,在本設計中,采用地址譯碼的方法增加了控制端口,這部分邏輯可以用1片PLD(可編程邏輯器件)完成。具體接口電路如圖2所示。

        以下是PLD內部邏輯設計的源代碼:

        PORT0=!A14!A13!A12!A11; /*讀寫數據端口*/

        PORT1=!A14!A13!A12!A11; /*CLE寫端口*/

        PORT2=!A14!A13!A12!A11; /*設置ALE端口*/

        PORT3=!A14!A13!A12!A11; /*清ALE端口*/

        PORT4=!A14!A13!A12!A11; /*設置SE端口*/

        PORT5=!A14!A13!A12!A11; /*清SE端口*/

        PORT6=!A14!A13!A12!A11; /*設置WP端口*/

        PORT7=!A14!A13!A12!A11; /*清除WP端口*/

        PORT8=!A14!A13!A12!A11; /*設置CE1端口*/

        PORT9=!A14!A13!A12!A11; /*清除CE1端口*/

        PORTA=!A14!A13!A12!A11; /*讀RY/BY狀態端口*/

        PORTB=!A14!A13!A12!A11; /*設置CE2端口*/

        PORTC=!A14!A13!A12!A11; /*清除CE2端口*/

        /*邏輯方程*/

        READY.OE=PORTAREAD;/*Ready只通過PORTA讀取*/

        READY=RY_BY;

        CLE=PORT1;

        ALE=WRTIE PORT2#ALE!(WRITE PORT3)#ALE PORT2);

        SE=WRITEPORT4#SE!(WRITE PORT5)#SE PORT4;

        WP=WRITE PORT6#WP!(WRITE PORT7)# WP PORT6;

        CE1=WRITE PORT8#CE !(WRITE PORT9)#CE PORT8;

        CE2=WRITE PORTB#CE!(WRITE PORTC)#CE PORTB;

        WE=WRITE (PORT0#PORT1);

        RE=READPORT0;

        4 軟件流程

        下面重點介紹通過單片機對AM30LV0064D進行數據編程的軟件流程:單片機啟動編程程序,將IS61LV256中的數據讀出后再寫到Flash中,每次寫512字節的數據(半頁為256字節)。然后,對相應頁進行編程,編程命令字寫入后定期查詢RY/BY引腳,看編程是否已經完成,如果完成再讀取Flash的狀態寄存器,可以知道編程是否成功。具體流程如圖3所示。



        關鍵詞: V0064D 30L AM

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 阿图什市| 武川县| 山阴县| 高碑店市| 柳河县| 湄潭县| 临城县| 内乡县| 华阴市| 新河县| 新巴尔虎右旗| 进贤县| 渑池县| 兴宁市| 南投市| 彩票| 哈密市| 万全县| 宜君县| 潼关县| 连州市| 乌拉特中旗| 东台市| 夏河县| 慈利县| 股票| 盐源县| 桦川县| 塔城市| 洞口县| 手游| 紫金县| 太保市| 平潭县| 都匀市| 嘉峪关市| 丰县| 高青县| 河池市| 忻城县| 博罗县|