زبان های توصیف سخت افزار (HDL)
HDL یا Hardware Description Language به نوعی از برنامه نویسی گفته می شود که برای مدلسازی و طراحی سخت افزار های سریع و دقیق که از نظر سخت افزاری ونرم افزاری بهینه تر هستند به کار می رود. امروزه دنیای برنامه نویسی جزئی جداناپذیر از دنیای تکنولوژی شده و به نوعی پله های ترقی تکنولوژی از پایه های برنامه نویسی استفاده میکند. علاوه بر این ها انواع پروژه های DIY و حتی استارت آپ ها از برنامه نویسی به عنوان المان اصلی کمک می گیرند. عموما وقتی سخن از برنامه نویسی به میان می آید بیشتر جنبه نرم افزاری آن مورد توجه و قابل مشاهده است. در این پست می خواهیم از جنبه دیگری به این تخصص نگاه کنیم. در برنامه نویسی های نرم افزاری تمرکز بر روی دستورالعمل ها است و در نهایت اجرای برنامه و گرفتن خروجی و کمتر به مسئله بهینه سازی سخت افزاری یا استفاده مناسب از تمامی امکانات سخت افزار توجه می شود و عموما در هر سخت افزاری قابل اجرا هستند. مدت های نسبتا زیادی بعد از بوجود آمدن زبان های برنامه نویسی نرم افزاری ضعف در بهینه سازی و محدودیت در طراحی باعث شد تا نوعی از برنامه نویسی به نام برنامه نویسی سخت افزاری ظهور کند. 25 سال پیش با ورود این شاخه از برنامه نویسی به دنیای تکنولوژی توجه همه طراحان را به خود جلب کرد. برنامه نویسی سخت افزاری تفاوت زیادی با برنامه نویسی نرم افزاری ندارد و تقریبا پایه یکسانی دارند فقط در برنامه نویسی سخت افزاری المان های سخت افزاری نیز قابل تغییر و تعریف هستند.
دو زبان عمده مورد استفاده در حوزه برنامه نویسی سخت افزاری VHDL و Verilog می باشد که VHDL توسط وزارت دفاع ایالات متحده بوجود آمد که تقریبا کامل ترین و بهترین زبان توصیف سخت افزاری است و در صنایع نظامی و مخابراتی کاربردش به وضوح مشاهده می شود و Verliog به نوعی یک زبان متولد شده در آزمایشگاه است. جنگنده F22 نمونه موفقیت آمیزی از قدرت زبان VHDL می باشد که کل سخت افزار های کنترلی و مخابراتی آن بوسیله این زبان طراحی و ساخته شده است.
زبان های برنامه نویسی فوق از نوع طراحی دیجیتال هستند. زبان های برنامه نویسی سخت افزاری زمانی بیشتر توجه همه را به خود جلب کردند که توانایی طراحی آنالوگ را امکان پذیر ساختند.
اکنون با ذکر مثال های ساده تری نحوه کارکرد این زبان برنامه نویسی را روشن تر می کنیم. اکثر شما با میکروکنترلر ها آشنایی دارید و با آنها کار کرده اید. هر کدام ساختار و معماری خاص خود را دارند و بوسیله کامپایر و زبان مشخصی قابل استفاده هستند. حالا فرض می کنیم به ما یک میکروکنترلری داده اند که علاوه بر این که می توانیم امکانات و ویژگی های آن را مشخص کنیم حتی توانایی تعیین این که هر پایه چه کاری کند را خواهیم داشت. یعنی یک میکروکنترلر خام که کوچکترین ویژگی های آن به دست ما تعیین می شود و این به معنی کنترل کامل سخت افزار می باشد.
در عمل ابتدا از تراشه هایPLD و CPLD استفاده می شد ولی بعدها با پیشرفت در این حوزه تراشه های جدیدی به نام FPGA پا به میدان گذاشتند که حجم زیادی از گیت ها را شامل می شدند و دارای حافظه فلش با حجم زیاد بودند. FPGA یا Field Programmable Gates Array یک تراشه خام محسوب می شود که اجزای متشکل آن تعداد زیادی المان دیجیتال هست که این المان ها می توانند گیت یا حتی مجموعه ای از مالتی پلکسر ها باشند.
هر کدام از این HDL ها کامپایلر و نرم افزار برنامه نویسی مشخصی دارند به طور مثال برای Verilog می توان از Quartus استفاده کرد و برای VHDL از ISE که هرکدام از پرکاربردترین نرم افزار ها در حوزه طراحی دیجیتال می باشند.
در حوزه طراحی آنالوگ نیز تراشه هایی به نام FPAA بوجود آمده اند که از آنها برای طراحی انواع فیلتر و مدارات مقاومتی می توان استفاده کرد