1,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。
2,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也是可以的,設定基本不需要修改。
3,其他
我們有時候看到有的原理圖上資料線有倒過來接的,其實這個無所謂的,反過接,寫進去的就是反的,但是讀出又反了一下,反反兩次正好沒反。
延伸一下到ddr,其實ddr就是sdram外面加了乙個烏龜殼。因此初始化是一樣的。當然ddr一是多了乙個把時鐘頻率反相的時鐘,因此有2個相位差180度的時鐘。這兩個一般都是用同乙個時鐘源產生,一致性會比較好。還有多了2個dqs,這個也是乙個時序要求,一般cpu的控制模組都有設定好了。如果你使用的cpu不含有控制模組,那用fpga去做乙個控制模組的話,那就要好好研究時序了。
在有些處理器的控制模組中,由於emi的設定,位址線對映關係複雜,因此推算會比較麻煩,一般如果沒有什麼對映的話,還是很容易操作的。
使用TimeQuest進行SDRAM時鐘約束例項
特權同學的 sdram時鐘相移估算 針對sdram的相移設定做了一些介紹,也列舉了乙個活生生的例子進行講解。很多朋友在實際應用中即便對sdram的時序模型熟悉了,當可能仍然不知道在timequest這個工具上如何進行時序約束和分析,尤其對於這個sdram專用時鐘的約束分析。本文就是要和大家來 實際應...
SDRAM擴充套件
1 如果需要的資料匯流排寬度和sdram一樣的話,使用串聯擴充套件方式。a 12條address連在一起 b 兩片sdram的bank address也接到一起 c cs訊號用來作為1bit的address,也就是容量擴大了一倍 d dqm對應的bit接在一起 e 其他的cas,ras,we,dat...
基於FPGA的SDRAM設計 SDRAM的初始化
基於fpga的sdram設計 sdram的初始化 先引乙個圖說明一下sdram的初始化過程吧,這樣來的直觀一些 這便是sdram在開機時的初始化過程,上電後要有200us的輸入穩定期,在這個時間內不可以對sdram的介面做任何操作 200us以後就是要對所有l bank預充電,再往後給sdram 8...