ARM學習篇 SDRAM理解

来源:http://www.cnblogs.com/GaussianPrince/archive/2016/10/09/5943980.html
-Advertisement-
Play Games

1.SDRAM單管存儲單元 C記憶單元 T控制門管 Z字線 W位線 註:圖示為N溝道耗盡型MOS管 寫入:Z加高電平,MOS導通,W狀態決定了電容C的狀態 讀出:Z加高電平,MOS導通,可以從W狀態得知C的狀態 保持:Z加低電平,MOS關閉,電容保持原狀態 註意:單管讀出是破壞性讀出,因為讀出時電容 ...


1.SDRAM單管存儲單元

 

  1.  SDRAM單管電路圖

 

  

 

  C記憶單元

 

  T控制門管

 

  Z字線

 

  W位線

  註:圖示為N溝道耗盡型MOS管

  • 寫入:Z加高電平,MOS導通,W狀態決定了電容C的狀態
  • 讀出:Z加高電平,MOS導通,可以從W狀態得知C的狀態
  • 保持:Z加低電平,MOS關閉,電容保持原狀態
  • 註意:單管讀出是破壞性讀出,因為讀出時電容充電或者放電了,所以讀出後還要重寫

      2.      刷新與重寫

   ●  刷新是每隔一段時間,自動重寫一次;重寫是破壞性讀出後立即還原

  • 最大刷新間隔:所有的動態單元都被重新刷一遍的時間
  • 刷新周期:刷新一行所用時間
  •  刷新周期數:刷新一塊晶元所用的刷新周期數
  • 刷新周期的安排方式:

  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

  

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL語句中count(1)count(*)count(欄位)用法的區別 在SQL語句中count函數是最常用的函數之一,count函數是用來統計表中記錄數的一個函數, 一. count(1)和count(*)的區別 1. count(1)和count(*)的作用: 都是檢索表中所有記錄行的數目,不 ...
  • 表簇索引(cluster index) 對於表簇索引而言,必須使用表簇。 由於簇索引與索引表簇關聯緊密,無法單獨拿出來總結,因此一併進行總結。 1.1 表簇的定義 表簇是一組通過相同公共列(簇鍵),構成的表的集合。 如上圖,右側獨立的兩張表,employees員工表與departments部門表,通 ...
  • 在ORACLE資料庫中有物理讀(Physical Reads)、邏輯讀(Logical Reads)、一致性讀(Consistant Get)、當前模式讀(DB Block Gets)等諸多概念,如果不理解或混淆這些概念的話,對你深入理解一些知識無疑是一個障礙,但是這些概念確實挺讓讓人犯暈的。下麵我... ...
  • JDBC part1 JDBC概述 jdbc是一種用於執行SQL語句的Java API,通過這套API可以訪問各種關係資料庫,例如;Oracle,MySql,SQLServer等. JDBC驅動程式是各個資料庫廠家根據JDBC的W3C規範製作的JDBC實現類. oracle 驅動地址:F:\Orac ...
  • 【原文地址】https://docs.mongodb.com/manual/ 引言 MongoDB是一種開源文檔型資料庫,它具有高性能,高可用性,自動擴展性 1.文檔資料庫 MongoDB用一個文檔來表示一條記錄,文檔的數據結構由鍵值對組成。MongoDB文檔類似於JSON對象,欄位值可能是文檔,數 ...
  • 資料庫運維中盛傳一個小段子,我誤刪除了資料庫,改怎麼辦?有備份還原備份,沒有備份就準備簡歷!聽起來有趣但發生在誰身上,誰都笑不起來。接觸了很多的客戶發現90%客戶的運維策略都不是很完善。本篇就分享一些常規的運維腳本,本篇沒有涉及到的或不足的也請大家留言無私貢獻深藏多年的腳本,謝謝! 郵件 郵件主要用 ...
  • 1.是用軟體提供的字體 如果只想簡單的設置,可進行如下設置Tools->IDE Options->Editor->Colors and Fonts->Editor Font->Font但是這裡邊似乎也沒有什麼舒服的字體,在網上找了找,還真找到了一個比較不錯的字體,現呈現給大家 2.使用系統提供的字體 ...
  • 1、名詞解析 主機名: 無論是在區域網還是在INTERNET上,每台主機都有一個IP地址,用來區分當前是那一臺機器(其實底層是使用機器的物理地址),也就是說IP地址就是一個主機的門牌號,唯一的標示這一臺機子。 公網: IP地址不方便記憶,所以又有了功能變數名稱。功能變數名稱只是在公網(INTERNET)中存在,每個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...