范到PCB布局與仿真驗(yàn)證)
1. DDR5時(shí)代為什么CA_ODT成了繞不開的坎DDR5把數(shù)據(jù)速率從DDR4時(shí)代的3200MT/s一口氣推到了4800MT/s起步主流6000MT/s、7200MT/s的條子滿大街都是2026年16G 6000MHz的條子價(jià)格也已經(jīng)跌到相當(dāng)親民的位置。速率翻倍帶來(lái)的直接后果就是單位時(shí)間UI被壓縮到原來(lái)的三分之一甚至更短——DDR4-3200的UI大約是312ps而DDR5-6400的UI只有156ps左右。在這么窄的時(shí)間窗口里命令/地址總線Command/Address簡(jiǎn)稱CA上任何一點(diǎn)反射、串?dāng)_、地彈都會(huì)被放大成采樣錯(cuò)誤。很多人調(diào)DDR5的時(shí)候把注意力全放在DQ數(shù)據(jù)訓(xùn)練和Vref上結(jié)果板子跑4800能過、跑5600就掛反復(fù)調(diào)DQ也調(diào)不出來(lái)。問題往往出在CA總線上——DDR5的CA總線是單端信號(hào)一條命令要同時(shí)被多個(gè)DRAM顆粒正確鎖存而CA_ODTOn-Die Termination片內(nèi)端接就是控制這些顆粒內(nèi)部端接電阻的開關(guān)。這個(gè)引腳配置不對(duì)CA信號(hào)在總線末端就會(huì)像沒關(guān)好的水龍頭一樣到處亂濺。這篇內(nèi)容適合正在做DDR5硬件設(shè)計(jì)、PCB布局或者信號(hào)完整性仿真的工程師也適合想搞明白為什么我的DDR5超頻上不去的DIY玩家。我會(huì)從CA_ODT的物理本質(zhì)講起拆解JEDEC規(guī)范里的模式定義給出可復(fù)現(xiàn)的配置示例再結(jié)合PCB布局和仿真驗(yàn)證把這條鏈路上容易踩的坑一個(gè)個(gè)說(shuō)清楚。所有配置參數(shù)都基于JEDEC DDR5標(biāo)準(zhǔn)JESD79-5系列和主流SoC廠商的控制器手冊(cè)具體數(shù)值以你手上的芯片手冊(cè)為準(zhǔn)。2. CA_ODT的物理本質(zhì)它到底在端接什么2.1 從傳輸線視角看CA總線的信號(hào)反射DDR5的CA總線在拓?fù)渖贤ǔJ且或?qū)多的點(diǎn)對(duì)多點(diǎn)結(jié)構(gòu)——SoC或內(nèi)存控制器出一組CA信號(hào)經(jīng)過PCB走線后分叉到多個(gè)DRAM顆粒DIMM上一般是2個(gè)Rank每個(gè)Rank 8或16顆顆粒。這種拓?fù)湓诟咚傧卤仨毊?dāng)成傳輸線來(lái)處理走線特征阻抗一般控制在40Ω到50Ω之間。信號(hào)從驅(qū)動(dòng)器出發(fā)走到分叉點(diǎn)、走到顆粒引腳如果末端沒有合適的端接能量就會(huì)反射回來(lái)。反射波和入射波疊加在接收端眼圖上表現(xiàn)為過沖、下沖、振鈴嚴(yán)重時(shí)眼高眼寬直接閉合。DDR4時(shí)代CA總線速率相對(duì)低靠驅(qū)動(dòng)器本身的輸出阻抗加上輕微的走線損耗就能勉強(qiáng)壓住反射DDR5速率上來(lái)之后必須靠DRAM顆粒內(nèi)部的ODT來(lái)吸收這部分能量。CA_ODT引腳的作用就是告訴DRAM顆粒現(xiàn)在把你的CA接收端內(nèi)部端接電阻打開阻值調(diào)到某個(gè)檔位。這個(gè)電阻并聯(lián)在CA走線的末端把反射能量消耗掉讓接收端的波形干凈。2.2 ODT和驅(qū)動(dòng)器輸出阻抗的分工這里有個(gè)容易混淆的點(diǎn)CA總線上其實(shí)有兩個(gè)阻抗在起作用。一個(gè)是控制器側(cè)驅(qū)動(dòng)器的輸出阻抗Ron另一個(gè)是DRAM側(cè)的ODT電阻。很多人以為ODT是萬(wàn)能的只要打開就能解決所有反射問題實(shí)際上ODT和Ron是配合工作的。理想情況下傳輸線特征阻抗Z0約等于驅(qū)動(dòng)器輸出阻抗Ron與末端ODT的并聯(lián)匹配關(guān)系。如果Ron設(shè)得太小驅(qū)動(dòng)太強(qiáng)信號(hào)邊沿會(huì)非常陡高頻分量豐富反射反而更嚴(yán)重如果ODT設(shè)得太小端接太重信號(hào)幅度會(huì)被拉低接收端可能達(dá)不到VIH/VIL門限。所以這兩個(gè)參數(shù)要一起調(diào)不能只盯著ODT。DDR5的CA_ODT通常提供幾檔可選阻值常見的是240Ω、120Ω、80Ω、60Ω、48Ω、40Ω等具體檔位看顆粒廠商的實(shí)現(xiàn)。檔位越低端接越重吸收反射能力越強(qiáng)但直流負(fù)載也越大。2.3 為什么DDR5的CA_ODT比DDR4更關(guān)鍵DDR4時(shí)代CA總線也有ODT但很多設(shè)計(jì)直接把它設(shè)成固定值甚至關(guān)閉也能跑。DDR5不行原因有三個(gè)第一速率高。前面算過DDR5-6400的UI只有156ps反射波來(lái)回一趟的時(shí)間如果落在采樣窗口附近直接造成誤判。第二DDR5的CA總線電壓擺幅更低VDDQ降到1.1V噪聲容限被壓縮。第三DDR5 DIMM的顆粒密度更高一條CA走線上掛的負(fù)載更多分叉帶來(lái)的阻抗不連續(xù)點(diǎn)更多反射源更復(fù)雜。所以DDR5設(shè)計(jì)里CA_ODT必須根據(jù)實(shí)際拓?fù)洹⒆呔€長(zhǎng)度、顆粒數(shù)量來(lái)精細(xì)配置不能照搬參考設(shè)計(jì)的默認(rèn)值。3. JEDEC規(guī)范里CA_ODT的模式與檔位怎么讀3.1 Mode Register里的ODT控制位DDR5通過MRMode Register來(lái)配置ODT行為和CA_ODT相關(guān)的主要是MR11、MR12這幾個(gè)寄存器具體編號(hào)以JESD79-5為準(zhǔn)不同版本可能有微調(diào)。這些寄存器里定義了CA ODT的阻值檔位、是否使能、以及在讀寫命令期間是否動(dòng)態(tài)切換。關(guān)鍵要理解的是靜態(tài)ODT和動(dòng)態(tài)ODT的區(qū)別。靜態(tài)ODT就是顆粒一直保持某個(gè)端接阻值不變動(dòng)態(tài)ODT則是根據(jù)當(dāng)前是讀還是寫、是哪個(gè)Rank在活動(dòng)實(shí)時(shí)切換阻值。DDR5的CA總線在讀寫命令期間的活動(dòng)模式不同動(dòng)態(tài)ODT能讓端接更貼合當(dāng)前場(chǎng)景減少不必要的直流功耗。配置的時(shí)候要特別注意CA_ODT的設(shè)置是寫進(jìn)DRAM顆粒的MR寄存器的而寫MR本身又依賴CA總線能正常工作——這是個(gè)先有雞還是先有蛋的問題。所以上電初始化階段控制器會(huì)先用一套保守的默認(rèn)ODT把MR寫進(jìn)去等鏈路穩(wěn)定后再切到優(yōu)化值。3.2 各檔位阻值的適用場(chǎng)景我把常見的CA_ODT檔位和適用場(chǎng)景整理成一張表方便對(duì)照ODT檔位端接強(qiáng)度適用場(chǎng)景注意事項(xiàng)240Ω最弱單顆粒、走線極短、速率≤4800反射抑制有限高速下眼圖容易閉合120Ω弱2顆粒、走線中等長(zhǎng)度折中選擇功耗低80Ω中4顆粒、常規(guī)DIMM拓?fù)涠鄶?shù)設(shè)計(jì)的起點(diǎn)60Ω較強(qiáng)8顆粒以上、走線較長(zhǎng)注意幅度衰減48Ω強(qiáng)高密度、高速6400直流功耗上升明顯40Ω最強(qiáng)極端拓?fù)?、仿真?yàn)證后使用容易拉低信號(hào)幅度慎用這張表是經(jīng)驗(yàn)起點(diǎn)不是標(biāo)準(zhǔn)答案。實(shí)際選哪個(gè)檔位必須結(jié)合你的走線長(zhǎng)度、顆粒數(shù)量和仿真結(jié)果來(lái)定。我見過有人直接抄參考設(shè)計(jì)的80Ω結(jié)果自己的板子走線比參考長(zhǎng)了一截5600都跑不穩(wěn)換成60Ω就過了。3.3 讀寫切換時(shí)的ODT時(shí)序DDR5的CA_ODT在讀寫命令切換時(shí)有個(gè)時(shí)序窗口規(guī)范里叫ODT turn-on/turn-off delay。這個(gè)延遲如果設(shè)得不對(duì)會(huì)出現(xiàn)端接還沒打開反射已經(jīng)到了或者端接關(guān)得太晚把有用信號(hào)也吸掉了的情況。一般來(lái)說(shuō)ODT的開啟要略早于命令到達(dá)接收端的時(shí)間關(guān)閉要略晚于命令采樣完成的時(shí)間。具體延遲值在MR里以時(shí)鐘周期為單位配置需要根據(jù)你的走線延遲Flight Time來(lái)算。走線越長(zhǎng)延遲要設(shè)得越大。這個(gè)參數(shù)在仿真里可以精確驗(yàn)證實(shí)測(cè)時(shí)如果發(fā)現(xiàn)讀寫切換點(diǎn)附近誤碼率偏高優(yōu)先懷疑這里。4. 配置示例從寄存器寫入到實(shí)測(cè)驗(yàn)證4.1 初始化階段的保守配置上電初始化時(shí)控制器還不知道鏈路的實(shí)際特性這時(shí)候要用最保守的配置先把鏈路拉起來(lái)。典型做法是把CA_ODT設(shè)成中等偏強(qiáng)的檔位比如60Ω或80Ω驅(qū)動(dòng)器輸出阻抗設(shè)成中等先把MR寫進(jìn)去、把訓(xùn)練跑完。以某主流SoC的控制器為例初始化階段的CA_ODT配置大致是這樣的邏輯偽代碼具體寄存器地址以手冊(cè)為準(zhǔn)// 初始化階段保守ODT配置 // 目標(biāo)先建立可靠鏈路不求最優(yōu) write_mr(DRAM_MR11, CA_ODT_80OHM | CA_ODT_STATIC_EN); write_mr(DRAM_MR12, ODT_TURNON_DELAY(4) | ODT_TURNOFF_DELAY(4)); // 驅(qū)動(dòng)器輸出阻抗設(shè)為中等 set_controller_drv_imp(DRV_IMP_MEDIUM); // 執(zhí)行CA訓(xùn)練 run_ca_training();這段配置的核心思路是先穩(wěn)后優(yōu)。80Ω在多數(shù)拓?fù)湎露寄芴峁┳銐虻姆瓷湟种朴植恢劣诎研盘?hào)幅度拉得太低。延遲先給一個(gè)中間值等訓(xùn)練結(jié)果出來(lái)再優(yōu)化。4.2 訓(xùn)練后的優(yōu)化配置CA訓(xùn)練跑完之后控制器會(huì)得到一組走線延遲和眼圖裕量數(shù)據(jù)。根據(jù)這些數(shù)據(jù)可以針對(duì)性優(yōu)化ODT// 優(yōu)化階段根據(jù)訓(xùn)練結(jié)果調(diào)整 // 如果眼圖裕量不足加重端接 if (ca_eye_margin MARGIN_THRESHOLD) { write_mr(DRAM_MR11, CA_ODT_60OHM | CA_ODT_DYNAMIC_EN); } // 如果信號(hào)幅度偏低減輕端接 if (ca_amplitude AMP_THRESHOLD) { write_mr(DRAM_MR11, CA_ODT_120OHM | CA_ODT_DYNAMIC_EN); } // 根據(jù)實(shí)測(cè)Flight Time調(diào)整ODT延遲 write_mr(DRAM_MR12, ODT_TURNON_DELAY(measured_flight_time 2) | ODT_TURNOFF_DELAY(measured_flight_time 2));這里有個(gè)實(shí)操心得ODT延遲不要設(shè)得剛好等于Flight Time要留2個(gè)周期左右的裕量。因?yàn)轭w粒之間的走線長(zhǎng)度有差異skew如果按最短的那顆來(lái)設(shè)最長(zhǎng)的那顆就會(huì)來(lái)不及。留裕量是拿一點(diǎn)點(diǎn)功耗換穩(wěn)定性值得。4.3 用示波器驗(yàn)證ODT效果配置寫完不代表完事必須實(shí)測(cè)驗(yàn)證。最直接的方法是用高帶寬示波器建議≥8GHzDDR5-6400的基頻已經(jīng)到3.2GHz三次諧波接近10GHz配合差分探頭測(cè)CA信號(hào)。測(cè)的時(shí)候重點(diǎn)看三個(gè)指標(biāo)過沖幅度應(yīng)該控制在VDDQ的10%以內(nèi)、振鈴持續(xù)時(shí)間應(yīng)該在1個(gè)UI內(nèi)衰減到噪聲底、眼圖交叉點(diǎn)位置應(yīng)該在眼圖中心附近。如果過沖超標(biāo)說(shuō)明端接不夠加重ODT檔位如果幅度不夠說(shuō)明端接過重減輕檔位。我自己的經(jīng)驗(yàn)是先在最低速率4800下把ODT調(diào)到眼圖最干凈然后逐步升速每升一檔重新看眼圖。很多時(shí)候4800下最優(yōu)的ODT到6400就不夠用了需要再加重一檔。5. PCB布局如何配合CA_ODT發(fā)揮最大效果5.1 CA走線的拓?fù)溥x擇與ODT的關(guān)系CA_ODT的效果高度依賴PCB走線拓?fù)洹3R姷腃A拓?fù)溆袃煞N菊花鏈Daisy Chain和T型分支T-branch。菊花鏈?zhǔn)菑目刂破鞒霭l(fā)依次串過每顆顆粒末端端接T型分支是從一個(gè)點(diǎn)分叉到多顆顆粒。菊花鏈的優(yōu)點(diǎn)是每顆顆??吹降淖杩共贿B續(xù)點(diǎn)少ODT在末端能有效吸收反射缺點(diǎn)是走線總長(zhǎng)度長(zhǎng)延遲大。T型分支的優(yōu)點(diǎn)是延遲均衡缺點(diǎn)是分叉點(diǎn)多每個(gè)分叉都是反射源ODT要同時(shí)照顧多個(gè)分支難度大。DDR5 DIMM通常用菊花鏈加末端端接的方案因?yàn)镈IMM的顆粒是排成一列的菊花鏈走線最自然。如果你在做板載DDR5顆粒直接焊在主板或SoC板上拓?fù)溥x擇更靈活但建議優(yōu)先考慮菊花鏈ODT配置會(huì)簡(jiǎn)單很多。5.2 走線阻抗控制和參考平面處理CA走線的特征阻抗要嚴(yán)格控制一般目標(biāo)40Ω到50Ω公差±10%。阻抗不匹配會(huì)直接產(chǎn)生反射再好的ODT也救不回來(lái)??刂谱杩沟年P(guān)鍵是線寬、介質(zhì)厚度和參考平面距離的配合這些在疊層設(shè)計(jì)階段就要算好。參考平面的處理有個(gè)容易忽略的點(diǎn)CA走線換層時(shí)參考平面也要跟著換而且換層過孔附近要加回流地過孔。如果參考平面不連續(xù)回流路徑被切斷信號(hào)會(huì)繞著走等效阻抗突變反射和EMI都會(huì)惡化。我見過一塊板子CA走線換層沒加回流孔4800都跑不穩(wěn)補(bǔ)上回流孔之后直接上5600。5.3 分叉點(diǎn)的處理技巧CA走線分叉到多顆顆粒時(shí)分叉點(diǎn)的處理很關(guān)鍵。理想情況下分叉點(diǎn)到每顆顆粒的走線長(zhǎng)度要盡量相等等長(zhǎng)這樣每顆顆??吹降难舆t一致ODT延遲好設(shè)。如果做不到完全等長(zhǎng)至少要把skew控制在UI的10%以內(nèi)。分叉點(diǎn)本身要避免直角用圓弧或45度角過渡減少阻抗突變。分叉后的走線要盡量短因?yàn)榉植娑卧介L(zhǎng)反射越復(fù)雜。有些設(shè)計(jì)會(huì)在分叉點(diǎn)加一個(gè)小的串聯(lián)電阻22Ω到33Ω來(lái)阻尼反射這個(gè)電阻和ODT配合能進(jìn)一步改善眼圖但會(huì)增加直流壓降要權(quán)衡。5.4 和EMI的關(guān)系CA_ODT配置得當(dāng)不僅改善信號(hào)完整性還能降低EMI。因?yàn)榉瓷浜驼疋彵旧砭褪歉哳l輻射源端接做好了振鈴被吸收輻射自然下降。反過來(lái)如果ODT沒配好CA走線就像一根天線EMI測(cè)試很容易超標(biāo)。實(shí)測(cè)經(jīng)驗(yàn)同一塊板子ODT從240Ω換成60ΩCA頻段的輻射能降3到5dB。所以EMI整改的時(shí)候別忘了回頭看看ODT配置有時(shí)候比加屏蔽罩管用。6. 仿真驗(yàn)證ADS里怎么把CA_ODT跑明白6.1 仿真模型的準(zhǔn)備做CA_ODT仿真需要三類模型控制器驅(qū)動(dòng)器的IBIS模型、DRAM顆粒的IBIS模型包含ODT的IBIS-AMI或傳統(tǒng)IBIS、PCB走線的S參數(shù)或傳輸線模型。IBIS模型從芯片廠商官網(wǎng)下載走線模型從PCB工具里導(dǎo)出。這里有個(gè)坑很多DRAM廠商的IBIS模型里ODT檔位是分開的每個(gè)檔位一個(gè)模型文件。仿真的時(shí)候要確保你選的模型和實(shí)際配置的ODT檔位一致否則仿真結(jié)果沒意義。我見過有人仿真用80Ω模型實(shí)際配置60Ω結(jié)果仿真過了實(shí)測(cè)掛了。6.2 仿真設(shè)置的關(guān)鍵參數(shù)在ADS里搭CA鏈路仿真關(guān)鍵設(shè)置包括激勵(lì)信號(hào)的上升時(shí)間要和控制器實(shí)際驅(qū)動(dòng)能力匹配、仿真時(shí)長(zhǎng)要覆蓋足夠多的碼型建議至少跑PRBS7、采樣點(diǎn)位置在顆粒引腳處。ODT在仿真里怎么體現(xiàn)如果用的是傳統(tǒng)IBIS模型ODT是模型內(nèi)部的一個(gè)電阻通過選擇不同的模型文件來(lái)切換檔位。如果用的是IBIS-AMIODT可能是一個(gè)可配置參數(shù)在仿真設(shè)置里直接填阻值。仿真跑完之后看眼圖、看浴盆曲線、看反射波形。重點(diǎn)對(duì)比不同ODT檔位下的眼高眼寬找到最優(yōu)檔位。然后把這個(gè)檔位寫進(jìn)實(shí)際配置再實(shí)測(cè)驗(yàn)證。6.3 仿真和實(shí)測(cè)的偏差怎么處理仿真和實(shí)測(cè)永遠(yuǎn)有偏差因?yàn)榉抡婺P筒豢赡?00%準(zhǔn)確PCB加工也有公差。偏差在10%以內(nèi)算正常如果偏差很大先檢查模型版本和實(shí)際芯片是否一致再檢查走線參數(shù)線寬、介質(zhì)常數(shù)是否和實(shí)際一致。我的做法是仿真用來(lái)確定ODT的大致范圍比如確定在60Ω到80Ω之間實(shí)測(cè)用來(lái)在這個(gè)范圍內(nèi)精調(diào)。不要指望仿真直接給出唯一答案它是個(gè)篩選工具不是判決工具。7. 實(shí)測(cè)中那些讓人抓狂的坑7.1 訓(xùn)練能過但壓力測(cè)試掛這是最典型的CA_ODT問題。CA訓(xùn)練的時(shí)候控制器發(fā)的是一組固定碼型鏈路條件相對(duì)理想訓(xùn)練能過。但壓力測(cè)試跑的是隨機(jī)碼型反射模式更復(fù)雜ODT沒配好就會(huì)在特定碼型下出錯(cuò)。排查方法用示波器抓壓力測(cè)試失敗時(shí)的CA波形看是不是有特定的碼型觸發(fā)了嚴(yán)重反射。如果是加重ODT檔位再試。如果加重后訓(xùn)練又過不了因?yàn)榉缺焕驼f(shuō)明你的拓?fù)浔旧碛袉栴}要考慮改走線或改拓?fù)洹?.2 溫度變化后誤碼率上升DRAM顆粒的ODT電阻是半導(dǎo)體工藝做的隨溫度變化。常溫下配好的ODT到了高溫比如85度阻值可能漂移10%到15%端接效果變差誤碼率上升。應(yīng)對(duì)方法在MR里使能溫度補(bǔ)償ODT如果顆粒支持或者把ODT檔位往重里設(shè)一檔留出溫度漂移裕量。代價(jià)是常溫下功耗略高但穩(wěn)定性優(yōu)先。7.3 多Rank切換時(shí)的ODT沖突DDR5 DIMM通常有2個(gè)Rank兩個(gè)Rank的CA_ODT如果同時(shí)打開端接會(huì)過重信號(hào)幅度被拉低。正確的做法是動(dòng)態(tài)ODT——只有當(dāng)前活動(dòng)的Rank打開ODT非活動(dòng)Rank關(guān)閉。這個(gè)邏輯在MR里配置但有些控制器的默認(rèn)配置沒做好需要手動(dòng)改。如果你發(fā)現(xiàn)多Rank配置下信號(hào)幅度異常低先檢查是不是兩個(gè)Rank的ODT都打開了。7.4 不同顆粒廠商的ODT檔位不通用不同DRAM廠商三星、海力士、美光的ODT檔位定義可能不同同樣是60Ω實(shí)際阻值可能有差異。換顆粒的時(shí)候ODT配置要重新驗(yàn)證不能直接沿用。我吃過這個(gè)虧一塊板子用A廠顆粒調(diào)好的ODT配置換成B廠顆粒后誤碼率飆升重新調(diào)了一輪才穩(wěn)定。所以BOM里換顆粒一定要重新跑一遍CA_ODT驗(yàn)證。8. 幾個(gè)能直接抄的配置模板8.1 單Rank 4顆粒板載DDR5-5600拓?fù)淇刂破鞯?顆顆粒菊花鏈走線總長(zhǎng)約80mm特征阻抗45Ω。// 單Rank 4顆粒5600MT/s write_mr(DRAM_MR11, CA_ODT_80OHM | CA_ODT_DYNAMIC_EN); write_mr(DRAM_MR12, ODT_TURNON_DELAY(5) | ODT_TURNOFF_DELAY(5)); set_controller_drv_imp(DRV_IMP_40OHM);這套配置在多數(shù)4顆粒板載設(shè)計(jì)上能直接跑5600眼圖裕量約15%。8.2 雙Rank DIMM DDR5-6400拓?fù)錁?biāo)準(zhǔn)UDIMM2個(gè)Rank每Rank 8顆粒菊花鏈加末端端接。// 雙Rank DIMM6400MT/s // 活動(dòng)Rank write_mr(DRAM_MR11, CA_ODT_60OHM | CA_ODT_DYNAMIC_EN); write_mr(DRAM_MR12, ODT_TURNON_DELAY(6) | ODT_TURNOFF_DELAY(6)); // 非活動(dòng)Rank關(guān)閉ODT write_mr_nonactive(DRAM_MR11, CA_ODT_DISABLE); set_controller_drv_imp(DRV_IMP_34OHM);注意非活動(dòng)Rank的ODT一定要關(guān)否則端接過重。這套配置在標(biāo)準(zhǔn)DIMM上跑6400比較穩(wěn)再往上要加重端接并配合仿真。8.3 高密度8顆粒板載DDR5-7200拓?fù)?顆粒分兩組每組4顆菊花鏈兩組從控制器分叉。// 8顆粒7200MT/s需要仿真驗(yàn)證 write_mr(DRAM_MR11, CA_ODT_48OHM | CA_ODT_DYNAMIC_EN); write_mr(DRAM_MR12, ODT_TURNON_DELAY(7) | ODT_TURNOFF_DELAY(7)); set_controller_drv_imp(DRV_IMP_30OHM);7200這個(gè)速率下48Ω端接已經(jīng)比較重了必須配合仿真確認(rèn)幅度夠不夠。如果幅度不夠考慮減輕到60Ω并優(yōu)化走線。9. 我個(gè)人在實(shí)際操作中的幾點(diǎn)體會(huì)調(diào)DDR5的CA_ODT最忌諱的就是抄一個(gè)配置就不管了。我做了這么多項(xiàng)目沒有哪兩個(gè)項(xiàng)目的ODT配置是完全一樣的因?yàn)樽呔€長(zhǎng)度、顆粒數(shù)量、疊層結(jié)構(gòu)、甚至PCB板材的介質(zhì)常數(shù)都會(huì)影響結(jié)果。我的習(xí)慣是新板子第一次上電先用保守配置把鏈路拉起來(lái)跑通訓(xùn)練然后用示波器看CA眼圖根據(jù)眼圖調(diào)整ODT檔位最后跑壓力測(cè)試和溫度循環(huán)確認(rèn)全溫全壓下的穩(wěn)定性。這個(gè)過程通常要迭代3到5輪急不得。還有一點(diǎn)ODT配置要和控制器側(cè)的驅(qū)動(dòng)器阻抗一起調(diào)。很多人只調(diào)ODT不調(diào)驅(qū)動(dòng)器效果有限。驅(qū)動(dòng)器阻抗決定了信號(hào)的初始邊沿ODT決定了反射的吸收兩者是配合關(guān)系。我一般先把驅(qū)動(dòng)器阻抗設(shè)成中等調(diào)ODT到眼圖最優(yōu)再回頭微調(diào)驅(qū)動(dòng)器阻抗看能不能再改善一點(diǎn)。最后分享一個(gè)小技巧如果你手上有多個(gè)ODT檔位可選但不確定哪個(gè)最好可以做一個(gè)ODT掃描——把每個(gè)檔位都跑一遍壓力測(cè)試記錄誤碼率選誤碼率最低的那個(gè)。這個(gè)方法雖然笨但最可靠尤其是在仿真模型不夠準(zhǔn)的時(shí)候。掃描的粒度不用太細(xì)相鄰檔位之間差一檔就夠了因?yàn)镺DT的影響是單調(diào)的找到拐點(diǎn)就行。