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