第10章:位同步与Gardner环路(1)
第10章(1)內容如下:
- 一、位同步與載波同步的區別
- 1、采樣時鐘相位偏差的影響
- 2、采樣時鐘頻率偏差的影響
- 二、Gardner環路算法與插值方法
- 1、插值濾波器
- 2、Gardner誤差檢查算法
- 三、Gardner環路中環路濾波器與數字振蕩器設計
- 1、環路濾波器
- 2、數控振蕩器(NCO)
- 四、Gardner環路的可運行MATLAB代碼
- 五、參考資料
- 六、致謝
最近搞懂了Gardner環路的一些知識,于是更新第10章——位同步。
如果你稍不留意的話,這可能是你在網上能看到的介紹Gardner環路及其MATLAB仿真最詳細的一篇文章了。
一、位同步與載波同步的區別
在第4章,我介紹了載波同步與鎖相環的概念,里面關于鎖相環的知識也是本篇文章的基礎。
載波同步是相干解調的基礎,不管對于模擬通信還是數字通信來說,只要是相干解調,接收端都必須提供同頻同相的載波。
當然,若采用基帶傳輸,此時便沒有載波同步的問題,因為沒有頻帶調制,即沒有乘以載波進行頻譜搬移的過程。
位同步,也叫符號同步、定時同步、碼元同步,只有數字通信才需要,數字通信中不管是基帶傳輸還是頻帶傳輸都需要。
這是因為數字通信中,是用波形中的幾個采樣點去代替一個符號,在接收端只需要對這些采樣點中的一個進行判決,便可以恢復出這個符號。
實際通信中,由于信道的傳輸時延,接收兩端的時鐘偏移,接收端無法找到符號的最佳時刻來對其進行采樣判決,這便使得接收端恢復出的數據與發送端的數據有誤差。
接收端若想在最佳采樣時刻恢復發送端的數據,便要使得接收時鐘與發送時鐘同步,因此接收端要采取措施來調整接收端的采樣時鐘,這個同步的過程便定義為位同步。
那么載波同步偏差與位同步偏差,對通信性能有什么樣的影響呢?
看到《數字通信理論與系統》第6章中載波同步偏差與位同步偏差的影響。(《數字通信與系統的》的PPT鏈接是:孫永軍 | 課程教學 | 西安電子科技大學個人主頁
《MIMO-OFDM無線通信技術及其MATLAB實現》第5章《OFDM同步技術》中介紹:采樣時鐘的偏差包括相位偏差和頻率偏差。
1、采樣時鐘相位偏差的影響
當發射機和接收機的采樣速率或頻率完全一致時,會發生相位誤差。即接收機知道隔多長采一個點,但是接收機不知道從什么時候開始采。(這句話好好理解一下)
換句話說,接收機的采樣時刻與最佳的采樣時刻一直有固定的相位差,相位偏差導致頻域的相位旋轉,且相位旋轉的多少與子載波編號k成正比。
(在《第8章:OFDM同步技術(1)——符號定時偏差》中介紹過STO的影響,如下圖:
采樣時鐘對相位偏差的影響通常較小,所以僅把它當做STO的一部分,不需要額外的補償器。
2、采樣時鐘頻率偏差的影響
其中多普勒偏差對采樣的影響,可以參考:《問答交流4:多普勒效應對通信的影響》
二、Gardner環路算法與插值方法
上面的介紹,你明白了位同步是什么,以及未完成位同步會對通信帶去什么影響,那我們通過什么樣的技術去達到位同步呢?
位同步技術主要分為兩種:
(1)傳統鎖相環技術:利用反饋控制原理改變時鐘的頻率和相位去是實現符號同步的調整。原理簡單,但存在本地時鐘頻率要求較高、不適合寬速率范圍的基帶碼元同步等不足。
這個技術,我還沒試驗過,之后若有機會搞懂再寫文章介紹。
(2)插值算法位同步技術:不需要改變本地時鐘便可實現位同步時刻的調整,直接內插出最佳采樣點的相位與值。
講到插值插值算法位同步技術,便忍不住要提到Gardner的三篇論文:
1、《Interpolation in Digital Modems-Part I: Fundamentals 》
2、《Interpolation in Digital Modems-Part II: Implementation and Performance 》
3、《A BPSK/QPSK Timing-Error Detector for Sampled Receivers 》
圖1 基于插值算法的位同步環路 圖2 基于插值算法的位同步環路 圖3 基于插值算法的位同步環路圖1:來自IEEE論文《Interpolation in Digital Modems-Part I: Fundamentals》
圖2:來自杜勇的《數字通信同步技術的MATLAB與FPGA實現》第8.1節
圖3:來自知網論文付永明、朱江的《Gardner 定時同步環路參數設計及性能分析 》
同時列出三張圖,是幫助你互相對照著看,也方便接下來對各個模塊的功能與設計進行分別介紹。
1、插值濾波器
圖4 速率轉換原理圖4:來自IEEE論文《Interpolation in Digital Modems-Part I: Fundamentals》
內插器就是根據定時控制器的輸出來對數據速率進行轉換。
假設接收端的固定采樣時鐘頻率是 Ts{{T_s}}Ts?,對 y(t)y\left( t \right)y(t)在 t=kTit = k{T_i}t=kTi?的時刻進行再采樣(resample),其中 Ti{T_i}Ti?是內插周期,它與符號周期是同步的。
一般情況下, TiTs\frac{{{T_i}}}{{{T_s}}}Ts?Ti??不為整數,經過再采樣后的數據為 y(kTi)y\left( {k{T_i}} \right)y(kTi?),根據上圖則有
y(kTi)=∑mx(mTs)hI(kTi?mTs)y\left( {k{T_i}} \right) = \sum\limits_m {x\left( {m{T_s}} \right){h_I}} \left( {k{T_i} - m{T_s}} \right)y(kTi?)=m∑?x(mTs?)hI?(kTi??mTs?)
關鍵問題就是要找到到采樣時刻Ti{{T_i}}Ti?和濾波器 hI(t){h_I}\left( t \right)hI?(t)的表達式。
令m是輸入信號索引(signal index),濾波器下標索引是 i=int[kTi/Ts]?mi = {\mathop{\rm int}} \left[ {k{T_i}/{T_s}} \right] - mi=int[kTi?/Ts?]?m,其中[z]表示不大于z的最大整數。
定義基本索引(basepoint index)為 mk=int[kTi/Ts]{m_k} = {\mathop{\rm int}} \left[ {k{T_i}/{T_s}} \right]mk?=int[kTi?/Ts?],分數間隔(fractional inteval)為 μk=kTi/Ts?mk{\mu _k} = k{T_i}/{T_s} - {m_k}μk?=kTi?/Ts??mk?。
結合上圖不難發現, 0≤μk<10 \le {\mu _k} < 10≤μk?<1,上面的內插公式可以重寫為:
y(kTi)=∑i=N1N2x[(mk?i)Ts]hI[(i+μk)Ts]y\left( {k{T_i}} \right) = \sum\limits_{i = {N_1}}^{{N_2}} {x\left[ {\left( {{m_k} - i} \right){T_s}} \right]} {h_I}\left[ {\left( {i + {\mu _k}} \right){T_s}} \right]y(kTi?)=i=N1?∑N2??x[(mk??i)Ts?]hI?[(i+μk?)Ts?]
你可能會好奇了,引入 mk{m_k}mk?和 μk{\mu _k}μk?有什么作用?
(1)在哪插入: mk{m_k}mk?與 μk{\mu _k}μk?共同決定了 kTi{k{T_i}}kTi?的位置,且 μk{\mu _k}μk?可以調整;
(2)計算值:確定 mk{m_k}mk?后,將決定用mk{m_k}mk?附近的幾個點去計算插入位置的值。
上面用插值濾波器這個名詞來表示內插器,但是在這里不需要考慮內插器的濾波性特性,更重要的是得到內插器的結構及相應的系數,以計算出內插位置的值。
常用的內插器算法有Farrow算法、Cubic算法。順便復習下前面的《第7章:OFDM 信道估計與均衡(4)》,里面也講了插值算法。
其中,Farrow算法的結構圖如下:
2、Gardner誤差檢查算法
Gardner定時誤差算法通常用在BPSK、QPSK信號,通過改進可以應用在QAM等多進制基帶信號中。(在QAM中的應用,我目前還沒試過,可以參考杜勇的《數字調制解調技術的MATLAB與FPGA實現——Xilinx/VHDL版》一書)
Gardner定時誤差算法,該算法的一個特點是每個符號只需要使用兩個采樣點,一個是strobe點,即最佳觀察點,另外一個是midstrobe點,即兩個觀察點之間的采樣點。
對應到上圖來說,即strobe點是圖中的采樣點y(n-1)和y(n),midstrobe點是中間采樣點y(n-1/2)。
誤差產生公式是: μt(k)=yI(k?1/2)[yI(k)?yI(k?1)]+yQ(k?1/2)[yQ(k)?yQ(k?1)]\mu_{\mathrm{t}}(k)=y_{\mathrm{I}}(k-1 / 2)\left[y_{\mathrm{I}}(k)-y_{\mathrm{I}}(k-1)\right]+y_{\mathrm{Q}}(k-1 / 2)\left[y_{\mathrm{Q}}(k)-y_{\mathrm{Q}}(k-1)\right]μt?(k)=yI?(k?1/2)[yI?(k)?yI?(k?1)]+yQ?(k?1/2)[yQ?(k)?yQ?(k?1)]
根據上面的這個公式,可以分為以下幾種情況:
(1)假設沒有定時誤差,則 yI(k?12){y_I}\left( {k - \frac{1}{2}} \right)yI?(k?21?)與 yQ(k?12){y_Q}\left( {k - \frac{1}{2}} \right)yQ?(k?21?)為0,那么 ut(k){u_t}\left( k \right)ut?(k)為0;
(2)假設有定時誤差,但是由于中間點的斜率可正可負,只靠中間值是不能夠提供足夠多的信息的。
第(2)句話怎么去理解呢?我來舉例子說明。
比如現在知道 y(n?12)>0y\left( {n - \frac{1}{2}} \right) > 0y(n?21?)>0,那么會有兩種情況:
(1) y(n?1)>0y\left( {n - 1} \right) > 0y(n?1)>0, y(n)<0y\left( n \right) < 0y(n)<0
(2) y(n?1)<0y\left( {n - 1} \right) < 0y(n?1)<0, y(n)>0y\left( n \right) > 0y(n)>0
因此誤差表達公式需要借助 y(n?1)?y(n)y\left( {n - 1} \right) - y\left( n \right)y(n?1)?y(n)這一項,對定時誤差做進一步判斷。
有時候為了減少乘法器的使用,不采用實際峰值,而是使用峰值的符號,這會給系統帶來一定的系統損失。
若采用峰值符號值去代替峰值后,則定時誤差公式則表達為:
μt(k)=yI(k?12)[sgn(yI(k))?sgn(yI(k?1))]+yQ(k?12)[sgn(yQ(k))?sgn(yQ(k?1))]{\mu _t}\left( k \right) = {y_I}\left( {k - \frac{1}{2}} \right)\left[ {{\mathop{\rm sgn}} \left( {{y_I}\left( k \right)} \right) - {\mathop{\rm sgn}} \left( {{y_I}\left( {k - 1} \right)} \right)} \right] + {y_Q}\left( {k - \frac{1}{2}} \right)\left[ {{\mathop{\rm sgn}} \left( {{y_Q}\left( k \right)} \right) - {\mathop{\rm sgn}} \left( {{y_Q}\left( {k - 1} \right)} \right)} \right]μt?(k)=yI?(k?21?)[sgn(yI?(k))?sgn(yI?(k?1))]+yQ?(k?21?)[sgn(yQ?(k))?sgn(yQ?(k?1))]
當信息中含有長串的連0或者連1符號時,接收端是否無法獲取定時信息?結合上面的圖便不難理解。
因此,采用Gardner算法時,如果數據符號位存在多位連續相同的情況下,效果便可能不好。
所以仿真的時候,可以采用10101010交替的特殊序列,用來尋找位定時。
除此之外,Gardner算法可以在具有小的載波頻差的前提下正常運行,具有與頻率誤差無關的特性,因此可以在多普勒頻移( Δfdopper≤Rs/4\Delta {f_{dopper}} \le {R_s}/4Δfdopper?≤Rs?/4, Rs{R_s}Rs?是符號速率)條件下完成符號同步。(這個結論的證明可以參考知網論文蔡凡的《衛星定時接收機的關鍵技術研究》)
三、Gardner環路中環路濾波器與數字振蕩器設計
1、環路濾波器
在《第4章:載波同步與鎖相環仿真(1)》中介紹了環路濾波器的結構圖,以及關鍵參數 C1{C_1}C1?和 C2{C_2}C2?的計算,位同步環路中所使用的環路濾波器與鎖相環中的環路濾波器相同,均采用理想積分濾波器。
環路濾波器的z域圖假設輸入的定時誤差timing error,簡稱te(k),output是w(k+1)。此時有兩個問題擺在你的面前:
(1)輸入te(k)和輸出w(k+1)是什么含義呢?
(2)為什么w會比te的計數要大一呢?
你先思考一下,我在后面會做相應的解釋。先由上面這個圖可以得到:
te(k)[C1+C211?Z?1]=w(k+1)te\left( k \right)\left[ {{C_1} + {C_2}\frac{1}{{1 - {Z^{ - 1}}}}} \right] = w\left( {k + 1} \right)te(k)[C1?+C2?1?Z?11?]=w(k+1)
化簡得到:
w(k+1)=w(k)+C1[te(k)?te(k?1)]+C2te(k)w\left( {k + 1} \right) = w\left( k \right) + {C_1}\left[ {te\left( k \right) - te\left( {k - 1} \right)} \right] + {C_2}te\left( k \right)w(k+1)=w(k)+C1?[te(k)?te(k?1)]+C2?te(k)
這個公式便對應下面這段代碼:
%環路濾波器,每個數據符號計算一次環路濾波器輸出 if(ms>1)w(ms+1)=w(ms)+c1*(time_error(ms)-time_error(ms-1))+c2*time_error(ms); elsew(ms+1)=w(ms)+c1*time_error(ms)+c2*time_error(ms); end ms=ms+1;2、數控振蕩器(NCO)
在鎖相環中的數控振蕩器(NCO)是一個相位累加器,而在位同步環路中的振蕩器(NCO)是一個相位遞減器,差分方程為:
η(m+1)=[η(m)?w(m)]mod1\eta \left( {m + 1} \right) = \left[ {\eta \left( m \right) - w\left( m \right)} \right]\bmod 1η(m+1)=[η(m)?w(m)]mod1
至于這個公式是怎么證明得到的,可以參考Gardner的《Interpolation in Digital
Modems——Part I: Fundamentals 》
η(m){\eta \left( m \right)}η(m)是第m個工作時鐘的NCO寄存器的內容,w(m)是NCO的控制字,兩者都是正小數。
注意到NCO的工作周期是Ts,而內插器的周期是Ti,w(m)是環路濾波器的輸出,進而對NCO控制,使得NCO能在最佳采樣時刻溢出。
當環路達到平衡時,w(m)近似是一個常數,此時平均1/w(m)個周期Ts,NCO就會溢出一次。所以得到:w(m)≈TsTiw\left( m \right) \approx \frac{{{T_s}}}{{{T_i}}}w(m)≈Ti?Ts??
順便對mod函數進行說明,也可在MATLAB命令行中敲入help mod進行學習。比如mod(1.3,1)=0.3,mod(-0.3,1)=0.7
此圖來自來自IEEE論文《Interpolation in Digital Modems-Part I: Fundamentals》
從上圖中,可得到
μkTsη(mk)=(1?μk)Ts1?η(mk+1)\frac{\mu_{k} T_{s}}{\eta\left(m_{k}\right)}=\frac{\left(1-\mu_{k}\right) T_{s}}{1-\eta\left(m_{k}+1\right)}η(mk?)μk?Ts??=1?η(mk?+1)(1?μk?)Ts??
整理得到:
μk=η(mk)1?η(mk+1)+η(mk)=η(mk)W(mk)\mu_{k}=\frac{\eta\left(m_{k}\right)}{1-\eta\left(m_{k}+1\right)+\eta\left(m_{k}\right)}=\frac{\eta\left(m_{k}\right)}{W\left(m_{k}\right)}μk?=1?η(mk?+1)+η(mk?)η(mk?)?=W(mk?)η(mk?)?
此圖來自知網論文《付永明等:Gardner定時同步環路參數設計與性能分析》
NCO的傳遞函數為: N(Z)=k0z?11?z?1N\left( Z \right) = \frac{{{k_0}{z^{ - 1}}}}{{1 - {z^{ - 1}}}}N(Z)=1?z?1k0?z?1?
至此,整個Gardner環路每個模塊的原理都講了一下。
總結來說,首先給 η(1)\eta \left( 1 \right)η(1)和 w(1)w\left( 1 \right)w(1)賦初始值,然后得到插值的位置及相應的時鐘定時誤差te(1),將該誤差通過環路濾波器后,轉化為對 w(2)w\left( 2 \right)w(2)的更新,所以 www的計數比 $\eta $的計數大一,隨后NCO又使得 $\eta $發生變化。
周而復始,不斷進行反饋,最后使得整個環路達到穩定。
四、Gardner環路的可運行MATLAB代碼
在設計環路參數時,環路等效噪聲帶寬、角頻率等各種環路參數之間是相互制約的。有一個常用的方法是單邊環路等效噪聲帶寬 BL{B_L}BL?與符號采樣周期 Ts{T_s}Ts?的乘積值。環路正常鎖定,通常要求 BLTs?0.1{B_L}{T_s} \ll 0.1BL?Ts??0.1。
知網論文《付永明等:Gardner定時同步環路參數設計與性能分析》推導了環路濾波器系數 C1{{C_1}}C1?、 C2{{C_2}}C2?與 BLTs{B_L}{T_s}BL?Ts?之間的關系。即 C1=83BLTs{C_1} = \frac{8}{3}{B_L}{T_s}C1?=38?BL?Ts?, C2=329(BLTs)2{C_2} = \frac{{32}}{9}{\left( {{B_L}{T_s}} \right)^2}C2?=932?(BL?Ts?)2。
不妨令 BLTs=0.01{B_L}{T_s} = 0.01BL?Ts?=0.01,得到 C1=0.0267{C_1} = 0.0267C1?=0.0267, C2=0.00035556{C_2} = 0.00035556C2?=0.00035556
%%%%%%%%%%%%%%%%%%%%% Gardner算法 %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% test_gardner.m %%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% date:2020年1月21日 author:CSDN博主 功夫在詩外 %%%%%%%%%%%%%%%%%%%%%%%%%%%程序說明 %%%%正確完成Gardner算法%%%%%% 仿真環境 %軟件版本:MATLAB R2019a%E8_41_gardner程序 close all clear all N=20000; %符號數 K=4; %每個符號采4個樣點 Ns=K*N; %總的采樣點數w=[0.5,zeros(1,N-1)]; %環路濾波器輸出寄存器,初值設為0.5 n=[0.7 zeros(1,Ns-1)]; %NCO寄存器,初值設為0.9 n_temp=[n(1),zeros(1,Ns-1)]; u=[0.6,zeros(1,2*N-1)]; %NCO輸出的定時分數間隔寄存器,初值設為0.6 yI=zeros(1,2*N); %I路內插后的輸出數據 yQ=zeros(1,2*N); %Q路內插后的輸出數據 time_error=zeros(1,N); %Gardner提取的時鐘誤差寄存器i=1; %用來表示Ts的時間序號,指示n,n_temp,nco, k=1; %用來表示Ti時間序號,指示u,yI,yQ ms=1; %用來指示T的時間序號,用來指示a,b以及w strobe=zeros(1,Ns); c1=5.41*10^(-3); c2=3.82*10^(-6); %環路濾波器系數%%%%% 仿真輸入測試的PSK基帶數據 %%% bitstream=(randi(2,N,1)-1); psk2=pskmod(bitstream,2); xI=zeros(1,Ns); xQ=zeros(1,Ns); xI(1:8:8*N)=real(psk2); %8倍插值 %8倍插值,后面2倍抽取實現輸入采樣信號是輸出插值符號速率的4倍 %即4個采樣點確定一個插值 xQ(1:8:8*N)=imag(psk2);%截短后的根升余弦匹配濾波器 h1=rcosfir(0.8,[-8,8],4,1,'sqrt'); aI1=conv(xI,h1); bQ1=conv(xQ,h1); L=length(aI1);%仿真輸入數據 aI=[aI1(22:2:L),0,0]; %2倍抽取 bQ=[bQ1(22:2:L),0,0]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %下面兩行代碼是我添加,直接進行4倍插值濾波后得到仿真數據 % aI=rcosflt(real(psk2),1,4,'sqrt',0.8); % bQ=rcosflt(imag(psk2),1,4,'sqrt',0.8); %采用這種數據產生方式,從仿真波形看似不收斂,實際已收斂 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % %下面這段程序可以驗證不同定時起始點情況下的收斂情況 % %對PSK信號進行16倍上采樣 % I=rcosflt(real(psk2),1,16,'sqrt',0.8); % Q=rcosflt(imag(psk2),1,16,'sqrt',0.8); % initial=3; %不同的初始采樣點下采樣對應不同的收斂u值 % m=4; L=length(I); %4倍下采樣后,形成每個符號4個采樣點的輸入數據 % aI=[I(initial:m:L)]; % bQ=[Q(initial:m:L)];% %下面這段程序可以驗證采樣頻率不是符號速率整數倍情況下的收斂情況 % %對PSK信號進行32倍上采樣 % I=rcosflt(real(psk2),1,32,'sqrt',0.8); % Q=rcosflt(imag(psk2),1,32,'sqrt',0.8); % initial=2; %不同的初始采樣點下采樣對應不同的收斂u值 % m=9; L=floor(length(I)/m)*m; %7倍下采樣后,形成每個符號32/7個采樣點的輸入數據 % aI=[I(initial:m:L)]; % bQ=[Q(initial:m:L)];ns=length(aI)-2; while(i<ns)n_temp(i+1)=n(i)-w(ms);if(n_temp(i+1)>0)n(i+1)=n_temp(i+1);elsen(i+1)=mod(n_temp(i+1),1);%內插濾波器模塊FI1=0.5*aI(i+2)-0.5*aI(i+1)-0.5*aI(i)+0.5*aI(i-1);FI2=1.5*aI(i+1)-0.5*aI(i+2)-0.5*aI(i)-0.5*aI(i-1);FI3=aI(i);yI(k)=(FI1*u(k)+FI2)*u(k)+FI3;FQ1=0.5*bQ(i+2)-0.5*bQ(i+1)-0.5*bQ(i)+0.5*bQ(i-1);FQ2=1.5*bQ(i+1)-0.5*bQ(i+2)-0.5*bQ(i)-0.5*bQ(i-1);FQ3=bQ(i);yQ(k)=(FQ1*u(k)+FQ2)*u(k)+FQ3; strobe(k)=mod(k,2);%時鐘誤差提取模塊,采用的是Gardner算法if(strobe(k)==0)%每個數據符號計算一次時鐘誤差if(k>2)time_error(ms)=yI(k-1)*(yI(k)-yI(k-2))+yQ(k-1)*(yQ(k)-yQ(k-2));elsetime_error(ms)=(yI(k-1)*yI(k)+yQ(k-1)*yQ(k));end%環路濾波器,每個數據符號計算一次環路濾波器輸出if(ms>1)w(ms+1)=w(ms)+c1*(time_error(ms)-time_error(ms-1))+c2*time_error(ms);elsew(ms+1)=w(ms)+c1*time_error(ms)+c2*time_error(ms);endms=ms+1;endk=k+1;u(k)=n(i)/w(ms);endi=i+1; endfigure(1); subplot(311);plot(u);xlabel('運算點數');ylabel('分數間隔'); subplot(312);plot(time_error);xlabel('運算點數');ylabel('定時誤差'); subplot(313);plot(w);xlabel('運算點數');ylabel('環路濾波器輸出'); Garder算法實驗結果圖有了上面的代碼后,還有以下內容需要完成:
(1)環路正式運用前,一般會用相位階躍信號或者頻率階躍信號對其進行測試,這里忽略了這個過程;
(1)如何將Gardner算法運用到BPSK/QPSK調制解調器的仿真中,并對比實驗誤碼率與理論誤碼率的情況,這是下一步的工作。
五、參考資料
在寫Gardner環路的文章,我參考了十幾篇閱讀材料,同時能把這個環路的原理、設計及代碼實現均講得很清楚的材料,我還沒有搜到。
但是,有一些材料拼一拼,能對理解Gardner環路非常有幫助。下面將我看到Gardner環路相關的書籍、論文推薦給你。
1、Gardner的三篇論文:
(1)《Interpolation in Digital Modems-Part I: Fundamentals 》
(2)《Interpolation in Digital Modems-Part II: Implementation and Performance 》
(3)《A BPSK/QPSK Timing-Error Detector for Sampled Receivers 》
Gardner的三篇論文值得一看,后續但凡做Gardner環路的研究均會提到這位開山鼻祖。但是在上面的論文中未提到環路的結構與參數設計、如何運用到QAM接收機。
2、付永明的《Gardner 定時同步環路參數設計及性能分析》
該篇論文基于MATLAB對一階、二階環路的結構進行了介紹,并分別對一階環路、二階環路的性能進行了仿真,重點分析了環路階數和等效噪聲帶寬對系統性能的影響,得到了等效噪聲帶寬與定時同步環路性能的關系,為定時同步環路的設計提供了理論依據。
3、杜勇的《數字通信同步技術的MATLAB與FPGA實現——Xinlinx/VHDL版》
該書提供了實現Gardner算法的MATLAB代碼,并對其進行了詳細說明與實驗結果分析。本文中代碼可以說也是參考杜勇老師的書。杜勇的書,講解知識、深入淺出,讓我非常受益。
4、蔡凡的《衛星定時接收機的關鍵技術研究》
這篇論文對捕獲、載波同步、位同步的理論知識介紹非常詳細,值得認真閱讀。
5、《數字通信與系統的》的第六章PPT鏈接是:孫永軍 | 課程教學 | 西安電子科技大學個人主頁
6、斯克拉的《數字通信——基礎與應用》第二版
六、致謝
在寫這篇文章時,曾經差點好幾次想放棄,因為搞懂這些知識了真的太難了。
在這里,我特別感謝CSDN博主“功夫在詩外”,微信公眾號“通信工程師專輯”的蔡博士對我的指導。
歡迎你雙擊屏幕、點贊、收藏、轉發和分享,關注我的知乎號,也歡迎讀者朋友就相關技術問題與我交流,一起學習,共同進步。請你也別忘了把這篇文章分享給你身邊正在學習通信專業的同學們,也許能夠幫到Ta。
這是《陳老濕·通信MATLAB仿真》的第10章,期待下次更新見!
總結
以上是生活随笔為你收集整理的第10章:位同步与Gardner环路(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA-JDK环境变量配置
- 下一篇: 临床试验中的指标敏感性、特异性