扒一扒DDR4的新功能和PCB設計上的一些注意事項
轉自 http://www.elecfans.com/d/906656.html
DDR4新增了許多功能,這對於我們之前信手拈來的內存PCB設計又帶來了一些新的挑戰,雖然說之前的一些規範可以用,但還是有很多不一樣的地方,如果依然按照之前的設計方法來做,說明你還不瞭解DDR4,一準入坑。今天咱們就來扒一扒它的新功能和PCB設計上的一些注意事項。
DDRX發展趨勢及參數對比
DDR4信號引腳功能
DDR4新增pin
DDR4新增功能
(1)新的JEDEC POD12接口標準(工作電壓1.2V) ;
(2)DBI:可以降低功耗並且提升數據信號完整性;
(3)Bank羣組結構:是個8n預取羣組結構,它可以使用兩個或者四個Bank組,這允許DDR4內存在每個Bank羣組單獨被激活、讀取、寫入或刷新操作,這樣可以帶來更高的內存速度和帶寬;
(4)取消了Derating,時序仿真計算不再繁瑣;
(5)DQ動態確定Vref ( V_ center ) ,增加了眼圖要求;
(5)新的終止調度:在DDR4中DQ bus可以轉移終止到VDDQ ,這樣即使VDD電壓降低的情況下也能保證穩定;
(6)新的數據總線CRC技術,可以進行傳輸過程中的錯誤偵測,特別對非ECC內存進行寫入操作時有幫助;
(7)針對命令和地址總線的新的CA奇偶校驗;突發長度和突發停止長度分別爲8和4 ;
(8)正常和動態的ODT :改進ODT協議,並且採用新的Park Mode模式可以允許正常終結和動態吸入終結,而不需要去驅動ODT Pin
(9)Differential Signaling(差分信號技術)
信號分組
DDR3數據信號的分組
DDR4數據信號的分組
DDR3地址信號的分組
DDR4地址信號的分組
佈局要求
(1)地址線佈局佈線需使用Fly-by的拓撲結構,不可使用T型,拓撲過孔到管腳的長度儘量短,長度在150mil左右
(2)VTT上拉電阻放置在相應網絡的末端,即靠近最後一個DDR4顆粒的位置放置;注意VTT上拉電阻到DDR4顆粒的走線越短越好,走線長度小於500mil;每個VTT上拉電阻對應放置一個VTT的濾波電容(最多兩個電阻共用一個電容)
(3)CPU端和DDR4顆粒端,每個引腳對應一個濾波電容,濾波電容儘可能靠近引腳放置。線短而粗,迴路儘量短;CPU和顆粒周邊均勻擺放一些儲能電容,DDR4顆粒每片至少有一個儲能電容。
阻抗控制
(1)單端線:50ohm
(2)差分線:100ohm
帶狀線和平面
(1)除了從焊盤到過孔之間的短線外,所有的走線都必須走帶狀線,即內層走線
(2)所有的內層走線都要求夾在兩個參考平面之間,即相鄰層不要有信號層,這樣可以避免串擾和跨分割走線,走線到平面的邊緣必須保持4mil以上的間距;
(3)數據線參考平面優先兩邊都是GND,接受一邊地,一邊自身電源,但是到GND平面的距離要比到電源平面的距離要近;對於地址線,控制信號,CLK來說,參考面首選GND和VDD,也可以選GND和GND。
容性負載補償
flyby拓撲要求stub走線很短,當stub走線相對於信號邊沿變化率很短時,stub支線和負載呈容性。負載引入的電容,實際被分攤到了走線上,所以造成走線的單位電容增加,從而降低了走線的有效阻抗。所以在設計中,我們應該將負載部分的走線設計爲較高阻抗,最直接有效的方式就是減小支線線寬。經過負載電容的平均後,負載部分的走線纔會和主線阻抗保持一致,從而達到阻抗連續,降低反射的效果。
PCB疊層設計
(1)所有的DQ線必須同組同層。
(2)地址線是否同層不做要求。
(3)爲了減少過孔產生的Stub,強烈建議在同一層中優先布DQ, DQS,CLK等信號。如果所有的BGA都在top層,data線儘量的靠近bottom層走,而地址,控制線則可以靠近top層走;當BGA在top層時,越靠近bottom層,過孔產生的stub越短,信號質量越好。
走線線寬和線間距
(1)線寬和線間距必須滿足阻抗控制,即單端線50ohm,差分線100ohm。ZQ屬於模擬信號,佈線儘可能短,並且阻抗越低越好,所以儘可能的把線走寬一點,建議3倍50ohm阻抗控制的線寬;
(2)DQ和DBI數據線,組內要求滿足3W間距,與其他組外信號之間保持至少4W;
(3)DQS和CLK距離其他信號間距做到5W以上;
(4)在過孔比較密集的BGA區域,同組內的數據線,地址線的間距可以縮小到2W,但是要求這樣的走線儘可能的短,並且儘可能的走直線;
(5)如果空間允許,所有的信號線走線之間的間距儘可能的保證均勻美觀;
(6)內存信號與其他非內存信號之間應該保證4倍的介質層高的距離。
等長要求
(1)數據走線儘量短,不要超過2000mil,分組做等長,組內等長參考DQS誤差範圍控制在+/-5mil;
(2)地址線、控制線、時鐘線作爲一組等長,組內等長參考CLK誤差範圍控制在+/-10mil;
(3)DQS、時鐘差分線對內誤差範圍控制在+/-2mil;
(4)RESET和ALERT不需要做等長控制
(5)信號實際長度應當包括零件管腳的長度,儘量取得零件管腳長度,並導入軟件中;
(6)因有些IC內核設計比較特別,按新品設計指導書或說明按參考板做,特別是Intel,AMD的芯片,請特別留意芯片手冊要求;
電源處理
(1)VDD(1.2V)電源是DDR3的核心電源,其引腳分佈比較散,且電流相對會比較大,需要在電源平面分配一個區域給VDD(1.2V);VDD的容差要求是5%,詳細在JEDEC裏有敘述。通過電源層的平面電容和專用的一定數量的去耦電容,可以做到電源完整性。
(2)VTT(0.6V)電源,它不僅有嚴格的容差性,而且還有很大的瞬間電流;可以通過增加去耦電容來實現它的目標阻抗;由於VTT是集中在上拉電阻處,不是很分散,且對電流有一定的要求,在處理VTT電源時,一般是在元件面同層通過鋪銅直接連接,銅皮要有一定寬度(120mil)。
(3)VREF(0.6V)VREF要求更加嚴格的容差性,但是它承載的電流比較小。它不需要非常寬的走線,且通過一兩個去耦電容就可以達到目標阻抗的要求。因其相對比較獨立,電流也不大,佈線處理時建議用與器件同層的銅皮或走線直接連接,無須再電源平面層爲其分配電源。注意鋪銅或走線時,要先經過電容再接到芯片的電源引腳,不要從分壓電阻那裏直接接到芯片的電源引腳。
(4)VPP(2.5V)內存的激活供電,容差相對寬鬆,最小2.375V,最大2.75V。電流也不是很大,一般走根粗線或者畫塊小銅皮即可。
以下參考:https://www.cnblogs.com/zhongguo135/p/8486961.html
A[17:0] | input |
爲激活命令提供行地址,爲讀、寫命令地址輸入:提供列地址,也爲模式寄存器設 置提供操作碼,A[16]只用於8Gb和16Gb,A[17]只用於16Gb,另外 (A10/AP, A12/BC_n, WE_n/A14, CAS_n/A15, RAS_n/A16還有一些別 的功能) |
A10/AP | input |
自預充電(Auto precharge):在讀寫命令期間採樣A10,決定是 否對訪問的Bank在讀寫操作之後進行Auto Precharge,高電平表示進 行Auto Precharge,低電平表示不進行Auto Precharge。 另外PRECHARGE命令期間也會對A10進行採樣,來決定是對一個(A10爲 低電平)Bank進行還是對所有的Banks(A10爲高電平)進行PRECHARGE, 如果選擇一個,則選擇的Bank由Bank組和Bank地址決定 |
A12/BC_n | input |
突發突變(Burst chop):在讀和寫命令期間對A12/BC_n進行採樣, 來決定是否進行突發突變,高電平表示進行,低電平表示不進行.具體 可以查看命令真值表 |
ACT_n | input |
命令輸入(command input):ACT_n用於指示激活命令。當ACT_n(與CS_n)是低電平時,輸入RAS_n/A16,CAS_n/A15, 和WE_n/A14 看作行地址用於激活命令。 當ACT_n爲高電平(CS_n爲低)時,RAS_n/ A16, CAS_n/A15, and WE_n/A14,用作RAS_n, CAS_n,和WE_n |
BA[1:0] | input |
Bank地址輸入(bank address inputs):指示被ACTIVTE,READ, WRITE或者PRECHARGE命令操作的Bank。另外用作指示在MODE REGISTER SET命令期間要訪問的模式寄存器 |
BG[1:0] | input |
Bank組地址輸入(Bank group address inputs):指示被ACTIVTE, READ,WRITE或者PRECHARGE命令操作的Bank組。另外用作指示在MODE REGISTER SET命令期間要訪問的模式寄存器,BG[1:0]用於x4和x8配 置,而BG[1]不用於x16配置 |
C0/CKE1, C1/CS1_n, C2/ODT1 |
input | Stack address inputs: |
CK_t, CK_c, |
input |
時鐘:差分時鐘輸入,所有的地址,命令和控制輸入信號在CK_t和 CK_c的低電平被採樣 |
CKE | input |
時鐘使能:高電平激活,低電平禁止內部時鐘信號,輸入緩存和輸 出驅動。拉低CKE提供PRECHARGE,POWER_DOWN和SELF REFRESH操作。 CKE在讀寫期訪問期間必須保持HIGH, |
CS_n | input | 片選 |
DM_n, UDM_n, LDM_n |
input |
輸入數據Mask:用於寫數據,DM在DQS的雙沿採樣,DM不支持x4配置, UDM_n用於x16的高8位,LDM_n用於x16低8位, |
ODT |
input |
On-die termination:ODT爲高電平時使能內部終端電阻到DDR4.當使 能時,ODT(Rtt)只用於x4和x8的DQ, DQS_t,DQS_c, DM_n/DBI_n/TDQS_t, 和TDQS_c信號(當TDQS功能通過模式寄存器 使能)。對於x16配置,Rtt應用於DQ, DQSU_t, DQSU_c, DQSL_t, DQSL_c, UDM_n,和 LDM_n信號,如果模式寄存器禁止Rtt,ODT腳將 被忽略。 |
PAR | INPUT | |
RAS_n/A16, CAS_n/A15, WE_n/A14 |
INPUT |
命令輸入: |
RESET_n |
input | 低電平異步復位: |
TEN |
input | 連通性測試模式:高電平有效,低電平無效 |
DQ |
IO |
數據輸入輸出 :對於x4,x8和x16分別代表DQ[3:0],DQ[7:0]和 DQ[15:0].如果在模式寄存器中使能了寫CRC,寫CRC會添加在寫 突發的後面 |
DBI_n, UDBI_n, LDBI_n |
I/O |
DBI輸入輸出:數據總線翻轉。DBI_n用於x8,UDBI_n用於x16的 高8位,LDBI_n用於x16的低8位。不支持x4。通過模式寄存器可 以配置DBI用於讀和寫操作。 |
DQS_t, DQS_c, DQSU_t, DQSU_c, DQSL_t, DQSL_c, |
IO |
數據選通:輸入用於寫數據輸出用於讀數據。與輸出數據邊沿對 齊,與輸入數據中心對齊,DQS用於x4,x8,DQSU用於x16高8位, DQSL用於x16低8位。DDR4只支持差分數據選通,不支持單端數據 選通道。 |
ALERT_n |
||
TDQS_t, TDQS_c |
output |
終端數據選通道:TDQS只用於x8 DRMAs.如果在模式寄存器使能該功能,DRAM會在TDQS_t和TDQS_c使能與DQS_t和DQS_c同樣 的Rtt終端電阻。當TDQS功能通過模式寄存器禁止,DM/TDQS_t腳會提供DATA MASK(DM)功能,TDQS_c腳不使用。對於x4和x16模式, 必須禁止TDQS功能。DM功能只支持x8和x16配置 |
ZQ |
參考 | 外部通過240歐姆電阻連接到VssQ |
Bank與Bank 組的區分
這是從DDR4框圖中截取的一部分。該DDR總共有16個Bank,每4個Bank組成一個Bank組。
Bank與Bank 組的區分
READ Buust操作
DDR4 讀命令支持突發長度爲BL8,BC4兩種,或者OTF(實時修改BL8和BC4)。這由A12來控制
.A12 = 0 ,BC4(BC4 = burst chop)
.A12 = 1 ,BL8