關(guān) 閉

        新聞中心

        EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > AM30L V0064D在單片機(jī)系統(tǒng)中的典型應(yīng)用

        AM30L V0064D在單片機(jī)系統(tǒng)中的典型應(yīng)用

        作者: 時(shí)間:2004-12-08 來(lái)源:網(wǎng)絡(luò) 收藏

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

        關(guān)鍵詞: U1traNAND 閃速存儲(chǔ)器

        1 概述

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

        2 工作原理與命令字設(shè)置

        AM30LV0064D采用與工業(yè)級(jí)NAND結(jié)構(gòu)兼容的UltraNAND結(jié)構(gòu),內(nèi)部包含1024個(gè)存儲(chǔ)塊(單元容量為8K字節(jié)+256字節(jié)緩存);存儲(chǔ)塊中的數(shù)據(jù)按頁(yè)存放,每頁(yè)可存儲(chǔ)512字節(jié),還有16字節(jié)緩存用作與外部數(shù)據(jù)交換時(shí)的緩沖區(qū),每塊共16頁(yè)。所以,主存儲(chǔ)區(qū)一共有16 384數(shù)據(jù)頁(yè),相當(dāng)于64 Mbit的數(shù)據(jù)存儲(chǔ)器。

        圖1為AM30LV0064D的內(nèi)部結(jié)構(gòu)和主要引腳示意圖。

        圖1 AM30LV0064D的內(nèi)部結(jié)構(gòu)和主要引腳示意圖

        AM30LV0064D的主要引腳定義:

        CE--片選使能輸入;

        ALE--地址輸入使能;

        CLE--命令字輸入使能;

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

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

        WE--寫(xiě)使能輸入,低電平有效;

        WP--寫(xiě)保護(hù)輸入,低電平有效;

        RY/BY--內(nèi)部空閑/忙信號(hào)輸出;

        I/O7~0--8位數(shù)據(jù)輸入/輸出口;

        VCC--3.3V核心電源;

        VCCQ--I/O口電源;

        VSS--地。

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

        圖2 AM30LV0064D應(yīng)用電路

        所有操作都建立在命令字基礎(chǔ)上。對(duì)主存操作時(shí),所有命令字都通過(guò)芯片的8個(gè)I/O引腳寫(xiě)到命令寄存器中,激活狀態(tài)機(jī)進(jìn)行相應(yīng)的操作。存儲(chǔ)器地址以及數(shù)據(jù)也從8位I/O腳寫(xiě)入。對(duì)存儲(chǔ)器地址進(jìn)行連續(xù)操作或?qū)Υ鎯?chǔ)塊操作時(shí)都要先向地址寄存器寫(xiě)入1個(gè)起始地址。地址分3次寫(xiě)進(jìn)去,從低字節(jié)開(kāi)始傳送,具體的地址位傳送順序分配如表1所列。(由于對(duì)存儲(chǔ)器的讀操作分前后2個(gè)半頁(yè),每半頁(yè)256字節(jié),在命令字中已經(jīng)包含了此信息,而編程以頁(yè)為單位、擦除以塊為單位,所以傳送的地址位中不含A8)

        表1 地址分配表

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

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

        表2 命令字定義表

        命令字序列總 線(xiàn) 周 期
        123456
        操作數(shù)據(jù)操作數(shù)據(jù)操作數(shù)據(jù)操作數(shù)據(jù)操作數(shù)據(jù)操作數(shù)據(jù)
        讀數(shù)據(jù)區(qū)-前半頁(yè)寫(xiě)00H寫(xiě)SA寫(xiě)SA寫(xiě)SA數(shù)據(jù)Etc.Etc.
        讀數(shù)據(jù)-后半頁(yè)寫(xiě)01H寫(xiě)SA寫(xiě)SA寫(xiě)SA數(shù)據(jù)Etc.Etc.
        讀數(shù)據(jù)-無(wú)縫隙讀寫(xiě)02H寫(xiě)SA寫(xiě)SA寫(xiě)SA數(shù)據(jù)Etc.Etc.
        讀預(yù)留區(qū)寫(xiě)50H寫(xiě)SA寫(xiě)SA寫(xiě)SA數(shù)據(jù)Etc.Etc.
        讀ID號(hào)寫(xiě)90H寫(xiě)00H01HE6H    
        讀狀態(tài)寫(xiě)70HSREtc.Etc.      
        輸入數(shù)據(jù)寫(xiě)80H寫(xiě)SA寫(xiě)SA寫(xiě)SA寫(xiě)數(shù)據(jù)Etc.Etc.
        編程寫(xiě)10H          
        塊擦除寫(xiě)60H寫(xiě)BA寫(xiě)BA寫(xiě)D0H    
        延緩擦除寫(xiě)B0H          
        重擦除寫(xiě)D0H          
        復(fù)位寫(xiě)FFH          

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

        3 應(yīng)用電路設(shè)計(jì)

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

        以下是PLD內(nèi)部邏輯設(shè)計(jì)的源代碼:

        PORT0=!A14!A13!A12!A11; /*讀寫(xiě)數(shù)據(jù)端口*/

        PORT1=!A14!A13!A12!A11; /*CLE寫(xiě)端口*/

        PORT2=!A14!A13!A12!A11; /*設(shè)置ALE端口*/

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

        PORT4=!A14!A13!A12!A11; /*設(shè)置SE端口*/

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

        PORT6=!A14!A13!A12!A11; /*設(shè)置WP端口*/

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

        PORT8=!A14!A13!A12!A11; /*設(shè)置CE1端口*/

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

        PORTA=!A14!A13!A12!A11; /*讀RY/BY狀態(tài)端口*/

        PORTB=!A14!A13!A12!A11; /*設(shè)置CE2端口*/

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

        /*邏輯方程*/

        READY.OE=PORTAREAD;/*Ready只通過(guò)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 軟件流程

        下面重點(diǎn)介紹通過(guò)單片機(jī)對(duì)AM30LV0064D進(jìn)行數(shù)據(jù)編程的軟件流程:?jiǎn)纹瑱C(jī)啟動(dòng)編程程序,將IS61LV256中的數(shù)據(jù)讀出后再寫(xiě)到Flash中,每次寫(xiě)512字節(jié)的數(shù)據(jù)(半頁(yè)為256字節(jié))。然后,對(duì)相應(yīng)頁(yè)進(jìn)行編程,編程命令字寫(xiě)入后定期查詢(xún)RY/BY引腳,看編程是否已經(jīng)完成,如果完成再讀取Flash的狀態(tài)寄存器,可以知道編程是否成功。具體流程如圖3所示。



        關(guān)鍵詞: V0064D 30L AM

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 时尚| 德化县| 孟州市| 三原县| 平昌县| 揭东县| 舞钢市| 蓬溪县| 内丘县| 呼伦贝尔市| 江山市| 钦州市| 揭阳市| 桐柏县| 米林县| 屏山县| 眉山市| 濮阳县| 常熟市| 苏尼特右旗| 鹤壁市| 阿鲁科尔沁旗| 龙井市| 阿克苏市| 邢台县| 措美县| 赣州市| 青铜峡市| 凭祥市| 新沂市| 绥阳县| 稷山县| 怀集县| 宽甸| 肥西县| 县级市| 大洼县| 津市市| 昌都县| 永善县| 青铜峡市|