理論內(nèi)容基本在上一堂課講清楚了,那么現(xiàn)在就該來看仿真程序了!通過程序來進一步的消化位定時算法!
每一次寫仿真程序都是一次完善的過程,仿真程序?qū)懙脑俸?,它也會出現(xiàn)或多或少的問題,同時還要必須不斷地向?qū)嶋H的情況去靠攏,這才是寫程序最終的目的仿真,這是基礎,最終能夠和實際產(chǎn)品應用才是目的,所以我們在學仿真的時候,一定要清楚程序和實際產(chǎn)品最終還有多大的距離。因此,每次寫程序都是一個長時間的不斷修訂的過程!大家如果走上算法研究的道路,務必記住:不斷的完善仿真環(huán)境是一個漫長的過程,也是不斷深化自己理解的過程!
先看看網(wǎng)絡上的一段程序!
close all;clear all;
%%************** 程序主體 **************%%
N=20000; % 符號數(shù)
K=4; % 每個符號采4個樣點
Ns=K*N; % 總的采樣點數(shù)
w=[0.5,zeros(1,N-1)];
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輸出的定時分數(shù)間隔寄存器,初值設為0.6
yI=zeros(1,2*N);
%I路內(nèi)插后的輸出數(shù)據(jù)
yQ=zeros(1,2*N);
%Q路內(nèi)插后的輸出數(shù)據(jù)
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);
% 環(huán)路濾波器系數(shù)
c1=5.41*10^(-3);
c2=3.82*10^(-6);
%%% %%%PSK基帶數(shù)據(jù)%%% %%%
bitstream=(randi(2,N,1)-1);
psk2=pskmod(bitstream,2);
xI=zeros(1,Ns);
xQ=zeros(1,Ns);
xI(18*N) = real(psk2);
%8倍插值,后面2倍抽取實現(xiàn)輸入采樣信號是輸出插值符號速率的4倍
%即4個采樣點確定一個插值
xQ(18*N) = imag(psk2);
% 截短后的根升余弦匹配濾波器
h1 = rcosfir(0.8,[-8,8],4,1,'sqrt');
aI1 = conv(xI,h1);
bQ1 = conv(xQ,h1);
L = length(aI1);
%仿真輸入數(shù)據(jù)
aI = [aI1(22L),0,0]; %2倍抽取
bQ = [bQ1(22L),0,0];
%%%%%%% Gardner算法
ns=length(aI)-2;
while(i
n_temp(i+1) = n(i)-w(ms);
if(n_temp(i+1)>0)
n(i+1)=n_temp(i+1);
else
n(i+1)=mod(n_temp(i+1),1);
% 內(nèi)插濾波器
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);
% 時鐘誤差提取模塊
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));
else
time_error(ms) = (yI(k-1)*yI(k)+yQ(k-1)*yQ(k));
end
%環(huán)路濾波器,每個數(shù)據(jù)符號計算一次環(huán)路濾波器輸出
if(ms>1)
w(ms+1)=w(ms)+c1*(time_error(ms)-time_error(ms-1))+c2*time_error(ms);
else
w(ms+1)=w(ms)+c1*time_error(ms)+c2*time_error(ms);
end
ms=ms+1;
end
k=k+1;
u(k)=n(i)/w(ms);
end
i=i+1;
編輯:jq
-
濾波器
+關注
關注
161文章
7870瀏覽量
179048 -
數(shù)據(jù)
+關注
關注
8文章
7167瀏覽量
89691 -
基帶
+關注
關注
4文章
159瀏覽量
30977 -
PSK
+關注
關注
1文章
27瀏覽量
21032 -
仿真程序
+關注
關注
0文章
36瀏覽量
10164
原文標題:大學畢業(yè)設計一席談之二十七 位同步環(huán)路的matlab仿真(2)
文章出處:【微信號:haierhope,微信公眾號:HOPE開放創(chuàng)新平臺】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
現(xiàn)代永磁同步電機控制原理及MATLAB仿真(附完整版仿真模型)
MATLAB教程_MATLAB仿真_MATLAB軟件下載
![<b class='flag-5'>MATLAB</b>教程_<b class='flag-5'>MATLAB</b><b class='flag-5'>仿真</b>_<b class='flag-5'>MATLAB</b>軟件下載](https://file1.elecfans.com//web2/M00/A6/56/wKgZomUMPPqAWC8hAAAye_1aJxw093.jpg)
高階QAM定時同步算法的MATLAB仿真及FPGA實現(xiàn)
現(xiàn)代永磁同步電機控制原理及MATLAB仿真
降抖動的位同步環(huán)路設計(GARDNER)
![降抖動的<b class='flag-5'>位</b><b class='flag-5'>同步</b><b class='flag-5'>環(huán)路</b>設計(GARDNER)](https://file.elecfans.com/web2/M00/49/42/poYBAGKhwJaAUgorAAAQWdKcpqk037.jpg)
基于Matlab-Simulink的永磁同步電機(PMSM)矢量控制仿真
基于MATLAB的電機仿真精華50例包括同步異步直流電機的詳細介紹
現(xiàn)代永磁同步電機控制原理及MATLAB仿真電子教材的仿真模型免費下載
![現(xiàn)代永磁<b class='flag-5'>同步</b>電機控制原理及<b class='flag-5'>MATLAB</b><b class='flag-5'>仿真</b>電子教材的<b class='flag-5'>仿真</b>模型免費下載](https://file.elecfans.com/web1/M00/68/EC/pIYBAFvNc72ARO1lAADsyxpxcbc003.png)
現(xiàn)代永磁同步電機控制原理及MATLAB仿真源碼/模型
大學畢業(yè)設計一席談之二十七 位同步環(huán)路的matlab仿真(7)更正錯誤和加入頻偏
并網(wǎng)型虛擬同步發(fā)電機控制Matlab/simulink仿真說明
![并網(wǎng)型虛擬<b class='flag-5'>同步</b>發(fā)電機控制<b class='flag-5'>Matlab</b>/simulink<b class='flag-5'>仿真</b>說明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論