路:定時(shí)同步原理、環(huán)路設(shè)計(jì)及FPGA實(shí)現(xiàn))
搞數(shù)字接收機(jī)的人幾乎沒有不被“同步”這件事折磨過的。而在所有同步問題里位同步符號定時(shí)同步又是最讓人又愛又恨的一環(huán)——說難吧原理圖一畫就懂說簡單吧真到了信噪比低、頻偏大的場景環(huán)路的脾氣能把人磨到懷疑人生。而Gardner環(huán)路或者說Gardner算法正是數(shù)字接收機(jī)里應(yīng)用最廣的定時(shí)同步方案之一也是我調(diào)了無數(shù)版解調(diào)器之后認(rèn)為最值得徹底吃透的經(jīng)典結(jié)構(gòu)。第10章我們聚焦位同步與Gardner環(huán)路的第一部分先把“同步到底在解決什么問題”這件事掰開揉碎再把Gardner算法的收斂原理、環(huán)路濾波器的設(shè)計(jì)、從仿真到上板的完整鏈路走一遍。這一部分學(xué)扎實(shí)了后面再談高階調(diào)制、多徑信道下的魯棒性改進(jìn)才有基礎(chǔ)。這篇內(nèi)容適合剛接觸通信物理層的學(xué)生、正在做解調(diào)器算法的工程師以及用FPGA或軟件無線電平臺做接收機(jī)的朋友。我會(huì)把當(dāng)年調(diào)試時(shí)踩過的坑、算過的參數(shù)、看過的波形都一起放進(jìn)來盡量做到讓你看完就能直接動(dòng)手實(shí)現(xiàn)。1. 位同步到底在同步什么1.1 一個(gè)容易混淆的概念我們說的“位同步”不是比特級對齊很多人第一次接觸“位同步”這個(gè)術(shù)語會(huì)誤以為它是把接收到的比特流和發(fā)送端做時(shí)間上的對齊甚至有人會(huì)拿它和幀同步、字節(jié)同步搞混。這個(gè)理解偏差必須一開始就糾正過來。在通信系統(tǒng)里發(fā)送端把比特映射成符號再經(jīng)過成型濾波、數(shù)模轉(zhuǎn)換、上變頻發(fā)出去。接收端收到的是經(jīng)過信道衰減、加噪、多徑疊加后的模擬信號。這個(gè)信號經(jīng)過下變頻、匹配濾波之后我們要做的第一件事就是在每個(gè)符號周期內(nèi)找一個(gè)“最理想的采樣點(diǎn)”把連續(xù)波形還原成干凈的符號序列。這個(gè)“找到最佳采樣點(diǎn)”的過程才是位同步的核心意義。我們常說的符號定時(shí)同步、符號同步、定時(shí)恢復(fù)指的都是這一件事。至于比特和幀的對齊那是后續(xù)解調(diào)和協(xié)議層的事不在這個(gè)環(huán)路管的范圍內(nèi)。說得直白一點(diǎn)位同步回答的問題是“我該在哪個(gè)時(shí)刻去讀這個(gè)符號”而不是“我讀到的東西是哪一比特”。這個(gè)區(qū)分很關(guān)鍵因?yàn)槲乙娺^不少新手在調(diào)試時(shí)把定時(shí)環(huán)路的輸出當(dāng)成比特流直接抓波形看半天看不出問題最后發(fā)現(xiàn)是概念混了。1.2 為什么不能靠“多采幾個(gè)點(diǎn)”糊弄過去有人可能會(huì)想既然不知道最佳采樣時(shí)刻那我每個(gè)符號多采幾個(gè)點(diǎn)比如采8個(gè)、16個(gè)然后挑幅值最大的那次作為判決值不就行了嗎這個(gè)思路在實(shí)驗(yàn)室的高信噪比、零頻偏條件下偶爾能蒙對但工程上根本不可行。原因有三個(gè)。第一帶寬和功耗代價(jià)太高每符號采樣率翻倍后級所有處理模塊的速率都得跟著翻FPGA的資源占用和功耗是災(zāi)難性的。第二幅值最大并不等于信噪比最優(yōu)在存在碼間串?dāng)_ISI和噪聲的情況下最大幅值點(diǎn)可能是符號拖尾疊加出來的假峰判決效果反而更差。第三也是最本質(zhì)的——收發(fā)兩端的時(shí)鐘存在頻偏和相偏而且這個(gè)偏差是隨時(shí)間緩慢漂移的你不可能預(yù)先知道下一萬個(gè)符號的最佳采樣點(diǎn)在哪個(gè)相位上必須讓環(huán)路持續(xù)跟蹤。所以工程化的做法是把這個(gè)問題變成一個(gè)閉環(huán)控制系統(tǒng)先用定時(shí)誤差檢測器TED衡量當(dāng)前采樣時(shí)刻偏早還是偏晚再把誤差信號經(jīng)過環(huán)路濾波器去調(diào)整采樣時(shí)鐘的相位讓誤差逐漸收斂到零。Gardner環(huán)路做的就是這件事而且它做得特別巧妙——不需要發(fā)送端發(fā)送專門訓(xùn)練序列直接利用符號本身的統(tǒng)計(jì)特性就能完成定時(shí)誤差提取也就是所謂的非數(shù)據(jù)輔助NDANon-Data-Aided方式。提示在講Gardner算法的數(shù)學(xué)細(xì)節(jié)之前先把“閉環(huán)”這兩個(gè)字記在心里。位同步的所有設(shè)計(jì)、所有參數(shù)整定本質(zhì)上都是在調(diào)一個(gè)負(fù)反饋控制系統(tǒng)的動(dòng)態(tài)特性。帶著這個(gè)視角去讀后面的內(nèi)容會(huì)比單純記公式清楚得多。2. Gardner循環(huán)兩個(gè)采樣點(diǎn)如何算出定時(shí)誤差2.1 從直覺出發(fā)理解定時(shí)誤差檢測Gardner算法的核心是它提出的定時(shí)誤差檢測器。這個(gè)檢測器最驚人的地方在于每個(gè)符號周期只需要兩個(gè)采樣值就能估計(jì)出定時(shí)誤差的大小和方向。假設(shè)我們已經(jīng)大致找到符號的中間位置每個(gè)符號周期取兩個(gè)點(diǎn)一個(gè)落在符號中心附近記為k點(diǎn)一個(gè)落在這前后兩個(gè)符號中心的中間位置記為k-1/2點(diǎn)。前一個(gè)點(diǎn)是我們要用來做數(shù)據(jù)判決的最佳采樣點(diǎn)后一個(gè)點(diǎn)則是Gardner算法獨(dú)有的“觀察哨”。為什么中間那個(gè)點(diǎn)這么重要因?yàn)樵跊]有碼間串?dāng)_的理想情況下符號中間位置的瞬時(shí)幅值本應(yīng)該等于零——這是一個(gè)對稱性的結(jié)果。如果采樣時(shí)刻正確中間點(diǎn)恰好落在符號之間的過零點(diǎn)上采樣值為零如果采樣時(shí)刻偏早了我們看到的是前一個(gè)符號拖尾還沒有完全走完的殘留值或者后一個(gè)符號提前冒出來的分量如果偏晚了情況則正好相反。這個(gè)偏差值的正負(fù)和大小就攜帶了定時(shí)誤差的信息。Gardner的聰明之處在于它沒有直接用中間點(diǎn)的采樣值去修正采樣時(shí)刻而是把這個(gè)中間點(diǎn)采樣值和它前后兩個(gè)最佳采樣點(diǎn)的差分值做了一次復(fù)數(shù)乘法這樣設(shè)計(jì)出的誤差量同時(shí)兼顧了符號極性變化的影響避免了數(shù)據(jù)圖案對定時(shí)誤差估計(jì)的干擾。2.2 誤差公式拆解Gardner TED到底在算什么Gardner定時(shí)誤差檢測器的復(fù)數(shù)形式表達(dá)式如下e(n) Re{ y(n-1/2) * [y*(n) - y*(n-1)] }其中y(n)是當(dāng)前符號的最佳采樣點(diǎn)y(n-1)是上一個(gè)符號的最佳采樣點(diǎn)y(n-1/2)是這兩個(gè)采樣點(diǎn)之間的中間樣值上標(biāo)星號表示共軛Re表示取實(shí)部。這個(gè)公式看起來抽象拆開就很好懂。方括號里的東西是當(dāng)前符號采樣值和上一個(gè)符號采樣值的復(fù)共軛之差它反映了相鄰兩個(gè)符號的變化趨勢。如果相鄰符號相同這一項(xiàng)接近零中間點(diǎn)本身即使不完全為零誤差量也不大如果相鄰符號發(fā)生跳變這一項(xiàng)值很大中間點(diǎn)的微小偏移會(huì)被靈敏地放大成顯著的誤差信號。這就是Gardner算法所謂“數(shù)據(jù)依賴”特性——它只在符號發(fā)生跳變的時(shí)候才輸出較強(qiáng)的誤差信息但這并不影響它對定時(shí)誤差的一致估計(jì)因?yàn)樵诮y(tǒng)計(jì)意義上跳變圖案的組合使得誤差量對定時(shí)偏差呈現(xiàn)線性的平均響應(yīng)。對QPSK這類復(fù)信號來說直接取y*(n) - y*(n-1)是為了同時(shí)利用I/Q兩路的信息。如果只看實(shí)部比如BPSK信號公式可以簡化為只對實(shí)數(shù)取計(jì)算但原理完全一致。這個(gè)公式輸出的e(n)經(jīng)過適當(dāng)?shù)沫h(huán)路增益縮放后正負(fù)號就代表了采樣時(shí)刻偏早還是偏晚幅度大小則大致和定時(shí)偏差成正比。2.3 三點(diǎn)采樣法為什么能行零點(diǎn)的統(tǒng)計(jì)意義上一節(jié)我們提到中間點(diǎn)的采樣值在理想情況下等于零。這里需要做一個(gè)補(bǔ)充這個(gè)“等于零”并不是每次采樣都嚴(yán)格成立而是在統(tǒng)計(jì)平均意義上成立的。因?yàn)槌尚蜑V波器的脈沖響應(yīng)在相鄰符號的判決點(diǎn)處滿足奈奎斯特?zé)o碼間串?dāng)_條件并且在兩個(gè)判決點(diǎn)中間的特定時(shí)刻來自相鄰符號的拖尾會(huì)相互抵消。這個(gè)抵消關(guān)系恰恰是很多人在理論計(jì)算時(shí)容易暈的地方。我們以升余弦滾降濾波器為例它的脈沖響應(yīng)在t 0處取峰值在t ±TT為符號周期處過零點(diǎn)同時(shí)在t ±T/2處也有零點(diǎn)。這里注意升余弦濾波器的T/2零點(diǎn)取決于滾降系數(shù)滾降系數(shù)越大這個(gè)零點(diǎn)越深。對于較小的滾降系數(shù)比如0.1T/2處的響應(yīng)不再嚴(yán)格為零而是有少量殘余。這就是為什么在實(shí)際系統(tǒng)中Gardner環(huán)路的S曲線會(huì)偏軟也就是t誤差到e(n)的增益下降了但環(huán)路依然能正常工作只是噪聲性能會(huì)略差。理解了這層統(tǒng)計(jì)關(guān)系就明白Gardner算法為什么不像早遲門那樣需要額外的導(dǎo)頻或訓(xùn)練序列。它用相鄰跳變這一天然存在的數(shù)據(jù)特征替代了導(dǎo)頻在定時(shí)估計(jì)中的作用。這也是它在衛(wèi)星通信、突發(fā)通信等不允許浪費(fèi)頻譜效率的場景中極受歡迎的根本原因。3. 環(huán)路設(shè)計(jì)從參數(shù)計(jì)算到穩(wěn)態(tài)性能3.1 結(jié)合環(huán)路的完整信號流程定時(shí)誤差信號e(n)算出來之后并不能直接拿它去改采樣時(shí)鐘。因?yàn)閱蝹€(gè)符號周期的誤差估計(jì)噪聲很大直接調(diào)整會(huì)導(dǎo)致采樣時(shí)刻劇烈抖動(dòng)環(huán)路根本穩(wěn)不住。正確的做法是讓誤差信號經(jīng)過一個(gè)環(huán)路濾波器濾除高頻噪聲再把濾波后的輸出送到數(shù)控振蕩器NCO由NCO控制采樣時(shí)刻的微調(diào)量。在Gardner環(huán)路里整個(gè)流程可以歸納為五個(gè)環(huán)節(jié)從匹配濾波后的信號中按照當(dāng)前NCO指示的時(shí)刻抽取每符號兩個(gè)采樣點(diǎn)。用這兩個(gè)采樣點(diǎn)計(jì)算定時(shí)誤差e(n)。e(n)經(jīng)過環(huán)路濾波器得到頻差/相差的控制量。NCO根據(jù)控制量微調(diào)下一拍的采樣相位。新的采樣相位又決定了下一輪采樣點(diǎn)的抽取位置形成閉環(huán)。這里有一個(gè)工程細(xì)節(jié)值得提前說目前絕大多數(shù)接收機(jī)并不真正“微調(diào)ADC采樣時(shí)鐘”而是以固定的高倍采樣率對信號進(jìn)行采樣然后用插值濾波器在數(shù)字域上計(jì)算出任意時(shí)刻的采樣值。也就是說NCO控制的不是硬件時(shí)鐘而是插值濾波器的相位索引。這樣做的好處是可以把定時(shí)同步完全放到數(shù)字域處理適應(yīng)性極強(qiáng)這也是Gardner環(huán)路在現(xiàn)代軟件無線電架構(gòu)中占絕對統(tǒng)治地位的原因。3.2 環(huán)路濾波器系數(shù)怎么算帶寬與阻尼的平衡環(huán)路濾波器的設(shè)計(jì)是Gardner環(huán)路能否穩(wěn)定工作的核心。工程上最常用的是一階積分器結(jié)構(gòu)也就是比例積分PI濾波器。它的離散時(shí)域更新方程為v(n) v(n-1) Ki * e(n) w(n) Kp * e(n) v(n)這里的w(n)就是最終去控制NCO的環(huán)路輸出量。Kp是比例增益直接影響環(huán)路的瞬間響應(yīng)速度Ki是積分增益決定環(huán)路的穩(wěn)態(tài)精度和低頻跟蹤能力。很多人都是隨便拍兩個(gè)數(shù)進(jìn)去然后看波形調(diào)這樣不是不行但如果想一次就調(diào)好最好還是按系統(tǒng)參數(shù)算一遍。對于線性化的連續(xù)時(shí)間模型我們可以把環(huán)路帶寬BL、阻尼系數(shù)ζ和自然角頻率ωn聯(lián)系起來。典型設(shè)計(jì)取ζ 0.707也就是巴特沃斯型響應(yīng)此時(shí)超調(diào)量小、收斂時(shí)間適中。環(huán)路帶寬BL和自然角頻率的關(guān)系為BL ωn * (4ζ2 1) / (4ζ) / 2在ζ 0.707時(shí)近似有BL ≈ 0.53 * ωn。增益Kp和Ki與模擬參數(shù)之間還需要乘以定時(shí)誤差檢測器的增益Kd和NCO/插值器的增益K0。工程上常用的快速估算是先確定歸一化環(huán)路帶寬BL_TBL與符號速率的比值然后按如下經(jīng)驗(yàn)公式估算Kp ≈ 4 * ζ / (1 2ζ 0.5/ζ) * BL_T * 4Ki ≈ Kp2 / 4這里給出一組可直接使用的典型參數(shù)例如符號速率1 MspsBL選為5 kHz那么BL_T 0.005按上述公式計(jì)算得到Kp約0.028Ki約0.0002。這組參數(shù)在實(shí)際系統(tǒng)中的相位裕度良好捕獲時(shí)間大約在數(shù)百到數(shù)千個(gè)符號之間具體取決于初始定時(shí)誤差的大小。提示以上的計(jì)算都是線性化近似實(shí)際在FPGA上遇到定點(diǎn)化、量化噪聲、插值器非理想效應(yīng)時(shí)參數(shù)還需要微調(diào)。我的經(jīng)驗(yàn)是先按上述公式算出理論值然后只在一個(gè)小范圍內(nèi)比如0.5倍到2倍去試而不是憑空亂猜。3.3 環(huán)路帶寬的選擇邏輯跟蹤能力與噪聲的折中環(huán)路帶寬是Gardner環(huán)路最重要的一個(gè)權(quán)衡標(biāo)尺。帶寬越寬環(huán)路跟蹤頻偏變化的能力越強(qiáng)捕獲速度越快但注入到采樣時(shí)刻的噪聲也越大穩(wěn)態(tài)抖動(dòng)性能變差帶寬越窄穩(wěn)態(tài)越干凈但捕獲慢而且在存在大頻偏的場景下可能根本拉不回來。這里需要明確一個(gè)概念Gardner環(huán)路本質(zhì)上是一個(gè)相位跟蹤環(huán)路它能夠吸收頻偏的能力依賴于環(huán)路濾波器中的積分器不斷累積相位變化量。如果頻偏過大超出了環(huán)路能夠持續(xù)跟蹤的范圍相位誤差就會(huì)周期性地滑過導(dǎo)致解調(diào)輸出發(fā)生符號翻轉(zhuǎn)表現(xiàn)就是誤碼率曲線出現(xiàn)“地板效應(yīng)”信噪比再高也降不下去。如何權(quán)衡呢我的個(gè)人經(jīng)驗(yàn)是對于一般QPSK/8PSK調(diào)制帶寬可以取符號速率的0.5%到2%對于高階QAM比如64QAM以上對穩(wěn)態(tài)相位噪聲更敏感帶寬需要壓到0.2%以下但此時(shí)要先通過其他手段比如頻偏粗估、前導(dǎo)訓(xùn)練把初始頻偏壓到一個(gè)很小的范圍否則環(huán)路無法入鎖。這個(gè)取舍在系統(tǒng)設(shè)計(jì)階段必須提前想清楚不能讓AGC、載波環(huán)、定時(shí)環(huán)各自為戰(zhàn)。4. 操作實(shí)錄MATLAB建模到FPGA上板的幾個(gè)關(guān)鍵步驟4.1 仿真模型搭建驗(yàn)證算法不要急著寫復(fù)雜代碼我通常的建議是在動(dòng)手寫FPGA代碼重量級驗(yàn)證之前先用MATLAB或Python的NumPy/SciPy搭一個(gè)浮點(diǎn)模型把算法的可行性、參數(shù)范圍、邊界條件摸清楚。在這個(gè)階段重點(diǎn)是驗(yàn)證Gardner TED的S曲線、環(huán)路濾波器的參數(shù)穩(wěn)定性而不是追求仿真速度。一個(gè)最簡可運(yùn)行的Python偽代碼片段如下import numpy as np def gardner_ted(y_prev, y_mid, y_cur): # y_prev: 上一符號最佳采樣點(diǎn) # y_mid : 當(dāng)前符號中間采樣點(diǎn) # y_cur : 當(dāng)前符號最佳采樣點(diǎn) return np.real(y_mid * (np.conj(y_cur) - np.conj(y_prev))) # 環(huán)路濾波器PI def loop_filter(e, v, kp, ki): v_new v ki * e w kp * e v_new return w, v_new # 主循環(huán)示意 phase 0.0 # NCO相位 for n in range(num_symbols): # 從以N倍過采樣存儲的rx_symbols中按phase所指位置取三個(gè)點(diǎn) y_cur, y_prev, y_mid interpolate(rx_symbols, phase) e gardner_ted(y_prev, y_mid, y_cur) w, phase_acc loop_filter(e, phase_acc, kp, ki) phase mu * w # mu為NCO步長按符號周期歸一化這段代碼去掉了成型濾波、多徑信道、頻偏注入等細(xì)節(jié)只保留定時(shí)誤差檢測和環(huán)路濾波兩個(gè)核心環(huán)節(jié)方便你對算法行為建立直覺。實(shí)際仿真時(shí)我還會(huì)在信號里人為加入一個(gè)微小頻偏比如10 Hz來觀察環(huán)路的跟蹤能力以及在低信噪比條件下看環(huán)路的抖動(dòng)方差。4.2 S曲線的實(shí)測方法判斷TED設(shè)計(jì)正確與否的試金石S曲線是定時(shí)誤差檢測器輸出e(n)與真實(shí)定時(shí)誤差之間的對應(yīng)關(guān)系。把真實(shí)定時(shí)誤差從-0.5T掃到0.5T在每個(gè)固定的偏差下測量TED的輸出均值得到的曲線就是S曲線。為什么這個(gè)曲線如此重要因?yàn)镾曲線的形狀直接反映了定時(shí)誤差檢測器是否正常工作。理想情況下S曲線應(yīng)該是一條過零點(diǎn)、斜率為正的光滑單調(diào)曲線斜率為正意味著當(dāng)采樣點(diǎn)偏早時(shí)誤差為負(fù)環(huán)路的反饋機(jī)制會(huì)讓采樣點(diǎn)右移當(dāng)采樣點(diǎn)偏晚時(shí)誤差為正環(huán)路的反饋會(huì)讓采樣點(diǎn)左移。如果S曲線在某個(gè)區(qū)間內(nèi)斜率變負(fù)環(huán)路在那個(gè)區(qū)間就會(huì)正反饋發(fā)散導(dǎo)致鎖定不穩(wěn)定。我在第一次實(shí)現(xiàn)QPSK的Gardner環(huán)路時(shí)就吃過S曲線不對稱的苦頭?,F(xiàn)象是環(huán)路的穩(wěn)態(tài)誤碼率比理論值高出一截怎么調(diào)帶寬都沒有改善。后來把S曲線畫出來發(fā)現(xiàn)它在正負(fù)兩側(cè)斜率不一致——原因是我在抽取插值點(diǎn)時(shí)參考點(diǎn)選取不對稱導(dǎo)致TED對“偏早”和“偏晚”的響應(yīng)幅度不一樣。改成對稱時(shí)間窗之后S曲線才恢復(fù)了正常的線性度誤碼率也跟著下來了。4.3 上板調(diào)試的注意點(diǎn)定點(diǎn)化與流水線延遲到了FPGA實(shí)現(xiàn)階段最大的變化是整個(gè)環(huán)路必須從浮點(diǎn)變成定點(diǎn)而且每個(gè)模塊都有計(jì)算延遲。這些延遲雖然只有幾個(gè)時(shí)鐘周期但放到反饋環(huán)路里就會(huì)改變環(huán)路的相位特性輕則影響捕獲性能重則直接導(dǎo)致振蕩。解決延遲問題有兩種常見思路。第一種是“延遲補(bǔ)償”在TED或環(huán)路濾波器的其他路徑上人為插入等量的補(bǔ)償延遲數(shù)學(xué)上讓整體環(huán)路模型回到無延遲狀態(tài)。第二種是“降增益”承認(rèn)延遲的存在把Kp和Ki按比例縮小一些用犧牲部分響應(yīng)速度來換取穩(wěn)定性。工程上我建議兩種結(jié)合先用延遲補(bǔ)償把環(huán)路模型修正到接近理想狀態(tài)再用降增益來補(bǔ)償殘留的模型誤差這樣穩(wěn)定性和性能都比較可靠。定點(diǎn)化方面最關(guān)鍵的是NCO相位累加器的位寬。我一般用32位累加器其中高若干位作為插值濾波器的相位索引低位數(shù)反映了相位分辨率。累加器位寬太窄會(huì)導(dǎo)致采樣時(shí)刻量化步長過大穩(wěn)態(tài)誤差下不去表現(xiàn)為星座點(diǎn)的“集簇”變厚。經(jīng)驗(yàn)做法是把相位分辨率做到符號抖動(dòng)指標(biāo)的十分之一以下對大多數(shù)系統(tǒng)來說32位是安全的起點(diǎn)。5. 常見問題與排查技巧實(shí)錄5.1 環(huán)路鎖不住先檢查符號跳變是否充足最典型的鎖定問題不是參數(shù)不對而是信號圖案里沒有足夠的跳變可供TED“看到”。前面反復(fù)強(qiáng)調(diào)Gardner TED只在相鄰符號發(fā)生跳變時(shí)產(chǎn)生有效的誤差信息。如果發(fā)送的是全0、全1或連續(xù)重復(fù)的固定圖案環(huán)路拿不到誤差輸出會(huì)持續(xù)漂移表現(xiàn)就是鎖不住。排查方法很簡單直接在仿真或?qū)嵃迳峡碩ED的輸出。如果誤差信號長時(shí)間接近零且沒有周期性先檢查發(fā)送端是否在發(fā)PN序列或加擾數(shù)據(jù)如果還是不行檢查定時(shí)環(huán)路前面是否加了正確的匹配濾波。注意Gardner TED對色散信道很敏感如果信號在進(jìn)環(huán)路之前已經(jīng)嚴(yán)重畸變TED的靈敏度會(huì)大幅下降此時(shí)應(yīng)當(dāng)先檢查信道均衡再回頭調(diào)定時(shí)環(huán)路。5.2 環(huán)路鎖定但星座圖“轉(zhuǎn)圈”定時(shí)環(huán)和載波環(huán)的配合問題一種很常見的現(xiàn)象是Gardner環(huán)路的鎖定指示已經(jīng)正常但解調(diào)出來的星座圖仍然在緩慢旋轉(zhuǎn)。這個(gè)問題的根源通常不在定時(shí)環(huán)路而在載波同步環(huán)路如Costas環(huán)或判決引導(dǎo)環(huán)路沒有完全消除殘余頻偏。殘余頻偏會(huì)導(dǎo)致符號相位隨時(shí)間緩慢偏移等定時(shí)環(huán)把最佳采樣時(shí)刻找到了載波環(huán)卻還沒跟上星座點(diǎn)自然就轉(zhuǎn)起來了。這兩個(gè)環(huán)路的帶寬選擇必須錯(cuò)開一般讓載波環(huán)帶寬遠(yuǎn)大于定時(shí)環(huán)帶寬保證載波環(huán)先收斂、快收斂再讓定時(shí)環(huán)慢慢跟蹤否則兩個(gè)環(huán)如果帶寬接近就會(huì)互相耦合整個(gè)鏈路都跟著抖動(dòng)。我在調(diào)試衛(wèi)星接收機(jī)時(shí)習(xí)慣先把載波環(huán)單獨(dú)閉合等頻譜線收窄了再接定時(shí)環(huán)這樣每一步的變量都少出了問題也好定位。5.3 常見問題速查表下面這張表是我多年調(diào)試中總結(jié)出來的高頻排查表按“現(xiàn)象 → 原因 → 處置”的結(jié)構(gòu)整理基本可以覆蓋80%以上的Gardner環(huán)路問題?,F(xiàn)象可能原因處置建議環(huán)路完全不收斂誤差信號恒定輸入信號沒有成型濾波或?yàn)V波帶寬錯(cuò)誤檢查接收鏈路是否有匹配濾波濾波器滾降系數(shù)是否與發(fā)射端一致捕獲速度極慢環(huán)路帶寬設(shè)置過窄初始頻偏太大增加帶寬如果頻偏過大可先用FFT粗估頻偏減小到環(huán)路可捕范圍鎖定后星座圖有緩慢旋轉(zhuǎn)載波環(huán)沒有完全消除殘余頻偏先單獨(dú)調(diào)載波環(huán)確保穩(wěn)態(tài)頻偏壓到定時(shí)環(huán)帶寬的十分之一以內(nèi)穩(wěn)態(tài)星座點(diǎn)邊界發(fā)散明顯NCO累加器位寬不夠或插值器精度不足加大NCO位寬換用更高階的插值器如三次插值S曲線不對稱插值器參考點(diǎn)選取不對稱濾波器群延遲不均畫S曲線定位不對稱區(qū)間調(diào)整插值器抽取坐標(biāo)檢查匹配濾波延遲是否補(bǔ)償高信噪比下誤碼率仍高于理論值TED附近有直流偏置或定點(diǎn)化量化噪聲過大檢查TED輸出在處理前的直流分量增加定點(diǎn)化處理增益或改為浮點(diǎn)仿真對比這張表的價(jià)值在于很多問題并不是調(diào)Kp/Ki就能解決的。我見過太多人在一個(gè)錯(cuò)誤方向上調(diào)了好幾天最后發(fā)現(xiàn)是ADC前端的直流偏置沒有去掉直接把Gardner環(huán)路帶歪了。鏈路是一體的定時(shí)環(huán)只是其中一環(huán)千萬不要把它當(dāng)孤島來排查。6. 個(gè)人經(jīng)驗(yàn)與下一步擴(kuò)展方向調(diào)試Gardner環(huán)路這幾年我自己最大的體會(huì)是無論參數(shù)表算得多漂亮最終都要靠波形說話。每一次上板調(diào)試我都會(huì)同時(shí)看四類信號TED誤差信號的時(shí)域波形、環(huán)路濾波器輸出電壓的頻譜、NCO相位的動(dòng)態(tài)軌跡、以及解調(diào)星座圖的收斂過程。這四個(gè)信號配合起來基本能還原環(huán)路的全部行為特征。哪怕只做一個(gè)簡單的QPSK接收機(jī)我也會(huì)先把這四類信號采集出來按鎖定前、鎖定過程中、鎖定穩(wěn)態(tài)三個(gè)階段分別看一遍形成對環(huán)路行為的直覺。一旦形成了這種直覺后面再碰到64QAM、1024QAM這些更高階調(diào)制下的定時(shí)同步問題就有了判斷的基準(zhǔn)點(diǎn)。Gardner環(huán)路還有很多可深入的擴(kuò)展方向比如如何結(jié)合前饋定時(shí)估計(jì)做突發(fā)傳輸?shù)目焖俨东@如何應(yīng)對多徑信道的TED曲線畸變?nèi)绾卧诟唠AQAM下用改進(jìn)型Gardner算法降低數(shù)據(jù)圖案帶來的偏差。這些內(nèi)容等我們進(jìn)入第10章的第二部分再接著展開。