1.SDRAM單管存儲單元異步
C記憶單元學習
T控制門管spa
Z字線3d
W位線blog
注:圖示爲N溝道耗盡型MOS管內存
2. 刷新與重寫ast
● 刷新是每隔一段時間,自動重寫一次;重寫是破壞性讀出後當即還原基礎
a). 集中刷新配置
b). 分散刷新分頁
c). 異步刷新
2. SDRAM尋址機制
1. 地址分佈邏輯圖
圖示大體說明了尋址方式,地址總線發出行列地址,選中相應的芯片,再讀寫。
2. K4S561632E功能模塊圖(SDRAM芯片)
● CLK系統時鐘
● CKE時鐘使能
● A0~A12地址線
● BA0~BA1塊選擇
● RAS'列信號使能
● CAS'行信號使能
● WE'寫信號使能
● DQM控制數據輸入輸出
● Vdd/Vss供電電源/地
● Vddq/Vssq數據輸出供電/地
3. SDRAM時序圖
1.片選信號時序圖
● Tacs:片選信號nGCSn起效前,地址信號創建時間
● Tcos:在nOE起效前,片選信號創建時間
● Tacc:訪問週期
● Tcoh:nOE結束後(即電平升高),片選保持時間
● Tcah:nGCSn結束後(即電平升高),地址信號保持時間
● Tacp:Page模式的訪問週期
● 前面介紹了圖示一些術語,有了必定了解,下面咱們來分析上圖:
存儲控制器使用HCLK做爲其時鐘
CPU要訪問某個地址,先發出地址給MMU,MMU再控制地址線,分批次發送行列地址。
Page模式能夠暫時忽略,由於咱們還沒用到離散存儲管理(即物理內存分塊,虛擬內存分頁)。
● Trp:SDRAM RAS預充電時間
● Tsrc:SDRAM半行週期時間
● Tcas:SDRAM列地址創建時間
關閉上一次操做,對上一次讀的行所有重寫一遍,即預充電;
S3C2440A發出片選,塊選(BANK)信號同時發出列地址;
選中行後,發出列地址,讀出相應數據,延遲幾個時鐘週期,I/O端口上就會出現所讀數據
4. 寄存器
總線/位寬等待寄存器BWSCON
總線控制寄存器BANKCON0~BANKCON5
總線控制寄存器BANKCON6/7
SDRAM刷新控制寄存器
BANKSIZE寄存器
SDRAM模式寄存器
5.寄存器配置(重點理解,我花了很長時間找資料、學習)
a. 操做參數
注意看參數,相信你們這點英文基礎仍是有的。
S3C2440A的存儲控制器的nGCSn、地址信號、nOE信號幾乎同時發出,因此這些參數都設置爲0
訪問週期,根據手冊,幾納秒內就能夠訪問到數據,因此能夠儘可能調低。
RAS到CAS延時:3CLK(Col. address to col. address delay+Last data in to new col. address delay+行選通訊號到列選通訊號的延時=3clk)
列地址:9位
預充電時間:20ns左右
行週期:65ns左右
CAS潛伏期:2或者3CLK
6. 基於以上了解,咱們終於能夠寫代碼
AREA SDRAM,CODE,READONLY
CODE32
ENTRY
SDRAM_BASE EQU 0X30000000
WTCON EQU 0X53000000;看門狗控制寄存器
BWSCON EQU 0X48000000
BANKCON0 EQU 0X48000004
BANKCON1 EQU 0X48000008
BANKCON2 EQU 0X4800000C
BANKCON3 EQU 0X48000010
BANKCON4 EQU 0X48000014
BANKCON5 EQU 0X48000018
BANKCON6 EQU 0X4800001C
BANKCON7 EQU 0X48000020
REFRESH EQU 0X48000024
BANKSIZE EQU 0X48000028
MRSRB6 EQU 0X4800002C
MRSRB7 EQU 0X48000030
;定義SDRAM相關寄存器
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058
;定義GPIO端口
_ENTRY
B RESET
B .
B .
B .
B .
B .
B .;0X18
B .
RESET
LDR R0,=WTCON
LDR R1,=0
STR R1,[R0]
LDR R0,=GPFCON
LDR R1,=0X5555
STR R1,[R0]
LDR R0,=GPFUP
LDR R1,=0XFF
STR R1,[R0]
LDR R0,=GPFDAT
LDR R1,=0X5F
STR R1,[R0]
LDR R0,=BWSCON
LDR R1,=0X22011110
STR R1,[R0]
LDR R0,=BANKCON0
LDR R1,=0X00000700
STR R1,[R0]
LDR R0,=BANKCON1
LDR R1,=0X00000700
STR R1,[R0]
LDR R0,=BANKCON2
LDR R1,=0X00000700
STR R1,[R0]
LDR R0,=BANKCON3
LDR R1,=0X00000700
STR R1,[R0]
LDR R0,=BANKCON4
LDR R1,=0X00000700
STR R1,[R0]
LDR R0,=BANKCON5
LDR R1,=0X00000700
STR R1,[R0]
LDR R0,=BANKCON6
LDR R1,=0X00018005
STR R1,[R0]
LDR R0,=BANKCON7
LDR R1,=0X00018005
STR R1,[R0]
LDR R0,=REFRESH
LDR R1,=0X008C07A3
STR R1,[R0]
LDR R0,=BANKSIZE
LDR R1,=0X000000B1
STR R1,[R0]
LDR R0,=MRSRB6
LDR R1,=0X00000030
STR R1,[R0]
LDR R0,=MRSRB7
LDR R1,=0X00000030
STR R1,[R0]
;設置SDRAM相關寄存器
LDR R0,=0X0
LDR R1,=SDRAM_BASE
LDR R2,=4096
COPY_LOOP
LDR R3,[R0],#4
STR R3,[R1],#4
CMP R0,R2
BNE COPY_LOOP
;複製相關0~4kB的代碼到0x30000000開始的空間
LDR R0,=0X30000000
LDR R1,=ON_SDRAM
ADD R2,R0,R1
MOV PC,R2
ON_SDRAM
LDR R0,=GPFDAT LDR R1,=0X3F STR R1,[R0] ;點燈 LDR R0,=0X30000000 LDR R1,=ON_SDRAM ADD R2,R0,R1 MOV PC,R2 END