摘 要:嵌入式微處理器與SDRAM存儲(chǔ)器的接口設(shè)計(jì)是嵌入式開(kāi)發(fā)系統(tǒng)中非常重要的一個(gè)環(huán)節(jié)。為了實(shí)現(xiàn)ARM與SDRAM的數(shù)據(jù)控制與傳輸,設(shè)計(jì)了以基于ARM920T內(nèi)核的EP9315芯片與MT48LC4M32B2TG接口,具體介紹了接口電路設(shè)計(jì),EP9315對(duì)SDRAM的尋址邏輯,編程初始化SDRAM的實(shí)現(xiàn),最后在硬件平臺(tái)上調(diào)試成功。
關(guān)鍵詞:嵌入式系統(tǒng);ARM920T;SDRAM存儲(chǔ)器;接口設(shè)計(jì)
中圖分類號(hào):TP3681文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)02-191-04
Design and Implementation of SDRAM Interface for Embedded Mircoprocessor
CHEN Xueli,QIU Zhaokun,CHEN Zhiyong
(National University of Defence Technology,Changsha,410073,China)
Abstract:The design of interface between embedded microprocessors and SDRAM memory is a very important process in the development of the whole embedded system.In order to control and transfer the data between ARM and SDRAM,using EP9315 with a ARM920T core and MT48LC4M32B2TG,the design of interface circuit,the addressing logic from EP9315 to SDRAM,the program implementation of SDRAM initialization,and the interface works correctly and successfully in the platform of EP9315 are introduced.
Keywords:embedded system;ARM920T;SDRAM;interface design
0 引 言
隨著社會(huì)的日益信息化,計(jì)算機(jī)和網(wǎng)絡(luò)已經(jīng)全面滲透到日常生活的任何一個(gè)角落。對(duì)于人們來(lái)說(shuō),需要的不僅是那種通用計(jì)算機(jī),任何一個(gè)人都可能擁有從小到大的各種使用嵌入式技術(shù)的電器產(chǎn)品;小到MP3,PDA、信息家電等消費(fèi)數(shù)碼產(chǎn)品,大到網(wǎng)絡(luò)通信、車載電器、工業(yè)控制、國(guó)防武器等設(shè)備,這些設(shè)備正悄悄改變著人們生活的節(jié)奏,并把便利和高效帶給了這個(gè)時(shí)代。ARM9是基于RISC的32位微處理器,具有高性能、低成本、低功耗的特點(diǎn),廣泛應(yīng)用于各類嵌入式產(chǎn)品中。在一個(gè)嵌入式系統(tǒng)中,為了滿足不同的功能工作要求,會(huì)用到各種不同類型的存儲(chǔ)器,如主要用于裝載代碼的具有掉電非易失性NOR FLASH,裝載數(shù)據(jù)的NAND FLASH,一般用作程序執(zhí)行的SDRAM等等。
SDRAM是同步動(dòng)態(tài)存儲(chǔ)器的縮寫,它具有動(dòng)態(tài)刷新,讀/寫速度快的特點(diǎn)。在嵌入式系統(tǒng)中,微處理器上電啟動(dòng)后都會(huì)將非易失性的存儲(chǔ)器件中的代碼加載到SDRAM中進(jìn)行運(yùn)行,而系統(tǒng)及用戶數(shù)據(jù)、堆棧均位于SDRAM中。嵌入式微處理器ARM9芯片與SDRAM的接口電路設(shè)計(jì)是整個(gè)嵌入式系統(tǒng)設(shè)計(jì)中關(guān)鍵的一環(huán),其穩(wěn)定性是對(duì)系統(tǒng)正常工作的保障,也是發(fā)揮嵌入式系統(tǒng)高性能的前提。
1 硬件資源及接口設(shè)計(jì)
1.1 EP9315的內(nèi)部結(jié)構(gòu)及資源
EP9315是Cirrus Logic公司生產(chǎn)的一款基于ARM920T核的片上系統(tǒng),是EP93XX的旗艦產(chǎn)品,200 MHz的微處理器核,豐富的外圍電路使其成為消費(fèi)和工業(yè)電子產(chǎn)品的理想選擇。它的內(nèi)核擁有:16 KB指令的CACHE、16 KB數(shù)據(jù)的CACHE、內(nèi)嵌MMU支持Linux,Wince等嵌入式操作系統(tǒng),支持100 MHz的系統(tǒng)總線頻率。它的外圍資源主要包括:多達(dá)四組的32 b SDRAM接口,32/16/8位的SRAM/FLASH/ROM接口,串行E2PROM,1/10/100 Mb/s以太網(wǎng)控制器,三路UART,三路USB 2.0全速(12 Mb/s)主口,紅外接口,二路EIDE接口,最多六通道的I2S接口,8×8鍵盤掃描接口,SPI接口,二通道16 b PWM輸出,PCMCIA接口,帶ADC的觸摸屏接口,帶圖像加速器的LCD與光柵(Raster)接口。
EP9315的內(nèi)部結(jié)構(gòu)如圖1所示。
圖1 EP9315內(nèi)部結(jié)構(gòu)
1.2 EP9315的存儲(chǔ)器映射
EP9315的啟動(dòng)有異步模式和同步模式,對(duì)于不同的啟動(dòng)模式,存儲(chǔ)器的映射地址也不相同。圖2介紹了兩種啟動(dòng)模式下不同的地址映射。
圖2 EP9315的地址映射
EP9315一個(gè)BANK劃分的大小為256 MB,不同的片選管腳對(duì)應(yīng)不同的BANK選擇,其中nCS0~nCS3,nCS6,nCS7可以選擇6個(gè)異步存儲(chǔ)器的BANK,可以是NOR FLASH,也可以是NAND FLASH,nSDCE0~nSDCE3可以選擇四組SDRAM,每組存儲(chǔ)器的最大為256 MB。在此選取nSDCE0作為MT48LC4M32B2TG的片選,并選取同步啟動(dòng)模式,它的地址映射起始地址為0xC0000000,而MT48LC4M32B2TG中各個(gè)BANK對(duì)應(yīng)的EP9315地址空間的分布還和EP9315的SDRAM控制器的配置及MT48LC4M32B2TG的大小有關(guān)系。
1.3 SDRAM存儲(chǔ)器MT48LC4M32B2TG
MT48LC4M32B2TG是Micron公司開(kāi)發(fā)的一款32 b SDRAM芯片。SDRAM的內(nèi)部結(jié)構(gòu)如圖3所示。它內(nèi)部包括2根BANK選擇線,12根行選擇線和8根列地址線,可以實(shí)現(xiàn)對(duì)4×4 K×256 B的存儲(chǔ)單元的尋址,因?yàn)樗淖钚〈鎯?chǔ)單元為32 b大小,所以MT48LC4M32B2TG的大小為128 Mb。它的列地址線是復(fù)用行地址線的,所以MT48LC4M32B2TG用到的地址線為12根行線和2根BANK選擇線。另外它的6根控制線CKE,CLK,CE,WE,RAS,CAS和DQM0~3分別對(duì)應(yīng)的10根控制線,作用分別為時(shí)鐘使能、時(shí)鐘、片選、寫選通、行選通、列選通和控制4個(gè)字節(jié)的數(shù)據(jù)掩碼。
圖3 MT48LC4M32B2TG內(nèi)部結(jié)構(gòu)
從圖3可以看出SDRAM內(nèi)部包含一個(gè)模式寄存器,在SDRAM的初始化步驟里要對(duì)模式寄存器進(jìn)行寫入,設(shè)定SDRAM的各個(gè)工作參數(shù),包括SDRAM的操作模式、CAS潛伏期、突發(fā)傳輸模式和突發(fā)長(zhǎng)度\\。模式寄存器的寫入是SDRAM初始化關(guān)鍵的一步,其寫入的操作數(shù)是對(duì)SDRAM各參數(shù)的設(shè)定,這些參數(shù)又決定了SDRAM工作性能的發(fā)揮,各參數(shù)的具體意義本文中不做討論。
1.4 接口設(shè)計(jì)
硬件電路接口設(shè)計(jì)的穩(wěn)定性是實(shí)現(xiàn)設(shè)計(jì)目的的前提,這里提出的EP9315與MT48LC4M32B2TG的接口設(shè)計(jì)方案如圖4所示,并已在自己制作的EP9315開(kāi)發(fā)板中調(diào)試成功。
圖4 接口設(shè)計(jì)原理圖
2 EP9315對(duì)SDRAM的尋址邏輯
MT48LC4M32B2TG大小為128 Mb,為行列復(fù)用選址,可以實(shí)現(xiàn)32 MB尋址。而如圖4所示,EP9315用A15和A14作為SDRAM的BANK選擇線,A0~A11作為SDRAM的行地址線,同時(shí)A0~A7又復(fù)用為SDRAM的列地址線。如果EP9315對(duì)SDRAM采取簡(jiǎn)單的線性地址譯碼,則加上2根BANK選擇線,EP9315最多可實(shí)現(xiàn)214=16 KB的尋址,要達(dá)到32 MB的尋址,EP9315內(nèi)部必須有更復(fù)雜的譯碼規(guī)則,圖5為幾種不同EP9315工作模式下對(duì)SDRAM的地址譯碼邏輯。其中AD0_AD15指代SDRAM外部的真實(shí)地址管腳,A0~A27為EP9315地址操作數(shù)的數(shù)值,比如對(duì)于代碼“l(fā)dr r0,=0xc0008000 Str r1,\\”,這里要將r1寄存器里的值寫到0xc0008000這個(gè)地址空間里去,首先就必須先找到0xc0008000這個(gè)地址操作數(shù)所對(duì)應(yīng)的SDRAM的真實(shí)存儲(chǔ)位置。其中最高位字節(jié)“c”確定了EP9315要尋址的外部存儲(chǔ)塊為片選“SDCS0”所確定的塊,也正是設(shè)計(jì)中所選擇的MT48LC4M32B2TG的位置。假定EP9315選擇“SDRAM 32 b”這樣一個(gè)模式,則對(duì)外部SDRAM尋址時(shí),在外部地址管腳上,會(huì)先產(chǎn)生BANK選擇地址AD15~AD14為“00”,它等于譯碼后A27~A26的值;行地址AD11~AD0為“000000100000”,它等于譯碼后A21~A10的值;然后產(chǎn)生列地址AD7~AD0為“00000000”,它等于譯碼后A9~A2的值,A2對(duì)應(yīng)AD0的值是因?yàn)?2位位寬下要實(shí)現(xiàn)字對(duì)齊需要從A2位開(kāi)始,16位的則從A1位開(kāi)始。
從整體地址映射空間來(lái)看,MT48LC4M32B2TG內(nèi)部有4個(gè)BANK,一個(gè)BANK大小為8 MB,選擇“SDRAM 32 b”模式,則EP9315的外部映射空間0xc0000000~0xc03fffff對(duì)應(yīng)BANK0,0xc4000000~0xc43fffff對(duì)應(yīng)BANK1,0xc8000000~0xc83fffff對(duì)應(yīng)BANK2,0xcc000000~0xcc3fffff對(duì)應(yīng)BANK3。另外,因?yàn)锳25~A22處的譯碼不會(huì)對(duì)SDRAM的尋址產(chǎn)生影響,所以EP9315的外部映射有24=16個(gè)譯碼地址對(duì)應(yīng)同一個(gè)SDRAM的實(shí)際存儲(chǔ)位置。
EP9315工作在“SDRAM 32 b”模式下并不能實(shí)現(xiàn)對(duì)MT48LC4M32B2TG的連續(xù)尋址,而選擇“SROM looklike 32 b”模式(對(duì)于模式的選取通過(guò)EP9315的SDRAM的控制寄存器配置來(lái)設(shè)定)。如圖5所示,則0xc0000000~0xc03fffff對(duì)應(yīng)BANK0,0xc0400000~0xc07fffff對(duì)應(yīng)BANK1,0xc0800000~0xc0bfffff對(duì)應(yīng)BANK2,BANK3的地址映射為0xc0c00000~0xc0ffffff,實(shí)現(xiàn)地址連續(xù)映射,但也同時(shí)有16個(gè)譯碼地址對(duì)應(yīng)同一個(gè)SDRAM實(shí)際存儲(chǔ)位置。
圖5 EP9315對(duì)SDRAM的譯碼邏輯
3 SDRAM初始化的編程實(shí)現(xiàn)
EP9315對(duì)SDRAM的初始化的基本流程如圖6所示。
圖6 SDRAM初始化基本流程
該設(shè)計(jì)中SDRAM初始化的相關(guān)代碼如下:
ldr r2,=0x4e20;延遲100 μs
2 subs r2,r2,#1
bne %b2
ldr r0,=rSDRAM_DCFG0 ;設(shè)置SDRAM控制寄存器
ldr r1,=0x210008
str r1,
ldr r0,=rSDRAM_GCG
ldr r1,=0x80000002
str r1,
ldr r0,
ldr r0,=rSDRAM_GCG;產(chǎn)生nop命令
ldr r1,=0x80000003
str r1,
ldr r2,=0x9c40;延遲200 μs
10 subs r2,r2,#1
bne %b10
ldr r0,=rSDRAM_GCG
ldr r1,=0x80000001;預(yù)充電
str r1,
ldr r1,=0xf
ldr r0,=rSDRAM_RT;暫時(shí)設(shè)置刷新時(shí)間為15circle
str r1,
ldr r2,=0xb0;延遲176個(gè)SDRAM工作周期
7 subs r2,r2,#1
bne %b7
ldr r0,=rSDRAM_RT
ldr r1,=0x61b;設(shè)定新的刷新頻率
str r1,
ldr r3,=0xc0008800
ldr r0,=rSDRAM_GCG
ldr r1,=0x80000002;使能模式寄存器通道并寫入模式寄存器
str r1,
ldr r2,
ldr r0,=rSDRAM_DCFG0;設(shè)置SDRAM控制寄存器
ldr r1,=0x210008
str r1,
ldr r0,=rSDRAM_GCG
ldr r1,=0x80000000;進(jìn)入正常操作
str r1,
初始化中SDRAM控制寄存器控制字、SDRAM模式寄存器的寫入字\\、刷新頻率值\\的設(shè)定都會(huì)影響到SDRAM的工作狀態(tài),尋址方式和性能的發(fā)揮。
4 結(jié) 語(yǔ)
在嵌入式系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)中,SDRAM的接口設(shè)計(jì)是很重要的步驟,其穩(wěn)定性影響著系統(tǒng)的穩(wěn)定性,它的優(yōu)越性體現(xiàn)著系統(tǒng)的優(yōu)越性。該設(shè)計(jì)成功地實(shí)現(xiàn)了SDRAM的接口設(shè)計(jì)及初始化,為接下來(lái)的底層驅(qū)動(dòng)開(kāi)發(fā)、操作系統(tǒng)移植、應(yīng)用程序開(kāi)發(fā)提供了可靠保障。
參考文獻(xiàn)
[1]趙效民.高手進(jìn)階,終極內(nèi)存技術(shù)指南\\.www.pcpop.com.
[2]EP93xx_Users_Guide_UM1.Datasheet of EP93XX.
[3]128 Mb SDRAMx32.Datasheet of MT48LC4M32B2TG.
[4]王成.基于ARM9處理器的嵌入式開(kāi)發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)\\.大連:大連理工大學(xué),2006.
[5]江俊輝.基于ARM的嵌入式系統(tǒng)硬件設(shè)計(jì)\\.微計(jì)算機(jī)信息,2005,21(Z):120-122.
[6]竇振中.嵌入式處理器ARM技術(shù)及芯片\\.世界電子元器件,2002(3):15-16.
[7]趙梅,胡宏平.基于ARM的嵌入式系統(tǒng)在溫控儀表中的應(yīng)用\\.自動(dòng)化儀表,2007,28(11):32-34.
[8]姜磊.基于ARM的嵌入式系統(tǒng)在無(wú)線視頻傳輸中的應(yīng)用\\.哈爾濱:哈爾濱工業(yè)大學(xué),2006.
[9]段星光,黃強(qiáng).基于ARM+DSP的小型地面移動(dòng)機(jī)器人控制系統(tǒng)\\.伺服控制,2006(5):10-12.
[10]李贛平,杜紅彬,邵惠鶴.基于ARM的流量計(jì)大容量存儲(chǔ)功能的實(shí)現(xiàn)\\.自動(dòng)化儀表,2005,26(4):25-26.
[11]朱連柱.基于ARM嵌入式系統(tǒng)的M2M終端平臺(tái)研究\\.大連:大連理工大學(xué),2006.
[12]祁小鈺.基于ARM的數(shù)據(jù)處理終端設(shè)計(jì)\\.南京:南京理工大學(xué),2006.
[13]王根義,馬德寶,楊黎斌.基于ARM的嵌入式最小系統(tǒng)架構(gòu)研究\\.微計(jì)算機(jī)信息,2008,24(2):68-71.