S3C2410外圍存儲系統的研究與設計
?。樱幔恚螅酰睿绻就瞥龅幕?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/ARM920T">ARM920T內核的16/32位RISC微處理器S3C2410,為手持設備和一般類(lèi)型應用提供了低價(jià)格、低功耗、高性能小型微控制器的解決方案。為了降低整個(gè)系統的成本,S3C2410提供了豐富的內部設備。其中加強的ARM體系結構MMU用于支持WinCE,EPOC32和Linux。隨著(zhù)技術(shù)的進(jìn)步和發(fā)展,電子產(chǎn)品的功能日益強大,而嵌入式操作系統可以有效地管理各項功能,并且能夠縮短產(chǎn)品開(kāi)發(fā)周期,因此將微處理器與嵌入式操作系統進(jìn)行聯(lián)合開(kāi)發(fā)成為一種趨勢,然而微處理器的片內存儲資源有限,若要進(jìn)行嵌入式系統的移植,必須擴展其存儲系統。對于嵌入式系統的開(kāi)發(fā)人員來(lái)說(shuō),深入理解其存儲系統原理和有效地管理存儲系統對正確高效地設計嵌入式系統的硬件和底層軟件編程具有重要的意義[1]。
?。薄。樱常茫玻矗保暗膶ぶ吩?/P>
ARM920T內核提供了32位的地址總線(xiàn),可以訪(fǎng)問(wèn)4G(232)的線(xiàn)性地址空間,而S3C2410的內部地址總線(xiàn)是30bit(HADDR[29:0]),能夠訪(fǎng)問(wèn)的最大外部地址空間是230,即1G的地址空間0x00000000~0x3FFFFFFFF,可見(jiàn)S3C2410僅利用了ARM920T的32位地址總線(xiàn)的低30位,并且是一一對應相連的[1]。由表1可知S3C2410將1G的外部地址空間分成了8個(gè)存儲器組,每個(gè)組的大小為128M,其中6個(gè)用于ROM、SRAM等存儲器,2個(gè)用于ROM、SRAM、SDRAM等存儲器?;谛酒w積及成本的考慮,當S3C2410對外尋址時(shí),采用了部分譯碼的方式,即低位地址線(xiàn)用于外圍存儲器的片內尋址,而高位地址線(xiàn)用于外圍存儲器的片外尋址。如表1所示,由于每個(gè)存儲器組的起始地址及空間大小固定,對于系統要訪(fǎng)問(wèn)的任意外部地址,S3C2410可以方便地利用內部地址總線(xiàn)的高3位HADDR[29:27]來(lái)選擇該地址屬于哪一個(gè)存儲器組(Bank),從而激活相應的Bank選擇信號,并且使用外部地址總線(xiàn)A[26:0]來(lái)實(shí)現相應Bank的內部尋址,尋址范圍為128M(227),從而使得其外圍地址訪(fǎng)問(wèn)空間為1GB(128MB×8)。S3C2410正是通過(guò)這種機制來(lái)完成外部地址空間的尋址全過(guò)程。
?。樱常茫玻矗保霸L(fǎng)問(wèn)SDRAM地址空間的過(guò)程比較難理解,這主要和SDRAM的存儲結構有關(guān)。為了更深入地理解其尋址機制,筆者以SDRAM芯片HY57V561620B(32MB)為例進(jìn)行詳細地說(shuō)明。該芯片的內部存儲結構是4Banks×4M×16Bit,即共有4個(gè)Bank,每個(gè)Bank中有4M個(gè)半字(16Bit)。Bank地址可以通過(guò)BA[1:0]與地址總線(xiàn)的高位相連來(lái)確定,具體BA[1:0]與哪個(gè)地址位相連,不同的SDRAM存儲系統有不同的方案,詳見(jiàn)參考文獻[3]。而每個(gè)Bank中的存儲單元由行地址和列地址來(lái)唯一標識[1],該芯片通過(guò)行地址鎖存引腳nRAS和列地址鎖存引腳nCAS分別與S3C2410的引腳nSRAS(SDRAM行地址選通信號)和nSCAS(SDRAM列地址選通信號)連接,從地址總線(xiàn)獲得行地址和列地址。而且列地址的位數可以在BANKCONn(n=6,7)的中的SCAN——BANKCONn?。郏保海埃輥?lái)配置,00=8-bit,01=9-bit,10=10-bit,其復位值為00,即8bit。
在實(shí)際工作中,如圖1所示,在第3個(gè)總線(xiàn)時(shí)鐘,nSCS為低電平,表示SDRAM被選中,并且地址線(xiàn)的Bank地址與相應的行地址同時(shí)發(fā)出,這個(gè)命令稱(chēng)之為“行有效”或“行激活”(Row?。粒悖簦椋觯澹?。此時(shí)SDRAM將行地址鎖存(nSRAS有效),但還沒(méi)有執行寫(xiě)命令(nWE為高電平),因為沒(méi)有列地址(nSCAS為高電平),存儲單元無(wú)法確定。經(jīng)過(guò)Trcd(RAS至CAS延遲)后,SDRAM再次被選中(nSCS為低電平),此時(shí)nSCAS為低電平,指示SDRAM此時(shí)地址線(xiàn)上的地址為列地址,同時(shí)nWE有效,寫(xiě)操作被執行??梢?jiàn)發(fā)送列地址尋址命令與具體的操作命令(是讀還是寫(xiě)),這兩個(gè)命令也是同時(shí)發(fā)出的,所以一般都會(huì )以“讀/寫(xiě)命令”來(lái)表示列尋址,相關(guān)的列地址被選中之后,將會(huì )觸發(fā)數據傳輸。至此,S3C2410對SDRAM的尋址就完成了??梢?jiàn),S3C2410將地址總線(xiàn)上的地址分成行地址和列地址并分開(kāi)傳輸給SDRAM?;谏鲜龅膶ぶ窓C制,由BA[1:0]和12根地址線(xiàn)就可以尋址32M或更大的地址空間了。
圖?。薄。樱常茫玻矗保啊。樱模遥粒蜁r(shí)序圖
?。病〈鎯ζ骺刂破骱拖嚓P(guān)引腳介紹
?。玻奔拇嫫鹘榻B
?。樱常茫玻矗保按鎯ζ骺刂破髦饕校嚎偩€(xiàn)帶寬和等待控制寄存器(BWSCON);總線(xiàn)控制寄存器(BANKCONN:nGCS0-nGCS5);BANK控制寄存器(BANKCONn:nGCS6-nGCS7);刷新控制寄存器(REFRESH);BANKSIZE寄存器;SDRAM模式寄存器集寄存器(MRSR)等,詳情請見(jiàn)參考文獻[3]。
?。玻蚕嚓P(guān)引腳
?。樱常茫玻矗保疤峁┝讼嚓P(guān)的引腳來(lái)控制存儲器訪(fǎng)問(wèn):
組選擇信號:nGCS0-nGCS5,nGCS6(nSCS0),nGCS7(nSCS1)引腳用來(lái)選擇相應的存儲器組。
訪(fǎng)問(wèn)控制信號:為了實(shí)現ARM存儲器訪(fǎng)問(wèn)指令LDR/STR字節、半字和字訪(fǎng)問(wèn)的三種方式,在S3C2410的存儲器組中,除了Bank0以外的所有地址空間都可以通過(guò)編程設置為8位、16位或32位對準訪(fǎng)問(wèn),Bank0可以設置為16位或32位。引腳nWBE[3:0](寫(xiě)字節使能)實(shí)現8bit?。遥希托酒M的三種訪(fǎng)問(wèn)方式,或者SRAM不使用UB/LB(在BWSCON中設置)的情況下,與UB/LB連接。引腳nBE[3:0](在使用SRAM情況下的字節允許信號)在SRAM使用UB/LB(是否使用可在BWSCON中設置)的情況下與UB/LB連接。DQM[3:0](SDRAM數據屏蔽信號)引腳實(shí)現對SDRAM的三種訪(fǎng)問(wèn)。還有nWAIT、nXBREQ/nXBACK引腳。
存儲器相關(guān)文章:存儲器原理
評論