黃飛翔 蔡啟仲



【摘 要】在嵌入式系統(tǒng)設(shè)計(jì)中,SDRAM的工作原理、控制時(shí)序及相關(guān)寄存器配置方法,相對(duì)較難。本文基于三星公司的S3C2440微處理器,設(shè)計(jì)外接美光內(nèi)存芯片MT48LC16M16A2,并詳細(xì)分析了初始化代碼,目的是加深初學(xué)者對(duì)SDRAM的基礎(chǔ)知識(shí)的了解,能有助于今后的嵌入式學(xué)習(xí)以及設(shè)計(jì)提供參考。
【關(guān)鍵詞】SDRAM;存儲(chǔ)器;S3C2440
0 引言
制造商所生產(chǎn)的MCU片內(nèi)存儲(chǔ)器空間往往不可能完全滿足所有的嵌入式系統(tǒng)應(yīng)用設(shè)計(jì),例如,AT89S51單片機(jī)的內(nèi)部RAM大小為128字節(jié)。因此,對(duì)于需要較大片內(nèi)存儲(chǔ)空間的應(yīng)用設(shè)計(jì)來說,擴(kuò)展片內(nèi)存儲(chǔ)器空間是非常重要的。
1 硬件設(shè)計(jì)
1.1 三星S3C2440微處理器
1.1.1 S3C2440硬件資源
S3C2440是三星公司開發(fā)的一款基于ARM920T內(nèi)核的16/32位RISC微處理器,集成的系統(tǒng)外設(shè)和接口有:1.8V內(nèi)核電壓,3.3V存儲(chǔ)電壓,3.3V I/O電壓;16KB的指令高速緩存、16KB的數(shù)據(jù)高速緩存和存儲(chǔ)管理單元;外部的存儲(chǔ)控制器(SDRAM控制器和片選邏輯);LCD控制器,包括一個(gè)LCD DMA;4個(gè)帶外部請(qǐng)求管腳的DMA;3個(gè)UART,2個(gè)SPI;1個(gè)I2C總線控制器,1個(gè)I2S-BUS控制器;SD主機(jī)接口;4個(gè)PWM時(shí)鐘和1個(gè)內(nèi)部時(shí)鐘;看門狗時(shí)鐘;117個(gè)GPIO,24個(gè)外部中斷源; 8路10位 ADC和觸摸屏接口;帶ALARM功能的RTC;帶PLL的片上時(shí)鐘發(fā)生器;NAND Flash控制器。
1.1.2 存儲(chǔ)器系統(tǒng)
ARM存儲(chǔ)器系統(tǒng)由各種類型的存儲(chǔ)器按照一定的層次結(jié)構(gòu)組合成[3],如圖1所示。
SDRAM在存儲(chǔ)結(jié)構(gòu)中用做程序的運(yùn)行空間,它在響應(yīng)控制輸入前會(huì)等待一個(gè)時(shí)鐘周期,將CPU和RAM之間的速度進(jìn)行匹配,加快了數(shù)據(jù)傳輸速度。
1.1.3 S3C2440的地址空間
S3C2440是一款具有32位的地址總線和數(shù)據(jù)總線寬度的CPU,實(shí)際上只指引出了27根地址線,最大尋址空間為128MB。8個(gè)Bank分別對(duì)應(yīng)S3C2440的8個(gè)片選信號(hào)線nGCS0~ nGCS7相互區(qū)別,可以做到總的尋址空間為8*128Mb=1GB。
S3C2440地址空間[4]如圖2所示,SDRAM需接在S3C2440的Bank6或Bank7上。
1.2 SDRAM存儲(chǔ)器MT48LC16M16A2
1.2.1 MT48LC16M16A2概述及特性[5]
MT48LC16M16A2是一款256Mb高速CMOS SDRAM,容量為256Mb,結(jié)構(gòu)為4 x 4M x 16bits,16位位寬,兼容PC100、PC133,3.3V供電電壓,自動(dòng)預(yù)充電,刷新時(shí)間為8192/64ms。
1.2.2 SDRAM讀寫時(shí)序
S3C2440對(duì)SDRAM的基本讀操作和寫操作均需要控制線與地址線相互配合。
SDRAM基本讀操作過程如下:
(1)發(fā)出Bank激活命令(必須大于RAS到CAS的延遲指標(biāo)Trcd),并鎖存響應(yīng)Bank的行地址與列地址;
(2)CL(CAS延遲值)個(gè)時(shí)鐘周期后,先指定行地址再指定列地址數(shù)據(jù)即可出現(xiàn)在數(shù)據(jù)總線上;
(3)向SDRAM預(yù)充電命令(PRECHAREG)以關(guān)閉激活頁,等待Trp時(shí)間,即可進(jìn)行下一次讀、寫操作。
SDRAM基本寫操作過程如下:
(1)發(fā)出Bank激活命令(要求同前),并鎖存響應(yīng)Bank的行地址與列地址;
(2)寫入數(shù)據(jù)依次出現(xiàn)在數(shù)據(jù)總線上;
(3)寫入最后一數(shù)據(jù)后延時(shí)Twr時(shí)間,向SDRAM預(yù)充電命令(PRECHAREG)以關(guān)閉激活頁,等待Trp時(shí)間后即可進(jìn)行下一次讀、寫操作。
1.3 接口電路設(shè)計(jì)
采用兩片MT48LC16M16A2并聯(lián)組成32位的位寬,它們與S3C2440的接口電路設(shè)計(jì)如圖3所示。
2 寄存器配置及SDRAM初始化分析
2.1 寄存器配置
Bank7不僅可以像Bank0~Bank5一樣支持ROM和SRAM,還可以外接SDRAM,因此除了需要像Bank0~Bank5一樣設(shè)置相應(yīng)的總線帶寬\等待控制寄存器BWSCON和總線控制寄存器BANKCON7外,還需要根據(jù)MT48LC16M16A2數(shù)據(jù)手冊(cè)中的參數(shù)(例如Trp、Trc、Trcd和Trp等)來對(duì)刷新控制寄存器、存儲(chǔ)塊大小控制寄存器和模式設(shè)置寄存器的相應(yīng)位進(jìn)行配置,從而使得內(nèi)存控制器可以產(chǎn)生相應(yīng)的時(shí)序。假設(shè)系統(tǒng)的HCLK為100MHz(即時(shí)鐘周期為10ns),則各寄存器概述及根據(jù)SDRAM芯片時(shí)序的配置(未配置的位保持默認(rèn))如下:
(1)總線帶寬\等待控制寄存器(BWSCON)各位如下:
ST 啟動(dòng)/禁止SDRAM的數(shù)據(jù)掩碼引腳,對(duì)于SDRAM,該位置0;
WS 是否使用存儲(chǔ)器的WAIT信號(hào),通常置0為不使用;
DW 兩位,設(shè)置位寬(00=8bit、01=16bit、10=32bit、11=保留)。
(2)總線控制寄存器BANKCON7各位如下:
MT([16:15]):配置為0x03將Bank7映射的物理內(nèi)存為SDRAM;
Trcd([3:2]):行地址到列地址的延遲時(shí)間設(shè)置為0x0,因?yàn)門rcd[5]=20ns(即2倍時(shí)鐘周期);
SCAN([1:0]):SDRAM列地址位數(shù)設(shè)置為0x01,因?yàn)楸驹O(shè)計(jì)所采用MT48LC16M16A2的列地址數(shù)為9。
(3)刷新控制寄存器REFRESH
REFEN([23])設(shè)置為1,即啟用SDRAM刷新功能;TREFMD([22])設(shè)置為0,即選用自刷新模式;TRP([21:20])根據(jù)Trp[5]=20ns設(shè)置為0x00,即兩個(gè)時(shí)鐘周期;Tsrc[19:18](SDRAM半行周期運(yùn)行時(shí)間),SDRAM的行周期運(yùn)行時(shí)間滿足Trc=Tsrc+Trp,因?yàn)門rp[5]=20ns(2個(gè)時(shí)鐘周期),Trc[5]=66ns(7個(gè)時(shí)鐘周期),所以Tsrc為5個(gè)時(shí)鐘周期,即將Tsr([19:18])設(shè)置為0x01;MT48LC16M16A2刷新8192行的總時(shí)間為64ms,則單行刷新時(shí)間為7.81μs(64ms/8192),再由公式(單行刷新時(shí)間=211-SDRAM工作頻率(MHz)×刷新計(jì)數(shù)器值+1)計(jì)算得Refresh Counter([10:0])=0x4f4。
(4)存儲(chǔ)塊大小控制寄存器BANKSIZE
BK76MAP([2:0])配置為0x001,因?yàn)楸驹O(shè)計(jì)外接64MB的SDRAM。
(5)SDRAM模式設(shè)置寄存器MRSRB7
CL[6:4] 配置為0x011,因?yàn)門cl[5]=2.5ns(需3倍時(shí)鐘周期)。
2.2 設(shè)計(jì)并分析SDRAM啟動(dòng)代碼
首先在xxx.inc文件中對(duì)下列常量進(jìn)行定義。
其次,初始化文件中包含了xxx.inc文件,就可以在其中使用上述變量了,如下:
通過以上部分代碼,即可完成對(duì)SDRAM存儲(chǔ)器的初始化。
3 總結(jié)
本次設(shè)計(jì)介紹了S3C2440與SDRAM硬件接口的設(shè)計(jì)及相關(guān)寄存器的配置過程,為嵌入式系統(tǒng)設(shè)計(jì)提供了一定的學(xué)習(xí)和設(shè)計(jì)參考。
【參考文獻(xiàn)】
[1]王波波,王琤,等.ARM完全學(xué)習(xí)手冊(cè)[M].北京:化學(xué)工業(yè)出版社,2012.
[2]黃智偉,鄧月明,王彥.ARM9嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)教程[M].北京航空航天大學(xué)出版社,2008.
[3]奚海蛟,諶利,呂鐵軍.ARM體系結(jié)構(gòu)與外設(shè)接口實(shí)戰(zhàn)開發(fā)[M].北京航空航天大學(xué)出版社,2012.
[4]王小強(qiáng),方鵬,粟思科.ARM處理器裸機(jī)開發(fā)實(shí)戰(zhàn)—機(jī)制而非策略[M].電子工業(yè)出版社,2012.
[5]MT48LC16M16A2說明書[S].
[6]S3C2440數(shù)據(jù)手冊(cè)[S].
[7]陳學(xué)立,邱兆坤,陳志勇.嵌入式處理器與SDRAM的接口設(shè)計(jì)與實(shí)現(xiàn)[J],現(xiàn)代電子技術(shù),2010(2).
[責(zé)任編輯:湯靜]