<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: First order digital PLL for tracking constant phase offset</title>
	<atom:link href="http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/</link>
	<description>Signal Processing for Communication</description>
	<lastBuildDate>Fri, 10 Feb 2012 01:03:15 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: tien</title>
		<link>http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/#comment-29025</link>
		<dc:creator>tien</dc:creator>
		<pubDate>Tue, 11 May 2010 06:00:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/#comment-29025</guid>
		<description>thanks</description>
		<content:encoded><![CDATA[<p>thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Krishna Sankar</title>
		<link>http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/#comment-24244</link>
		<dc:creator>Krishna Sankar</dc:creator>
		<pubDate>Sun, 28 Mar 2010 09:27:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/#comment-24244</guid>
		<description>@venkat: Does your transmit signal contain phase information? Did the code work in no noise case?</description>
		<content:encoded><![CDATA[<p>@venkat: Does your transmit signal contain phase information? Did the code work in no noise case?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: venkat</title>
		<link>http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/#comment-23550</link>
		<dc:creator>venkat</dc:creator>
		<pubDate>Thu, 18 Mar 2010 06:39:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/#comment-23550</guid>
		<description>Hello Krishna,
I have referred your example on first order PLL for constant phase tracking.It was very useful.
http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/
But in the example a complex carrier is being used at the transmitter and receiver.Practically , when I use a cosine carrier at Tx. and cosine,sine carriers at Rx.(as in costas loop) , can the same loop filter be used ?
I have tried to simulate the above situation in the following script but was unable to estimate the phase. Please help me……….

% MODULATION

clc;
clear all;
close all;

[b,a] = butter(1,0.0156,’low’); % low pass filter to remove
nterm_i = 0; % double frequency component
dterm_i = 0;
nterm_q = 0;
dterm_q = 0;

n_sym = 10; % number of symbols
fs = 12.8e6;
t = 0:1/fs:100e-6 – 1/fs;
fc = fs/8; % carrier freuency
theta = 70*pi/180; % phase offset
r = 0.1e6; % symbol rate
oversamp = fs/r;
sym = randint(n_sym,1)*2-1;
in = 0;
for ind=1:1:n_sym
tmp(1:oversamp) = sym(ind);
in = [in tmp];
end
tx = in(2:end);
tx_carrier = cos(2*pi*fc*t + theta);

tx_out = tx.*tx_carrier;

% first order pll
alpha = 0.05;
phiHat = 0;

for ii = 1:1:length(t)

% Remove carrier
rx_i(ii) = tx_out(ii)*cos(2*pi*fc*t(ii) + phiHat);
rx_q(ii) = tx_out(ii)*sin(2*pi*fc*t(ii) + phiHat);

% low-pass IIR filter for I-channel
iir_in_i(ii) = rx_i(ii);
iir_out_i(ii) = b(1)*iir_in_i(ii)+ nterm_i + dterm_i;
nterm_i = b(2)*iir_in_i(ii);
dterm_i = a(2)*iir_out_i(ii);

% low-pass IIR filter for Q-channel
iir_in_q(ii) = rx_q(ii);
iir_out_q(ii) = b(1)*iir_in_q(ii)+ nterm_q + dterm_q;
nterm_q = b(2)*iir_in_q(ii);
dterm_q = a(2)*iir_out_q(ii);

% demodulating circuit
xHat = 2*(iir_out_i(ii)&gt;0) -1 ; % symbol estimate
phiHatT =angle(conj(xHat)*rx_i(ii)); % phase error estimate angle(iir_out_i(ii) + i*iir_out_q(ii));%

% accumulation
phiHat = alpha*phiHatT + phiHat; % phase accumulator output
% dumping variables for plot
phiHatDump(ii) = phiHat;
end

plot(phiHatDump*180/pi,’-&#039;);</description>
		<content:encoded><![CDATA[<p>Hello Krishna,<br />
I have referred your example on first order PLL for constant phase tracking.It was very useful.<br />
<a href="http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/" rel="nofollow">http://www.dsplog.com/2007/06/10/first-order-digital-pll-for-tracking-constant-phase-offset/</a><br />
But in the example a complex carrier is being used at the transmitter and receiver.Practically , when I use a cosine carrier at Tx. and cosine,sine carriers at Rx.(as in costas loop) , can the same loop filter be used ?<br />
I have tried to simulate the above situation in the following script but was unable to estimate the phase. Please help me……….</p>
<p>% MODULATION</p>
<p>clc;<br />
clear all;<br />
close all;</p>
<p>[b,a] = butter(1,0.0156,’low’); % low pass filter to remove<br />
nterm_i = 0; % double frequency component<br />
dterm_i = 0;<br />
nterm_q = 0;<br />
dterm_q = 0;</p>
<p>n_sym = 10; % number of symbols<br />
fs = 12.8e6;<br />
t = 0:1/fs:100e-6 – 1/fs;<br />
fc = fs/8; % carrier freuency<br />
theta = 70*pi/180; % phase offset<br />
r = 0.1e6; % symbol rate<br />
oversamp = fs/r;<br />
sym = randint(n_sym,1)*2-1;<br />
in = 0;<br />
for ind=1:1:n_sym<br />
tmp(1:oversamp) = sym(ind);<br />
in = [in tmp];<br />
end<br />
tx = in(2:end);<br />
tx_carrier = cos(2*pi*fc*t + theta);</p>
<p>tx_out = tx.*tx_carrier;</p>
<p>% first order pll<br />
alpha = 0.05;<br />
phiHat = 0;</p>
<p>for ii = 1:1:length(t)</p>
<p>% Remove carrier<br />
rx_i(ii) = tx_out(ii)*cos(2*pi*fc*t(ii) + phiHat);<br />
rx_q(ii) = tx_out(ii)*sin(2*pi*fc*t(ii) + phiHat);</p>
<p>% low-pass IIR filter for I-channel<br />
iir_in_i(ii) = rx_i(ii);<br />
iir_out_i(ii) = b(1)*iir_in_i(ii)+ nterm_i + dterm_i;<br />
nterm_i = b(2)*iir_in_i(ii);<br />
dterm_i = a(2)*iir_out_i(ii);</p>
<p>% low-pass IIR filter for Q-channel<br />
iir_in_q(ii) = rx_q(ii);<br />
iir_out_q(ii) = b(1)*iir_in_q(ii)+ nterm_q + dterm_q;<br />
nterm_q = b(2)*iir_in_q(ii);<br />
dterm_q = a(2)*iir_out_q(ii);</p>
<p>% demodulating circuit<br />
xHat = 2*(iir_out_i(ii)&gt;0) -1 ; % symbol estimate<br />
phiHatT =angle(conj(xHat)*rx_i(ii)); % phase error estimate angle(iir_out_i(ii) + i*iir_out_q(ii));%</p>
<p>% accumulation<br />
phiHat = alpha*phiHatT + phiHat; % phase accumulator output<br />
% dumping variables for plot<br />
phiHatDump(ii) = phiHat;<br />
end</p>
<p>plot(phiHatDump*180/pi,’-&#8217;);</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.dsplog.com @ 2012-02-11 01:21:58 -->
