VHDL

VHDL (‏VHSIC (Very High Speed Integrated Circuits) Hardware Description Language) היא שפה לתיאור חומרה המשמשת לתיאור של מעגלים ספרתיים. תיאור מעגלים מתאפשר במספר רמות הפשטה, החל מרמת שערים לוגיים ועד למבנים מוכללים כגון מכונות מצבים, מבנים אריתמטיים, זכרונות שונים וכולי. מעגלים אלה מכוונים לרכיבים אלקטרונים משולבים: ASIC, FPGA ו-VLSI. הגרסה הרווחת של השפה היא VHDL-93. לאחרונה יצאה גרסה התומכת גם במעגלים אנלוגיים הנקראת VHDL-AMS. השפה פותחה ביוזמה של משרד ההגנה האמריקאי בשנות השמונים כשיטה לתיעוד של תכנוני מעגלים ספרתיים מורכבים וגדולים. כיום הגוף המרכזי שממשיך לעדכן את התקן הוא IEEE כתקן IEEE-1076. בשנים שקדמו לפיתוח השפה נעשה שימוש בכלי תכנון גרפיים, בהם המהנדס בוחר רכיבים אלקטרוניים, ממקם אותם בשרטוט ומחבר ביניהם לקבלת מעגל רצוי. תהליך זה הוא תהליך הנעשה בצורה ידנית. בשלב מסוים נעשו שרטוטים אלו מורכבים, מסובכים ובעייתיים מבחינת התאימות בין תכנונים שונים והתעורר הצורך בפיתוח כלי מחשב אוטומטיים אשר מסוגלים למדל את התכנונים או לתרגמם לרשימות (Netlist) של רכיבים והחיבוריות ביניהם. המעבר לשפה ממוחשבת סלל את הדרך לפיתוח כלי סימולציה וסינתזה אוטומטיים. כפועל יוצא, התאפשר פיתוח שיטתי של כמות רכיבים גדולה מאוד (מיליוני, ואפילו עשרות מיליוני שערים), הממוקמים על גבי שבב יחיד ומזעור הרכיבים המכילים מיליוני שערים לוגיים על גבי פיסת סיליקון בגודל של מילימטרים בודדים. השפה ירשה בתחבירה הגדרות אובייקטים משפת ADA. ההבדל העיקרי בין שפת חומרה לשפת תוכנה הוא, שבשפת חומרה כל שורות הקוד מתבצעות באופן מקבילי ולא באופן סדרתי, כמקובל בשפות תוכנה. כלומר, באופן כללי בשפות חומרה אין משמעות למיקום הביטוי בקוד. כאשר מדובר בביצוע כוונה היא לסימולציה בלבד, ובתהליך הסינתזה לביטוים יש משמעות מערכתית/מבנית, הם מייצגים מבנים סיפרתיים לוגיים. התקן הנוכחי של השפה מציב אותה בכלל השפות מונחות העצמים. רוב המבנים של השפה נועדו למידול ובניית סביבות סימולציה (ולא לסינתזה של מעגלים). דוגמה לכך היא טיפוס זמן, ומאפשר הגדרת אילוצים שונים המערבים אילוצי זמן. קיימת תת-קבוצה של VHDL המאפשרת כתיבת מבנים לסינתזה. תת-קבוצה זאת נתמכת על ידי יצרני כלי-תכנון (EDA) רבים המשמשים את תחום המעגלים המשולבים. VHDL היא שפה "גדולה", המקנה למשתמש בה יכולות רבות ומאפשרת בקלות יחסית לכתוב ולתחזק תכן בגדלים שונים מהקטן ביותר (מספר שערים לוגיים) ועד גדול ביותר (מעבד לדוגמה), לשלוט בתכונות המערכת על ידי מנגנון מפותח של פרמטרים Generic. השפה המתחרה כיום בשפת VHDL היא Verilog, הנפוצה מעט יותר לעומת VHDL בארצות הברית ובפרט בעמק הסיליקון. במזרח אסיה ובאירופה VHDL נפוצה יותר. בישראל משתמשים בשתי השפות באותה מידה[דרוש מקור]. תהליך התכנון בשפת VHDL כולל את רוב השלבים המסורתיים של תכן ספרתי: בניית הארכיטקטורה של המערכת, הגדרת יחסי גומלין בין החלקים המבצעים לבין החלקים המבקרים בתוך המערכת, כתיבת קוד, סימולציה וסינתזה. לרוב נכתב הקוד בעורך פשוט (כגון Emacs) קיימים גם כלים המשלבים מהדר יחד עם כלי כתיבת הקוד. ישנם כלים המאפשרים תכנון באמצעות כתיבת קוד ושילוב תכנון גרפי באותו הפרויקט. כלים אלה מתרגמים תכנון גרפי לקוד VHDL. הקוד לשער AND פשוט ב-VHDL ייראה כך : -- (הערת VHDL) -- ייבוא של std_logic מתוך ספריית IEEE library IEEE; use IEEE.std_logic_1164.all; -- זוהי הישות entity ANDGATE is port ( IN1 : in std_logic; IN2 : in std_logic; OUT1: out std_logic); end ANDGATE; architecture RTL of ANDGATE is begin OUT1 <= IN1 and IN2; end RTL; --מרבב ברמה של שערים לוגיים : X<=(A and S) or (B and (not S)); --המרבב באמצעות חוצץ של מצב שלישי: X <= B when S = '1' else 'Z'; X <= B when S = '0' else 'Z'; -- הבורר יעביר את הכניסה A או B ליציאה X בהתאם לערך של S : X <= A when S = '1' else B; -- דרך נוספת על ידי שימוש ב with : with S select X <= A when '1', B when others; -- כתהליך שיתעדכן עם כל שינוי באחד הכניסות בעזרת case: process(A,B,S) begin case S is when '1' => X <= A; when others => X <= B; end case; end process; -- כנ"ל ללא case: process(A,B,S) begin if S = '1' then X <= A; else X <= B; end if; end process; -- 4:1 MUX : process(A,B,C,D,S) begin case S is when "00" => X <= A; when "01" => X <= B; when "10" => X <= C; when others => X <= D; end case; end process; Verilog VLSI FPGA זסלבסקי עמוס, לימוד שפת VHDL לסימולציה וסינתזה, הוצאת שורש, 2007 כהן שאול, תיכון חומרה בעזרת - VHDL, האוניברסיטה הפתוחה, 2006, דף הספר באתר האוניברסיטה רפאלוביץ דוד, תיכון חומרה ניסויים ופרויקטונים ב - VHDL, האוניברסיטה הפתוחה, 2004, דף הספר באתר האוניברסיטה אייל חברבר, שפת תיאור חומרה VHDL, הוצאת שורש, דף הספר באתר ההוצאה מדיה וקבצים בנושא VHDL בוויקישיתוף אתר האינטרנט הרשמי של VHDL (באנגלית) הקורס בטכניון (באנגלית) אתר של אוניברסיטת המבורג (באנגלית) דוגמה נוספת מימוש מונה ב־VHDL 1076-1987 - IEEE Standard VHDL Language Reference Manual, https://ieeexplore.ieee.org/, ‏31 במרץ 1988 David R. Coelho, The VHDL Handbook, Springer Science & Business Media, 1989-06-30, ISBN 978-0-7923-9031-2. (באנגלית)