⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydpll.m

📁 本人写的数字锁相环
💻 M
字号:
%数字锁相环,跟踪输入方波信号的频率和相位
%by fyoung
samp=zeros(1,10000);                    %输入信号
samp=rand(1,10000);                     %初始为随机信号
DCO_cnt=1;                              %生成参考频率的计数器
DCO_Prd=100;                            %分频:1/100
DCO_Prd_2=50;
syn_out=zeros(1,10000);                 %存储本地参考信号
DCO_out=0;                              %当前本地参考信号
diff_save=zeros(1,10000);               %存储异或门输出信号
cnt_g=0;                                %计数器g1的计数

for i=1:10000                           %模拟输入信号
    if(samp(i)>0.5) samp(i)=1;
    else
        samp(i)=0;
    end
end
for i=0:3
    samp(2*i*1000+1:(2*i+1)*1000-20)=1;
    samp((2*i+1)*1000+10:(2*i+2)*1000)=0;
end
samp(2500:2520)=0;
for i=1:14
    samp(7000+2*i*100+1:7000+(2*i+1)*100-10)=1;
    samp(7000+(2*i+1)*100+10:7000+(2*i+2)*100)=0;
end
for i=2:10000                           %以下为锁相环程序
    if DCO_cnt2<DCO_Prd_2               %分频输出,为1/100的分频器
         DCO_out=1;
    else
        DCO_out=0;
    end    
    if (bitxor(DCO_out,samp(i))==1)        %异或操作
        DCO_Opr_Flag=1;
    else
        DCO_Opr_Flag=0;
    end    
    if DCO_Opr_Flag==1                  %f1:频率高
             DCO_cnt2=DCO_cnt2+1;
    elseif DCO_Opr_Flag==0
         cnt_f=cnt_f+1;
         if(cnt_f>100)                  %g1:频率只有f1的1/100
             cnt_f=0;
             DCO_cnt2=DCO_cnt2+1;           
         end
    end
    if(DCO_cnt2>=DCO_Prd) DCO_cnt2=0;end
    syn_out(i)=DCO_out;
    diff_save(i)=DCO_Opr_Flag;
end
figure,plot(samp);hold on;plot(syn_out-1.1,'g');plot(diff_save+1.1,'r')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -