本文主要介紹DDR的原理圖和PCB設(shè)計規(guī)則。
1、SCH設(shè)計原則
DDR原理圖的設(shè)計目前比較成熟,由于其信號引腳固定,且有統(tǒng)一的規(guī)范(JESD79系列),而且像Micron、Samsung、SK Hynix、Toshiba等廠家都有各自的technical note,因此本文只羅列一些特殊的注意事項(xiàng)。
1.1、顆粒容量的可擴(kuò)展性
根據(jù)JEDEC標(biāo)準(zhǔn),不同容量的內(nèi)存芯片一般引腳兼容,為了實(shí)現(xiàn)電路板的可擴(kuò)展性,可以做如下處理,如128Mb與256Mb的兼容應(yīng)用。
1.2、未用的DQ引腳處理
對于x16的DDR器件來說,未用的引腳要作一定的處理。例如x16的DDR來說,DQ[15:8]未用,則處理如下,將相關(guān)的UDM/DQMH拉高用來屏蔽DQ線,DQ[15:8]通過1~10k的電阻接地用來阻止迸發(fā)寫時的噪聲。
1.3、端接技術(shù)
DDR常用的端接技術(shù)有兩種,分別如下:
串行端接,主要應(yīng)用在負(fù)載DDR顆粒不大于4個的情況下。對于雙向I/O信號來說,例如DQ,串行端接電阻Rs放置在走線的中間,用來抑制振鈴,過沖和下沖。對于單向的信號來說,例如地址線,控制線,串行端接電阻放置在走線中間或者是信號的發(fā)送端,推薦放置在信號的發(fā)送端。
并行端接,主要應(yīng)用在負(fù)載SDRAM器件大于4個,走線長度>2inch,或者通過仿真驗(yàn)證需要并行端接的情況下。并行端接電阻Rt取值大約為2Rs,Rs的取值范圍是10~33ohm,故Rt的取值范圍為22~66ohm。并行端接電壓為VTT。
對于沒有ODT功能的DDR,所有的數(shù)據(jù)線,地址,命令,控制線都需要使用single-ended Parallel Termination端接。
1.4、時鐘信號
所有DDR的差分時鐘線CK與CK#必須在同一層布線,誤差+-20mil,最好在內(nèi)層布線以抑制EMI。如果系統(tǒng)有多個DDR器件的話,要用阻值100~200ohm的電阻進(jìn)行差分端接。
若時鐘線的分叉點(diǎn)到DDR器件的走線長度<1000mil,要使用100~120ohm的差分端接(只用一個端接電阻),如下圖:
若時鐘線的分叉點(diǎn)到DDR器件的走線長度>1000mil,要兩個使用200~240ohm的電阻差分端接,因?yàn)閮蓚€200~240ohm的電阻并聯(lián)值正好為100~120ohm。如下圖所示。
針對一拖多的情況,在時鐘線差分對之間經(jīng)常會并聯(lián)一個pF級的差分電容,容值根據(jù)阻抗匹配的觀點(diǎn),需匹配差分阻抗Z0,故,即800MHz時鐘、100Ω差分阻抗時,C約為2pF。該電容一般放在發(fā)送端,為了濾除差模干擾、消除反射。
1.5、參考電壓VREF
對于較輕的負(fù)載(<4片DDR器件),可使用下圖的方法:
VREF走線盡量短粗;
在器件VREF引腳處放置一個0.1uF的旁路電容;
在VREF和VDDQ之間放置一個0.1uF的電容(上電時電壓的跟隨特性更好);
在VREF和VSSQ之間放置一個0.1uF的電容;
具體如下圖所示:
對于較重的負(fù)載(>4片DDR器件),可使用IC來產(chǎn)生VREF。IC內(nèi)部集成了兩種電壓VTT和VREF,其中VTT在重負(fù)載的情況下最高電流可達(dá)3.5A,平均電流為0A,VREF的電流比較小,一般只有3mA左右。
Appropriate DDR termination regulator vendors offering products with VTT, VREF, VDDQ, and VDD outputs include:
Fairchild—ML6554and FAN1655
LinearTechnology—LTC3413 and LTC3831
NationalSemiconductor—LP2995 and LP2996
Phillips—NE57810 and NE47814
TI—TPS51200
1.6、VTT設(shè)計
當(dāng)數(shù)據(jù)線地址線負(fù)載較重時,VTT的暫態(tài)電流峰值可達(dá)到3.5A左右,這種暫態(tài)電流的平均值為0A。一些情況下不需要VTT技術(shù)(并行端接):
系統(tǒng)中有2個或更少的DDR
總線上需要的電流不是很高,中等左右
通過仿真驗(yàn)證不需要
VTT電壓的產(chǎn)生一般用IC,廠商包括:Intersil,Philips Semiconductors, Fairchild,National, TI等等。選用IC實(shí)現(xiàn)VTT,推薦使用下面的原則:
地址/控制/命令信號線用Rt端接到VTT,VTT=VDD/2
VTT并不端接時鐘信號線,時鐘信號線使用差分端接技術(shù)
VTT與VREF走線平面在同一層,必須具有150mil的距離,推薦它們在不同層
VTT走線平面需要至少2個4.7uF的去耦電容,2個100uF的電容。具體放置位置是VTT的兩個端點(diǎn)(at each end)
VTT表面走線寬度至少150mil,推薦250mil
上電時序:VTT開始上電必須在VDDQ之后(具體實(shí)現(xiàn)方式可以采用VDDQ來控制VTT電源芯片的使能),避免器件latch-up,推薦VTT和VREF同時上電
如果走線要分支的話,建議使用T型分支。
具體見下圖:
1.7、引腳交換特性
同組(Lane)數(shù)據(jù)線可以交換。原因是內(nèi)存的數(shù)據(jù)線只是存放數(shù)據(jù),而CPU是根據(jù)CPU的數(shù)據(jù)線來存取,與內(nèi)存的數(shù)據(jù)線順序無關(guān),相當(dāng)于把數(shù)據(jù)存到一組容器,數(shù)據(jù)按什么順序放就按什么順序取。有時為了布線方便而調(diào)整組內(nèi)的順序。
地址線不能交換。原因是模式寄存器的值是通過地址總線發(fā)出的(通過A4~A6配置模式寄存器)。
2、PCB設(shè)計規(guī)則
2.1、布局
首先要確定DDR的拓補(bǔ)結(jié)構(gòu),一般而言,DDR1/2采用星形結(jié)構(gòu),DDR3采用菊花鏈結(jié)構(gòu)(不是所有的DDR3都可以用Fly by結(jié)構(gòu),如果主控芯片不支持讀寫平衡(Read and WriteLeveling)功能,則不能使用Fly by拓?fù)浣Y(jié)構(gòu)(因?yàn)镕ly by結(jié)構(gòu)的DQS和CK不等長!!!沒有write leveling就沒法調(diào)整DQS和CK之間的偏斜。))。拓補(bǔ)結(jié)構(gòu)只影響地址線的走線方式,不影響數(shù)據(jù)線。星形拓補(bǔ)就是地址線走到兩片DDR中間再向兩片DDR分別走線,菊花鏈就是用地址線把兩片DDR“串起來”。
DDR2是采用T形拓?fù)浣Y(jié)構(gòu),這種結(jié)構(gòu)是不是星形結(jié)構(gòu)的刪減版?采用T形拓?fù)涫且驗(yàn)闀r序要求信號要同時到達(dá)。那DDR3采用的Fly by結(jié)構(gòu),其實(shí)就是stub較短的菊花鏈,之所以采用此種結(jié)構(gòu)是因?yàn)镈DR3多了讀寫平衡的新技能,即使你們不同時到達(dá),也能把它調(diào)過來。所以采用何種拓?fù)浣Y(jié)構(gòu)首先要看時序要求。
確定了DDR的拓補(bǔ)結(jié)構(gòu),就可以進(jìn)行元器件的擺放,有以下幾個原則需要遵守:
原則一,考慮拓補(bǔ)結(jié)構(gòu),仔細(xì)查看CPU地址線的位置,使得地址線有利于相應(yīng)的拓補(bǔ)結(jié)構(gòu);
原則二,地址線上的匹配電阻靠近CPU(發(fā)送端);
原則三,數(shù)據(jù)線上的匹配電阻靠近DDR;
原則四,將DDR芯片擺放并旋轉(zhuǎn),使得DDR數(shù)據(jù)線盡量短,也就是,DDR芯片的數(shù)據(jù)引腳靠近CPU;
原則五,如果有VTT端接電阻,將其擺放在地址線可以走到的最遠(yuǎn)的位置。一般來說,DDR2不需要VTT端接電阻,只有少數(shù)CPU需要;DDR3都需要VTT端接電阻。
原則六,DDR芯片的去耦電容放在靠近DDR芯片相應(yīng)的引腳。
以下是DDR2的元器件擺放示意圖(未包括去耦電容),可以很容易看出,地址線可以走到兩顆芯片中間然后向兩邊分,很容易實(shí)現(xiàn)星形拓補(bǔ),同時,數(shù)據(jù)線會很短。
不帶VTT端接電阻的布局圖如下:
帶VTT端接電阻的布局圖如下:
帶VTT端接電阻的情況,地址線上沒有串聯(lián)匹配電阻(DDR3),VTT端接電阻擺放在地址線可以到達(dá)的最遠(yuǎn)距離。如果有數(shù)據(jù)線匹配電阻則必須靠近DDR放置。
以下是DDR3的元器件布局圖,這里使用的CPU支持雙通道DDR3,所以看到有四片(參考設(shè)計是8片)DDR3,其實(shí)是每兩個組成一個通道,地址線沿著圖中綠色的走線傳遞,實(shí)現(xiàn)了菊花鏈拓?fù)洹5刂肪€上的VTT端接電阻擺放在了地址線可以到達(dá)的最遠(yuǎn)的地方。同樣地,數(shù)據(jù)線上的端接電阻也放置在了靠近DDR3芯片的位置,數(shù)據(jù)線到達(dá)CPU的距離很短。同時,可以看到,去耦電容放置在了很靠近DDR3相應(yīng)電源引腳的地方。
2.2、布線
2.2.1、設(shè)置線寬與線距
DDR走線線寬與阻抗控制密切相關(guān),經(jīng)常可以看到很多同行做阻抗控制。對于純數(shù)字電路,完全有條件針對高速線做單端阻抗控制;但對于混合電路,包含高速數(shù)字電路與射頻電路,射頻電路比數(shù)字電路要重要的多,必須對射頻信號做50歐姆阻抗控制,同時射頻走線不可能太細(xì),否則會引起較大的損耗,所以在混合電路中,往往舍棄數(shù)字電路的阻抗控制。
DDR的供電走線,建議8mil以上,在Allegro可以針對一類線進(jìn)行物理參數(shù)的統(tǒng)一設(shè)定,可以建立PWR-10MIL的約束條件,并為所有電源網(wǎng)絡(luò)分配這一約束條件。
間距的控制要考慮阻抗要求和走線的密度。通常采用的間距原則是2W或者3W。如果有足夠的空間來走線,可以將數(shù)據(jù)線按3W的間距來走,可以減小很多串?dāng)_。如果實(shí)在不行至少要保證2W的間距。除此之外,數(shù)據(jù)線與其它信號線的間距至少要有3W的間距,如果能更大則更好。時鐘與其它的信號線的間距至少也要保持3W,并盡可能的大。繞線的間距也可以采用2W和3W原則,應(yīng)優(yōu)先用3W原則。相鄰兩層盡量參考GND。對于線間距,也可以在Allegro中建立一種約束條件,為所有DDR走線(XNET)分配這樣的約束條件。
還有一種可能需要的規(guī)則,就是區(qū)域規(guī)則。Allegro中默認(rèn)的線寬線距都是5mil,在CPU引腳比較密集的時候,這樣的規(guī)則是無法滿足的,這就需要在CPU或DDR芯片周圍設(shè)定允許小間距、小線寬的區(qū)域規(guī)則。
2.2.2、設(shè)置等長規(guī)則
對于數(shù)據(jù)線,DDR1/2與DDR3的規(guī)則是一致的:每個BYTE與各自的DQS,DQM等長,即DQ[0:7]與DQS0,DQS0N,DQM0等長,DQ[8:15]與DQS1,DQS1N,DQM1等長,以此類推。
地址線方面的等長,要特別注意,DDR1/2與DDR3是很不一樣的。對于DDR1/2,需要設(shè)定每條地址到達(dá)同一片DDR的距離保持等長。對于DDR3,地址線的等長往往需要過孔來配合,具體的規(guī)則均綁定在過孔上和VTT端接電阻上。可以看到,CPU的地址線到達(dá)過孔的距離等長,過孔到達(dá)VTT端接電阻的距離也等長。
2.2.3、走線及等長
走線注意事項(xiàng)如下:
所有走線盡量短;
走線不能有銳角;
盡量少打過孔;
保證所有走線有完整的參考平面,地平面或電源平面都可以,對于交變信號,地與電源平面是等電位的;
盡量避免過孔將參考面打破,不過這在實(shí)際中很難做到;
走完地址線和數(shù)據(jù)線后,務(wù)必將DDR芯片的電源腳,接地腳,去耦電容的電源腳,接地腳全部走完,否則在后面繞等長時會很麻煩。
一般來說,DQ,DQS,DM和時鐘信號線選擇VSS作為參考平面,因?yàn)閂SS比較穩(wěn)定,不易受到干擾,地址/命令/控制信號線選擇VDD作為參考平面,因?yàn)檫@些信號線本身就含有噪聲。
完成等長規(guī)則的設(shè)定后,最后一步也是工作量最大的一步:繞等長。在這一步,我認(rèn)為只有一點(diǎn)規(guī)則需要注意:盡量采用3倍線寬,圓弧繞等長。
繞等長完成后,最好把DDR相關(guān)網(wǎng)絡(luò)鎖定,以免誤動。
DDR數(shù)據(jù)線用DQS來鎖存,因此要和DQS保持等長。地址、控制線用時鐘來鎖存,因此要和時鐘保持等長,一般等長就沒有什么問題。阻抗方面,一般來說DDR需要60歐姆,DDR2需要50歐姆,走線不要打過孔,避免阻抗不連續(xù)。串?dāng)_方面,只要拉開線距,一層信號一層地,就不會出問題。
無論是PCB上使用芯片還是采用DIMM條,DDRx(包括DDR3,DDR4等)相對于傳統(tǒng)的同步SDRAM的讀寫,主要困難有三點(diǎn):
第一,時序。由于DDR采用雙沿觸發(fā),和一般的時鐘單沿觸發(fā)的同步電路,在時序計算上有很大不同。DDR之所以雙沿觸發(fā),其實(shí)是在芯片內(nèi)部做了時鐘的倍頻,對外看起來,數(shù)據(jù)地址速率和時鐘一樣。為了保證能夠被判決一組信號較小的相差skew,DDR對數(shù)據(jù)DQ信號使用分組同步觸發(fā)DQS信號,所以DDR上要求時序同步的是DQ和DQS之間,而不是一般數(shù)據(jù)和時鐘之間。另外,一般信號在測試最大和最小飛行時間Tflight時,使用的是信號沿通過測試電平Vmeas與低判決門限Vinl和和高門限Vinh之間來計算,為保證足夠的setup time和hold time,控制飛行時間,對信號本身沿速度不作考慮。而DDR由于電平低,只取一個中間電平Vref做測試電平,在計算setup time和hold time時,還要考量信號變化沿速率slew rate,在計算setup time和hold time時要加上額外的slew rate的補(bǔ)償。這個補(bǔ)償值,在DDR專門的規(guī)范或者芯片資料中都有介紹。
第二,匹配。DDR采用SSTL電平,這個特殊buffer要求外接電路提供上拉,值為30~50ohm,電平VTT為高電平一半。這個上拉會提供buffer工作的直流電流,所以電流很大。此外,為了抑制反射,還需要傳輸線阻抗匹配,串連電阻匹配。這樣的結(jié)果就是,在DDR的數(shù)據(jù)信號上,兩端各有10~22ohm的串連電阻,靠近DDR端一個上拉;地址信號上,發(fā)射端一個串連電阻,靠近DDR端一個上拉。
第三,電源完整性。DDR由于電平擺幅小(如SSTL2為2.5V,SSTL1為1.8V),對參考電壓穩(wěn)定度要求很高,特別是Vref和VTT,提供DDR時鐘的芯片內(nèi)部也常常使用模擬鎖相環(huán),對參考電源要求很高;由于VTT提供大電流,要求電源阻抗足夠低,電源引線電感足夠小;此外,DDR同步工作的信號多,速度快,同步開關(guān)噪聲比較嚴(yán)重,合理的電源分配和良好的去耦電路十分必要。
3、DDR4布線(Tabbed Routing)
DDR4有一種特殊的布線方式:Tabbed Routing,Tabbed routing由intel公司2015年3月份提出,主要用在下一代處理器SKYLAKE平臺,DDR4的走線方式。TabbedRouting主要的方法是在空間比較緊張的區(qū)域(一般為BGA區(qū)域和DIMM插槽區(qū)域),減小線寬,而增加凸起的小塊(Tab),這種方法可以增加兩根線之間的互容特性而保持其電感特性幾乎不變,而增加的電容可以有效控制每一層的的阻抗,減小外層的遠(yuǎn)端串?dāng)_。該方法對阻抗和遠(yuǎn)端串?dāng)_可以很好的平衡,對于Tab的尺寸,需要根據(jù)實(shí)際PCB做詳細(xì)的仿真設(shè)計,Intel也提供了一些Tool可以參考。
Tabbedlines have been proposed to reduce or eliminate FEXT(Far-end Crosstalk).
Tabbed Routing詳細(xì)可參見《Intel: Crosstalk Mitigation andImpedance Management Using Tabbed Lines》一文.
除了JESD79系列規(guī)范,還可以參見Micron(TN-46系列、TN-41系列)文檔。