戰(zhàn):從REF_CLK共用到MCS相位對齊全解析)
最近在給一套4通道相控陣接收前端做通道校準(zhǔn)折騰了一周最磨人的不是射頻鏈路本身而是兩片AD9361之間的相位關(guān)系。剛接觸SDR那會兒我也以為只要把兩片AD9361的REF_CLK接到同一個(gè)晶振上采樣率和中心頻率配置成一樣的它們自然就同步了。被現(xiàn)實(shí)教育過幾次之后才明白AD9361的多芯片同步遠(yuǎn)不是“同頻”兩個(gè)字能概括的SYNC信號、BBPLL相位、RF PLL分頻器、TDD切換時(shí)刻每一個(gè)環(huán)節(jié)都可能讓你采集到的IQ數(shù)據(jù)相位漂得莫名其妙。這篇文章把整個(gè)同步過程從原理到實(shí)戰(zhàn)捋一遍包括硬件連線、軟件流程、實(shí)測方法以及我踩過的那些坑。1. 問題本質(zhì)為什么兩片AD9361即使共用一顆晶振相位依然各走各的1.1 AD9361內(nèi)部時(shí)鐘鏈路拆解AD9361雖然是高度集成的射頻收發(fā)器但它的核心時(shí)鐘生成鏈路和分立器件方案在本質(zhì)上沒有區(qū)別。每片AD9361內(nèi)部有兩條獨(dú)立的鎖相環(huán)PLL鏈路參考時(shí)鐘REF_CLK進(jìn)來之后通常會先經(jīng)過一個(gè)片上時(shí)鐘緩沖器再送入射頻本振PLLRF PLL和基帶/數(shù)據(jù)時(shí)鐘PLLBB PLL。RF PLL負(fù)責(zé)產(chǎn)生射頻本振信號用來做混頻器激勵(lì)也就是LO信號。BB PLL負(fù)責(zé)產(chǎn)生ADC/DAC的采樣時(shí)鐘同時(shí)也會派生出發(fā)送數(shù)據(jù)時(shí)鐘、接收數(shù)據(jù)時(shí)鐘以及FPGA接口用的邏輯時(shí)鐘。問題就出在這里兩片AD9361即使從同一顆晶振取REF_CLK也僅僅是“標(biāo)稱頻率一致”因?yàn)槊科酒瑑?nèi)部的PLL壓控振蕩器VCO起始頻率、環(huán)路濾波器充放電狀態(tài)、分頻器初始位置都是獨(dú)立隨機(jī)啟動(dòng)的。PLL的鎖定本質(zhì)上是一個(gè)反饋收斂過程它保證的是“輸出頻率無限接近目標(biāo)值”但輸出信號的絕對相位與啟動(dòng)時(shí)刻的VCO自由振蕩相位強(qiáng)相關(guān)。這就好比兩個(gè)人用同一塊母鐘對好了手表但母鐘本身不是內(nèi)置到每塊手表里的而是每塊手表內(nèi)部石英振蕩器各自起振、各自鎖頻。最終兩兄弟報(bào)時(shí)都能報(bào)出一樣的“幾時(shí)幾分”但秒針指向的位置可能完全不同。1.2 “同頻”與“同相”的差距以及它會毀掉什么應(yīng)用如果你的應(yīng)用只是單通道收信、看頻譜、解個(gè)FM那么芯片間相位不一致根本無所謂。但一旦涉及下面這些場景問題立刻放大MIMO通信空時(shí)編碼、空間復(fù)用都需要多通道之間的相對相位可預(yù)測。波束成形各天線通道的相位關(guān)系直接決定了波束指向。每片AD9361的LO相位差一個(gè)θ最終波束就想偏一個(gè)方向偏。干涉測向 / 到達(dá)角估計(jì)通道間相位差是估值的基礎(chǔ)輸入相位漂移等于給測向結(jié)果注入巨大偏差。靈巧干擾 / 抗干擾陣列需要精確控制任意陣元信號的相位和幅度。在這些應(yīng)用里“同頻”只是底線的底線。不同芯片之間哪怕只差一個(gè)本振周期的零點(diǎn)幾幾%經(jīng)過混頻后就會在IQ數(shù)據(jù)里表現(xiàn)為一個(gè)恒定的通道間相位差如果每次上電這個(gè)相位差還是隨機(jī)的那你的校準(zhǔn)工作就永遠(yuǎn)不能收斂。2. 多芯片同步要管的三個(gè)層面采樣時(shí)鐘、本振相位與數(shù)據(jù)接口2.1 采樣時(shí)鐘對齊讓所有ADC在同一時(shí)刻采樣第一個(gè)要做的是采樣時(shí)鐘對齊。AD9361每個(gè)芯片的BB PLL會以REF_CLK為參考產(chǎn)生一個(gè)高頻時(shí)鐘然后經(jīng)分頻得到ADC采樣時(shí)鐘。由于兩片芯片的BB PLL分頻鏈起點(diǎn)隨機(jī)即使頻率完全一致兩片ADC的采樣時(shí)刻也會差一個(gè)固定的、可能高達(dá)幾百皮秒到納秒級的時(shí)間。這個(gè)時(shí)間差在射頻鏈路里意味著什么假設(shè)中心頻率2.4GHz信號周期約0.42ns如果兩片ADC采樣時(shí)刻差0.2ns基帶IQ數(shù)據(jù)的相位差就是2π×0.2/0.42≈171度接近反相了。這顯然是不可接受的。AD9361為此設(shè)計(jì)了SYNC_IN/SYNC_OUT引腳。當(dāng)所有芯片的BB PLL都鎖定后往SYNC_IN引腳上送一個(gè)脈沖芯片內(nèi)部會把BB PLL輸出的分頻鏈復(fù)位到一個(gè)已知狀態(tài)從而讓所有芯片從同一個(gè)相位基準(zhǔn)開始輸出采樣時(shí)鐘。這個(gè)過程在多芯片同步術(shù)語里常稱為“MCS”Multi-Chip Synchronization。2.2 本振相位對齊射頻鏈路的基準(zhǔn)必須統(tǒng)一采樣時(shí)鐘對齊解決的是“基帶離散時(shí)間軸上各通道采樣點(diǎn)對齊”但射頻本振的相位也必須對齊否則即使ADC采樣時(shí)刻完全一致各通道混頻器的載波相位也會不同。AD9361的RF PLL輸出通常要經(jīng)過射頻分頻器才能得到LO信號。射頻分頻器本身也是數(shù)字分頻鏈它的初始狀態(tài)是上電隨機(jī)的。這就是為什么即使你強(qiáng)制兩片芯片輸出完全同相的采樣時(shí)鐘LO相位仍可能差一個(gè)不確定的分頻相位。解決思路和BB PLL一致在RF PLL鎖定完成后用同一個(gè)SYNC脈沖去復(fù)位射頻分頻鏈。AD9361內(nèi)部清楚這一點(diǎn)所以它的同步機(jī)制并不是只對齊一個(gè)點(diǎn)而是把BB PLL分頻鏈、射頻分頻鏈以及TX/RX數(shù)據(jù)路徑全部放在同一個(gè)同步事件里統(tǒng)一復(fù)位。有一點(diǎn)必須注意RF PLL從VCO鎖定到分頻鏈復(fù)位穩(wěn)定需要時(shí)間SYNC脈沖不能給得太早。建議在軟件里確認(rèn)PLL鎖定指示通常讀寄存器再延后幾十微秒觸發(fā)SYNC。具體延后量參考AD9361官方參考手冊里Multi-Chip Synchronization一章的時(shí)序圖。2.3 數(shù)據(jù)接口對齊從射頻到FPGA的最后一公里前兩層都搞定了最后還差數(shù)據(jù)接口。AD9361通過LVDS或CMOS并口把ADC數(shù)據(jù)和TX數(shù)據(jù)送到FPGA。多片AD9361的數(shù)據(jù)線最終會匯聚進(jìn)FPGA內(nèi)部的總線如果不同芯片的數(shù)據(jù)到達(dá)FPGA的時(shí)間不一致即使前端采樣時(shí)鐘和LO都對齊了FPGA內(nèi)部恢復(fù)出來的多通道數(shù)據(jù)流依然存在lane間偏斜。實(shí)際工程中數(shù)據(jù)接口對齊通常分兩步先依靠FPGA內(nèi)部的IO Delay和Bitslip邏輯把從各片AD9361進(jìn)來的并行數(shù)據(jù)各自調(diào)整到正確的字邊界。再通過HDL工程里的一套校準(zhǔn)狀態(tài)機(jī)利用AD9361輸出的測試圖形把所有通道的數(shù)據(jù)用同一個(gè)幀頭對齊。AD9361支持在MCS后強(qiáng)制輸出一段固定的測試數(shù)據(jù)FPGA可以據(jù)此調(diào)整內(nèi)部FIFO讀指針把多通道的數(shù)據(jù)統(tǒng)一對齊到同一個(gè)時(shí)鐘沿上。這一步在FMCOMMS5官方HDL參考設(shè)計(jì)里已經(jīng)有現(xiàn)成實(shí)現(xiàn)。如果你完全自己寫Verilog/狀態(tài)機(jī)最容易漏的就是這一層最后表現(xiàn)出來是相位測試時(shí)IQ數(shù)據(jù)正弦波很干凈但不同通道間總是差那么一兩個(gè)采樣點(diǎn)。3. 硬件連線與同步拓?fù)湟粔K板卡上的4路收發(fā)是怎么布出來的3.1 參考時(shí)鐘扇出全系統(tǒng)抖動(dòng)最低的一根線參考時(shí)鐘的質(zhì)量決定了整個(gè)系統(tǒng)的底噪和同步上限。如果參考時(shí)鐘的抖動(dòng)太大PLL的鎖定相位噪聲就會惡化多芯片的相位穩(wěn)定性也跟著變差。我這次做的4通道接收前端用的是兩片AD9361參考時(shí)鐘選擇了10MHz。布線方案如下10MHz參考源選用低抖動(dòng)TCXO/OCXO先經(jīng)過一級時(shí)鐘扇出緩沖器分成兩路低抖動(dòng)時(shí)鐘再分別送入兩片AD9361的REF_CLK引腳。時(shí)鐘扇出緩沖器優(yōu)先選擇專門的時(shí)鐘分配芯片而不是用普通邏輯門分路。普通邏輯門的傳播延遲、輸出上升沿抖動(dòng)脈沖都會直接疊加到參考時(shí)鐘上。兩路REF_CLK走線在PCB上盡量等長至少保證誤差在幾十mil以內(nèi)。10MHz的波長很長走線長度差帶來的相位差相對較小但仍會轉(zhuǎn)化為初始相位差的一部分。如果你用的是40MHz參考時(shí)鐘注意不要直接拿FPGA的通用IO輸出給兩片AD9361除非你對時(shí)鐘扇出能力很有把握。實(shí)測中FPGA普通IO直驅(qū)兩片AD9361的REF_CLK在2.4GHz頻段會額外引入約幾十皮秒的有效抖動(dòng)對高要求場景并不合適。參考時(shí)鐘源方案抖動(dòng)水平經(jīng)驗(yàn)值適用場景晶振直連單芯片最低單芯片系統(tǒng)晶振經(jīng)時(shí)鐘緩沖器扇出到多芯片低多芯片同步推薦FPGA普通IO直驅(qū)偏高僅在低速/非敏感應(yīng)用中使用3.2 SYNC信號廣播用FPGA統(tǒng)一觸發(fā)所有芯片同步信號的拓?fù)溆袃煞N常見選擇一種是級聯(lián)主芯片SYNC_OUT接到從芯片SYNC_IN另一種是廣播FPGA的一個(gè)GPIO同時(shí)接所有芯片的SYNC_IN。我早期在FMCOMMS5參考設(shè)計(jì)上用的級聯(lián)方式理由是官方評估板就這么干的后面自己布板就偷懶直接搬。結(jié)果發(fā)現(xiàn)級聯(lián)鏈的傳播延遲比較大主芯片的SYNC_OUT經(jīng)過板級緩沖再進(jìn)從芯片到達(dá)時(shí)間比直接要慢如果時(shí)序裕量處理不好高低溫下容易偶爾失步。這次我改成了廣播方式FPGA內(nèi)部用一個(gè)專用的同步狀態(tài)機(jī)在合適的時(shí)刻往所有AD9361的SYNC_IN引腳同時(shí)打一個(gè)滿足參考手冊時(shí)序要求的脈沖。脈沖寬度要用BB_CLK域寄存打拍確保信號相對所有芯片的時(shí)鐘域都有充足建立保持時(shí)間。SYNC信號建議走HSTL/LVCMOS緩沖器扇出且各路之間的skew盡量控制在200ps以內(nèi)。實(shí)際測量中如果兩片AD9361的SYNC_IN引腳之間存在明顯走線長度差或經(jīng)過不同路徑的緩沖器同步后通道間相位差會偏大且不穩(wěn)定。3.3 SPI總線與每個(gè)芯片的身份識別每片AD9361控制接口都是SPI多片使用同一個(gè)SPI總線時(shí)用片選CS區(qū)分。我的習(xí)慣是SCLK/SDI/SDO共用CS0/CS1分別接兩片AD9361CS由FPGA邏輯控制。這里有個(gè)容易被忽略的小坑SPI總線的工作頻率不能太高否則在長線上反射嚴(yán)重而片選信號又受同步狀態(tài)機(jī)控制很容易出現(xiàn)“寄存器寫一半斷流”的情況。建議SPI時(shí)鐘控制在20MHz以內(nèi)必要時(shí)在FPGA側(cè)對SPI輸入信號做IO下降沿采樣。另外上電時(shí)序上必須保證兩片AD9361的RESET釋放時(shí)間差不能太大。我一般讓FPGA在系統(tǒng)上電后先把兩片RESET同時(shí)拉低再統(tǒng)一釋放釋放后至少延時(shí)100ms再開始配置寄存器。這樣可以盡量讓兩片芯片的初始狀態(tài)接近雖然MCS會最終對齊相位但初始狀態(tài)接近也能降低個(gè)別板卡同步失敗的機(jī)率。4. 軟件側(cè)同步流程從IIO設(shè)備到MCS動(dòng)作的完整鏈路4.1 驅(qū)動(dòng)與設(shè)備樹里的雙AD9361實(shí)例linux系統(tǒng)下調(diào)試AD9361最簡單的方式是用ADI官方的libiio環(huán)境。兩片AD9361在設(shè)備樹里表現(xiàn)為兩個(gè)獨(dú)立的IIO設(shè)備分別占用不同的SPI片選。驅(qū)動(dòng)起來后通過命令行或C API就可以分別讀寫每個(gè)實(shí)例的屬性。如果你是自己寫裸機(jī)驅(qū)動(dòng)或FPGA狀態(tài)機(jī)控制核心思路是一致的把每片AD9361當(dāng)成一個(gè)獨(dú)立對象按固定順序做“配置頻率→等待PLL鎖定→統(tǒng)一觸發(fā)SYNC→校驗(yàn)收斂”。特別提醒一下千萬不要在MCS過程中交叉讀寫兩片芯片的SPI容易把同步時(shí)序搞亂。建議的做法是先依次把每片AD9361配置到目標(biāo)頻率并確認(rèn)各自PLL鎖定完成然后暫停SPI操作專門發(fā)SYNC信號SYNC后再恢復(fù)對每片芯片的讀操作。4.2 同步執(zhí)行順序?yàn)槭裁幢仨殹跋阮l率、后觸發(fā)”拿我這次2.4GHz載波、30.72MSPS采樣率的配置為例多芯片同步的軟件執(zhí)行流程是暫停所有通道的數(shù)據(jù)采集確保MCS期間不產(chǎn)生無效干擾。對兩片AD9361做完整的初始化包括SPI接口、數(shù)字接口模式LVDS還是CMOS、濾波器配置。先后配置兩片芯片的LO頻率和采樣率確保兩者配置完全相同。讀PLL鎖定指示寄存器確認(rèn)兩片都已鎖定。延時(shí)一段時(shí)間我通常給500us到1ms依據(jù)參考手冊和實(shí)測效果調(diào)整確保內(nèi)部模擬校準(zhǔn)完成。由FPGA控制GPIO發(fā)出SYNC脈沖同時(shí)送入兩片AD9361。等待同步完成通常需要幾十毫秒量級然后讀相關(guān)寄存器確認(rèn)同步狀態(tài)。對每片重新執(zhí)行必要的RX/TX校準(zhǔn)因?yàn)镸CS會復(fù)位部分?jǐn)?shù)字鏈路。第5步容易被忽略。有些工程師直接發(fā)完頻率就在幾十微秒內(nèi)打SYNC結(jié)果發(fā)現(xiàn)相位差好的時(shí)候很好差的時(shí)候亂七八糟概率大概兩三天出現(xiàn)一次。這往往就是沒等PLL和內(nèi)部校準(zhǔn)鏈路完全穩(wěn)定。4.3 重同步策略與TDD模式下的選擇多芯片同步不能做成“只在上電跑一次”。射頻系統(tǒng)長期運(yùn)行會產(chǎn)生溫升PLL控制電壓、濾波器的群延遲、PCB板材的介電常數(shù)都會隨溫度緩慢變化通道間相位也會跟著漂移。如果你做的是連續(xù)波或長時(shí)測量建議每運(yùn)行一段時(shí)間就做一次MCS重同步。TDD模式下問題更突出。因?yàn)槊看问瞻l(fā)切換AD9361的LO都會被power down再重新上電。不同step切換之間LO重新鎖定后的初始相位未必完全重現(xiàn)之前的相位關(guān)系這就導(dǎo)致通道間相位差在每一次TDD切換后都可能跳變。比較實(shí)用的應(yīng)對方案如果系統(tǒng)允許在每次TDD切換后做一個(gè)快速同步動(dòng)作。如果不允許頻繁同步用AD9361支持的fastlock profile機(jī)制把某一次成功鎖定后的狀態(tài)保存下來后續(xù)切換直接調(diào)用同一個(gè)profile。這樣每次切換時(shí)LO重鎖定的過程完全一樣相位可重復(fù)性會好很多。實(shí)測下來fastlock profile對多芯片相位穩(wěn)定性的提升非常明顯但前提是profile保存的是“已經(jīng)做過同步”的狀態(tài)而不是隨便某次的鎖定狀態(tài)。5. 實(shí)測驗(yàn)證怎樣證明兩片AD9361真的同步了5.1 用CW單音信號測通道間相位差軟件跑完MCS后必須用實(shí)測驗(yàn)證不能只看狀態(tài)寄存器就說“同步成功”。我的做法是用射頻信號源輸出一個(gè)連續(xù)波CW單音信號經(jīng)功分器同時(shí)送到兩片AD9361的RX端口信號源和AD9361的10MHz參考時(shí)鐘用同一個(gè)源這樣可以排除因參考源不一致而導(dǎo)致的天然頻差。然后FPGA同時(shí)采集兩個(gè)通道的IQ數(shù)據(jù)各取64K點(diǎn)用FFT或者直接對單點(diǎn)復(fù)數(shù)信號求相角。計(jì)算兩個(gè)通道初相之差單音頻率最好落在通道帶內(nèi)偏中心一些的位置避免直流附近和通帶邊緣的失真。重復(fù)測量20次以上觀察相位差是否恒定。穩(wěn)定的相位差應(yīng)該是固定值通常小于1度如果每次測試結(jié)果亂跳說明同步鏈路沒做好。我還做過一個(gè)更極端的實(shí)驗(yàn)連續(xù)下電再上電多個(gè)循環(huán)每次都等系統(tǒng)完全重啟動(dòng)再執(zhí)行MCS記錄每次通道間相位差。因?yàn)镸CS本身應(yīng)該消除上電隨機(jī)相位所以這個(gè)統(tǒng)計(jì)值應(yīng)該非常集中。如果每次上電機(jī)后相位差都在一個(gè)很小的范圍內(nèi)重復(fù)說明MCS流程可靠。5.2 長時(shí)間觀測相位穩(wěn)定性與溫度漂移同步瞬間相位對齊了不意味著永遠(yuǎn)對齊。一個(gè)更嚴(yán)格的方法是長時(shí)間采集數(shù)據(jù)比如每小時(shí)記錄一次相位差連續(xù)觀測十幾小時(shí)再和板卡工作溫度對照。在我這次實(shí)測中MCS剛完成時(shí)兩通道相位差大約0.1度連續(xù)工作4小時(shí)后由于功放、電源等發(fā)熱區(qū)域影響兩片AD9361的溫度不對稱通道間相位差慢慢漂到了0.4度左右。這個(gè)漂移量值和PCB布局、系統(tǒng)通風(fēng)密切相關(guān)但只要漂移是緩慢的、連續(xù)的通常可以通過周期性MCS重同步來修正。如果發(fā)現(xiàn)相位差不是緩慢漂移而是每隔幾分鐘就跳變一次那基本不是熱漂移問題而是某些數(shù)字分頻器或數(shù)據(jù)接口偶爾失鎖。這種情況需要回到信號完整性和時(shí)序上排查比如SYNC信號的信噪比、LVDS數(shù)據(jù)線的差分匹配、FPGA內(nèi)部FIFO溢出等。5.3 同步失敗的快速判斷方法平時(shí)調(diào)試不一定要每次都上信號源。我自己習(xí)慣用一個(gè)很簡單的快速探測方法把兩片AD9361的發(fā)射通道都設(shè)置為輸出一個(gè)已知單音信號比如2.4GHz連續(xù)波再用寬帶接收通道自環(huán)采集這個(gè)信號。如果多芯片同步正常采集到的IQ數(shù)據(jù)相位差隨時(shí)間是一條直線如果同步丟失就能看到相位差發(fā)生明顯臺階式跳變。這個(gè)方法能在不出門、不用額外儀器的情況下快速驗(yàn)證同步穩(wěn)定性也適合做成自動(dòng)化測試腳本觀察幾十個(gè)小時(shí)。另外libiio環(huán)境里可以直接查看LO頻率鎖定狀態(tài)、RSSI等屬性。雖然RSSI不直接反映相位但RSSI突跳往往伴隨著同步異??梢宰鳛榈谝患壐婢盘?。6. 實(shí)戰(zhàn)中踩過的坑與注意事項(xiàng)6.1 只接REF_CLK不接SYNC的“假同步”我最初給兩片AD9361鋪好共享REF_CLK后系統(tǒng)確實(shí)能工作頻譜、解調(diào)都正常唯獨(dú)測通道相位差時(shí)發(fā)現(xiàn)每次上電結(jié)果都不一樣。后來定位到原因我并沒有真正執(zhí)行MCS兩片芯片的PLL分頻鏈完全是各跑各的所謂“同步”只是表面上的頻率一致。很多剛開始做MIMO的人都會掉進(jìn)這個(gè)坑。判斷方法很簡單把系統(tǒng)斷電重新上電幾次如果每次測出的通道間相位差都不一樣基本可以斷定SYNC沒起作用。6.2 SYNC脈沖時(shí)序不足時(shí)的偶發(fā)失步另一個(gè)很折騰的問題是MCS流程看起來執(zhí)行了狀態(tài)也正常但連續(xù)大批量測試中偶爾有一片板卡相位差偏大4050度。后來查了時(shí)序才發(fā)現(xiàn)SYNC脈沖的寬度和建立時(shí)間裕量不足。AD9361參考手冊對SYNC_IN相對于內(nèi)部時(shí)鐘的建立/保持時(shí)間有明確定義如果直接用FPGA IO打一個(gè)幾十ns的脈沖而不經(jīng)過任何同步處理在溫度和電壓變化時(shí)就可能落入亞穩(wěn)態(tài)區(qū)域?qū)е履骋活w芯片沒有正確響應(yīng)。解決辦法SYNC信號在FPGA內(nèi)部用BB_CLK域打兩拍再輸出輸出端再加一個(gè)專門驅(qū)動(dòng)緩沖器同時(shí)把脈沖寬度留足手冊要求值的1.5倍以上。改完這版后幾十塊板卡連續(xù)重復(fù)測試失步概率降到零。6.3 復(fù)位順序與重啟后的重新同步多芯片系統(tǒng)里任何一片AD9361的復(fù)位都會破壞全局同步狀態(tài)。實(shí)際工程中有人為了調(diào)其他功能單獨(dú)復(fù)位了其中一片AD9361然后其他通道繼續(xù)工作結(jié)果收發(fā)數(shù)據(jù)全部錯(cuò)亂還找不到原因。記住一個(gè)原則只要?jiǎng)舆^任意一片AD9361的電源、復(fù)位、重新配置或PLL重鎖就必須重新執(zhí)行一次完整的MCS流程。還要注意執(zhí)行MCS前不要同時(shí)開啟所有通道的數(shù)據(jù)流。建議先關(guān)接收數(shù)據(jù)流做完MCS再打開。否則同步動(dòng)作可能被總線上的數(shù)據(jù)干擾狀態(tài)寄存器雖然顯示同步完成但后續(xù)數(shù)據(jù)流里依然存在殘留的相位錯(cuò)位。最后再說一點(diǎn)經(jīng)驗(yàn)多芯片同步是系統(tǒng)工程硬件、軟件、時(shí)序、熱設(shè)計(jì)、測試方法是一環(huán)扣一環(huán)的。如果你在設(shè)計(jì)初期就把參考時(shí)鐘扇出、SYNC廣播、MCS狀態(tài)機(jī)當(dāng)成和濾波器一樣的基本模塊來對待后面調(diào)試會順很多如果等到板卡回來才發(fā)現(xiàn)多芯片相位對不齊那就只能像我一開始那樣拿著示波器萬用表在暗無天日的調(diào)試臺上慢慢折騰了。希望這篇記錄能讓你少走這段彎路。