תכנון לולאות דיגיטליות של שלב נעול (PLLs) ב-VHDL הוא מיומנות בסיסית עבור מהנדסים שעובדים על סינתזה תדירות וניהול שעון במערכות דיגיטליות. pLLs הם מרכיבים חיוניים המסייעים לסנכרן אותות וליצור תדרים יציבים, מה שהופך אותם חיוניים למכשירים אלקטרוניים מודרניים כגון TransDPLs, ממיר נתונים ומעבדים דיגיטליים.

הבנה של Digital PLL

PLL דיגיטלי הוא מערכת בקרת משוב המשווה את השלב של אות התייחסות קלט עם השלב של אות פלט שנוצר.המטרה היא להתאים את שלב הפלט עם קלט, ביעילות נעילה על תדירות. בלולאה סגורה, DPLL מתאים באופן רציף את תדירות של רכיבי PGL דיגיטליים מבוקרים (NCO) עד שלב מופחתת לשגיאה קטנטנה זה יכול להיות משולב לחלוטין עם מערכת חומרה דיגיטלית או סינכרונית לחלוטין.

האדריכלות הבסיסית של DPLL מורכבת מארבעה בלוקים עיקריים: גלאי שלב, מסנן לולאה, NCO, ונתיב משוב. גלאי שלב קובע את ההבדל בין שלב ההתייחסות לבין שלב משוב.זה אות שגיאה זו מסונן על ידי שלב המסנן, אשר בדרך כלל כולל גלאי-integral (PI) כדי להגדיר את הדינמיקה.

יתרונות מרכזיים של Digital PLL

לפני צלילה ליישום VHDL, חשוב להבין את הפונקציה של כל רכיב ואת עיצוב עסקאות מסחר.

שלב Dtector

הגלאי שלב (PD) מייצר אות שגיאה ביחס לההבדל בשלב בין אותות ההתייחסות וההשראה. בעיצובים דיגיטליים, המימוש הנפוץ ביותר הם גלאי שלב XOR ואת גלאי שלב הקידוד (PFD).

  • (FLT:0)XOR שלב Detector:FLT:1 שער XOR משווה שני אותות בינאריים ופלט אות שמחזור החובה הממוצע שלו הוא פרופורציה להבדלים בשלב זה עובד הכי טוב כאשר לשני האותים יש מחזורי 50% ויחסים של קוואדר (S90° שלב שינוי).
  • (FLT:0)Phase-Frequency Detector (PFD): PFD משתמש בלוגיקה מסוימת (למשל, שתי צפיפות ושער ושער) כדי לזהות הן את השלבים והן את ההבדלים בתדירות. זה מתאמצת מעלה ולמטה הדופקים המעידים על האם ההתייחסות או הלהבות של PFD יש טווח ליניארי רחב יותר (±2) וניתן אפילו לבודדים את התדרים עד כדי כך שמצביעים על כך שהם מעדיפים אם זה יהיה זה.

פילטר

הסינון של לולאה מעבד את אות השגיאה שלב לייצר מתח בקרה (או קוד דיגיטלי) שמניע את NCO. ב- PLL דיגיטלי, מסנן הלולאה הוא בדרך כלל מסנן דיגיטלי של PI.המונח היחסי מספק תיקון מיידי בהתבסס על השגיאה הנוכחית, בעוד המונח האינטגראלי מצטבר שגיאה לאורך זמן כדי לחסל שלב קבוע-מצב קבוע של קואט (Kp ו-KKK) לקבוע את רוחב הפס, לנעול, זמן עם לולאה מעוצב היטב.

אוספיטור (NCO)

NCO יוצר את גל הפלט - לעתים קרובות גל מרובע או גל חטא - בתדר סביר תוכניתי.זה בדרך כלל מכיל accumulator שלב אשר מוסיף מילת בקרת תדירות (FCW) על כל מחזור שעון.התוצר של accumulator, המייצג את שלב מיידי, מטפל בטבלה תצפית (LUT) כי מחסנים או cosine אלטרנטיבי, עבור שלב Ncbitsis יכול פשוט לייצר את ה-texa1 של ה-tulator.

המונחים: path

נתיב משוב הוא פשוט: הוא מדרך את הפלט NCO בחזרה לגלאי שלב.בכמה עיצובים, מפיץ תדר יכול להיות ממוקם במסלול משוב כדי לאפשר ל- PLL לייצר תדרים שהם מרובים של ההתייחסות (למשל, Integer-N סינתזזה). DPLL מודרניים יכולים גם לשלב דיבידנדים הניתנים לתוכנה עבור סינתזה גמישה.

עיצוב תצלום דיגיטלי ב VHDL

יישום PLL דיגיטלי ב VHDL כרוך קידוד כל רכיב כישות נפרדת המחברת אותם היררכי באופן היררכי.התתת הבאה לספק דוגמאות עיצוב VHDL עבור כל בלוק, עם דגש על מבנים סינתזנטיים ושיטות הטובות ביותר.

שלב Detector Implementation

אנו ניישם PFD, שכן הוא חזק יותר עבור סינתזה תדירות. PFD משתמש שתי D ספין-flops, שער ולאפסה, ולמעלה / תפוקה למטה.קוד VHDL עבור PFD פשוט מוצג להלן. Note כי העיצוב הוא לחלוטין סינכרוני כדי למנוע בעיות metastability.

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;

במימוש זה, האות (FLT:1) מונע על ידי שילוב של וגם של שני צפיפות, להבטיח כי לאחר שני הקצוות מגיעים, הגלאי מתאפס במהירות. PFD זה פלט דופק על FLT:2 כאשר ההתייחסות מובילה את המשוב, ואת הדופק על FLT 3: כאשר המשוב מוביל.

המונחים:

מסנן PI דיגיטלי ניתן ליישם באמצעות accumulator ו מקבילה מכפילים.לפשטות, אנו מניחים כי PFD תפוקה מומרים ערך שגיאה חתום.הקודים מסנן נבחרים לספק גורם לחות של 0.7 ותדירות טבעית העומדת בדרישות זמן נעילה.קוד VHDL להלן מציג מסנן בסיסי עם 16 סיביות חתום.

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;

בדוגמה זו, coefficients מיוצגים בפורמט Q14 קבוע.המולטור האינטגראלי הוא 32 סיביות כדי למנוע זרימה, והפלט הוא מכווץ ל 16 ביטים. מסנן זה מניע את מילת בקרת התדר של NCO.

NCO יישום

NCO מייצרת את שעון הפלט.עבור סינתזת תדר, לעתים קרובות אנו זקוקים לגל מרובע עם 50% מחזור חובה.השלב accumulator גישה עובד היטב.קוד VHDL הבא מיישם 32 סיביות NCO עם פלט שעון (MSB של accumulator).

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;

תדירות התפוקה ניתנת על ידי סינתזה של כפל (FLT:6 ).שימוש ב accumulator 32 סיביות מספק החלטה תדירות של כפל 7 ; עבור סינתזה גל חטא, להחליף את הפלט עם שולחן מבט מצופה על ידי bits מסדר גבוה של accumulator. לדוגמה, להשתמש ב -8 העליון כדי לאינדקס 256 נקודות קצה לחסם ROM UT.

עיצוב אינטגרטיבי ו- Top-Level

ברגע שהמודולים הבודדים מתוכננים, אנו יוצרים ישות ברמה העליונה שממהרת את PFD, לולאה מסנן, ו- NCO. נתיב משוב מחבר את פלט NCO בחזרה לקלט משוב של PFD. עיצוב VHDL פשוט ברמה גבוהה יותר מוצג מתחת.

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;

הערה כי בדוגמה פשוטה זו, שגיאה שלב הוא קוונטי ל ±1. בפועל, גלאי שלב מתוחכמת יותר (למשל, ממיר הזמן-לדיגיטלי) יכול לספק פתרון דק יותר.המסנן לולאה ו- NCO לרוץ על אותו שעון ההתייחסות, אשר מפשט את העיצוב אך מגביל את התפוקה המקסימלית.

סימבול ו-Verification

סימולציה של PLL דיגיטלית היא קריטית לאמת זמן נעילה, יציבות וביצועים Jitter.A VHDL Testbench צריך ליישם שעון התייחסות, לאפשר ל- PLL לנעול ולאחר מכן למדוד את השגיאה בשלב. השתמש ב-FLT:9 הליך כדי לעצור סימולציה לאחר זמן סביר.

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 או GHDL ניתן להשתמש בהם.זה גם מומלץ להפעיל סימולציות רחבות פינות עם שעונים התייחסות ג'רמי ו transients. A משאב מועיל עבור טכניקות סימולציה PLL הוא הנייר הלבן על FLT:0PLL סימולציה מיטב שיטות סימולציה 1 מ מרכזי RF.

תדירות הסינתזה עם Digital PLL

ברגע שרזולוציה DPLL נעולה, אנו יכולים להשתמש בה עבור סינתזה תדירות על ידי שינוי מילת בקרת תדירות של NCO. ביישום טיפוסי, שעון ההתייחסות הוא אוסטרטור גביש יציב, וה-DPLL מייצר פלט גבוה קידוד זה הוא מספר של ההתייחסות.עבור Integer-N synthesis, מתפצל יכול להוסיף בדרך.

(ה) הקשר בין תדירות התפוקה לבין מילת השליטה ניתן על ידי FLT:0 out outemalph 1=(FLT:2FCWIRFLT 3: 203FLT:4NFLT:5) *FLT:6f clDP kFLT 7, שבו N הוא מספר של מחסנים על ידי שינוי רוחב רוחב פס רחב (KW).

לקריאה נוספת על סינתזת תדר דיגיטלי, ראה את הטקסט הקלאסי (FLT:0) שכפול-Locked Loops: עיצוב, סימבולציה, ויישומים FLT:1 על ידי רונלד E. Best (Mcaw-Hill, 2007) בנוסף, FLT:2IE מסמך על כל ארכיטקטור P דיגיטלי LLFLT 3 על ידי Stasaw-Hill, 2007).

שיקולים מעשיים

עיצוב DPLL שעובדת באופן אמין בחומרה דורש תשומת לב זהירה למספר נושאים מעשיים.

זמן נעול וBandwidth

זמן נעילה של DPLL הוא יחסית הפוך רוחב פס לולאה.A רחב מנעולים רוחב פס רחב יותר מהר אבל מאפשר יותר הפניה של הזנה דרך וג'ייטר. רוחב פס צר מחלחל רעש אבל לוקח יותר זמן לנעול.המסונן coefficients חייב להיות מכוון כדי להתאים את דרישות היישום.התחל עם גורם לחות של 0.707 (לח קריטי) ולהתאים את התדר הטבעי על בסיס זמן מנעול מקובל (Fd)

Jitter and Phase Noise

Digital PLLs סובלים מ- קוונטיזציה Jitter בשל ההחלטה הסופית של גלאי NCO ו- שלב.הגדלת רוחב accumulator מפחית רעש קוונטי תדירות.שימוש בגלאי שלב רב-ביט (למשל, ממיר זמן-ל-דיגיטלי עם 10s של רזולוציית ps) משפר גם את הרעש בשלב. עבור יישומים גבוהים, לשקול יישום שלב מפץ (binary) עם גלאי מהיר כגון CD) עם אותות חיצוניים, כמו גם משפר גם עם רמות גבוהות של חומר חיצוניות (D) עם 10 של חומרתיקים).

כוח

(ה-DPLLs המיושמת ב-FPGAs או ASICs צורכת כוח דינמי לתדירות השעון ומספר השערים המתפתלים.כדי להפחית את הכוח, להשתמש בשעון שער או לאפשר אותות עבור NCO כאשר שינוי תדירות אינו נחוץ.

תהליך, וולטאז', טמפרטורה (PVT)

עיצובים דיגיטליים הם יותר חסינים על ידי PVT וריאציות מאשר מעגלים אנלוגיים, אבל התדירות מסנן לולאה עדיין תלוי שעון המערכת, אשר עשוי להשתנות לאורך פינות.שימוש שולי קטן במסנן coefficients וביצוע ניתוח תזמון סטטי מבטיח כי DPLL עומד תזמון בכל התנאים.סימולציה עם SDF (תבנית עיכוב סטנדרטי) backannotation מומלץ עבור ההרשמה.

נושאים מתקדמים

עבור מהנדסים מוכנים לעבור מעבר לסודות, קיימים כמה עקורים מתקדמים.

All-Digital PLL (ADPLL)

ADPLL מחליף את כל הרכיבים האנלוגיים עם שווי ערך דיגיטלי, כולל ממיר עת אל-דיגיטלי (TDC) כמו גלאי שלב ו-oscillator הנשלט דיגיטלית (DCO) גישה זו משמשת באופן נרחב ב-Nanometer CMOS עבור יישומי RF. מתודולוגיית העיצוב VHDL משתרעת באופן טבעי ל-ADPs על ידי הוספת בלוק IPDC ו- קונסולת בקרת גולגולת.

הונאה-NLL PLL עם Sigma-Delta Modulation

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.

מסקנה

עיצוב לולאות דיגיטליות שלב נעול ב VHDL עבור סינתזה תדירות הוא משימה מאתגרת אך מתגמל המשלב עיבוד אותות דיגיטליים, תיאוריה שליטה ועיצוב חומרה. מאמר זה כיסה את המרכיבים הבסיסיים - גלאי, לולאה מסנן ו NCO - עם יכולות סינתזות VHDL מותאמות באופן משמעותי, על ידי הבנת בלוקים אלה, אתה יכול ליצור DPs חזקים המסוגלים לייצר סימולציה מתקדמת, כגון דרישות עיצוב קבוע, תמיד, כמו עיצוב רחב.