מה ההבדל בין קוד התנהגותי למבני ב- VHDL?


תשובה 1:

קוד VHDL התנהגותי מיועד למשתמשים לומר לסינתיסייזרים (Xilinx ISE, Quartus II, מהדר RTL וכו ') לסנתז מעגלי לוגיקה דיגיטליים כלשהם כדי לבצע פונקציה ספציפית בהתאם להתנהגויות שנכתבו בקוד. לפיכך, הסינתיסייזרים יקבעו כיצד נראה המעגל מההתנהגות של הקוד ולמשתמשים אכפת רק מפונקציונליות הקוד.

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

לדוגמה, אתה רוצה ליישם תוספת של 2 מספרים A ו- B. באמצעות קוד התנהגות, פשוט כתוב: S <= A + B; לאחר מכן, סינתיסייזרים יסנתזו או יבחרו את כל המבנים שיבצעו את התוספת. זה יכול להיות תוספים סדרתיים רגילים או כל דבר אחר לתוספת לבצע. באמצעות קוד מבני, תעצב את המבנה שברצונך להחיל כדי לבצע את התוספת. לדוגמה, כדי לשפר את מהירותו של האומר, אתה מעצב מבט נשיאה קדימה Adder ואז אתה כותב את הקוד המבני עבורו.

בדוק את הדוגמא המלאה VHDL התנהגותי ומבני עבור adder מלא: קוד VHDL עבור adder מלא


תשובה 2:

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

יש חפיפה קלה ב- Verilog מכיוון שקוד ההתנהגות עבור אלמנטים פרימיטיביים נמצא ב- C ומובנה בסימולטור, ו- UDPs הם גרסה פשוטה יותר מונעת טבלה של קוד ההתנהגות.