השוואת מימוש חצי מחבר ע”י verilog ו vhdl

Posted on March 27, 2010

3


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

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

על רגל אחת ורילוג ו vhdl הנן שפות סינטזה לתכנון ובדיקת מעגלים לוגיים. אנו יכולים לכתוב את המעגל הדרוש בשפת קוד ולאחר הידור לקבל תוצר כמעגל לוגי, לבדוק על ידי סטימיולאציה (הכנסה של ערכים ובדיקת תוצר) ובחלק מהמקרים לממש על ידי לוח מתאים (ע”ע altera, Xilinx וכו’).

הצגת קוד חצי מחבר על ידי vhdl

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

library ieee;

use ieee.std_logic_1164.all;

entity half_adder is

port (a,b     : in std_logic;

sum,c_out   : out std_logic);

end half_adder;

architecture ha of half_adder is

begin

/* this line equals to a xor b */

sum <=(not a and b) or (a and not b);

c_out <= a and b;

end ha;

הצגת קוד חצי מחבר על ידי verilog

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

module half_adder (sum,c_out,a,b);

input a,b;

output c_out, sum;

xor (sum,a,b);

and (c_out,a,b);

endmodule

השערים שניתקבלו

כמה מילות סיכום

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

Posted in: Electronic