S3C2410 內(nèi)存連接方法的深入研究
我想,很多的朋友包括一些剛?cè)腴T,或者是剛從事嵌入式開發(fā)的工程師,都會(huì)對(duì)內(nèi)存這一塊不知所措吧,先拋開信號(hào)完整性不說,單從內(nèi)存的原理以及與主芯片的連接,就已經(jīng)大傷腦筋了,而很多朋友雖然已經(jīng)開發(fā)出了可以使用的硬件電路板,但大多數(shù)的人都是因?yàn)橛辛碎_發(fā)板的參考而所以成功。那如果現(xiàn)在沒有了開發(fā)板,或者設(shè)計(jì)要求與你開發(fā)板的內(nèi)存容易配置不一樣,那你應(yīng)該如何下手呢?今天我將把自己根據(jù)2410的芯片手冊(cè)以及內(nèi)存的芯片手冊(cè)而完成器件的原理與分析方法,分享給大家,希望如果有不對(duì)的地方可以提出,本例中將以S3C2410為主芯片,8Mbyte內(nèi)存為設(shè)計(jì)方案,(注:本設(shè)計(jì)我已認(rèn)證)
S3C2410,其“存儲(chǔ)控制器”提供了訪問外圍設(shè)備所需的信號(hào),它有如下特性:
●支持小字節(jié)、大字節(jié)序(通過軟件選擇);
●每個(gè)bank的地址空間為128MB,總共1GB(8banks);
●可編程控制的總線位寬(8/16/32-bit),不過bank0只能選擇兩種位寬(16/32-bit);
●總共8個(gè)bank,bank0~bank5可以支持外接ROM、SRAM等,bank6~bank7除可以支持ROM、SRAM外還支持SDRAM等;
●bank0~bank6共7個(gè)bank的起始地址是固定的;
●bank7的起始地址可編程選擇;
●bank6、bank7的地址空間大小是可編程控制的;
●每個(gè)bank的訪問周期均可編程控制;
●可以通過外部的“wait”信號(hào)延長(zhǎng)總線的訪問周期;
●在外接SDRAM時(shí),支持自刷新和省電模式;
對(duì)于本系統(tǒng)而言,無論出于成本或是RAM占用的面積而言使用SRAM都是不劃算的。SRAM一般用于小系統(tǒng)中,SRAM常用于快速存儲(chǔ)的較低容量的RAM需求,比如Cache(緩存)。另外本系統(tǒng)需只要帶動(dòng)linux內(nèi)核,和一些數(shù)據(jù)庫(kù)的存取,需要占用內(nèi)存不是很大,如果用SRAM的話不僅面積占用很大,將近4倍于SDRAM。而且價(jià)格將近于SDRAM的8倍左右,顯然是不合理的。SDRAM具有高速、大容量等優(yōu)點(diǎn),是一種具有同步接口的高速動(dòng)態(tài)隨機(jī)存儲(chǔ)器。它的同步接口和內(nèi)部流水線結(jié)構(gòu)允許存儲(chǔ)外部高速數(shù)據(jù),數(shù)據(jù)傳輸速度可以和ARM的時(shí)鐘頻率同步,在ARM系統(tǒng)中主要用作程序的運(yùn)行空間、數(shù)據(jù)及堆棧區(qū)。從成本上考慮,它SRAM便宜很多,根據(jù)設(shè)計(jì)的性價(jià)比,可采用SDRAM作為高速緩存,實(shí)現(xiàn)高速數(shù)據(jù)傳輸。
本系統(tǒng)中用SDRAM時(shí)有一個(gè)重要的因素需要仔細(xì)考慮,然后選擇SDRAM的大小。一般來說,移植到開發(fā)板上的linux內(nèi)核是一個(gè)鏡像文件,本系統(tǒng)的鏡像文件不超過1.5M,在運(yùn)行內(nèi)核的時(shí)候?qū)⒋绥R像文件復(fù)制到內(nèi)存并解壓,解壓后大小后超過2M,假如把數(shù)據(jù)段等都考慮進(jìn)去,那么運(yùn)行內(nèi)核需要占用內(nèi)存3M多,這里保守估計(jì)到4M,而一般的代碼都在100K以加,加上數(shù)據(jù)庫(kù)的內(nèi)容,不會(huì)超過10M,所以選用16M內(nèi)存比較劃算。
根據(jù)上面CPU的特性說明,得知在bank6和bank7上可以連接SDRAM,每個(gè)bank最大可以連接128M,另外可以連接16M或更小。對(duì)于16M來說,可以滿足系統(tǒng)內(nèi)存占用的要求,32M以上雖然性能會(huì)更好,但是由于內(nèi)存有大量的存儲(chǔ)空間不被使用,所以從成本上考慮,會(huì)不劃算。
在設(shè)計(jì)的時(shí)候還需要考慮位寬的問題,對(duì)于本系統(tǒng)使用的CPU核為ARM9,總線位寬最大為32bit,這里選擇最大的總線位寬來保證總線每次數(shù)據(jù)傳輸率最大。SDRAM的最高位寬為16bit,因此如果要達(dá)到總線位寬32bit的話,可以用兩片16bit位寬的SDRAM并聯(lián)得到。那么此時(shí)每片SDRAM的大小可以為4banks*1M*16bit。
根據(jù)上面的分析,這里選用SDRAM芯片型號(hào)為HY57V641620ESTP-H。該系列的SDRAM是67,108,864位CMOS同步DRAM,適用于大存儲(chǔ)和高帶寬的存儲(chǔ)器的選擇。該芯片的內(nèi)部存儲(chǔ)結(jié)構(gòu)是4banks×1M×16bits,HY57V641620ESTP-H系列是完全同步操作提供參照的時(shí)鐘上升沿。 所有輸入和輸出 是同步的時(shí)鐘輸入的上升沿。數(shù)據(jù)路徑內(nèi)部管線 , 實(shí)現(xiàn)非常高的帶寬。所有輸入和輸出電壓電平兼容LVTTL接口。其特征是:
●3.3 ± 0.3V單電源;
●所有器件引腳兼容LVTTL接口;
●所有的輸入和輸出參照系統(tǒng)時(shí)鐘的上升沿;
●自動(dòng)刷新和自刷新,每64ms自刷新一遍;
●可編程CAS延遲,2,3個(gè)時(shí)鐘
該SDRAM系列根據(jù)不同的最高頻率,提供了幾種型號(hào)選擇,本系統(tǒng)選用最高頻率為133MHZ的HY57V641620ESTP-H型號(hào)。SDRAM的頻率由鎖相環(huán)MPLL經(jīng)過分頻所得到的HCLK總線頻率提供SDRAM的時(shí)鐘頻率,這里選擇100MHZ主要為了分頻方便而選擇。
該芯片具有54個(gè)引腳,封裝為TSOP,其引腳描述如下:
CLK:時(shí)鐘引腳,用于系統(tǒng)時(shí)鐘的輸入,所有的輸入在系統(tǒng)時(shí)鐘的上升沿向SDRAM注冊(cè)。
CKE:時(shí)鐘使能引腳,控制內(nèi)部的時(shí)鐘信號(hào)。
/CS:片選引腳,使能或禁止所有除CLK、CKE、UDQM、LDQM的輸入。
BA0、BA1:bank地址引腳。
A0~A12:地址線引腳,行地址:RA0 RA12,列地址:CA0 CA8。
/RAS、/CAS、/WE:行地址選通,列地址選通,寫使能引腳。
UDQM、LDQM:數(shù)據(jù)輸入輸出屏蔽引腳。
DQ0~DQ15:數(shù)據(jù)輸入輸出引腳。
VDD/VSS:電源/接地引腳,為內(nèi)部電路和輸入緩沖供電。
VDDQ/VSSQ:數(shù)據(jù)輸出電源/地引腳,為輸出緩沖供電。
NC:未連接。
電氣性能如表1表示:
表1:DC下的電氣性能
從規(guī)格書中可以看到其輸入的電源電壓典型值為3.3V,和CPU輸出電壓一致。輸入的高電平電壓最小為2.0V,符合CMOS中高電平輸出電壓最小為3.3-0.05V。輸入的低電平電壓最大為0.8V,符合CMOS中低電平輸出電壓最大為0.05V。
本系統(tǒng)通過8根片選信號(hào)的配置將SDRAM連接在BANK6上,根據(jù)S3C2440手冊(cè)描述該BANK6的起始地址為0x30000000,本系統(tǒng)配置的SDRAM訪問空間為16M大小,那么結(jié)束地址為0x30ffffff。BANK6連接SDRAM比較復(fù)雜,CPU提供了一組用于SDRAM的信號(hào):
說明如下:
●SDRAM時(shí)鐘有效信號(hào)SCKE;
●SDRAM時(shí)鐘信號(hào)SCLK0/SCLK1;
●數(shù)據(jù)掩碼信號(hào)DQM0/DQM1/DQM2/DQM3;
●SDRAM片選信號(hào)nSCS0(它與nGCS6是同一引腳的兩個(gè)功能);
●SDRAM行地址選通脈沖信號(hào)nSRAS;
●SDRAM列脈沖信號(hào)nSCAS;
●寫允許信號(hào)nWE(它不是專用于SDRAM的)。
地址線和數(shù)據(jù)線的連接:
地址線的連接相對(duì)來說比較復(fù)雜,需要對(duì)SDRAM芯片的規(guī)格書仔細(xì)和S3C2440手冊(cè)對(duì)存儲(chǔ)控制器的描述很好的理解。這里首先對(duì)本系統(tǒng)中所用的SDRAM芯片的內(nèi)部結(jié)構(gòu)進(jìn)行闡述。SDRAM芯片選用的是HY57V641620ESTP-H型號(hào),內(nèi)部具有4個(gè)bank,每個(gè)bank是1M,每個(gè)存儲(chǔ)單元為16位數(shù)據(jù)。其內(nèi)部結(jié)構(gòu)如圖1-2-1所示:
從其內(nèi)部結(jié)構(gòu)我們也可以看出,該芯片對(duì)外提供了14根地址總線。其中BA0和BA1用于選擇片選4個(gè)bank。每個(gè)bank的1M大小的存儲(chǔ)空間則由A0~A11控制。每個(gè)bank的內(nèi)部是一個(gè)存儲(chǔ)陣列,陣列就如同表格一樣,將數(shù)據(jù)“填”進(jìn)去。和表格的檢索原理一樣,先指定一個(gè)行(row),再指定一個(gè)列(column),就可以準(zhǔn)確地找到所需要的單元格,這也是SDRAM的尋址原理。對(duì)于該bank,其內(nèi)部的每個(gè)存儲(chǔ)單元,如同上面所說的分別由行和列地址總線來控制。在該芯片的規(guī)格書的引腳說明中,如表1-2-2所示,行使用RA0~RA11共12根地址線,列使用RA0~RA7共8根數(shù)據(jù)線。而這樣的行列方式組成了一個(gè)BANK的1M尋址空間(2^12*2^8=2^20,為1M空間)。而每一個(gè)空間中存的數(shù)據(jù)長(zhǎng)度為16bit。
圖1:HY57V641620ESTP-H內(nèi)部結(jié)構(gòu)
表1-2-2:內(nèi)存引腳功能表
對(duì)于具體的地址線和數(shù)據(jù)線的連接需要根據(jù)手冊(cè)來正確連接。根據(jù)S3C2410手冊(cè),可得到雙SDRAM的連接方法,具體如表3和表4所示:
表3:不同數(shù)據(jù)位寬度地址線連接方法
表4:16MB內(nèi)存連接方法
本系統(tǒng)選擇的bank大小配置為16M,總線帶寬為32bit,芯片的bank數(shù)量為4塊,對(duì)應(yīng)表中存儲(chǔ)配置的(1M*16*4BANKS)*2ea,根據(jù)表中的bank address是連接到A23、A22。該bank address是用了兩個(gè)地址總線來選擇4個(gè)bank,對(duì)應(yīng)芯片引腳中的BA0和BA1。因此,根據(jù)上面所說,A22連接兩片芯片的BA0引腳,A23連接兩片芯片的BA1引腳。
其余信號(hào)引腳的連接:
nSCS為SDRAM芯片的片選信號(hào),而在S3C2440該CPU中提供了片選信號(hào)nSCS0,該引腳和nGCS6是同一個(gè)引腳的兩個(gè)功能。當(dāng)該信號(hào)有效時(shí),選中SDRAM芯片。
SCKE、SCLK0、SCLK1 3個(gè)引腳分別是兩片RAM芯片的時(shí)鐘有效信號(hào)和兩個(gè)時(shí)鐘信號(hào)。在CPU端,也相應(yīng)提供對(duì)應(yīng)的3個(gè)引腳,依次相連即可。SCLK0代表的是低16位芯片的時(shí)鐘引腳,SCLK1代表的是高16位芯片的時(shí)鐘引腳。
nWE芯片引腳為寫使能信號(hào),在CPU端引腳提供了一個(gè)不是專用于SDRAM的寫允許信號(hào)引腳nWE,將此引腳分別用于芯片的寫使能,同時(shí)控制兩片芯片的寫使能與否。LDQM、UDQM 兩個(gè)SDRAM芯片引腳分別為寫使能和數(shù)據(jù)掩碼信號(hào)引腳,用于在讀模式下控制輸出緩沖,在寫模式下屏蔽輸入數(shù)據(jù)。前面所講的CPU所提供給SDRAM信號(hào)中有4個(gè)數(shù)據(jù)掩碼信號(hào)DQM0/ DQM1/ DQM2/ DQM3,將低16位芯片的LDQM、UDQM引腳和DQM0、DQM1相連,將高16位芯片的LDQM、UDQM引腳和DQM2、DQM3相連。
芯片手冊(cè)上關(guān)于電源部分描述如下
根據(jù)上表,VDD和VDDQ電源信號(hào)需要連接3.3V,引腳說明中VSS和VSSQ信號(hào)需要接地。
根據(jù)上面所述,電路圖連接如圖2所示: