嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第7章 嵌入式存儲(chǔ)器系統(tǒng)及擴(kuò)展接口電路設(shè)計(jì)_第1頁
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第7章 嵌入式存儲(chǔ)器系統(tǒng)及擴(kuò)展接口電路設(shè)計(jì)_第2頁
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第7章 嵌入式存儲(chǔ)器系統(tǒng)及擴(kuò)展接口電路設(shè)計(jì)_第3頁
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第7章 嵌入式存儲(chǔ)器系統(tǒng)及擴(kuò)展接口電路設(shè)計(jì)_第4頁
嵌入式系統(tǒng)原理與應(yīng)用 第3版 課件 第7章 嵌入式存儲(chǔ)器系統(tǒng)及擴(kuò)展接口電路設(shè)計(jì)_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第7章ARM9存儲(chǔ)器擴(kuò)展電路設(shè)計(jì)1第7章ARM9存儲(chǔ)器擴(kuò)展電路設(shè)計(jì)存儲(chǔ)器是計(jì)算機(jī)或嵌入式系統(tǒng)的主要組成部分之一。

從狹義的角度來講,它是存儲(chǔ)運(yùn)行程序并且存儲(chǔ)程序在運(yùn)行過程中的數(shù)據(jù)信息的;

從廣義的角度來講,它不但包含“狹義”中的內(nèi)容,還要包含為了提高嵌入式系統(tǒng)程序的運(yùn)行效率,所采取的高速緩沖存儲(chǔ)器Cache等,這就是所謂的嵌入式存儲(chǔ)器系統(tǒng)。由于嵌入式系統(tǒng)希望在較小的硬件物理內(nèi)存儲(chǔ)器配置下,還能夠完成應(yīng)該完成的任務(wù),這就需要使用存儲(chǔ)器管理單元MMU(MemoryManagementUnit),將虛擬內(nèi)存單元的內(nèi)容分時(shí)的映射并裝入到它的物理存儲(chǔ)器中去運(yùn)行。

2(續(xù))由于ARM微處理器主要使用在嵌入式設(shè)備中,一般很少配置體積較大的硬盤設(shè)備,因此在嵌入式設(shè)備中就需要通過NandFlash或NorFlash閃存芯片來固化、存儲(chǔ)開發(fā)的運(yùn)行程序,并存儲(chǔ)程序執(zhí)行中的相關(guān)數(shù)據(jù)。因?yàn)殚W存的訪問速度相對于同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器SDRAM(SynchronousDynamicRandomAccessMemory)要慢得多,一般是程序從閃存中啟動(dòng)運(yùn)行、完成必要的ARM系統(tǒng)初始化工作后,將其運(yùn)行的程序搬移到SDRAM中運(yùn)行,以加快程序的運(yùn)行速度。S3C2410A微處理器的存儲(chǔ)器系統(tǒng)可以擴(kuò)展任意存儲(chǔ)速度、任意總線寬度的存儲(chǔ)器芯片,這些都需要通過存儲(chǔ)器控制寄存器進(jìn)行設(shè)置,而且必須在ARM系統(tǒng)剛啟動(dòng)時(shí)就要配置好,以后才方便使用。常用匯編語言在ARM的啟動(dòng)文件或Bootloader啟動(dòng)引導(dǎo)文件中編寫配置程序。347.1.1嵌入式存儲(chǔ)器的層次結(jié)構(gòu)及特點(diǎn)

1.存儲(chǔ)器的層次結(jié)構(gòu)圖層次結(jié)構(gòu)說明:位于整個(gè)層次結(jié)構(gòu)的最頂部L0層為CPU內(nèi)部寄存器,用于加速指令的執(zhí)行速度。在S3C2410A中共有37個(gè)物理寄存器,根據(jù)異常的類型被邏輯地分為7組。位于L1層為芯片內(nèi)部的高速緩存(cache),預(yù)取并存儲(chǔ)將要執(zhí)行的指令和數(shù)據(jù),提高指令的執(zhí)行速度。在S3C2410A芯片上集成了單獨(dú)的16KB指令

Cache和16KB數(shù)據(jù)Cache。位于L2層為芯片外的高速緩存(SRAM、DRAM、DDRAM)。由于這些緩存的讀寫速度要遠(yuǎn)遠(yuǎn)大于Flash存儲(chǔ)器或各種ROM的存儲(chǔ)器,因此ARM系統(tǒng)的應(yīng)用程序可以在其系統(tǒng)初始化結(jié)束后,搬移到這些存儲(chǔ)器中運(yùn)行,可以說這時(shí)它是作為主存儲(chǔ)器的。S3C2410A的Bank1~Bank7均可以外擴(kuò)SRAM,共計(jì)容量為7×128M;Bank6、Bank7也可以外擴(kuò)SDRAM,共計(jì)容量為2×128M。位于L3層為主存儲(chǔ)器(Flash、PROM、EPROM、EEPROM)。嵌入式系統(tǒng)的主存儲(chǔ)器使用外部擴(kuò)展的方式接入系統(tǒng),它是固化系統(tǒng)程序、運(yùn)行初始化程序或運(yùn)行應(yīng)用程序的存儲(chǔ)器。目前在S3C2410A微處理器中使用的是,在Bank0區(qū)外擴(kuò)NorFlash芯片,或通過微處理器提供的NandFlash接口外擴(kuò)NandFlash存儲(chǔ)器芯片。L4層為外部存儲(chǔ)器(磁盤、光盤、CF、SD卡)。目前使用SD卡的設(shè)備較多,主要用于保存大量的數(shù)據(jù)信息。562.主要特點(diǎn)●位于金字塔的層次越高,存儲(chǔ)的容量越小、速度越快、價(jià)格越貴;●位于金字塔的層次越低,存儲(chǔ)的容量越大、速度越慢、價(jià)格相對便宜。7.1.2ARM9高速緩沖存儲(chǔ)器cache1.Cache的功能

在主存儲(chǔ)器和CPU之間采用高速緩沖存儲(chǔ)器(cache)被廣泛用來提高存儲(chǔ)器系統(tǒng)的性能,許多微處理器體系結(jié)構(gòu)都把它作為其定義的一部分。cache能夠減少CPU訪問內(nèi)存的平均時(shí)間,提高CPU執(zhí)行程序的速度。2.Cache的分類Cache可以分為混合cache和獨(dú)立的數(shù)據(jù)/程序cache。在一個(gè)存儲(chǔ)系統(tǒng)中,指令預(yù)取時(shí)和數(shù)據(jù)讀寫時(shí)使用同一個(gè)cache,這時(shí)稱系統(tǒng)使用混合的cache;如果在一個(gè)存儲(chǔ)系統(tǒng)中,指令預(yù)取時(shí)使用的一個(gè)cache,數(shù)據(jù)讀寫時(shí)使用的另一個(gè)cache,各自是獨(dú)立的,這時(shí)稱系統(tǒng)使用了獨(dú)立的cache,用于指令預(yù)取的cache稱為指令cache,用于數(shù)據(jù)讀寫的cache稱為數(shù)據(jù)cache。77.1.2ARM9高速緩沖存儲(chǔ)器cache(續(xù))3.Cache的操作方法當(dāng)CPU更新了cache的內(nèi)容時(shí),要將結(jié)果寫回到主存儲(chǔ)器中,可以采用寫通法(write-through)和寫回法(write-back)。寫通法:是指CPU在執(zhí)行寫操作時(shí),必須把數(shù)據(jù)同時(shí)寫入cache和主存儲(chǔ)器。采用寫通法進(jìn)行數(shù)據(jù)更新的cache稱為寫通cache。寫回法:是指CPU在執(zhí)行寫操作時(shí),被寫的數(shù)據(jù)只寫入cache而不寫入到主存儲(chǔ)器中。僅當(dāng)需要替換時(shí),才把已經(jīng)修改的cache塊寫回到主存儲(chǔ)器中。采用寫回法進(jìn)行數(shù)據(jù)更新的cache稱為寫回cache。87.1.3S3C2410A存儲(chǔ)器管理單元MMU

早期的計(jì)算機(jī)硬件的配置以及運(yùn)行的軟件都較小,內(nèi)存儲(chǔ)器容量可以容納當(dāng)時(shí)的程序。

隨著圖形化界面的出現(xiàn)還有用戶需求的不斷增大,應(yīng)用程序隨之膨大起來,就出現(xiàn)了應(yīng)用程序過大而內(nèi)存容納不了應(yīng)用程序,通常解決的辦法就是將應(yīng)用程序分割成許多稱為覆蓋塊(overlay)的片段。覆蓋塊0首先運(yùn)行,結(jié)束時(shí)將調(diào)用另一個(gè)覆蓋塊。

雖然覆蓋塊的交換是由操作系統(tǒng)OS(OperatingSystems)自動(dòng)完成的,但是必須由程序員把程序先進(jìn)行分割,這是一項(xiàng)很費(fèi)時(shí)、很枯燥的工作。之后不久找到了一個(gè)辦法,這就是虛擬存儲(chǔ)器(VirtualMemory)。

9(續(xù))

虛擬存儲(chǔ)器(亦稱邏輯存儲(chǔ)器)的基本思想是程序、數(shù)據(jù)和堆??偣舱加玫牡刂房臻g大小可以超過物理存儲(chǔ)器的地址空間,操作系統(tǒng)把當(dāng)前執(zhí)行的程序部分保留在物理存儲(chǔ)器中,而把其它未被使用的部分保存在磁盤中。

存儲(chǔ)器管理單元MMU(MemoryManageUnit)在ARM的虛擬空間和物理內(nèi)存之間進(jìn)行地址轉(zhuǎn)換,將地址從邏輯空間映射到物理空間,這個(gè)轉(zhuǎn)換過程一般稱為內(nèi)存映射。這一過程由OS自動(dòng)完成,程序員不需要參與。101.MMU主要功能

●實(shí)現(xiàn)虛擬存儲(chǔ)空間到物理存儲(chǔ)空間的映射。

采用了頁式虛擬存儲(chǔ)管理,它把虛擬地址空間分成一個(gè)個(gè)固定大小的塊,每一塊稱為一頁;

把物理內(nèi)存的地址空間也分成同樣大小的頁框?!翊鎯?chǔ)器訪問權(quán)限的控制。●設(shè)置虛擬存儲(chǔ)空間的緩沖的特性。112.虛擬存儲(chǔ)器與物理存儲(chǔ)器●嵌入式系統(tǒng)的虛擬存儲(chǔ)器大小是由CPU的地址線根數(shù)確定的。對于S3C2410A來講,它有32根地址線,它的地址范圍從0x00000000~0xFFFFFFFF,地址空間的大小是232=4GB?!裎锢韮?nèi)存儲(chǔ)器大小就是CPU具體配置的實(shí)際內(nèi)存儲(chǔ)器的大小,它是小于或等于虛擬內(nèi)存儲(chǔ)器的。例如FL2440開發(fā)板配置的物理存儲(chǔ)器是64MB。123.頁與頁框的概念為了能夠?qū)崿F(xiàn)從虛擬存儲(chǔ)器空間到物理存儲(chǔ)器空間的映射,就必須對虛擬存儲(chǔ)器和物理存儲(chǔ)器進(jìn)行分頁(Paging)。

虛擬存儲(chǔ)器分頁的單位被稱為頁(Page),物理存儲(chǔ)器分頁的單位稱為頁框(Frame)。物理存儲(chǔ)器的頁框使用來裝載虛擬存儲(chǔ)器的頁,它們兩者的大小必須相等,因此一個(gè)叫“Page”,另一個(gè)叫“Frame”。S3C2410A的MMU從虛擬存儲(chǔ)器到物理存儲(chǔ)器的映射提供了4種頁的劃分方式,分別是:①Invalid(不使用MMU)。②Section(段):頁的大小為1MB。③CoarsePage(粗表):具有2種頁大小的劃分,其一為64KB,其二是4KB。④FinePage(細(xì)表):頁的大小為1KB。134.虛擬存儲(chǔ)器到物理存儲(chǔ)器的映射方法●假設(shè)S3C2410A系統(tǒng)的物理存儲(chǔ)器為64MB,地址范圍從0x30000000~0x33FFFFFF,以Section方式進(jìn)行映射,即頁與頁框的大小取1MB,其使用了低位的20根地址線(A0~A19)?!裉摂M存儲(chǔ)器的頁索引(PageIndex)從0x000到0xFFF,覆蓋4GB的虛擬存儲(chǔ)器空間范圍,每一個(gè)頁中的具體地址是頁索引左移20位+偏移量;●物理存儲(chǔ)器的頁框索引(FrameIndex)是從0x300到0x33F,覆蓋了64MB的物理存儲(chǔ)器空間范圍,每一個(gè)頁框中的具體地址是頁框索引左移20位+偏移量??梢钥闯鯩MU實(shí)際上完成的是從頁索引到頁框索引的映射。144.虛擬存儲(chǔ)器到物理存儲(chǔ)器的映射方法(續(xù))154.虛擬存儲(chǔ)器到物理存儲(chǔ)器的映射方法(續(xù))圖7-2是MMU的映射過程圖。將虛擬存儲(chǔ)器的某個(gè)頁映射到物理存儲(chǔ)器的哪個(gè)頁框中,一般由操作系統(tǒng)程序控制協(xié)處理器CP15及其寄存器完成,需要詳細(xì)了解請參考S3C2410A手冊。這里虛擬存儲(chǔ)器的索引共有4096項(xiàng),將其某一項(xiàng)映射到物理存儲(chǔ)器的某一頁框中,從圖7-2可以看出,將其頁框索引左移20位就可以獲得Section段的基址值(SectionBase),該基址內(nèi)的具體物理存儲(chǔ)器地址等于(SectionBase<<20+偏移量)。實(shí)際使用時(shí)需要從磁盤裝載到這一頁框中。167.1.4S3C2410A的主存儲(chǔ)器的分布以及使用的相應(yīng)存儲(chǔ)器類型

S3C2410A的主存儲(chǔ)器(內(nèi)存儲(chǔ)器)分布映射圖參見5.2.2節(jié)圖5-1所示。目前的最大物理存儲(chǔ)器配置為8×128MB=1GB,實(shí)際使用配置的更小。S3C2410A將1GB的內(nèi)存空間劃分為8個(gè)128MB,用Bank0~Bank7表示。Bank0~Bank7可以外擴(kuò)ROM或SRAM類,主要包含ROM、PROM、EPROM、EEPROM、FLASH、SRAM和SDRAM,以下進(jìn)行介紹。只讀程序存儲(chǔ)器ROM(Read-OnlyMemory):是最早的存儲(chǔ)器,它里面的程序需要在出廠時(shí)就必須固化好,用戶不可更改,而且是一次性的??删幊讨蛔x存儲(chǔ)器PROM(ProgrammableRead-OnlyMemory):它允許用戶進(jìn)行程序的燒寫,但最多只允許寫一次。可擦除可編程只讀存儲(chǔ)器EPROM(ErasableProgrammableRead-OnlyMemory):它解決了PROM芯片只能寫入一次的弊端,但是它的擦除是通過紫外線光進(jìn)行的,而且耗費(fèi)的時(shí)間很長,大約40分鐘。電可擦除可編程只讀存儲(chǔ)器EEPROM(Electrically-ErasableProgrammableRead-OnlyMemory):也稱為E2PROM,它解決了EPROM的擦除問題,而且擦/寫速度大大加快,可以多次擦/寫,現(xiàn)在這種芯片的使用也在慢慢減少。17閃速存儲(chǔ)器FLASH(FlashMemory)簡稱閃存:它是一種不揮發(fā)性內(nèi)存(Non-VolatileRAM)。閃存的物理特性與常見的內(nèi)存RAM既有相同的特性也有根本性的差異:

相同特性是用戶程序也可以向閃存中寫入數(shù)據(jù),但速度相比RAM要慢一些;

根本性的差異是目前的RAM、SRAM、DRAM、SDRAM等同類都屬于揮發(fā)性內(nèi)存,只要停止電流供應(yīng)內(nèi)存中的數(shù)據(jù)便無法保持,因此每次電腦開機(jī)都需要把數(shù)據(jù)重新載入內(nèi)存。閃存在沒有電流供應(yīng)的條件下也能夠長久地保持?jǐn)?shù)據(jù),其存儲(chǔ)特性相當(dāng)于硬盤,這項(xiàng)特性正是閃存得以成為各類便攜型數(shù)字設(shè)備存儲(chǔ)介質(zhì)的基礎(chǔ)。18靜態(tài)隨機(jī)存儲(chǔ)器SRAM(StaticRandomAccessMemory):亦稱靜態(tài)可讀/寫隨機(jī)存儲(chǔ)器。它屬于揮發(fā)性內(nèi)存,它的bit位存儲(chǔ)單元由多個(gè)晶體管耦合而成,集成度小。動(dòng)態(tài)隨機(jī)存儲(chǔ)器DRAM(DynamicRandomAccessMemory):它的一個(gè)比特存儲(chǔ)單元是由一個(gè)場效應(yīng)管和在其柵極對地接上一個(gè)電容器組成,因此集成度高,但工作時(shí)需要定時(shí)刷新。19同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器SDRAM(SynchronousDynamicRAM):

它是將CPU與RAM通過一個(gè)相同的時(shí)鐘鎖在一起,使CPU和RAM能夠共享一個(gè)時(shí)鐘周期,以相同的速度同步工作,每一個(gè)時(shí)鐘脈沖的上升沿便開始傳遞數(shù)據(jù)。

后來又出現(xiàn)了雙倍數(shù)據(jù)速率DDRSDRAM(DoubleDataRateSDRAM),還有它的更新?lián)Q代產(chǎn)品,它允許在時(shí)鐘脈沖的上升沿和下降沿傳輸數(shù)據(jù),這樣不需要提高時(shí)鐘的頻率就能加倍提高SDRAM的速度。更多的內(nèi)容請參考其它資料。20DRAM、SDRAM存儲(chǔ)器屬于易揮發(fā)性存儲(chǔ)器,需要定期進(jìn)行刷新才能保存存儲(chǔ)的數(shù)據(jù),它是這2個(gè)RAM的最重要操作,刷新分為2種:自動(dòng)刷新AR(AutoRefresh)與自刷新SR(SelfRefresh)。AR用于微處理器在正常工作時(shí)的刷新,SR用于微處理器在空閑模式時(shí)的自動(dòng)刷新。當(dāng)前大部分的嵌入式應(yīng)用設(shè)備一般都在Bank6、Bankk7中外擴(kuò)SDRAM芯片,作為程序的運(yùn)行區(qū)和數(shù)據(jù)、堆棧區(qū)。需要注意的是,這里的RAM是當(dāng)作ROM使用的,這在PC機(jī)是最為常見的。21由于S3C2410A在上電啟動(dòng)時(shí),程序計(jì)數(shù)器PC的首地址是0x00000000,它是引導(dǎo)系統(tǒng)程序運(yùn)行的開始地址,所以Bank0區(qū)必須配置程序存儲(chǔ)器作為系統(tǒng)的程序引導(dǎo)模式,如表7-1所示。OM1、OM0是S3C2410A芯片的外部引腳,根據(jù)Bank0的存儲(chǔ)器配置接為相應(yīng)的電平信號,芯片上電后檢測引腳的電平信號組合讀取存儲(chǔ)器的內(nèi)容。22OM1(OperatingMode1)OM0(OperatingMode0)BootingROMDataWidth0(OM1引腳接地)0(OM0引腳接地)NandFlash0(OM1引腳接地)1(OM0引腳接高電平)16-bit1(OM1引腳接高電平)0(OM0引腳接地)32-bit1(OM1引腳接高電平)1(OM0引腳接高電平)TestingMode7.2存儲(chǔ)器控制寄存器S3C2410A可以外擴(kuò)任意訪問速率、各種總線寬度的存儲(chǔ)器芯片。完成這項(xiàng)任務(wù)就必須配置好存儲(chǔ)器系統(tǒng)的各個(gè)控制寄存器,而且這一要?jiǎng)?wù)必須在嵌入式芯片初始化的開始執(zhí)行,使用ARM匯編語言編寫。存儲(chǔ)器控制寄存器(MemoryControlRegister)為訪問外部存儲(chǔ)器空間提供了控制信號,共有13個(gè)寄存器。S3C2410A微處理器的存儲(chǔ)器在整個(gè)系統(tǒng)的工作中起著舉足輕重的作用,只有清楚地了解各寄存器的作用,才能更好地進(jìn)行系統(tǒng)開發(fā)。237.2.1存儲(chǔ)器控制寄存器1.總線寬度與等待寄存器BWSCON

總線寬度與等待寄存器BWSCON(BusWidth&WaitStatusControlRegister),用來設(shè)置各Bank區(qū)配置的存儲(chǔ)器總線寬度和訪問周期。其使用的地址是0x48000000,可讀/可寫,初始值是0x00。它的位功能如表7-2所示。24比特位功能描述初值[31]ST7:確定Bank7的存儲(chǔ)器是否使用UB/LB控制信號。0=不使用UB/LB(對應(yīng)引腳信號nWBE[3:0])1=使用UB/LB(對應(yīng)引腳信號nBE[3:0])0[30]SW7:確定Bank7的存儲(chǔ)器是否允許等待信號。0=禁止;1=允許0[29:28]DW7:確定Bank7存儲(chǔ)器的總線寬度。00=8bit;01=16bit;10=32bit;11=保留00[27:4]從Bank6~Bank1每個(gè)均使用4bit,它們對應(yīng)的位功能與Bank7相同全0[3]保留0[2:1]DW0:指示Bank0存儲(chǔ)器的總線寬度狀態(tài)(注意是狀態(tài)信號,具有只讀屬性)。01=16bit;10=32bit。狀態(tài)由引腳OM[1:0]的電平確定0[0]保留00注意:

①UB、LB分別指的是16位數(shù)據(jù)存儲(chǔ)器的高字節(jié)(UpperByte)和低字節(jié)(LowerByte)的使能端。外擴(kuò)16位SRAM時(shí)需要使用引腳信號nBE[3:0]。

②nBE[3:0]是nWBE[3:0]“與”nOE的結(jié)果。

③等待信號在外擴(kuò)速度較慢的存儲(chǔ)器時(shí)需要使能,以調(diào)節(jié)訪問速度,以便正確地使用外擴(kuò)存儲(chǔ)器。252.存儲(chǔ)器塊控制寄存器BANKCONn

存儲(chǔ)器塊控制寄存器BANKCONn(BankControlRegistern)是用來控制Bank0~Bank7的片選信號nGCS0~nGCS7的工作時(shí)序。

BANKCON0~BANKCON7的屬性如表7-3所示。

BANKCON0~BANKCON5的位功能如表7-4所示。26寄存器名稱使用地址讀寫屬性功能描述初值BANKCON00x48000004讀/寫控制Bank0的nGCS0時(shí)序0x0700BANKCON10x48000008讀/寫控制Bank1的nGCS1時(shí)序0x0700BANKCON20x4800000C讀/寫控制Bank2的nGCS2時(shí)序0x0700BANKCON30x48000010讀/寫控制Bank3的nGCS3時(shí)序0x0700BANKCON40x48000014讀/寫控制Bank4的nGCS4時(shí)序0x0700BANKCON50x48000018讀/寫控制Bank5的nGCS5時(shí)序0x0700BANKCON60x4800001C讀/寫控制Bank6的nGCS6時(shí)序0x18008BANKCON70x48000020讀/寫控制Bank7的nGCS7時(shí)序0x1800827

BANKCON0~BANKCON5的位功能如表7-4所示。比特位功能描述初值[31:15]保留0x0[14:13]Tacs:確定在nGCSn有效前地址信號建立的時(shí)間00=0Clock;01=1Clock;01=2Clock;11=4Clock。00[12:11]Tcos:確定在nOE信號前芯片片選信號的建立時(shí)間00=0Clock;01=1Clock;01=2Clock;11=4Clock。00[10:8]Tacc:訪問時(shí)間。如果啟用了nWAIT信號,則Tacc>=4Clock。000=1Clock;001=2Clock;010=3Clock;011=4Clock;100=6Clock;101=8Clock;110=10Clock;111=14Clock。111[7:6]Tcoh:確定在nOE無效后,芯片選擇信號的保持時(shí)間。00=0Clock;01=1Clock;01=2Clock;11=4Clock。00[5:4]Tcah:確定在nGCSn無效后,地址信號的保持時(shí)間。00=0Clock;01=1Clock;01=2Clock;11=4Clock。00[3:2]Tacp:確定頁模式的訪問周期。00=2Clock;01=3Clock;01=4Clock;11=6Clock。00[1:0]PCM:配置頁模式。00=常規(guī)每次讀寫1data;01=4data;01=8data;11=16data。00nGCSn控制時(shí)序圖28BANKCON6和BANKCON7位功能表29比特位功能描述初值[31:17]保留0x0[16:15]MT:確定Bank6或Bank7的配置的存儲(chǔ)器類型。00=SRAM或ROM;01=保留;10=保留;11=SDRAM11當(dāng)存儲(chǔ)器類型為SRAM或ROM時(shí),使用以下各比特設(shè)置[14:13]Tacs:確定在nGCSn有效前地址信號建立的時(shí)間。00=0CLK;01=1CLK;01=2CLK;11=4CLK。00[12:11]Tcos:確定在nOE信號前芯片片選信號的建立時(shí)間.。00=0CLK;01=1CLK;01=2CLK;11=4Clock。00[10:8]Tacc:訪問時(shí)間。如果啟用了nWAIT信號,則Tacc>=4Clock。000=1Clock;001=2Clock;010=3Clock;011=4Clock;100=6Clock;101=8Clock;110=10Clock;111=14Clock。111[7:6]Tcoh:確定在nOE無效后,芯片選擇信號的保持時(shí)間。00=0Clock;01=1Clock;01=2Clock;11=4Clock。00[5:4]Tcah:確定在nGCSn無效后,地址信號的保持時(shí)間。00=0Clock;01=1Clock;01=2Clock;11=4Clock。00[3:2]Tacp:確定頁模式的訪問周期。00=2Clock;01=3Clock;01=4Clock;11=6Clock。00[1:0]PMC:配置頁模式(PageModeConfiguration)。00=常規(guī)每次讀寫1data;01=4data;01=8data;11=16data。00當(dāng)存儲(chǔ)器類型MT(MemoryType)為SDRAM時(shí),使用以下比特位設(shè)置[3:2]Trcd:行地址信號RAS到列地址信號CAS的延時(shí)。00=2Clock;01=3Clock;10=4Clock;11=保留;10[1:0]SCAN:列地址線數(shù)目。00=8bit;01=9bit;10=10bit;11=保留00

系統(tǒng)復(fù)位后,BANKCON6=BANKCON7=0x18008,表示Bank6和Bank7外接SDRAM,同時(shí)設(shè)定Trcd=10(4Clock),8位列地址線數(shù)目。

3.刷新控制寄存器REFRESH與Bank塊大小控制寄存器BANKSIZE

刷新控制寄存器REFRESH(REFRESHcontrolregister)用于控制SDRAM存儲(chǔ)器的自動(dòng)刷新;Bank塊大小控制寄存器BANKSIZE(BANKSIZEcontrolregister)用于設(shè)置Bank6或Bank7存儲(chǔ)器容量的大小,這2個(gè)Bank的存儲(chǔ)器大小相同,Bank7的地址與Bank6的地址連續(xù)。這2個(gè)控制寄存器的屬性如下表所示。30寄存器名稱使用地址讀寫屬性功能描述初值REFRESH0x48000024讀/寫SDRAM自動(dòng)刷新控制0x0AC0000BANKSIZE0x48000028讀/寫配置Bank6、Bank7SDRAM大小0x02REFRESH控制寄存器位功能表31比特位功能描述初值[31:24]保留0x0[23]REFEN:SDRAM刷新使能信號。0=禁止刷新;1=允許刷新1[22]TREFMD:設(shè)置SDRAM的刷新模式。0=Auto模式;1=Self模式0[21:20]Trp:設(shè)置SDRAM行RAS預(yù)充電時(shí)間。00=2Clock;01=3Clock;10=4Clock;11=未定義10[19:18]Tsrc:設(shè)置SDRAM半行周期時(shí)間。00=4Clock;01=5Clock;01=6Clock;11=7Clock。SDRAM的行周期時(shí)間Trc=Trp+Tsrc,如Trp=01,Tsrc=11,則Trc=10Clock11[17:11]保留0x0[10:0]REFCNT:設(shè)置SDRAM刷新計(jì)數(shù)器。刷新周期=(211-REFCNT+1)/HCLK例如:若刷新周期15.6us,HCLK=60MHz,則計(jì)數(shù)器值=211+1-60×15.6=111300BANKSIZE控制寄存器位功能表32比特位功能描述初值[31:8]保留0x0[7]BURST_EN:猝發(fā)使能控制。

0=禁止猝發(fā)操作;1=允許猝發(fā)操作0[6]保留0[5]SCKE_EN:

SDRAM省電模式使能。0=禁止;1=使用省電模式0[4]SCLK_EN:SCLK時(shí)鐘信號激活時(shí)間控制。0=總是激活;1=在訪問DRAM期間激活(推薦使用,可達(dá)到節(jié)電目的)SDRAM的行周期時(shí)間Trc=Trp+Tsrc,如Trp=01,Tsrc=11,則Trc=10Clock0[3]保留0[2:0]BK76MAP:控制Bank6/Bank7存儲(chǔ)器映射。2組存儲(chǔ)器的大小相等,地址連續(xù)。010=128MB;001=64MB;000=32MB;111=16MB;110=8MB;101=4MB;100=2MB0004.SDRAM模式設(shè)置寄存器

SDRAM模式設(shè)置寄存器MRSR(SDRAMModeSetRegister)包括MRSRB6和MRSRB7.分別用來控制Bank6和Bank7地址空間的SDRAM工作模式。33寄存器名稱使用地址讀寫屬性功能描述初值MRSRB60x4800002C讀/寫B(tài)ank6模式設(shè)置寄存器-MRSRB70x48000030讀/寫B(tài)ank7模式設(shè)置寄存器-比特位功能描述初值[31:8]保留0x0[9]WBL:觸發(fā)寫長度(WriteBurstLength)。

0=觸發(fā)長度固定;1=保留0[8:7]TM:測試模式(TestMode)。00=設(shè)定測試模式;其它保留00[6:4]CL:列地址信號CAS反應(yīng)時(shí)間(CASLatency)。000=1Clock;010=2Clock;011=3Clock;其它保留-[3]BT:觸發(fā)類型(BurstType)。0=連續(xù)的(固定);1=保留0[2:0]BL:觸發(fā)長度(BurstLength)。000=1(固定);其它保留0007.2.2主存芯片配置編程實(shí)例34在了解了系統(tǒng)中連接的存儲(chǔ)器芯片以后,需要進(jìn)行配置才能使用,這需要在ARM系統(tǒng)初始化程序中完成。①本開發(fā)板使用的NorFlash閃存芯片是SST39VF1601(與AM29LV160DB的引腳完全兼容),它是具有數(shù)據(jù)線16根,存儲(chǔ)容量為2MB,最大可擴(kuò)展兼容量為8MB。②使用的NandFlash閃存芯片是K9F2G08,大小為256M(可兼容最大1GBNandFlash)。

③外擴(kuò)的2片SDRAM芯片HY57V561620,單片具有16根數(shù)據(jù)總線,2片構(gòu)成32位數(shù)據(jù)總線,使用Bank6的nGCS6作為片選信號,容量為2×32MB=64MB。7.2.2主存芯片配置編程實(shí)例(續(xù))35

存儲(chǔ)器控制器共有13個(gè)特殊功能寄存器,它們的地址在空間分布上是連續(xù)的,可以將各寄存器的控制字使用內(nèi)存分配偽指令連續(xù)存放。BWSCON只需要設(shè)置[27:24]位,Bank0上接入NorFlash不需要配置,因?yàn)檫@里只有狀態(tài)信息位;具體代碼如下:SMRDATADCD0x22111111;Bank0~Bank5數(shù)據(jù)線為16位,Bank6、Bank7數(shù)據(jù)線為32位DCD0x700;nGCS0,Bank0在系統(tǒng)啟動(dòng)引導(dǎo)時(shí)就必須使用,可以對閃存Flash直接進(jìn)行訪問DCD0x700;nGCS1,使用默認(rèn)初值(未使用)DCD0x700;nGCS2,使用默認(rèn)初值(未使用)DCD0x700;nGCS3,使用默認(rèn)初值(未使用)DCD0x700;nGCS4,使用默認(rèn)初值(未使用)DCD0x700;nGCS5,使用默認(rèn)初值(未使用)DCD0x18005;nGCS6:接SDRAM芯片RAS到CAS的延時(shí)Trcd=3Clock,列地址線SCAN=9bitDCD0x18008;nGCS7,使用默認(rèn)初值(未使用)DCD0xa803f4;REFRESH:REFEN=1,TREFMD=0,Trp=2,Tsrc=2,REFCNT=0x3f4

DCD0x31;BANKSIZE:SCKE_EN=1;SCLK=1;BK76MAP=1(64MB)

DCD0x30;MRSR6:CL=3Clock,其它使用固定值或保留值

DCD0x30;MRSR7:CL=3Clock,其它使用固定值或保留值7.2.2主存芯片配置編程實(shí)例(續(xù))36nGCS0的數(shù)據(jù)線寬度由S3C2410A的外部引腳OM[1:0]確定,不需要在程序中進(jìn)行配置。主存儲(chǔ)器的配置匯編程序代碼如下。LDRR0,=SMRDATA;存儲(chǔ)器配置數(shù)據(jù)首地址→R0LDRR1,=0x48000000;存儲(chǔ)器配置寄存器首地址→R1

ADDR2,R0,#520LDRR3,[R0],#4;R3←[R0],R0←R0+4

STRR3,[R1],#4;[R1]←R3,R1←R1+4

CMPR2,R0

BNE%B0;寫入未完成,向前轉(zhuǎn)移到標(biāo)號0處7.38/16/32位內(nèi)存芯片擴(kuò)展設(shè)計(jì)

●ARM微處理器的體系結(jié)構(gòu)通過存儲(chǔ)器控制寄存器的設(shè)置,就可支持8位/16位/32位的存儲(chǔ)器系統(tǒng),除Bank0以外,其它各Bank可以構(gòu)建8位的存儲(chǔ)器系統(tǒng),或16位的存儲(chǔ)器系統(tǒng),或32位的存儲(chǔ)器系統(tǒng)。32位的存儲(chǔ)器芯片具有較高的性能,但是價(jià)格昂貴很少使用。16位的存儲(chǔ)器芯片則在成本及功耗方面占有優(yōu)勢,而8位的存儲(chǔ)器芯片一般在低端領(lǐng)域使用?!馭3C2410A處理器采用8位數(shù)據(jù)總線,處理器的A0地址線與存儲(chǔ)器的A0地址線相接;

采用16位數(shù)據(jù)總線時(shí),處理器的A1地址與存儲(chǔ)器的A0地址線相接,通過芯片的UB、LB引腳分別訪問它的高位字節(jié)數(shù)據(jù)和地位字節(jié)數(shù)據(jù)。

采用32位數(shù)據(jù)總線時(shí),處理器的A2地址與存儲(chǔ)器的A0地址線相接,通過ARM提供的控制信號訪問32位存儲(chǔ)器字中的4個(gè)字節(jié)數(shù)據(jù)。處理器S3C2410A的地址線與存儲(chǔ)器的地址線連接方法如表7-11所示。37●處理器地址線與存儲(chǔ)器地址線連接方法38存儲(chǔ)器引腳8位總線時(shí)處理器地址線引腳16位總線時(shí)處理器地址線引腳32位總線時(shí)處理器地址線引腳A0A0A1A2A1A1A2A3…………7.3.1八位存儲(chǔ)器芯片擴(kuò)展設(shè)計(jì)

由于8位存儲(chǔ)器的典型性,有必要在此介紹如何利用8位存儲(chǔ)器構(gòu)成8位、16位、32位的存儲(chǔ)器系統(tǒng)。1.8位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)

構(gòu)成8位數(shù)據(jù)總線系統(tǒng)的信號連接如圖7-4(a)所示?!翊鎯?chǔ)器的允許輸出端nOE端接S3C2410A的nOE引腳;●存儲(chǔ)器的寫信號nWE端接S3C2410A的nWE引腳;●存儲(chǔ)器的片選信號nCE端接S3C2410A的nGCSn引腳;●存儲(chǔ)器的地址線…A1A0與S3C2410A的地址線…A1A0相連;●存儲(chǔ)器的8位數(shù)據(jù)總線[DQ7~DQ0]與S3C2410A的低8位數(shù)據(jù)總線[DATA7~DATA0]相連。

注意:此時(shí)應(yīng)將BWSCON中的DWn設(shè)置為00,即選擇8位總線方式;控制使能UB/LB=0禁止,nWBE0~nWBE3產(chǎn)生有效信號。39由8位存儲(chǔ)器構(gòu)成的8/16存儲(chǔ)器系統(tǒng)40(a)8位存儲(chǔ)器系統(tǒng)的構(gòu)成(b)16位存儲(chǔ)器系統(tǒng)的構(gòu)成2.16位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)

兩片8位的存儲(chǔ)器以并聯(lián)的方式構(gòu)建16位的存儲(chǔ)器系統(tǒng),其中一片為高8位,另一片為低8位,將兩片存儲(chǔ)器作為一個(gè)整體配置到同一Bank中。●2片存儲(chǔ)器地址線…A1A0均與S3C2410A的地址總線…A2A1相連。●2片存儲(chǔ)器的允許輸出端nOE端均接到S3C2410A的nOE引腳。●低8位存儲(chǔ)器的寫信號nWE端接S3C2410A的nWBE0引腳,用于寫入處理器的低字節(jié)數(shù)據(jù);高8位存儲(chǔ)器的寫信號nWE端接S3C2410A的nWBE1引腳,用于寫入處理器的高字節(jié)數(shù)據(jù)?!?片存儲(chǔ)器的片選信號nCE端均與S3C2410A的nGCSn引腳相連。低8位存儲(chǔ)器的8位數(shù)據(jù)總線[DQ7~DQ0]與S3C2410A的低8位數(shù)據(jù)總線[DATA7~DATA0]相連,高8位存儲(chǔ)器的8位數(shù)據(jù)總線[DQ7~DQ0]與S3C2410A的高8位數(shù)據(jù)總線[DATA15~DATA8]相連。

注意:此時(shí)應(yīng)將BWSCON中的DWn設(shè)置為01,即選擇16位總線方式;控制使能UB/LB=0禁止,nWBE0~nWBE3產(chǎn)生有效信號。413.32位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)

由4片8位存儲(chǔ)器芯片構(gòu)成32位數(shù)據(jù)總線系統(tǒng)的信號連接如下圖所示?!?片8位的存儲(chǔ)器以并聯(lián)的方式構(gòu)建32位的存儲(chǔ)器系統(tǒng),其中兩片為高16位,兩片為低16位,將4片存儲(chǔ)器作為一個(gè)整體配置到同一Bank中?!袼写鎯?chǔ)器的地址線…A1A0均與S3C2410A的地址總線…A3A2相連。●低8位存儲(chǔ)器的nWE端連接S3C2410A的nWBE0引腳,控制低字節(jié)數(shù)據(jù)的寫入;次低8位存儲(chǔ)器的nWE端接S3C2410A的nWBE1引腳,控制次低字節(jié)數(shù)據(jù)的寫入;次高8位存儲(chǔ)器的nWE端接S3C2410A的nWBE2引腳,控制次高字節(jié)數(shù)據(jù)的寫入;高8位存儲(chǔ)器的nWE端接S3C2410A的nWBE3引腳,控制高字節(jié)數(shù)據(jù)的寫入?!?片存儲(chǔ)器的允許輸出端nOE端均接到S3C2410A的nOE引腳?!?片存儲(chǔ)器的片選信號nCE端均與S3C2410A的nGCSn引腳相連。

注意:此時(shí)應(yīng)將BWSCON中的DWn設(shè)置為10,即選擇32位總線方式;控制使能UB/LB=0禁止,nWBE0~nWBE3產(chǎn)生有效信號。42由4片8位存儲(chǔ)器構(gòu)成的32位存儲(chǔ)器系統(tǒng)437.3.2十六位存儲(chǔ)器芯片擴(kuò)展設(shè)計(jì)

1.16位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)

由16位數(shù)據(jù)線存儲(chǔ)器芯片構(gòu)成16位總線存儲(chǔ)器系統(tǒng)的信號連接如下:●存儲(chǔ)器地址線…A1A0與S3C2410A的地址線…A2A1相連;●存儲(chǔ)器的16位數(shù)據(jù)線[DQ15~DQ0]與處理器S3C2410A的16位數(shù)據(jù)總線[DATA15~DATA0]相連;●采用ROM系統(tǒng)時(shí),存儲(chǔ)器的寫信號nWE、允許讀信號nOE、片選信號nCE分別連接到S3C2410A的寫信號nWE、允許讀信號nOE、Bankn組的選擇信號GCSn,如圖7-6(a)所示;4416位存儲(chǔ)器系統(tǒng)的結(jié)構(gòu)圖45(a)16位ROM存儲(chǔ)器系統(tǒng)(b)16位SRAM存儲(chǔ)器系統(tǒng)(c)16位SDRAM存儲(chǔ)器系統(tǒng)1.16位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)(續(xù))●采用SRAM系統(tǒng)時(shí),還需連接存儲(chǔ)器的nUB、nLB到處理器的nBE1、nBE0,其它信號線的連接如圖7-6(b)所示。注意:此時(shí)使BWSCON中UB/LB=1控制信號使能,產(chǎn)生nBE1、nBE0來控制存儲(chǔ)器的高字節(jié)、低字節(jié)數(shù)據(jù)的操作;●采用SDRAM系統(tǒng)時(shí),需保證存儲(chǔ)器的LDQM、UDQM、SCKE、SCLK、nWE、nSRAS、nSCAS、nSCS的正確連接,圖7-6(c)中存儲(chǔ)器的nSCS與處理器的nSCS0相連,映射到了Bank6。注意:以上應(yīng)將BWSCON中的DWn設(shè)置為01,即選擇16位總線方式,并保證其余信號線的正確連接。46

2.32位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)

使用兩片16位存儲(chǔ)器芯片以并聯(lián)的方式構(gòu)建32位的數(shù)據(jù)總線存儲(chǔ)器系統(tǒng),其中一片為高16位,另一片為低16位,將兩片存儲(chǔ)器作為一個(gè)整體配置到Bankn。構(gòu)成32位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)的信號連接如下:●地址線…A1A0與與S3C2410A的地址線…A3A2相連;●低半字存儲(chǔ)器的16位數(shù)據(jù)總線[DQ15~DQ0]與S3C2410A的低16位數(shù)據(jù)總線[DATA15~DATA0]相連,高半字存儲(chǔ)器的16位數(shù)據(jù)總線[DQ15~DQ0]與S3C2410A的數(shù)據(jù)總線[DATA31~DATA16]相連。

472.32位數(shù)據(jù)總線存儲(chǔ)器系統(tǒng)(續(xù))●在下頁圖(a)所示的32位SRAM系統(tǒng)中,低16位的nLB、低16位的nUB、高16位的nLB、高16位的nUB分別連接到處理器的nBE0~nBE3。兩片存儲(chǔ)器的nCS相連到同一nGCSn。注意:BWSCON中使能控制信號UB/LB=1允許,產(chǎn)生nBE0~nBE3信號用以分別操作低字節(jié)、次低字節(jié)、次高字節(jié)和高字節(jié)數(shù)據(jù)?!裨谙马搱D(b)所示的32位數(shù)據(jù)總線SDRAM系統(tǒng)中,存儲(chǔ)器低16位的LDQM、低16位的UDQM、高16位的LDQM、高16位的UDQM分別連接到處理器的DQM0~DQM3兩片存儲(chǔ)器的nSCS相接到nSCS0。●余信號連接與16位存儲(chǔ)器連接方式相似。注意:此時(shí)應(yīng)將BWSCON中的DWn設(shè)置為10,即選擇32位總線方式。4832位存儲(chǔ)器系統(tǒng)的構(gòu)成圖49(a)32位SRAM存儲(chǔ)器系統(tǒng)(b)32位SDRAM存儲(chǔ)器系統(tǒng)7.4NorFlash閃存接口設(shè)計(jì)

Flash存儲(chǔ)器是一種可在系統(tǒng)中進(jìn)行電擦寫、掉電后信息不丟失的存儲(chǔ)器。它具有低功耗、大容量、擦寫速度快、可整片或分扇區(qū)在線進(jìn)行系統(tǒng)編程(燒寫)或擦除等特點(diǎn),并且可由內(nèi)部嵌入的算法完成對芯片的操作,因而在各種嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。作為一種非易失性存儲(chǔ)器,F(xiàn)lash在系統(tǒng)中通常用于存放程序代碼、常量表以及一些在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等。常用的Flash為8位或16位的數(shù)據(jù)寬度、編程電壓為3.3V,主要的生產(chǎn)廠商為ATMEL、AMD、HYUNDAI等,他們生產(chǎn)的同型器件一般具有相同的電氣特性和封裝形式,可以通用。507.4.1NorFlash與NandFlash的區(qū)別●NorFlash和NandFlash是目前市場上2種主要的非易失閃存技術(shù)。Intel在1988年首先開發(fā)NorFlash技術(shù),徹底改變了原先有EPROM和EEPROM一統(tǒng)天下的局面,緊接著1989年,東芝公司發(fā)表了NandFlash結(jié)構(gòu),強(qiáng)調(diào)降低每位的成本,更高的性能,并且向磁盤一樣可以通過接口輕松升級。NandFlash存儲(chǔ)器經(jīng)??梢耘cNorFlash存儲(chǔ)器互換使用。許多業(yè)內(nèi)人士也搞不清楚Nand閃存技術(shù)相對于Nor技術(shù)的優(yōu)越之處,因此大多數(shù)情況下閃存只是用來存儲(chǔ)少量的代碼,這時(shí)Nor閃存更適合一些,而Nand則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案?!馧orFlash的特點(diǎn)是XIP(eXecuteInPlace,芯片內(nèi)執(zhí)行)特性,這樣應(yīng)用程序可以直接在Flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NorFlash的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。●NandFlash結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用Nand的困難在于Flash的管理和特殊的系統(tǒng)接口。511.性能比較任何Flash器件的寫入操作只能在空的或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先進(jìn)行擦除。NandFlash器件執(zhí)行擦除操作十分簡單,而NorFlash則要求在進(jìn)行寫入前先要將目標(biāo)塊內(nèi)所有的位都寫為0。由于擦除NorFlash器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為5s。于此相反,擦除NandFlash器件是以8~32KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。執(zhí)行擦除時(shí)塊尺寸的不同進(jìn)一步拉大了NorFlash和NandFlash之間的性能差距。統(tǒng)計(jì)表明,對于給定的一套寫入操作,尤其是更新小文件時(shí),在基于NorFlash的單元中進(jìn)行需要更多的擦除操作。這樣,當(dāng)選擇存儲(chǔ)解決方案時(shí),設(shè)計(jì)師必須權(quán)衡以下各項(xiàng)因素:NandFlash的寫入速度比NorFlash快很多(NandFlash的4ms擦除速度比NorFlash的5s快);NorFlash的讀速度比NandFlash稍快一些;大多數(shù)寫入操作需要先進(jìn)行擦除操作,NandFlash的擦除單元更小,相應(yīng)的擦除電路也少。522.容量和成本NandFlash的單元尺寸幾乎是NorFlash器件的一半,由于生產(chǎn)過程更為簡單,NandFlash結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,也就相應(yīng)地降低了價(jià)格。在NandFlash閃存中每個(gè)塊的最大擦寫次數(shù)是100萬次,而NorFlash的擦寫次數(shù)是10萬次。NorFlash占據(jù)了容量為1~16MB閃存市場的大部分,而NandFlash只是用在8~1GB的產(chǎn)品中,這說明NorFlash主要應(yīng)用在代碼存儲(chǔ)介質(zhì)中,NandFlash同時(shí)也適合于數(shù)據(jù)存儲(chǔ)。NandFlash在CompactFlash、SecureDigital、PCCard和MMC存儲(chǔ)卡市場上所占份額最大。533.接口差別NorFlash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)部的每一個(gè)字符。基于NorFlash的閃存使用非常方便,可以像其它存儲(chǔ)器那樣連接,并可以在上面直接運(yùn)行代碼。NandFlash器件需要用復(fù)雜的I/O來串行存取數(shù)據(jù)(各個(gè)產(chǎn)品或廠商的方法可能各不相同,)8個(gè)引腳用來傳遞控制、地址、和數(shù)據(jù)信息。NandFlash的讀/寫操作采用512字節(jié)的塊,這與硬盤管理操作類似,很自然地,基于NandFlash的存儲(chǔ)器就可以取代硬盤或其它塊設(shè)備。在使用NandFlash器件時(shí),必須先寫入驅(qū)動(dòng)程序后,才能繼續(xù)執(zhí)行其它操作。向NandFlash器件寫入信息需要相當(dāng)?shù)募记?,因?yàn)樵O(shè)計(jì)師決不能向壞塊寫入信息,這就意味著在NandFlash器件上自始至終都必須進(jìn)行虛擬映射。幸運(yùn)的是,S3C2410A微處理器支持NandFlash接口,這大大方便了NandFlash器件在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用。547.4.2NorFlash實(shí)用電路設(shè)計(jì)●以開發(fā)板上的閃存NorFlash存儲(chǔ)器SST39VF1601為例,簡要介紹一下該閃存儲(chǔ)器的基本特性。SST39LV1601是一種常見的NorFlash存儲(chǔ)器,單片存儲(chǔ)容量為2MB,工作電壓為2.7~3.6V,采用48腳TSOP封裝或48腳TFBG封裝,16位數(shù)據(jù)寬度,以16位(半字模式)數(shù)據(jù)寬度的方式工作?!馭ST39VF1601僅需3.3V電壓即可完成系統(tǒng)的編程與擦除操作,通過對其內(nèi)部的命令寄存器寫入標(biāo)準(zhǔn)命令序列,可對Flash進(jìn)行編程、整片擦除、按扇區(qū)擦除以及其它操作。邏輯框圖如圖7-8所示,引腳信號功能表如表7-12所示。55表7-12SST39VF1601的引腳信號功能56引腳類型描述A[19:0]I20根地址總線A19~A0。DQ[15:0]I/O(有三態(tài)功能)數(shù)據(jù)總線,在讀/寫操作時(shí)提供16位的數(shù)據(jù)總線寬度/CEI片選信號,低電平有效。當(dāng)對SST39VF1601進(jìn)行讀/寫操作時(shí),該引腳必須為低電平;當(dāng)為高電平時(shí),芯片處于高阻狀態(tài)。/OEI允許輸出使能,低電平有效。/WEI寫使能,低電平有效。當(dāng)對SST39VF1601進(jìn)行編程和擦除操作時(shí),控制相應(yīng)的寫命令。VDD—3.3V電源。VSS—接地。

閃存SST39VF1601存儲(chǔ)器芯片與微處理器S3C2410A的硬件連接同一般的存儲(chǔ)器相同如圖7-9所示。577.5閃存NandFlash存儲(chǔ)器接口設(shè)計(jì)由于NorFlash的價(jià)格相對較高,而NandFlash和SDRAM的價(jià)格相對低一些,這導(dǎo)致了用戶在NandFlash中存儲(chǔ)系統(tǒng)程序代碼并引導(dǎo)系統(tǒng)啟動(dòng)(同時(shí)它也可以作為輔助存儲(chǔ)器使用,亦稱電子盤),在SDRAM中運(yùn)行系統(tǒng)程序。S3C2410A支持NandFlash的自動(dòng)啟動(dòng)引導(dǎo),內(nèi)置專用的NandFlash接口控制器,不需要使用Bank0的片選nGCS0。當(dāng)S3C2410A的引腳OM1和OM0均接為低電平時(shí),S3C2410A微處理器便可以從NandFlash啟動(dòng),NandFlash的開始4KB的代碼會(huì)被自動(dòng)地復(fù)制到其內(nèi)部的4KB小石頭區(qū)域SRAM中,啟動(dòng)引導(dǎo)系統(tǒng)運(yùn)行程序。需要使用這4KB的代碼將更多的代碼從NandFlash中拷貝到主存儲(chǔ)器SDRAM中去運(yùn)行。NandFlash可以利用硬件糾錯(cuò)碼ECC(ErrorCheckingandCorrecting)對數(shù)據(jù)的正確性進(jìn)行校驗(yàn)。錯(cuò)誤檢查和糾錯(cuò)碼ECC,能糾正單比特錯(cuò)誤和檢測雙比特錯(cuò)誤,詳細(xì)更多請參照相關(guān)資料。587.5.1NandFlash的結(jié)構(gòu)組成1.S3C2410A內(nèi)部NandFlash控制器

微處理器S3C2410A內(nèi)部集成了8位的NandFlash控制器,如圖7-10所示?!馧andFlash控制器的接口引腳分為3類:I/O引腳、控制引腳和狀態(tài)引腳。其中I/O引腳高度復(fù)用,既用作地址總線、數(shù)據(jù)總線,又用于命令輸入信號線。●從圖7-10可以看出,接口引腳中有8個(gè)I/O引腳(I/O0~I/O7),用來輸出地址、輸出命令、輸入/輸出數(shù)據(jù),控制信號引腳有5個(gè),其中CLE(CommandLatchEnable)為命令鎖存使能控制信號;ALE(AddressLatchEnable)為地址鎖存使能控制信號;nCE(ChipEnable)為片選信號;nRE(ReadEnable)和nWE(WriteEnable)分別是讀使能和寫使能信號;R/nB(Ready/Busy)是準(zhǔn)備就緒或者忙狀態(tài)信號。當(dāng)R/nB=0時(shí)表示“忙”程序不能對芯片進(jìn)行操作,當(dāng)R/nB=1時(shí)表示準(zhǔn)備就緒,可以操作該芯片。59602.NandFlash芯片的內(nèi)部數(shù)據(jù)結(jié)構(gòu)目前市場上常見的NandFlash芯片有三星公司的K9F1208、K9F1G08、K9F2G08等。K9F1208、K9F1G08、K9F2G08存儲(chǔ)有效數(shù)據(jù)頁的大小分別是512字節(jié),2K字節(jié)、2K字節(jié),它們的容量分別是64MB、128MB、256MB。它們在尋址方式上有一定差異,所以程序代碼不通用。K9F1208芯片的容量為64MB(512Mb),工作電壓為2.7V~3.6V,內(nèi)部存儲(chǔ)器結(jié)構(gòu)為528字節(jié)×32頁×4096塊(Block)。每頁(Page)的大小是528字節(jié),其中前512字節(jié)存放有效數(shù)據(jù),后16字節(jié)作為輔助數(shù)據(jù)存儲(chǔ)器,用來存放ECC代碼、壞塊信息和文件系統(tǒng)代碼等。64MB的容量被分為4096塊,每塊32頁。K9F1208芯片的64MB使用地址線A25A24…A14A13…A9A8A7…A1A0表示其各字節(jié)單元地址,它的組成分為3部分:塊地址(BlockAddress)、頁地址(PageAddress)、列地址(ColumnAddress)。A25~A14是12根塊地址線,A13~A9是5根頁地址線,A8~A0是頁地址線,A7~A0是半頁單元地址線。當(dāng)A8=0時(shí)代表的是0~255的1stHalfPage地址單元地址,當(dāng)A8=1時(shí)代表的是256~511的2ndHalfPage地址單元地址。注意:芯片一般要求是按頁進(jìn)行讀寫的,但是當(dāng)從芯片中讀取數(shù)據(jù)時(shí),分為2個(gè)半頁進(jìn)行讀取,讀取1stHalfPage使用命令0x00代替A8=0;讀取2ndHalfPage使用命令0x01代替A8=1。因此發(fā)送地址信號時(shí)按字節(jié)分為A0~A7、A9~A16、A17~A24、A25,即采用4步尋址法。613.NandFlash芯片的操作過程與時(shí)序圖該芯片內(nèi)有一個(gè)容量為528字節(jié)的靜態(tài)寄存器,稱為頁寄存器,用來在讀/寫數(shù)據(jù)時(shí)作為緩沖區(qū)使用。寫入數(shù)據(jù)或讀取數(shù)據(jù)可以在寄存器和存儲(chǔ)器陣列中按528字節(jié)的順序遞增訪問。當(dāng)對芯片的某一頁進(jìn)行讀寫時(shí),其數(shù)據(jù)首先被該緩沖區(qū)中,通過這個(gè)緩沖區(qū)與其它芯片進(jìn)行數(shù)據(jù)交換,片內(nèi)的讀寫操作由片內(nèi)處理器自動(dòng)完成。以下僅介紹標(biāo)準(zhǔn)頁的讀寫操作流程,其他的操作參見相關(guān)資料。請參考Word文檔。62⑴讀取頁數(shù)據(jù)的過程與時(shí)序圖K9F1208芯片讀取頁數(shù)據(jù)的過程如下:

●發(fā)送命令階段。在片選信號/CE有效的情況下,首先命令鎖存信號CLE有效,此時(shí)寫信號/WE有效,芯片準(zhǔn)備好信號R/B是高電平,表示可以對芯片進(jìn)行操作。之后向I/O端口發(fā)送讀頁命令0x00或0x01,表示進(jìn)行的是讀操作,在/WE的上升沿將命令鎖存到芯片內(nèi)部命令寄存器。命令0x00表示是讀512字節(jié)中的0~255字節(jié),0x01表示讀每頁512字節(jié)中的256~511字節(jié)。

●發(fā)送地址階段。此時(shí)片選信號/CE有效,地址鎖存信號ALE有效,連續(xù)發(fā)送4個(gè)字節(jié)地址,在每個(gè)寫入信號/WE的上升沿將地址信息鎖存,K9F1208的地址寄存器接收到地址信號后,R/B信號將維持“忙”狀態(tài)一段時(shí)間,最后進(jìn)入到準(zhǔn)備好狀態(tài)。

●數(shù)據(jù)輸出階段。R/B=1芯片準(zhǔn)備就緒,此時(shí)每當(dāng)讀信號/RE出現(xiàn)一個(gè)下降沿時(shí),就會(huì)讀出字節(jié)數(shù)據(jù),直到將頁數(shù)據(jù)讀完。

讀出頁數(shù)據(jù)的時(shí)序如圖7-11所示。63圖7-11讀取頁數(shù)據(jù)時(shí)序圖64⑵寫入頁數(shù)據(jù)的過程與時(shí)序圖

●發(fā)送寫數(shù)據(jù)起始命令階段。在片選信號/CE有效的情況下,首先命令鎖存信號CLE有效,此時(shí)寫信號/WE有效,芯片準(zhǔn)備好信號R/B是高電平,表示可以對芯片進(jìn)行操作。之后向I/O端口發(fā)送寫命令0x80,表示進(jìn)行的是寫操作,在/WE的上升沿將命令鎖存到芯片內(nèi)部命令寄存器。

●發(fā)送地址階段。片選信號/CE保持有效,地址鎖存信號ALE有效,連續(xù)發(fā)送4個(gè)字節(jié)的地址,在每個(gè)寫信號/WE的上升沿保存地址到芯片內(nèi)部地址寄存器。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論