天天看點

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

        在讀寫DDR3之前,需要了解DDR3的相關知識,而如果一開始就直接看DDR3的話,我們極有可能會感覺到一頭霧水,不知道從哪下手,接下來,我們便從SDRAM一步步到DDR3,分步去學習相關的知識。

1 SDRAM簡介

        從某種意義上來講,SDRAM是現在記憶體的最初代産品,現在的DDR4包括DDR5都起源于它。SDRAM(Synchronous Dynamic Access Memory),是同步動态随機存儲器。同步是指其時鐘頻率于CPU前端總線的系統時鐘頻率相同,并且内部的指令的發送與資料的傳輸都是以它為基準;動态是指存儲陣列需要不斷地重新整理來保證資料不丢失:随機是指資料不是線性依次存儲,而是自由地指定位址進行資料的讀寫。

1.1 實體Bank

        傳統記憶體系統為了保證CPU的正常工作,必須一次傳輸完CPU在一個傳輸周期内所需要的資料。而CPU在一個傳輸周期能接收的資料容量就是CPU資料總線的位寬。機關是bit。當時控制記憶體與CPU之間資料交換的北橋晶片也是以将記憶體總線的資料位寬等同于CPU資料總線的位寬,而這個位寬就稱之為實體Bank(Physical Bank)的位寬。簡單了解就是實體Bank與CPU位寬一緻。

1.2 晶片位寬

        晶片位寬是指每一片SDRAM緩存晶片本身的位寬。

        這裡舉一個例子來進行了解:假設CPU的位寬為64bits,那麼ADRAM的實體Bank位寬就為64bits,假設現在晶片位寬為16bits,那麼SDRAM與CPU之間該如何互動呢?我們需要4片SDRAM連接配接起來與CPU互動。

1.3 SDRAM基本架構

1.3.1 邏輯Bank

        邏輯Bank(Logic Bank,簡稱L-Bank)是ADRAM記憶體存儲空間劃分的片區。

1 2 3 4 5 6 7 8 9
2
3
4
5
6
7

        我們可以把L-Bank了解成一個方格矩陣,每一個小格都是一個存儲單元。假設晶片位寬為16bits,那麼每一個小的單元都可以存儲16bits的資料。在對SDRAM進行讀寫時,我們通過RAS(行選中信号)和CAS(列選中信号)來選擇不同的ROW(行)和Column(列)位址。

1.3.2 存儲原理示意圖

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

        這個圖是一個簡單的示意圖,并不能當做是内部實際電路。我們在對記憶體單元進行讀寫時,要先将對應的Bank和行選中并激活,然後在給出讀寫指令的同時給出列位址,激活列位址,然後對存儲單元進行通路。我們知道,記憶體單元的資料是通過電容的的充放電來存儲的,寫資料給電容充電,讀資料使電容放電。重新整理放大器的作用十分關鍵,在我們寫資料時,重新整理放大器起到了對記憶體單元預充電的作用,這樣我們就可以得到較為标準的高低電平,而在資料存儲的時間内,因為電容會有漏電流,是以時間長了它可能會處于亞穩态,那麼重新整理放大器就可以對單元進行重新整理,當存儲資料為1時,給電容充電,使它維持标準的1;當存儲資料為0時,它使記憶體單元的電荷放的更幹淨,維持穩定的0。另外,在從I/O口讀取資料時,因為存儲電容存儲的電荷量十分有限,是以我們需要通過重新整理放大器,将這個電容放大到足夠我們觀察的數值再讀取出來。

1.3.3 SDRAM基本結構  

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         如圖所示,CLK和CKE是一對差分時鐘,CS#,WE#,CAS#,RAS#是控制信号,用來配置模式寄存器,左下角的位址線用來傳輸相應的位址,分别有Bank位址,行位址和列位址,中間的那一大塊的作用就是選中對應的行和列,Bank存儲陣列的規格是32M*4bit,代表了四片晶片位寬為4bit的Bank,是以它的實體Bank位寬就是4*4=16bits。右邊的資料輸入/輸出寄存器與I/O連接配接,進行資料傳輸。DQM為掩碼信号,他與頻閃信号類似,就是選擇将某些資料位屏蔽。需要注意的是,在寫資料時,利用DQM信号将對應資料屏蔽後,資料就不會寫進記憶體裡;但是在讀資料階段,使用DQM将資料屏蔽,資料依然會從記憶體中讀出來,不過在資料輸出寄存器處理階段,不會将被屏蔽的資料輸送到I/O口。

1.4 SDRAM的操作時序

1.4.1 引腳示意圖

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

        A0~A11是12位位址總線,行、列位址共用;BA0,BA1為BANK位址;DQ0~31是32位資料引腳;DQ0~3為資料屏蔽線;clk是時鐘信号,cke是是使能信号;NC代表不連接配接。WE#,CAS#,RAS#,CS#是指令總線,WE#是讀寫控制位,0代表寫,1代表讀;RAS#為行選中信号,CAS#為列選中信号,CS#為片選信号。

1.4.2 指令真值表

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

        NOP代表不操作,第一種在初始化時會用到,第二種是在空閑時用的。ACTIVE表示選中某一個BANK的某以行,将它激活。READ是給出對應BANK的列位址,并且開始突發讀傳輸。WRITE指令給出對應的BANK的列位址,并開始突發寫傳輸。BURST TERMINATE是指令禁止指令,比如在一次突發傳輸沒有結束的時候,我們想進行其他操作,可以通過此指令。讓它強制停止。PRECHARGE是預充電的意思,在進行資料讀寫操作前,必須給BANK中的行進行預充電。AUTO REFRESH和 SELF REFRESH分别是自動重新整理和手動重新整理的意思,自動重新整理是指重新整理放大器會按照一個周期重新整理記憶體單元,而手動重新整理則不同,如果沒有設定為自動重新整理,那麼我們在每次讀寫記憶體單元前,都必須給對應的BANK中的對應ROW(行)先進行一次手動重新整理,然後才能執行讀寫指令。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

 1.4.3 SDRAM操作時序圖

        激活指令,激活某一BANK的某一行。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         寫指令,在對此記憶體單元進行重新整理之後,給出BANK位址和列位址,便可以根據指令進行讀寫操作。讀操作時許與之相似,要注意的是,行和列位址公用一組信号線。寫指令在執行時沒有延時,而讀指令因為需要重新整理放大處理的原因,資料可能會延遲一段時間才能讀出。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         預充電時序,可以根據A10來選擇是否自動預充電。BA0,1用來選擇對哪一個BANK進行預充電。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         SDRAM初始化時序,在圖中對應時刻給相應的指令,就可以完成初始化操作,主要是進行預充電和模式寄存器的配置,圖中的時間都是一些延時,具體數值可以在記憶體手冊上檢視。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         具體的讀寫時序圖邏輯都差不多,有突發讀和寫,還有随機讀和寫模式這裡以突發讀傳輸為例,在對相應的行進行預充電之後,同時給出讀指令和相應的列位址,在經過CL的延時之後,便可以在DQ信号上得到資料,圖中分别展示了CL=2和CL=3的情形。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

 2 從SDRAM到DDR SDRAM

        DDR  SDRAM全稱為Double Data Rate SDRAM,也就是雙倍速率SDRAM實在SDRAM的基礎上改進得到的。

2.1 DDR SDRAM基本結構

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         我們不難看出,圖中的左半部分和SDRAM的結構是一樣的,不同的地方在右半部分,也就是将DQ0~3的四位資料與i/o的8位資料互動,邏輯主要是通過MUX複用器和輸入寄存器來實作将8位資料變為2個4位資料和将2個4位資料合并為8位資料,那麼關鍵問題就是怎樣在DDR進行一次8位資料操作的同時,使用者接口操作兩次4位資料?我們之前都是在時鐘的上升沿進行操作,在DDR中,我們同時在時鐘的上升沿和下降沿采樣,這樣就達到了雙倍速率,而一般都是通過一對差分時鐘來實作的。

2.2 DDR操作時序

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         從圖中可以看到,DDR SDRAM的操作時序和SDRAM的操作時序沒有太大變化,隻不過時鐘變成了一對差分時鐘,在CK的時鐘沿和CK#的時鐘沿的交叉處進行時序操作,這樣就可以達到雙倍的工作速率,DQS信号可以了解為一個資料選通信号,它的一次變化的同時會發生一次資料的更新。因為差分時鐘速率加倍的緣故,這裡的CL也可以不為整數隻要四0.5的倍速就可以。

3 DDR2 SDRAM

3.1 DDR2的基本結構

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         與DDR的雙倍傳輸不同的是,DDR2實作了4倍傳輸,它的實作邏輯和DDR差不多,也是利用複用器和輸入寄存器,将資料進行合并、拆分,但是DDR2的位寬變成了DQ0~DQ15的四倍,這裡DDR2可以說是屬于偷換概念,和DDR一樣,它也是雙沿傳輸,但是剩下的2倍它是通過時鐘頻率加倍來實作的,也就是說,端口的時鐘是DDR2内部時鐘的2倍。

3.2 片外驅動調校(OCD,Off-chip Driver)

        DDR2記憶體在開機時也會有初始化過程,同時在EMRS中加入了新的設定選項,沒有太大變化。在EMRS階段,DDR2加入了可選的OCD功能OCD的主要作用就是調整I/O接口端的電壓,來補償上拉與下拉電阻值,目的是讓DQS與DQ資料信号之間的偏差降低到最小。調校期間,分别測試DQS高電平/DQ高電平,與DQS低電平/DQ低電平時的同步情況,如果不滿足要求,則通過設定突發長度的位址線來傳送上拉/下拉電阻等級(加一檔或減一檔),直到測試合格才退出OCD操作。

        下圖是别人畫的一個OCD示意圖,可以對照了解。OCD的作用在于調整DS與DQ之間的同步,以確定信号的完整與可靠性。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

 3.3 片内終結(ODT,On-Die Termination)

        所謂的終結,就是讓信号被電路的終端吸收掉,而不會在電路上形成反射,造成對後邊信号的影響。在DDR時代,控制與資料信号的終結在主機闆上完成,每塊DDR主機闆在DIMM槽的旁邊都會有一個終結電壓島的設計,它主要由一排終結電阻構成。長期以來,這個電壓島一直是DDR主機闆設計上的一個難點。而ODT的出現,則将這個難點給消滅了。也就是說,ODT就是将終結電阻移植到了晶片内部,而不在主機闆上單獨設計單獨電路了。

3.4 前置CAS、附加潛伏期與寫入潛伏期

        前置CAS(Posted CAS)是為解決DDR中指令沖突而設計的功能。它允許CAS信号緊随RAS信号發送,相對于以往的DDR等于将CAS前置了。這樣,位址線可以立刻空出來,便于後邊的行有效指令發出,避免造成指令沖突而被迫延後的情況發生,但讀/寫操作并沒有是以而提前,仍要保證有足夠的延時/潛伏期,為此,DDR2引入了附加潛伏期的概念(AL,Additive Latency),與CL一樣,機關為時鐘周期數AL+CL被定義為讀取潛伏期(RL,Read Latency),相應的,DDR2還對寫入潛伏期(WL,Write Latency)制定了标準,WL是指聰寫入指令發出到第一筆資料輸入的潛伏期。按照規定,WL=RL-1,即AL+CL-1。

3.5 DDR2時序圖

3.5.1 讀時序

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

 3.5.2 寫時序

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         注意,WL是指寫入潛伏期,是指從寫入指令發出到第一筆資料輸入的潛伏期,不要将它與tDQSS混淆。

4 DDR3 SDRAM

4.1 DDR3新增内容

4.1.1 突發長度(Burst Length,BL)

        由于DDR3的預取為8bit,是以突發傳輸周期BL也固定為8,而對于DDR2和早期的DDR架構系統,BL=4也是常用的,DDR3為此增加了一個4bitBurst Chop(突發突變)模式,即由一個BL=4的讀取操作加上一個BL=4的寫入操作合成一個BL=8的資料突發傳輸,屆時可通過位址線來控制這一突發模式。(也就是說,DDR3不支援單獨BL=4的突發傳輸,突發長度BL隻能等于8)。而且需要需要指出的是,任何突發中斷操作都将在DDR3中予以禁止。且不予支援,取而代之的是更靈活的突發傳輸控制(如4bit順序突發)。

4.1.2 尋址時序(Timing)

        就像DDR2從DDR轉變而來後延遲周期數增加一樣,DDR3的CL周期也将比DDR2有所提高。DDR2的CL範圍一般在2~5之間,而DDR3則在5~11之間,且附加延時AL的設計也有所變化。DDR2的AL範圍是0~4,而DDR3的AL有三種選項,分别是0、CL-1和CL-2。另外,DDR3還新增加了一個時序參數——寫入延時(CWD),這一參數将根據具體的工作頻率而定。

4.1.3 新增的重置(Reset)功能

        重置是DDR3新增的一項重要功能,并為此專門準備了一個引腳。DRAM業界很早就要求增加這一功能,如今終于在DDR3上實作了。這一引腳将使DDR3的初始化處理變得簡單。當Reset指令有效時,DDR3記憶體将停止所有操作,并切換至最少量活動狀态,以節約電力。

        在Reset期間,DDR3記憶體将關閉内在的大部分功能,所有資料接收與發送器都将關閉,所有内部的裝置将複位,DLL(延遲鎖相環路)與時鐘電路将停止工作,而且不理睬資料總線上的任何動靜。這樣一來,将使DDR3到達最節省電力的目地。

4.1.4 DDR3新增ZQ校準功能

        ZQ也是一個新增的引腳,在這個引腳上接有一個240歐姆的低公差參考電阻。這個引腳通過一個指令集,通過片上校準引擎(On-Die Calibration Engine,ODCE)來自動校驗資料輸出驅動器導通電阻與ODT的終結電阻值。當系統發出這一指令後,将用相應的時鐘周期(在加電與初始化之後用512個時鐘周期,在退出自動重新整理操作後用256個時鐘周期、在其他情況下用64個時鐘周期)對導通電阻和ODT電阻進行重新校準。

4.1.5 參考電壓分成兩個

        在DDR3系統中,對于記憶體系統工作非常重要的參考電壓信号VREF将分為兩個信号,即為指令與位址信号服務的VREFCA和為資料總線服務的VREFDQ,這将有效的提高系統資料總線的信噪等級。

4.1.6 點對點連接配接(Point-to-Point,P2P)

        這是為了提高系統性能而進行的重要改動,也是DDR3與DDR2的一個關鍵差別。在DDR3系統中,一個記憶體控制器隻與一個記憶體通道打交道,而且這個記憶體通道隻能有一個插槽,是以,記憶體控制器與DDR3記憶體模組之間是點對點(P2P)的關系(單實體Bank的模組),或者是點對雙點(P22P)的關系(雙實體Bank的模組),進而大大地減輕了位址/指令/控制與資料總線的負載。而在記憶體模組方面,與DDR2的類别相類似,也有表準DIMM(台式PC)、SO-DIMM/Micro-DIMM(筆記本電腦)、FB-DIMM2(伺服器)之分,其中第二代FB-DIMM将采用規格更高的AMB2(進階記憶體緩沖器)。

        面向64位架構的DDR3顯然在頻率和速度上擁有更多的優勢,此外,由于DDR3所采用的根據溫度自動自重新整理、局部自重新整理等其他一些功能,在功耗方面DDR3也要出色許多,是以,他可能首先受到移動裝置的歡迎,就像最新迎接DDR2記憶體的不是桌上型電腦而是伺服器一樣。在CPU外頻提升最迅速的PC桌上型電腦領域,DDR3未來也是一片光明。Intel所推出的新晶片-熊湖(Bear Lake),其将支援DDR3規格,而AMD也将預計同時在K9平台上支援DDR2及DDR3兩種規格。

4.2 DDR3硬體設計

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

4.3 DDR3時序

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入
使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入
使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入
使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

 5 MIG引入

        MIG是Xilinx平台給出的一款記憶體控制器IP核。雖然DDR3的時序關系非常複雜,但是我們可以通過MIG IP核來控制DDR3,而我們隻需要完成MIG的時序控制就行,這樣就極大的簡化了設計的複雜度,縮小了開發周期。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         圖中所示為MIG的基本結構,它分為三個部分,分别是使用者接口、記憶體控制器和實體接口。其中記憶體控制器和實體接口用來控制DDR3的時序,而我們隻需要控制使用者接口就可以了。

        圖中的MIG IP核的使用者接口是Native接口,時序關系也比較簡單。就是說,當app_en和app_rdy信号同時為高電平時,app_cmd(指令)和app_addr(位址)才有效,是以當需要app_cmd和app_addr有效時,app_en必須保持到app_rdy為高電平才有效。

使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入
使用VIVADO中的MIG控制DDR3(AXI接口)三——DDR3簡介1 SDRAM簡介 2 從SDRAM到DDR SDRAM3 DDR2 SDRAM4 DDR3 SDRAM 5 MIG引入

         關于Native接口的MIG IP核将講解與使用方法很多,但我們這次試驗主要用AXI接口的MIG IP 核。AXI接口的使用者接口的時序其實就是AXI總線協定的時序,前邊我們講過,後邊我們就直接來将怎樣配置它已經利用它對DDR3進行讀寫測試。

繼續閱讀