עיצוב ®High-Speed Serial Interface Design ב-VHDL

מערכות דיגיטליות מודרניות מסתמכות על פרוטוקולים סדרתיים מהירים כדי להעביר נתונים במהירות בין רכיבים, היקפיים ורשתות. פרוטוקולים כגון PCI Express (PCIe), Ethernet ו-USB מגדירים את הדרישות הפיזיות והקישוריות להעברות החל מכמה ג'יגה-בייטים ליותר ממאה ג'יגה-בייט לשנייה.עיצוב ממשקים אלה ב-VHDL דורש הבנה עמוקה של עיצוב לוגי וסטנדרטים ספציפיים, ופרוטוקול ה-GA, חייב לנהל את ה-RAM, תוך כדי עמידה ב-ACTI, תוך כדי עמידה ב-FPI, תוך הבטחת יעדים אמיתיים.

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

פרוטוקולים מהירים

למה אווירי על פני מקביל?

קישורים סידוריים מהירים להחליף אוטובוסים מקבילים מבוגרים יותר כי הם להפחית ספירת פינים, לצרוך פחות שטח לוח, ולפעול בתדרים גבוהים יותר ללא סבל מבעיות של סקייו. נתונים מועברים כזוגות שונים (למשל, PCIe TX/RX) על פני אחד או יותר נתיבים.זרם הנתונים הסידורי כולל שעונים משובצים, הדורשים את המקלט כדי לשחזר את השעון מהמעברים הבאים.

קידוד משותף וסקרמבל

כדי לשמור על איזון DC ולספק מעברים מספיקים לשיקום השעון, פרוטוקולים סידוריים משתמשים בתוכניות קו משותף:

  • (FLT:0)8b/10b ⁇ FLT:1 - בשימוש על ידי Gigabit Ethernet, PCIe Gen1/2 ו- USB 3.x. כל אחד מהנתונים 8 סיביות ממפה לסמל 10bit, המבטיח אורך ריצה מקסימלי של 5 ולא יותר מ- 4 סיביות רצופים.
  • (FLT:0)128b/130b ⁇ FLT:1) בשימוש על ידי PCIe Gen3/5 ו- 100GbE. A מקשה על זרם הנתונים, ורק 2 סיביות של מעל פני 128 ביטים נתונים מתווספים לסינכרון.
  • (FLT:064b/66b ו-64b/67bbirFLT) 1 - נפוץ בגרסאות 10GbE ו 25GbE, עם ראשי סינכרון ששומרים על היישור.

ב VHDL, לוגיקה קידוד / קידוד חייב להיות מסונתז כמו בלוקים משולבים או צינורות, לעתים קרובות באמצעות טבלאות חיפוש עבור 8b/10b ו-Liנארית משמרת רישום (LFSRs) עבור חתירה.

שיטות אימון ומכונות מדינה

לפני העברת נתונים במהירות גבוהה מתחיל, קישורים סידוריים מבצעים הדרכה קישורים למשא ומתן מהירות, קוטבי נתיב ושווה. PCIe, למשל, יש AFLT:0Link Training and Status State Machine (LTSSM)FLT:1 עם מדינות כגון Detect, זיהום, סודיות, התאוששות, L0 (אקטיבי), ו-L1 / L2 (כוח נמוך) לשימוש ב- Ethernet.

אתגרים עיצוב ב-VHDL עבור High-Speed Interfaces

כתיבת קישורים סדרתיים מרובות-gigabit מציגה מספר נושאים שאינם רצויים:

מעבר השעון (CDC) וסינכרון

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

יכולת

כאשר אות משתנה ליד קצה שעון, ה- לכידת ספין-אפ יכול להיכנס למצב metastable. עם שיעורי נתונים גבוהים ותחומים מרובים של שעונים, metastability הופכת לדאגה אמינה.יישם שרשראות סינכרוניזציה מתאימות לחשב זמן ממוצע בין כישלונות (MT) רוב כלי הספק FPGA לספק דוחות על MThronizer.

אותות אינטגרטיביות ו- I/O Standards

VHDL אינו מנהל באופן ישיר את השלמות האות האנלוגית, אך העיצוב חייב לממשק נכון עם טרנזבולרים (למשל, Xilinx GTY או Intel Transceiver) הלוגיקה הדיגיטלית חייבת לעמוד במגבלות התזמון של ממשק הצד המקביל של ה- transceiver (לדוגמה, ממשק PCS-PMA).

טעות בזמן אמת

קישורים אוויריים רגישים לשגיאות קטנות עקב רעש, צחצוב, או אי התאמה לקויה.פרוטוקולים כוללים זיהוי שגיאות (CRC, Checkum) ו-Retransmission (למשל, תצורת הנתונים של PCIe Layer ACK/NAK) יישום אלה ב- VHDL כמו גנרטורים CRC או צ'קים, ומכונות ממשלתיות להגיון.

טכניקות עיצוב VHDL עבור מהירות גבוהה

פיתוי ותגובה

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

שימוש ב-Vondor Transceiver IP

לוגיקה של טרנסג'סטר ברמה נמוכה (Serializer, deserializer, שחזור שעון) אינה מיושמת ישירות ב VHDL עבור רוב FPGAs. במקום זאת, מעצבים מיידיים של הליבה IP המסופקת בספק (למשל, Xilinx GT Wizard, Intel Transceive Toolkit) , קוד VHD מעטוף IP זה ומוסיף מכונות ספציפיות של נתונים והיגיון תמיד מבין דרישות התזמון למשתמש.

עיצוב מודולרי עם חבילות ו Components

לארגן את הפרויקט לחבילות עבור קבועים, פונקציות וסוגים. ליצור רכיבים הניתנים להחלפה כגון:

  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0)Link State MachineveFLT:1 - פרוטוקול ספציפי (למשל, Ethernet אוטומטי-negotiation, PCIe LTSSM).
  • (FLT:0) מנועRC מנועFLT:1 - פרדוקסלי עבור פולינומיסים שונים (CRC-32 עבור Ethernet, CRC-16 עבור USB, CRC-32C עבור PCIe).
  • (ב) ,0) ,FiFOveFLT:1 , עומק, סוג ושטחי שעונים.

השתמש ב-VHDL-2008:0 עבור עיצובים רב-לנים.

סינתזת Attributes ו- Constraints

(ה) לקבוע מגבלות תזמון נאותות לכל תחום שעון (עיכובים בחזה/ ⁇ ), קבוצות שעון (Synthesis Properties) כגון: (FLT:1, FLT:2, ו-FLT:3 כדי לשמר נתיבי סינכרון קריטיים.

יישום PCI Express ב- VHDL

PCIe Architecture Review

PCIe עוקב אחר אדריכלות שכבתית: שכבת פיזיקלית, שכבת הקישור לנתונים ושכבת העסקה.שכבת הפיזית מחולקת עוד יותר ללוגיקה (PCS) וחשמל (PMA) רוב העבודה VHDL מתמקדת בשכבת הקישור והשכבת העסקה של הנתונים, שכן שכבת פיזיקל מטופלת בדרך כלל על ידי מדבקים קשיחים ו-PHY ב-FPGAs.

מפתח VHDL Components for PCIe

  • (FLT:0)Lane ManagementveFLT:1 - עבור עיצובים רב-לנים (x1, x2, x4, x8, x16), ליישם את לוח הדלפק וההתיישרות של כל-לן. השתמש בגלאיים לרצף אימונים (TS1/TS2).
  • (FLT:0)Link Training State Machine (LTSSM) ReveFLT:1) – יישום מכונת 12 המדינות המוגדרת ב- PCIe Base Specification.לכל מדינה יש נתבים ספציפיים ודלפקים. ב-VHDL, השתמש בסוגים מלוטשים עבור מדינות ותהליך רגיש לשעון המוחזר.
  • (FLT:0Data Link LayerFLT:1) - אחראי על מעקב אחר מספר רצף, CRC-32c ופרוטוקול ACK/NAK.
  • (FLT:0) Transaction LayerFLT:1) - Assembles Memory, I/O, תצורה והודעה TLPs (Transaction Layer Packets) דור ראש ו parsing, בתוספת שליטה זרימה עם נקודות זכות.

דוגמה מעשית VHDL

-- Simplified LTSSM implementation (partial)
type ltssm_state is (DETECT, POLLING, CONFIGURATION, L0, ...);
signal current_state, next_state : ltssm_state;
process(clk, rst)
begin
 if rst = '1' then
 current_state <= DETECT;
 elsif rising_edge(clk) then
 current_state <= next_state;
 end if;
end process;

הערה: Real LTSSM כולל צירים כמו פולינג Active ו- ConfigurationComplete. השתמש בדלפק על ידי שעון התייחסות יציב.

המונחים: PCIe Core

מכיוון ש-PCIe מורכב, שקול להשתמש ב- אימות קניין רוחני (VIP) או בסביבת סימולציה מסחרית. VHDL Testbenches יכול ליצור רצפי TLP ולבדוק תשובות. השתמש ב- PCIe המשולב של Xilinx עבור קישור בפועל; עיצוב VHDL שלך מתחבר לממשק של IP קשה (למשל, AXI4-Stam).

יישום Ethernet VHDL

פרוטוקול Ethernet

ממודל OSI, Ethernet משתרע על שכבת פיזיקלית (PHY) ו-Data Link Layer (MAC) בעיצובים VHDL, ה- MAC (מפקח גישה לרפואה) הוא בדרך כלל מרכיב הליבה, הפונה ל-PHY חיצוני באמצעות MII, GMII, RGMII, או SGMII אוטובוס. עבור מהירויות גבוהות (1 Gbps ומעלה מעצבים), להשתמש ב-Sivers עם SERDES.

מפתח VHDL Components for Ethernet

  • (FLT:0) CoreigFLT:1) - יישום פרוטוקול CSMA /CD (או מלא מסובכת), מסגרת של שינוי, דור טרום-אפיל, CRC-32 לבדוק / מועד.
  • (FLT:0)PHY InterfaceFLT:1 - עבור 1GbE, ליישם מכונה מדינת GMII או SGMII אשר שולח 8 סיביות נתונים עם אותות שליטה. עבור 10GbE, להשתמש ב- XGMII (32 סיביות נתונים) או ממשק סדרתי.
  • (ב) ⁇ :0) ⁇ (ב"ה) , AFIFO או דוא"ל בעל זיכרון כפול המאחסן את מסגרות ה-Rest incoming/outending, מטפל בזרימה ובזרימה.
  • (ב) [ה]:0 [תיקון:] אם תתכנן ממשק ניהול PHY (למשל MDIO), ליישם את מכונת המדינה לרישום יכולות.

Ethernet Over Serial Transceivers

עבור 1GbE SGMII או 10GbE, קוד VHDL חייב לנהל את ההיערכות והנתיבי קישור. השתמש במצב PCS הקבוע של Transceiver (למשל, 8b/10b עבור SGMII) או להגדיר את transceiver כמו תיבת הילוכים סדרתית. גישה נפוצה היא מיידית לספק IP עבור MACY ו- PH, עבור שליטה VMAL.

דוגמה מעשית: CRC-32 Implementation

ליצור CRC-32 עבור מסגרות Ethernet.A צינורות VHDL אדריכלות:

-- CRC-32 macro (IEEE 802.3 polynomial)
signal data_in : std_logic_vector(7 downto 0);
signal crc_out : std_logic_vector(31 downto 0);
...
crc_engine : entity work.crc32
 generic map (DATA_WIDTH => 8, CRC_WIDTH => 32)
 port map (clk, rst, data_valid, data_in, crc_out);

המונחים

(ב) עיין ב[[1924]] ב[[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]

שימוש ב-VHDL

USB Review

USB 3.0 ו-3.1 משתמשים בארכיטקטורה דו-בוסית: נתיב USB 2.0 מורשת (מבוסס על זוג שונה, 480 Mbps) ונתיב סופר-מהירות (באמצעות 8b/10b ⁇ , עד 10 Gbps) עבור עיצוב VHDL, להתמקד על שכבת העל-מהירות פיזית וקישור אם מיקוד במהירות גבוהה.המפרט USB מגדיר ארכיטקטורה דומה למחשבי: פיזי, קישורים ופרוטוקול.

מפתח VHDL Components עבור USB 3.x SuperSpeed

  • (FLT:0)Link Layer State MachinesFLT:1 - Handles המקשרות את הסימולציות, ניהול חשמל ושיקום שגיאות, מדינות כוללות (למשל, זיהום, U0 (אקטיבי), U1/U2/U3 (כוח נמוך)).
  • (ב) כרך 1:0 (8b/10b Encoder/Decoderph1) 1 - עבור USB 3.0. השתמש בטבלה של VHDL או synthesizable ROM.
  • (ב) ⁇ :0 (Lane DeskewveingFLT:1) - SuperSpeed משתמש בנתיב אחד לכיוון.הוא עדיין זקוק להתאמה של סמל בהתבסס על דמויות COM (comma).
  • (FLT:0)Packet FranveingFLT:1 - חבילות USB מורכבות ראש (HP), חבילת נתונים (DP), ו-קישור (LC) ליישם מכונה מדינה שמכירה ברצף המחורבן (למשל, SKP הורה סטים).
  • (ב) ,0) ↑ ,9,2, ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

בקר USB

עבור מכשיר USB, עיצוב VHDL חייב ליישם נקודות קצה: שליטה נקודת קצה (EP0) עבור ההתקנה / סטטינוס, רוב, להפריע, ונקודות קצה של isochronous.הפרוטוקול מטפל בקשות העסקה ואת פרוטוקול הנתונים לקליט.זה לעתים קרובות בשילוב עם מיקרובקר או מנוע DMA. רבים עיצובים FPGA משתמשים מעבד רך (למשל, מיקרוBze) כדי להתמודד עם קושחה USB.

המונחים

ה-FLT:0USB 3.1 SpecificationFLT:1 הוא חיוני עבור הנחיות יישום ספציפיות VHDL, ראה FLT:2Intel AN 141: USB 3.0 PHY DesignFLT 3: 3.

אסטרטגיות וסימולציות

אדריכלות Testbench

צור בדיקת VHDL שמניעה את הממשק עם רצפי פרוטוקול ריאליים.עבור PCIe, ליצור רצפי הכשרה תואמים ולבדוק מעברים של מצב הקישור. עבור Ethernet, לשלוח מסגרות בתוקף ולא יסולא בפז, לאמת CRC, ובדיקת טיפול התנגשות (חצי-דופלקס) עבור USB, הפעלת פקודות קישור ומכונת ניהול חשמל.

באמצעות מודלים, Vivado Simulator או VCS

סימנה את העיצוב המלא כולל דגמי IP של ספקים.שימוש במבחנים מכוונים, ולאחר מכן בדיקות אקראיות מחוספסות כדי לכסות מקרים קצה.עבור PCIe, לשקול שימוש ב- IP אימות (VIP) המספק ניטור והבקיע.עבור Ethernet, מודל transceiver בדרך כלל כולל שעון Jitter ו-Lance propagation.

תזמון Closure ופוסט-Synthesis Simulation

לאחר סינתזה, להפעיל סימולציה של לאחר נתיב עם עיכובים מאומתים כדי לאמת את ההתקנה / תזמון שעון-ל-out. השתמש בכלים של הספק ניתוח תזמון סטטי כדי להבטיח שהעיצוב עומד בתדירות הנדרשת (למשל, 125 MHz עבור RGMII, 250 M עבור XHz XHz) התאמת צינורות צינורות או לוגיקה אם התזמון נכשל.

FPGA Prototyping ו-Hardware אימות

בחירת מועצת FPGA

עבור ממשקים סדרתיים מהירים, בחר לוח עם תמיכה מתאימה transceiver. Xilinx Kintex-7 / Ultrascale + או Intel Arria 10 / סטראטix 10 מציעים במהירות גבוהה GTP / GTY / GGTG Transceivers. ודא כי הלוח יש את המחברים הנכונים: PCIe חריץ, SFP+ (עבור Ethernet), או חיבור USB 3.0or.

טכניקות וויכוח

השתמש מנתחים לוגיים משולבים (Xilinx ILA, Intel Signal Tap) כדי לחקור מצבים פנימיים. כי קישורים סידוריים מהירים, ללכוד נתונים בצד המקבילה transceiver.עבור PCIe, השתמש מנתח PCIe (למשל, Teledyne LeCroy) כדי לבדוק תאימות. עבור Ethernet, השתמש מנתח רשת כדי לאמת שלמות מסגרת.

מלכודות נפוצות

  • רצף איפוס לא מתאים: טרצ'יברס לעתים קרובות דורשים רצף מסוים של Power-up ו- איפוס.עקוב אחר ההנחיות של המוכר.
  • שעון: השעון המוחזר חייב להיות מודרך כשעון עולמי. השתמש באריחי ניהול שעון נאות (MMCM, PLL).
  • הגדלת פניות: ודא שלוגיקה המשתמש יכולה לצרוך נתונים מהר מספיק.ליישם מנגנונים מדכאים (למשל, חבילות XOFF).

מסקנה

תכנון ממשקים סדרתיים מהירים ב-VHDL עבור PCIe, Ethernet ו- USB הוא משימה תובענית אך מתגמלת מאוד.הצלחה דורשת ריצוף מוצק במפרטים הפרוטוקול, שיטות קידוד VHDL זהה לניהול תחומי שעון ותזמון, ואימות קפדני.על ידי מתן ספק Transcer IPs, עיצוב מודולרי, סימולציה שיטתית, מהנדסים יכולים לייצר ממשקים חזקים שפועלים במהירויות מרובות-אוביטל.

(ב) ◄ [13]

  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • ^ באתר ה-FPGAs Transceiver WizardcioFLT 193
  • (ב) ,0) ראה 802.3 קבוצת העבודה Ethernet
  • ◄0 (ב) ⁇ ⁇
  • (ב) PHY DesigncioFLT:0) PHY DesignveFLT