Dijital faz kilitlenen döngüler (PLLs) VHDL'de, dijital sistemlerde frekans sentez ve saat yönetimi üzerinde çalışan mühendisler için temel bir beceridir. PLLs, sinyalleri senkronize etmeye ve stabil frekanslar üretmeye yardımcı olan temel bileşenlerdir, onları kablosuz transiversiyonlar, veri dönüştürücüler ve dijital işlemciler gibi modern elektronik cihazlarda hayati öneme sahiptir.Bu makale, dijital PLLs (DPLL) tasarımınızı kapsayacak şekilde genişletecektir.
Dijital PLLss'leri Anlamak
Bir dijital PLL, üretilen bir çıktı sinyalinin aşamasıyla ilgili bir giriş referans sinyalinin aşamasını karşılaştıran bir geri bildirim sistemidir.Bu işlem, çıktı sinyalinin frekansına veya frekans sürüklenmesinde bile etkili bir şekilde ayarlandığında, dijital donanımda sürekli olarak kontrol edilen bir ses kartın frekansına indirgenmesidir, çünkü VH-state hatasına kadar tamamen tercih edilir.Bu işlem çıktı sinyalinin kopyalanması ve çıktısı ile senkronize edilmesi sağlanır.
Bir DPLL'nin temel mimarisi dört ana bloktan oluşur: bir faz detektörü, bir döngü filtresi, bir NCO ve geri bildirim yolu. Aşama dedektörleri referans aşaması ve geri bildirim aşaması arasındaki farkı hesaplar.Bu hata sinyali, genellikle bu blokların etkileşiminin stabil ve duyarlı bir DPLL'yi kurmak için gerekli olduğunu anlamaktır.
Dijital PLL'nin Anahtarları
VHDL uygulamasına girmeden önce, her bileşenin işlevini ve ticari sürümlerini anlamak önemlidir.
Faz Proleksiyon
Aşama dedektörleri (PD) referans ve geri bildirim sinyalleri arasındaki aşama farkı için bir hata sinyali oluşturur. Dijital tasarımlarda en yaygın uygulamalar XOR kapısı aşaması dedektörleri ve faz-fret (PFD)'dir.
- [FONT=0)XOR Faz Dektörü:[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜSÜDÜDÜDÜSÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ
- [FONT=0)Phase-Frequency dektör (PFD):[D: 1) A PFD, hem faz hem de frekans farklılıkları tespit etmek için daha geniş bir lineer (±2}}) kullanır ve frekanslar farklı olduğunda bile kilitleyebilir.
Link Filtre
Cömert filtre, mevcut hataya dayalı olarak doğru bir düzeltme sağlarken, integral terimin sabit devlet aşamasını ortadan kaldırmak için zaman içinde hata yapar. bir dijital PLL'de, döngü filtre genellikle dijital bir PI filtresidir.
Sayısal olarak Oscillator (NCO) Kontrol Edildi
NCO, her saat döngüsünde bir frekans kontrol kelimesini (FCW) içeren bir faz akışı oluşturur.Alantılı bir dalga veya sinetür dalgası temsil eder - bir göz ardı edilir.Sesans tablosunda (LUT) o mağazalardan veya eşten değerler.Normal olarak, saat sentez için, NCO sadece aşamadan en önemli kısmını çıkarmak için aşamaya kadar sorumlu olabilir.
Geri bildirim
Geri bildirim yolu basittir: NCO çıktısını bazı tasarımlarda, bir frekans bölmesi PLL'nin referansın birden çok (örneğin, tamsa-N sentez) frekanslarını oluşturmasına izin vermek için geri yüklemesi mümkündür.
VHDL'de Dijital PLL'yi Tasarlamak
VHDL'de bir dijital PLL'yi uygulamak, her bileşeni ayrı bir varlık olarak kodlamayı ve onları hiyerarşik olarak bağlantıya sokmayı içerir. Aşağıdaki alt bölümler VHDL tasarım örneklerini her blok için sunar, sentezlenebilir yapılar ve en iyi uygulamalar üzerine vurgula.
Faz Proleksiyon Uygulama
Bir PFD uygulayacağız, çünkü tasarım metastabilite sorunları önlemek için tamamen senkronize edilir. PFD, bir ve sıfır kapı ve / çıkış çıkış noktaları. basit bir PFD için VHDL kodu aşağıda gösterilmiştir.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity pfd is
port (
clk_ref : in std_logic;
clk_fb : in std_logic;
reset : in std_logic;
up : out std_logic;
down : out std_logic
);
end pfd;
architecture rtl of pfd is
signal q_ref, q_fb : std_logic;
begin
process(clk_ref, reset)
begin
if reset = '1' then
q_ref <= '0';
elsif rising_edge(clk_ref) then
q_ref <= '1';
end if;
end process;
process(clk_fb, reset)
begin
if reset = '1' then
q_fb <= '0';
elsif rising_edge(clk_fb) then
q_fb <= '1';
end if;
end process;
up <= q_ref and not q_fb;
down <= q_fb and not q_ref;
reset <= q_ref and q_fb; -- internal reset for both flip-flops
end rtl;
Bu uygulamada, [[Dönder: 1) sinyal bir kombinasyonel ve her iki yüzyüzlülük bir aradan sonra, her iki kenardan sonra, demet sıfırları hızla sıfırlar.Bu PFD çıktıları a nabzıvddddddzdzdzdz:2.
Loop Filter Uygulama Uygulama Uygulama
Bir dijital PI filtre, bir taşıyıcı ve paralel multipliers kullanarak uygulanabilir. Basitlik için, PFD çıktılarının imzalanmış bir hata değerine dönüştürüleceğini varsayıyoruz. Filtre katları 0.7 ve kilit zaman gereksinimi karşılayan doğal bir frekansı sağlamak için seçilir.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity loop_filter is
port (
clk : in std_logic;
rst : in std_logic;
phase_err: in signed(15 downto 0);
freq_ctrl: out signed(15 downto 0)
);
end loop_filter;
architecture rtl of loop_filter is
-- Coefficients: Kp = 0.25, Ki = 0.03125 (example values)
constant Kp : signed(15 downto 0) := to_signed(8192, 16); -- 0.25 in Q14
constant Ki : signed(15 downto 0) := to_signed(1024, 16); -- 0.03125 in Q14
signal integral : signed(31 downto 0) := (others => '0');
signal prop_term, int_term : signed(31 downto 0);
begin
process(clk, rst)
begin
if rst = '1' then
integral <= (others => '0');
elsif rising_edge(clk) then
integral <= integral + (phase_err * Ki); -- saturated accumulation
end if;
end process;
prop_term <= phase_err * Kp;
int_term <= integral(31 downto 16); -- truncate to 16-bit
freq_ctrl <= prop_term(15 downto 0) + int_term(15 downto 0);
end rtl;
Bu örnekte, katlar sabit nokta Q14 formatında temsil edilir. integral taşıyıcı aşırı akışı önlemek için 32 bittir ve çıktı 16 bit'e kadar kodlanır. Bu filtre NCO'nun frekansı kontrol kelimesini kullanır.
NCO Uygulama Uygulama Uygulama
NCO, çıkış saati yaratır. Frekans sentezleri için, genellikle 50% görev döngüsü ile bir kare dalgaya ihtiyacımız var.Örnekleyici yaklaşım iyi çalışır. Aşağıdaki VHDL kodu 32-bit NCO'yu bir saat çıkışıyla uygular (procumulator MSB).
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity nco is
port (
clk : in std_logic;
rst : in std_logic;
freq_word: in unsigned(31 downto 0);
out_clk : out std_logic
);
end nco;
architecture rtl of nco is
signal accumulator : unsigned(31 downto 0) := (others => '0');
begin
process(clk, rst)
begin
if rst = '1' then
accumulator <= (others => '0');
elsif rising_edge(clk) then
accumulator <= accumulator + freq_word;
end if;
end process;
out_clk <= accumulator(31); -- MSB toggles at half the NCO frequency
end rtl;
Çıktı frekansına göre verilir. 32-bit bir cumulator kullanarak bir ROMT:7'in frekans çözünürlüğü sağlar.In sine dalga sentezi, yüksek siparişli bir tablo ile alınan çıktıyı yerine getirin. Örneğin, bir ROM-point sine LUT'u bir ROM blokta indekslemek için en iyi 8 bit kullanın.
Bütünleşme ve Top-Level Design
Bireysel modüller tasarlandığında, PFD, döngü filtrelerini anlık olarak kullanan üst düzey bir varlık yaratırız ve NCO. Geri bildirim yolu PFD'nin geri dönüş girişine yeniden bağlanır. Basit üst düzey bir VHDL tasarımı aşağıda gösterilmiştir.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity digital_pll is
port (
ref_clk : in std_logic;
rst : in std_logic;
pll_out : out std_logic
);
end digital_pll;
architecture rtl of digital_pll is
signal up, down : std_logic;
signal phase_err_signed : signed(15 downto 0);
signal freq_ctrl : signed(15 downto 0);
signal fb_clk : std_logic;
begin
-- Convert up/down to signed error
phase_err_signed <= (to_signed(1, 16) when up='1') else
(to_signed(-1, 16) when down='1') else
(others => '0');
u_pfd : entity work.pfd
port map (
clk_ref => ref_clk,
clk_fb => fb_clk,
reset => rst,
up => up,
down => down
);
u_loop_filter : entity work.loop_filter
port map (
clk => ref_clk,
rst => rst,
phase_err => phase_err_signed,
freq_ctrl => freq_ctrl
);
u_nco : entity work.nco
port map (
clk => ref_clk,
rst => rst,
freq_word => unsigned(freq_ctrl),
out_clk => fb_clk
);
pll_out <= fb_clk;
end rtl;
Bu basit örnekte, faz hatası, tasarıma doğru ölçüm yapılır, ancak daha sofistike bir aşama dedektörü (örneğin, zaman-enerji dönüştürücü) iyi bir karar verebilir. döngü filtre ve NCO aynı referans saati üzerinde çalışır, bu da maksimum çıkış frekansı sınırlandırır.
Simülasyon ve Doğrulama
Bir dijital PLL'yi kilitleme zamanı, istikrar ve jitter performansını doğrulamak için kritik bir öneme sahip. Bir VHDL testibench bir referans saati uygulamalı, PLL'nin kilitlenmesine izin verir ve sonra faz hatasını kullanın.Sistemi makul bir süre sonra simülasyonu durdurmak için prosedür kullanın.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity tb_digital_pll is
end tb_digital_pll;
architecture sim of tb_digital_pll is
signal ref_clk : std_logic := '0';
signal rst : std_logic := '0';
signal pll_out : std_logic;
constant T : time := 20 ns; -- 50 MHz reference
begin
ref_clk <= not ref_clk after T/2;
rst <= '1', '0' after 100 ns;
dut : entity work.digital_pll
port map (ref_clk, rst, pll_out);
-- verification process
process
begin
wait until rising_edge(rst);
wait for 1 us; -- allow lock
-- check frequency and phase
report "Simulation complete";
std.env.finish;
end process;
end sim;
ModelSim, Vivado Simulator veya GHDL gibi simülasyon araçları da kullanılabilir. RF Merkezlerden geniş köşeli simülasyonlar ve güç geçicileri ile birlikte çalışmanız önerilir. PLL simülasyon teknikleri için yararlı bir kaynak, beyaz kağıt üzerindedir.0PLL simülasyonu en iyi uygulamalar).
Frekans Synthesis ile Digital PLL
DPLL kilitlendiğinde, NCO'nun frekansı kontrol kelimesini değiştirerek frekans sentezini kullanabiliriz. Tipik bir uygulamada, referans saati stabil bir kristal osilatördür ve DPLL, referansın birden fazlaını üretir.For tam anlamıyla-N sentez için, bir ayrılıkçı geri bildirim yolunda eklenebilir.For fraction-N sentez, geri bildirim kesintisi için, geri bildirim kesintisi ayarlandığında (örneğin, geri bildirim kesintisi)
Çıktı frekansı ve kontrol kelimesi arasındaki ilişki, )f out) = ().FCW) / 2) * [[Dört|Dörtücük|Dörtücükler arası geçişler, çeşitli FCW'nin sayısına göre, DPLL geniş bir frekans aralığı üretebilir.
Dijital frekans sentezi hakkında daha fazla okuma için, klasik metinleri bakınız:0)Phase-Locked Loops: Design, Simülasyon ve Uygulamaları), Roland E. Best (McGraw-Hill, 2007). ek olarak, [[Dönetic PLL mimarisi[Dönemli ve Uygulamaların kaynağı değiştir]
Pratikler
Donanımda güvenilir olarak çalışan bir DPLL'yi tasarlamak, birkaç pratik konuya dikkat gerektirir.
Lock Time and Band Wide
Bir DPLL'nin kilit zamanı, uygulama gereksinimlerine kıyasla daha da orantılıdır. Daha geniş bant kilitleri daha hızlı bir şekilde besleme ve jitter. Dar bant genişliği gürültüyü kullanın, ancak kilitlemek için daha uzun sürer.[Dön filtre katları uygulama gereksinimleriyle eşleştirilmelidir.) ⁇ 2 * }} * (grup genişliği) ticarete kadar.
Jitter ve Faz Gürültü
Dijital PLLs, NCO ve faz deküratörünün son derecelerini artırmak için, yüksek hızda ölçümlü bir dijital döngü filtre ile frekans ölçümleyicisi (örneğin, 10 ps) ile zaman alıcı bir optik dönüştürücüyü kullanarak, genel olarak jitter-performasyonel bir sinyal işlemesini de geliştirir.
Güç Tüketimi
FPGA'larda veya ASIC'lerde uygulanan DPLL, zaman alan işlemesi gibi dinamik güç miktarını tüketiyor veya enerjiyi azaltmak için, kapılı saatler kullanın veya NCO için frekans yeniden yapılandırması gerektiğinde sinyalleri etkinleştirin.Modern düşük güç DPLL mimarisi, zaman alan işleme gibi, Chen et al.) tarafından tartışılmaktadır.
Süreç, gerilim, Sıcaklık (PVT) Variations
Dijital tasarımlar analog devrelerden PVT varyasyonları için daha bağışıklık sağlar, ancak döngü filtre kazancı ve NCO frekansı hala köşelere göre değişebilir.Difer filtre katlarında küçük bir marj kullanarak ve statik zamanlama analizi gerçekleştirmek, DPLL'nin tüm koşullara karşı zamanlamasını sağlar.
Gelişmiş Topics
Mühendisler temellerin ötesine geçmeye hazır, birkaç gelişmiş DPLL topoloji var.
All- Digital PLL (ADPLL)
ADPLL, bir zaman-enerji dönüştürücü (TDC) ve dijital olarak kontrol edilen osilatör (DCO) olarak kullanılan dijital eşdeğerlerle tüm analog bileşenleri değiştirir.Bu yaklaşım, nanometer CMOS for RF applications.
Sigma-Delta Modulation ile Fractional-N PLL
Fractional-N synthesis allows arbitrary frequency ratios, enabling fine frequency steps without reducing the phase detector frequency. The feedback divider's modulus is modulated by a sigma-delta modulator (SDM) to shape quantization noise away from the loop bandwidth. The SDM can be implemented in VHDL as a third-order error feedback structure. A tutorial on SDM-based fractional-N PLLs is available from Analog Devices.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Dijital faz kilitleri VHDL'de frekans sentezleme için tasarlayın, dijital sinyal işleme, kontrol teorisi ve donanım tasarımı ile birleştiren zorlu bir görevdir. Bu makale, tasarımınızı simülasyon yoluyla, döngü filtre ve NCO ile - sentezlenebilir VHDL örnekleri ve simülasyon ile birlikte, bu bina blokları ile, sağlam performans gereksinimlerinizi elde etmek için sağlam bir DPLL'leri oluşturabilirsiniz.Bu makale, tasarım yelpazesi için tasarımınızı her zaman doğrulayın.