Digital Phase Locked Loop
Digital Phase Locked Loop
Digital Phase Locked Loop
1. Introduction
A Phase Locked Loop is a closed-loop control system that is used for the purpose of
synchronization of the phase and frequency with that of an incoming signal. There are
basically three components in a PLL; the Phase and Frequency detector (PFD), the loop filter
and the Voltage Controlled Oscillator (VCO). The VCO is the heart of any PLL. The
mechanism by which this VCO operates decides the type of the PLL circuit being used.
2. Description of DPLL
The basic block of the ADPLL consists of a Digital Phase detector, Digital controlled
oscillator, Digital loop filter [1]. There three main parts of the DPLL same as that of the PLL
but they are designed and constructed differently for the fact the input signal dealt by the
different system, and FPGA is digital.
3. Implemented DPLL
An exclusive-OR gate as a phase detector [17]. K-counter as a digital filter and an incrementdecrement (I/D) counter with a divide-by-N counter as a DCO.
and lock range = 2 = Mfo/(KN) . There exists a phase error between the input and the output
signals even at locking, i.e. when fout = fin, which is given by
e = KN(fin fo)/(2Mfo)
pd.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity xordpll is
port(a,b:in stdlogic;c:out std_logic);
end entity;
architecture beh of xordpll is
begin
c<=a xor b;
end architecture;
kloopcounter.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity kcounter is
Port ( kclk,up_dn : in
STD_LOGIC;
-- input clock
end Behavioral;
dco.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.math_real.ALL;
entity dco is
port ( dec,inc: in std_logic;
CLKout:out std_logic);
end dco;
architecture arch of dco is
--signal counter: integer:=0;
signal temp : std_logic:= '1';
begin
process
variable N : integer := 5;
variable T : time := 30 ns;
variable control : std_logic_vector(1 downto 0);
begin
control:=dec&inc;
if(control="10") then
T:=T+50 ns;
for i in 0 to N loop
temp<=not temp;
wait for T;
temp<=not temp;
wait for T;
end loop;
--end if;
elsif(control="01") then
T:=T-50 ns;
for i in 0 to N loop
temp<=not temp;
wait for T;
temp<=not temp;
wait for T;
--N:=N-2;
end loop;
elsif(control="00") then
T:=T;
for i in 0 to N loop
temp<=not temp;
wait for T;
temp<=not temp;
wait for T;
--N:=N-2;
end loop;
elsif(control="11") then
T:=T;
for i in 0 to N loop
temp<=not temp;
wait for T;
temp<=not temp;
wait for T;
--N:=N-2;
end loop;
end if;
clkout<=temp;
end process;
end arch;
5. References
1. Digital Phase Lock Loops, Architectures and Applications by SALEH R. AL-ARAJI
ZAHIR M. HUSSAIN and MAHMOUD A. AL-QUTAYRI, Springer publications.
2. S. Walters and T. Troudet, Digital Phase-Locked Loop with Jitter Bounded, IEEE
Transactions on Circuits and Systems, Vol. 36, No. 7, July 1989.