% Simulation of First order Pll with Additive noise
% Written by: R. Thamvichai (copyright 2010 by R. Thamvichai)
% Date of latest revision: March 21, 2010
clc; clear; close all
npts = 4000; % default npts
fs = 2000; % default fs
twopi=2*pi; %define constants used below
twofs=2*fs;
G = 200; %loop gain
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% Adding equivalent NOISE, n' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%with an assumptions that Ac (input signal amplitude) = 1
%Specify sigma of n to add noise n'
SNRi_dB = -5; %input SNR = (Ac^2/2)/sigma_n^2
SNRi = 10^(SNRi_dB/10);
sigma = 1/sqrt(2*SNRi); % sigma_n/^2 = sigma_n^2/(Ac^2)
% = sigma_n^2 if Ac = 1
nd=sigma*randn(1,npts);
nq=sigma*randn(1,npts);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% LINEAR %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
w2c=0; phivco=0; %in radians
% beginning of simulation loop LINEAR
for i=1:npts
s1 = -phivco;
s2 = s1; %LINEAR
n_hat = -nd(i)*sin(phivco)+nq(i)*cos(phivco); %add noise
s2a = s2 + n_hat;
s3 = G*s2a;
w1c=s3+w2c; %trapezoidal integration
w2c=s3+w1c;
phivco=w1c/twofs;
phierror(i)= s1;
phivco_vec(i) = phivco;
end
%end of simulation loop
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% NON_LINEAR %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
w2c=0; phivco=0; %in radians
% beginning of simulation loop NON_LINEAR
for i=1:npts
s1 = -phivco;
s2 = sin(s1); %NON_LINEAR
n_hat = -nd(i)*sin(phivco)+nq(i)*cos(phivco); %add noise
s2a = s2 + n_hat;
s3=G*s2a;
w1c=s3+w2c; %trapezoidal integration
w2c=s3+w1c;
phivco=w1c/twofs;
nphierror(i)= s1; %fvco1(i)= s3/twopi;
nphivco_vec(i) = phivco;
end
%end of simulation loop
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%Finding Parameters (from Linear analysis) %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%find it from the steady-state part of data
Ns = 500;
%sigma2_psi (phase_error) = sigma2_theta %since input = 0
sigma2_theta = std(phierror(Ns:end))^2;
%Finding SNRL
SNRL = 1/(2*sigma2_theta);
disp(['SNRL = ', num2str(SNRL)])
disp(' ')
%SNR_ratio = BW/BL since fs = 2000 = 2*BW (Sampling Theorem)
SNR_ratio = SNRL/SNRi;
%Loop Bandwidth (BL)
disp('Loop Bandwidth (BL) from')
disp([' Simulation = ', num2str((fs/2)/SNR_ratio)])
disp([' Theory = ', num2str(G/4)])
disp(' ')
%Find variance
disp('Variance from')
disp([' Linear = ', num2str(sigma2_theta)])
disp([' Nonlinear = ', num2str(std(nphierror(Ns:end))^2)])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%% PLOT (steady-state) %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% from LINEAR %%%%%%%%%%%%%%%%%%%
[Ni, xi] = hist(phierror(Ns:end),20);
W = xi(2)-xi(1);
N=sum(Ni);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% from NONLINEAR %%%%%%%%%%%%%%%%
[nNi, nxi] = hist(nphierror(Ns:end),20);
nW = nxi(2)-nxi(1);
nN=sum(nNi);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% from Theoretical Analysis%%%%%%
psi = xi;
rho = 1/sigma2_theta;
p_psi = exp(rho*cos(psi))/(2*pi*besseli(0,rho));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
bar(nxi/pi, nNi/(nW*N),'g');hold on; %first graph
%plot(xi/pi, Ni/(W*N),'k*-');hold on; %second graph
%plot(nxi/pi, nNi/(nW*nN),'b*-');hold on; %third graph
plot(psi/pi, p_psi,'ro-') %fourth graph
xlabel('Phase error/ Pi')
ylabel('Prob. of Phase Error')
title('Probability Density Function')
legend('Histogram', 'Th. PDF')
%legend('Histogram', 'Linear','Nonlinear','Th. PDF')
hold off;
%end of script file
PLL.rar_PLL_Sin Pll_pll matlab_sin code
版权申诉
2 浏览量
2022-09-19
21:55:44
上传
评论
收藏 2KB RAR 举报
邓凌佳
- 粉丝: 65
- 资源: 1万+
最新资源
- 基于python开发使用深度学习去预测股票后续的价格+源码+文档(毕业设计&课程设计&项目开发)
- flowable-designer-5.22.0.zip
- threadmanager.cpp
- 腾讯云小程序 - 一站式开发与部署平台
- 基于JSP+Java+Servlet采用MVC模式开发的购物网站+源码(毕业设计&课程设计&项目开发)
- fastgestures安装包,模拟mac的触控板收拾,两指代表右击, 三指拖拽
- 基于组态王的升降式横移立体车库控制系统+源码(毕业设计&课程设计&项目开发)
- 基于python+Django和协同过滤算法的电影推荐系统+源码(毕业设计&课程设计&项目开发)
- 环境配置 vscode+jupyter
- 项目全部代码,还包含使用到的图片
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0