日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

插值法位同步 gardner算法

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 插值法位同步 gardner算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插值算法,其作用在于根據輸入的信號,通過插值獲得最佳時刻(插值時刻有數控振蕩器控制產生)的采樣值信號。
定時誤差檢測器在于檢測本地時鐘采樣時刻與最佳采樣時刻之間的相位差,得到一個最優的采樣時刻。

%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('環路濾波器輸出');

利用四個點

總結

以上是生活随笔為你收集整理的插值法位同步 gardner算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。