هر کد VHDL از سه بخش اصلی تشکیل میشود:
1. کتابخانهها (Libraries):
برای استفاده از توابع و بستههای آماده در کد، کتابخانهها در ابتدای کد وارد میشوند.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; |
- IEEE: یک کتابخانه استاندارد برای طراحی مدارهای دیجیتال است.
- STD_LOGIC_1164: بستهای که انواع داده منطقی (0, 1, Z, X) را تعریف میکند.
2. Entity (واحد موجودیت):
در بخش Entity، ورودیها و خروجیهای مدار تعریف میشوند.
entity AND_Gate is port( A, B : in STD_LOGIC; -- ورودیها Y: out STD_LOGIC -- خروجی ); end AND_Gate; |
- A و B: دو ورودی منطقی
- Y: خروجی منطقی
- STD_LOGIC: نوع دادهای برای نمایش سیگنالهای دیجیتال
3. Architecture (معماری):
در این قسمت، رفتار یا ساختار مدار تعریف میشود.
architecture Behavioral of AND_Gate is begin Y <= A and B; end Behavioral |
- Behavioral: نحوه عملکرد گیت AND را نشان میدهد.
- Y <= A and B: گیت AND زمانی "1" میدهد که A و B هر دو "1" باشند.
انواع مدلسازی در VHDL
VHDL سه روش مدلسازی دارد که هر کدام برای موقعیتهای خاصی کاربرد دارند:
1. Behavioral (رفتاری):
- بر توصیف رفتار سیستم تمرکز دارد.
- برای مدلسازی مدارهای پیچیده مناسب است.
- شبیهسازی سریعتر، اما بهینهسازی کمتر.
2. Structural (ساختاری):
- سیستم را به اجزای کوچکتر تقسیم کرده و نحوه اتصال آنها را نشان میدهد.
- برای طراحی در سطح گیت یا ماژول مناسب است.
3. Dataflow (جریان داده):
- براساس معادلات منطقی و رابطههای ریاضی است.
- برای مدارهای ترکیبی (Combinational) مانند جمعکنندهها مناسب است.