📄 carrier_syn.m
字号:
clear;
Rb=5000000/31;%信息数据速率
lc=31;%扩频码的周期。扩频增益13dB
Rc=Rb*lc;%码元速率
L=1;%每个码元里sin信号的周期个数
fc=Rc*L; %载波频率
Q=8;%每个码元中采样个数
fs=Rc*Q;%采样频率
ts=1/fs;%每个取样点的时间间隔
data_number=20;%信息数据的个数
sample_number=data_number*lc*Q;%采样得到的总的数据个数
t=0:ts:(sample_number-1)*ts;
fo=fc;%经过带通采样后的中心频率
interference_band_init=fo-100000;%第一个干扰的起始位置
interference_band_final=fo+100000;%第一个干扰的终止位置
%%取均匀分布的随机数据100个,即信息数据
temp=rand(1,data_number);
for i=1:data_number
if (temp(i)<0.5)
data1(i)=-1;
data((i-1)*lc+1:i*lc)=-1;
else
data1(i)=1;
data((i-1)*lc+1:i*lc)=1;
end
end
%%生成周期为31位的m序列
register_current_value=[-1,-1,-1,-1,1];%5级移位寄存器
feed_position=[1,4];%反馈抽头为1和4
L=length(register_current_value);
for i=1:data_number*lc
feed_value=0;
for j=1:length(feed_position)
feed_value=feed_value+register_current_value(feed_position(j));%计算反馈值
end
if feed_value==0
register_new_value(L)=-1;
else
register_new_value(L)=1;
end
register_new_value(1:L-1)=register_current_value(2:L);
register_current_value=register_new_value;
pn(i)=register_current_value(1);
end
% figure
% stem(pn)
%%信息数据和PN码相乘
sig=data.*1;
%%已调信号trans_sig
for i=1:data_number*lc
resig((i-1)*Q+1:i*Q)=sig(i);
end
a=1;%载波的幅度值
input_sig=a*resig.*cos(2*pi*(fc)*t);%调制
figure;
plot(input_sig);
%%载波同步的初始值
Wn=0.5*fc/fs;%截止频率
ic=0.707;
k=ic*fc;
step=5;%滤波器阶数
[B,A1]= butter(step,Wn,'low');%巴特沃思低通滤波器
A=A1(2:step+1);%a0为1,故后面不需要相乘
data_i_A=zeros(1,length(A));
data_i_B=zeros(1,length(B));
data_q_A=zeros(1,length(A));
data_q_B=zeros(1,length(B));
x_i=0;
x_q=0;
x_new=0;
y=0;
angle_value=0;%压控振荡器输出的初始相位
%%载波同步的恢复
%科斯塔斯环
for i=1:length(input_sig)
output_sig(i)=sin(2*pi*(fc-2000)*t(i)+angle_value);
%分成两路,一路乘以压控振荡器输出的sin,另一路乘以压控振荡器输出的cos
e_i=input_sig(i)*cos(2*pi*(fc-2000)*t(i)+angle_value);%同相分量
e_q=input_sig(i)*sin(2*pi*(fc-2000)*t(i)+angle_value);%正交分量
nnn1(i)=e_i;
nnn2(i)=e_q;
%以下是经过低通滤波器,滤除高频分量
data_i_B(1:length(B)-1)=data_i_B(2:length(B));%调整系数
data_i_A(1:length(A)-1)=data_i_A(2:length(A));
data_i_B(length(B))=e_i;
data_i_A(length(A))=x_i;
x_i=sum(data_i_B(length(B):-1:1).*B)-sum(data_i_A(length(A):-1:1).*A);%差分方程,实现低通滤波
nn1(i)=x_i;
data_q_B(1:length(B)-1)=data_q_B(2:length(B));%调整系数
data_q_A(1:length(A)-1)=data_q_A(2:length(A));
data_q_B(length(B))=e_q;
data_q_A(length(A))=x_q;
x_q=sum(data_q_B(length(B):-1:1).*B)-sum(data_q_A(length(A):-1:1).*A);%差分方程,实现低通滤波
nn2(i)=x_q;
%到此,完成滤波
x_old=x_new;
x_new=x_i*x_q;%两路信号相乘,完成鉴相,得到相位差的正弦值x_new
y=ts/2*(x_new+x_old)+y;%通过环路滤波器,得到控制信号y
%压控振荡器
angle_value=y*k;
jieguo(i)=angle_value+pi/2;
end
figure
plot(jieguo)
figure
plot(input_sig)
figure
plot(output_sig)
figure
plot(1:length(t),input_sig,'r',1:length(t),output_sig,'b',1:length(t),jieguo,'g')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -