زبان توصيف سخت افزارVHDL
VHDL زبان توصیف سخت افزاری برای طراحی مدارات دیجیتال می باشد. و مانند سایر زبانهای برنامه نویسی دارای دستورات خاص خود می باشد.
برای یادگیری زبان VHDL دانستن جبر بول و آشنایی با مدارات منطقی ضروری است. لذا ما فرض می کنیم که دوستان با دو مقوله فوق آشنایی کافی دارند.

و اما یادگیری VHDL چه مزایایی دارد. قبل از هرچیز باید گفت که هدف از یادگیری VHDL خصوصاْ در ایران طراحی مدارات دیجیتال و پیاده سازی در FPGA می باشد هرچند مدار طراحی شده را بصورت ASIC (آی سی خاص) نیز می توان پیاده سازی نمود اما غالباْ مدارات دیجیتال با هدف پیاده سازی در FPGA طراحی می شوند.

برای یادگیری VHDL در این مقطع نیاز به نرم افزاری برای شبیه سازی مدارات طراحی شده خواهیم داشت. نرم افزارهای زیادی برای این منظور وجود دارند اما بهترین و آسانترین انها Active-HDL می باشد که نتایج شبیه سازی را بصورت شکل موجهای گرافیکی نمایش می دهد. و در عین حال کار کردی آسان دارد.
تاريخچه
نام VHDL شامل دو بخش V و HDL به معنیVHSIC : Very High Speed Integrated Circuits
HDL : Hardware Description Language
استاندارد IEEE 1076-1987
استاندارد IEEE 1076-1993
Verilog و ABEL (Advanced Boolean Equation Language )
ویژگی ها
HDLها ذاتا موازي (همروند) هستند
 ترتيب دستورات مهم نيست
 مبتني بر رخداد
 امكان استفاده از دستورات ترتيبي را نيز دارد
اهداف اساسی
 مستند سازي : نگهداری، ارائه، تبادل، استفاده مجدد
 شبيه سازي : بررسی نتایج و ارزیابی
 سنتز : با هدف پیاده سازی در FPGA یا بصورت ASIC
اجرا= شبیه سازی

نیازمندی ها
حداقل نیازمندی ها برای یادگیری زبان VHDL
 دانستن جبر بول و آشنایی با مدارات منطقی
 داشتن ابزار CAD مناسب

توصیف رفتاری و ساختاری
سه حوزه رفتاری، ساختاری و هندسی (فیزیکی) داریم
VHDL : امکان توصیف طرح بصورت رفتاری و ساختاری
نکته: توصیف رفتاری نسبت به توصیف ساختاری از سطح انتزاع بالاتری برخوردار است

توصیف رفتاری :

 رفتار سیستم چیست؟
 رابطه بین سیگنال های ورودی و خروجی
توصیف رفتاری :
 انتقال ثبات یا Data Flow (معمولا بر اساس جملات همروند)
 الگوریتمی Algorithmic(با استفاده از دستورات ترتیبی)
مثال ساده
مدار هشدار باز بودن کمربند و درب خودرو
Warning = Ignition_on AND (Door_open OR Seatbelt_off)
Ignition_on : سویچ در جایش قرار گرفته
Door_open : باز بودن درب خودرو
Seatbelt_off : کمربند بسته نشده
Warning : خروجی هشدار به سرنشین خودرو
توصیف ساختاری :
 مجموعه ای از مولفه ها (دروازه ها)
 و اتصالات بین آنها

توصیف ساختاری :
 مشابه شماتیک

 نزدیک به تحقق فیزیکی سیستم
ساختار كلي يك فايل VHDL
يك توصيف VHDL شامل
 Entity declaration
 Architecture body

تعريف entity در حقیقت معرفی سیگنالهای ورودی و خروجی است
architecture رابطه بین سیگنالهای ورودی و خروجی است
(عملكرد/ساختار)
بخش Entity
NAME_OF_ENTITY : يك شناسه اختياري
signal_names : سيگنالهاي ورودي يا خروجي
mode :یکی از موارد (in،out ،buffer ، Inout )
mode

In :سيگنال ورودي
out : سيگنال خروجي (فقط توسط یک entity دیگر قابل استفاده)
buffer : خروجي كه مي تواند در داخل entity نيز استفاده شود
Inout : سيگنا ل دوطرفه (ورودي / خروجي)
Type
نوع سيگنال را مشخص مي كند ( استاندارد يا User Defined)
 Bit : مي تواند مقدار صفر يا يك داشته باشد
 Bit_vector : برداري از مقادير بيتي است
 Boolean : مي تواند مقدار true يا false بگيرد.
 Integer : عدد صحيح
 Real : عدد حقيقي
 Character : هركاراكتر قابل چاپ
 Time : برا ی نمايش زمان بكار مي رود.
مثال Entity
تعريف entity برای يك نيم جمع كننده

بخش Architecture
توصیف سیستم بصورت رفتاری یا ساختاری است
قالب كلي تعريف Architecture به شكل زير است

مدل رفتاري (Behavioral model)

مستقل از ساختار داخلی ارتباط بین ورودی ها و خروجی ها بصورت عملیاتی توصیف می شود .
مثال(۱): AND دو ورودی

مدل رفتاري (Behavioral model)

مثال(۱): XOR دو ورودی

هم روندي
يكي از خصوصيات زبانهاي توصيف سخت افزار
دستورالعملهاي انتساب سيگنال ( <= )
وقتي اجرا مي شود كه يك سيگنال در سمت راست جمله مقدارش تغييركند
تغيير در مقدار يك سيگنال را يك رخداد مي ناميم
VHDL يك زبان مبتني بر رخداد
در مثال(۲) ترتيب نوشتن جملات مهم نيست. يعني مي توان جملات x و y و z را بترتيب دلخواه جابجا كرد.
زمانبندي رخداد ها
مكانيزم ايجاد تاخير در انتساب مقدار جديد به سيگنال سمت چپ
با استفاده از كلمه كليدي after
مدل كردن تاخیر های یک مدار واقعی را مدل
اين قابليت شبيه سازي مدار را به واقعيت نزدیک تر مي كند
مثال
توصيف رفتاري مدار Half Adder

طراحي سلسله مراتبي
در مدلسازي ساختاري
 هر Entity می تواند بعنوان يك مولفه در توصيف Entity ديگر بكار رود
 اين امر مي تواند در سطوح مختلف تكرار شود
طراحي سلسله مراتبي موجب كاهش پيچيدگي در طراحي مدارات بزرگ مي شود
معمولا در طرح هايی که با تکرار قابل گسترش اند كاربرد دارد

جمع كننده چهار بيتي
sum = (A  B)  C
carry = AB + C(A  B)

چند نکته
استفاده از نام پورت مشترک برای Entity های متداخل مجاز است
چون Cout بصورت خروجی تعریف شده نمیتواند بعنوان ورودی استفاده شود
چون c(4) یک سیگنال داخلی است میتواند بعنوان ورودی استفاده شود.
میتواند بخشی از توصیف طرح ساختاری و بخشی ر
كتابخانه امكان استفاده مشترك از موارد از پیش تعریف شده را فراهم می کند. مانند
data type
component
Function
Procedure
هر کتابخانه شامل تعدادی بسته است
نوع std_logic در بسته ieee.std_logic_1164 در كتابخانه ieee تعريف شده است
library ieee;
use ieee.std_logic_1164.all;
عناصر گرامري زبان VHDL
شناسه ها
كلمات كليدي (رزرو شده)
اعداد
كاراكترها رشته ها و رشته هاي بيتي
شناسه ها
كلماتي براي نام گذاري مولفه های مختلف مدل VHDL
 نام سيگنال هاي ورودي
 نام سیگنال های خروجي
 نام entity
 نامarchitecture

قوانين نامگذاری شناسه های اصلی
نام شناسه اختياري است
فقط شامل حروف الفبا و ارقام (A..Z و a..z و۰٫٫۹) و كاراكتر ‘_’
اولين كاراكتر حتما بايد از حروف الفبا باشد
آخرين كاراكتر نبايد ‘_’ باشد
دو كاراكتر ‘_’ دنبال هم غير مجاز
به حروف بزرگ و كوچك حساس نيست And2

) =AND2 = and2)
يك شناسه هر طولي مي تواند داشته باشد
مثال شناسه صحیح:X10 ، x_10 ، My_gate1
مثال شناسه غلط: _X10 ، my_gate@input، gate-input
قوانين گسترش یافته تعریف شناسه های
بین دو عدد ‘\’ قرار می گیرند
به حروف بزرگ و كوچك حساس
كلمات رزرو شده و شناسه هاي اصلي در شناسه های گسترش مجاز و بعنوان یک شناسه متفاوت در نظر گرفته می شود
بين هر دو ‘\’ استفاده از هر كاراكتري و با هر ترتيبي مجاز است
شناسه اي بنام BUS:\data را بايد بنويسيم \BUS:\\data\
درنسخه VHDL-93 تعريف شده است ولي درنسخه VHDL-87 شناخته شده نيست
مثال صحیح: Input، \Input\ ، \input#1\ ، \Rst\\as\
كلمات كليدي (رزرو شده)

شناسه هاي كه بوسيله سيستم براي کار خاص استفاده می شود
مثل in، out، or، and، port، map، end و غيره
در شناسه توسعه يافته مجاز است(\end\)
مراجعه کنید به جدول ۴-۱ (كليه كلمات رزرو شدة VHDL )
اعداد