ARM學習篇 SDRAM理解

1.SDRAM單管存儲單元異步

 

  1.  SDRAM單管電路圖

 

  

 

  C記憶單元學習

 

  T控制門管spa

 

  Z字線3d

 

  W位線blog

  注:圖示爲N溝道耗盡型MOS管內存

  • 寫入:Z加高電平,MOS導通,W狀態決定了電容C的狀態
  • 讀出:Z加高電平,MOS導通,能夠從W狀態得知C的狀態
  • 保持:Z加低電平,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

相關文章
相關標籤/搜索