標籤:
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的設定,地址線映射關係複雜,因此推算會比較麻煩,一般如果沒有什麼映射的話,還是很容易操作的。
[轉]SDRAM驅動筆記