SDRAM學習筆記

2021-06-01 23:46:01 字數 2526 閱讀 1243

1.sdram的burst mode:sdram是一種命令型動作的裝置,就算讀寫資料只有乙個也要先下命令才可以用,為了增加工作效率,就產生了一種傳送乙個命令,寫多個資料的模式,這就是burst mode。

burst mode是一種利用內部列位址發生器來工作的高速讀寫模式,只要設定最開始的列位址,後面的位址就可以通過內部的列位址發生器來自動生成。

2.為什麼要做precharge動作? 關閉正在作用的sdram bank,算是一種結束命令,後面可以下新的命令。我想這是和sdram內部管理有關。(這是從網上查到的,感覺不夠詳細,也不太理解)

3.自動重新整理功能?動態儲存器(dynamic ram)都存在重新整理問題。這裡主要採用自動重新整理方式,每隔一段時間向sdram發一條重新整理命令。

4.sdram的位址線:在我們一般用的什麼sram啊,psram啊,ram啊,一般而言都是有多少根位址線,然後可以算出定址空間,比如有11根位址線,那定址空間就是2的11次方減1。但是sdram是分列位址和行位址的,行、列位址線是復用的,所以有時候我們看到說定址空間有多大多大,但是看看位址線怎麼就那麼幾根啊,呵呵。sdram一般還有2根bank的線,分成4個bank,在有的處理器的sdram控制模組中,這兩根線可能對映到位址線的某兩根去。一般晶元常按照以下方式寫晶元的配置,比如4meg x 4 x 16,那這個晶元就是256mbits。其中16指資料線是16根,中間乙個4是只分4個bank, 每個bank是4meg。

5.sdram的初始化:

sdram上電後使用前必須要經過一段初始化操作才可以使用。這個操作過程是標準的過程。這個過程如下

a:   precharge

b:   auto-refresh

c:   load mode register

d: normal read/write

在上電後輸入初始化命令值錢,最少要100us延遲(這個其實很容易滿足,呵呵)。

在輸入precharge命令後,因為必須是對所有bank進行precharge,所以a10這個管腳要設定成高,因此在precharge後面要做乙個讀的操作,這個操作最主要的是在sdram的定址空間裡設定的位址必須是a10是高的。

在輸入auto-refresh命令後,一般要跟幾句空操作或者讀什麼之類的,反正要達到延遲的目的,以使得sdram有時間來完成refresh。

之後就是要設定sdram的模式暫存器,這個暫存器裡一般設定了burst長度,cas,burst型別,操作模式,還有是設定sdram是工作在單個讀寫操作還是burst操作下。而這個暫存器的設定也是通過位址線來設定的,所以在發出load mode register命令後要做乙個操作可是使得在sdram的位址線上出線的值就是你要設定的值。這裡很有必要提醒的一下的是,這個操作是8位的操作,切記切記。

設定完模式暫存器後就進入正常操作模式。

實際上具體的操作要跟選用的處理器的sdram控制模組相結合來設定。對於這些初始化命令比較直觀的理解就是拿邏輯分析儀來分析。

在這裡需要提醒一下cas這個引數很重要。還有sdram必須要重新整理的,因此重新整理頻率可以按照手冊算出來的,但是設定的高一點也是可以的。常常sdram都有工作頻率,但是也可以工作在低一點的頻率上,比如pc133的,你工作到100也是可以的,設定基本不需要修改。

6.基本讀寫操作:

sdram的基本讀操作需要控制線和位址線相配合地發出一系列命令來完成。先發出bank啟用命令(active),並鎖存相應的bank位址(ba0、ba1給出)和行位址(a0~a12給出)。bank啟用命令後必須等待大於trcd(sdram的ras到cas的延遲指標)時間後,發出讀命令字。cl(cas延遲值)個工作時鐘後,讀出資料依次出現在資料匯流排上。在讀操作的最後,要向sdram發出預充電(precharge)命令,以關閉已經啟用的頁。等待trp時間(precharge)命令,以關閉已經啟用的頁。等待trp時間(prechareg命令後,相隔trp時間,才可再次訪問該行)後,可以開始下一次的讀、寫操作。sdram的讀操作只有突發模式(burst mode),突發長度為1、2、4、8可選。

sdram的基本寫操作也需要控制線和位址線相配合地發出一系列命令來完成。先發出bank啟用命令(active),並鎖存相應的bank位址(ba0、ba1給出)和行位址(a0~a12給出)。bank啟用命令後必須等待大於trcd的時間後,發出寫命令字。寫命令可以立即寫入,需寫入資料依次送到dq(資料線)上。在最後乙個資料寫入後延遲twr時間。發出預充電命令,關閉已經啟用的頁。等待trp時間後,可以展開下一次操作。寫操作可以有突發寫和非突發寫兩種。突發長度同讀操作。

7.其他:我們有時候看到有的原理圖上資料線有倒過來接的,其實這個無所謂的,反過接,寫進去的就是反的,但是讀出又反了一下,反反兩次正好沒反。

延伸一下到ddr,其實ddr就是sdram外面加了乙個烏龜殼。因此初始化是一樣的。當然ddr一是多了乙個把時鐘頻率反相的時鐘,因此有2個相位差180度的時鐘。這兩個一般都是用同乙個時鐘源產生,一致性會比較好。還有多了2個dqs,這個也是乙個時序要求,一般cpu的控制模組都有設定好了。如果你使用的cpu不含有控制模組,那用fpga去做乙個控制模組的話,那就要好好研究時序了。

在有些處理器的控制模組中,由於emi的設定,位址線對映關係複雜,因此推算會比較麻煩,一般如果沒有什麼對映的話,還是很容易操作的。

Mini2440學習筆記(三) SDRAM

2440的儲存控制器有個8個bank bank0 bank7,對外引出27根位址線 addr0 addr26 訪問範圍是128m,有8個片選訊號 ngcs0 ngcs7 與之對應,所有可以訪問1g的位址空間。bank6和bank7的可訪問位址空間是可以設定的。只有bank6和bank7可以外接sdr...

ARM9學習筆記之 SDRAM實驗

學了點東西,寫點總結。以下是我在做 page130,2.6.8記憶體驅動實驗總結。我按照書上的指示,完成了 的編寫。對專案作如下配置 上述的配置中 ro base 0x30000000 告訴linker,本程式將被載入到 0x30000000 上執行。實驗程式的功能是,程式最初是在0x0000000...

Mini2440學習筆記(三) SDRAM(續)

從 nand flash 啟動cpu 時,cpu 會自動將 nand flash 開始的4k 資料複製到 4kb的內部 ram中 起始位址 0 然後位址 0開始執行。本例程先用彙編設定好 sdram 將程式從內部 ram複製到 sdram 然後跳轉到 sdram 執行。源 包括 sdram.s gp...