返回信息流%costas.m程序
%作用: costas环仿真
%作者: Duyong
%编写日期:2014.11.30
clc;
clear all;
fs=32e6; %采样频率
fc=6e6; %载波频率
df=2000; %初始频偏
fi=fc+df; %输入信号载波频率
num=0.5e6; %数据长度
SNR=30; %输入数据信噪比(dB)
ts=1/fs;
%本地VCO的增益,也相当于最大捕获频偏
%(参见张厥盛等.锁相技术.西安电子科技大学出版社,1998: P11)
K0=10e3;
%环路滤波器系数
%(参见杜勇.数字调制解调技术的MATLAB与FPGA实现.电子工业出版社,2014:P361)
c1=2^(-5);
c2=2^(-11);
%环路输入信号为单载波信号,信噪比为SNR(dB)
din=sin(2*pi*fi*(0:num-1)*ts+pi); ********************************
datain=awgn(din,SNR);
%设计IIR低通滤波器
N=3; %滤波器阶数
R=60; %阻带衰减(dB)
Wn=9e6; %截止频率
[lpf_b,lpf_a]=cheby2(N,R,Wn*2/fs);
%估计滤波器的增益(求取零点系数绝对值之和)
%%%%%%%%%2015.7.18修改
%glpf=sum(abs(lpf_b))
glpf=lpf_b(1)/lpf_a(1);
%%%%%%%%%%%
%本地载波输出信号初值
o_sin=sin(2*pi*fc*(0:num-1)*ts);
o_cos=cos(2*pi*fc*(0:num-1)*ts);
%乘法运算输出信号初值
mult_i=zeros(1,num);
mult_q=zeros(1,num);
%鉴相器输出信号初值
pd=zeros(1,num);
%本地载波频率初值
fo=ones(1,num)*fc;
%开始costas载波同步环路处理
%对costas环路使用到的变量初始化
len=0; %低通滤波器输出数据长度
dfreq=0; %环路滤波器输出
temp=0; %环路滤波器中间变量
df=0; %每次需要更新的VCO输入电压
thera=0; %本地VCO输出信号的相位
n=2; %本地VCO频率更新的次数
lvco=20; %本地VCO频率更新的周期
m=0; %每个VCO频率更新周期内的计数值
for i=(lvco+1):(num);
%乘法运算
mult_i(i)=datain(i).*o_sin(i);
mult_q(i)=datain(i).*o_cos(i);
%低通滤波
lpf_i=filter(lpf_b,lpf_a,mult_i(i-N-2:i));
lpf_q=filter(lpf_b,lpf_a,mult_q(i-N-2:i));
%鉴相乘法运算
len=length(lpf_i);
%如果采用同相正交支路相乘运算获取鉴相值
%为使滤波器增益为1,需对滤波后的数据进行增益处理
%pd(i)=1/glpf*lpf_i(len)*lpf_q(len);
%如果采用反正切运算求取鉴相值
%则不需要进行增益处理
pd(i)=atan(lpf_q(len)/lpf_i(len));
%环路滤波器
dfreq = c1*pd(i)+temp;
temp = temp+c2*pd(i);
%每lvco个采样点更新一次频率
if(mod(i,lvco)==0)
df=dfreq;
%计算上次更新时的本地载波相位
thera(n)=2*pi*lvco*ts*fo(i-1)+thera(n-1);
n=n+1;
end
%更新本地载波频率及输出信号
fo(i)=fc+K0*df;
m=mod(i,lvco);
%要确保本地VCO输出相位连续的载波信号
o_sin(i+1)=sin(2*pi*fo(i)*m*ts+thera(n-1));
o_cos(i+1)=cos(2*pi*fo(i)*m*ts+thera(n-1));
end
%绘制输入信号载波及本地VCO输入信号频率
t=(0:num-1)*ts*1000; %时间轴(ms)
tfi=fi*ones(1,num); %输入信号频率
plot(t,tfi/1e6,'-.',t,fo/1e6,'-');
legend('输入信号载波频率','本地VCO信号频率');
xlabel('时间(ms)');
ylabel('频率(MHz)');
grid on;
程序看看反馈部分就行了。
我想知道除频偏外输入信号和vco输出的相位差对反馈有什么影响?
我现在理解的是假设没有固定相位差,如果Wi >W0,会有对应的正的相位,这样就知道要增大W0, 如果加了输入信号和vco输出的固有相位差,鉴相输出在 -Pi,PI都有可能,这样就不知道要增大还是减小vco频率了。
但是改了程序的初始相位差后(***标记处),环路也能锁定,这个如何理解呢
这是一条镜像帖。来源:北邮人论坛 / communications / #26409同步于 2016/3/23
Communications机器人发帖
小白问个锁相环的基础问题求大神
Vayne
2016/3/23镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。