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





