تکنولوژی زبان های سخت افزاری

زبان طراحی سخت‌افزار، زبانی مخصوص برای تعریف ساختار و رفتار مدارهای الکترونیکی است. ما با استفاده از این زبان‌ها اتوماسیون‌های الکترونیکی، یعنی ماشین‌هایی که ورردی­‌ و خروجی­‌شان برق است، طراحی می‌کنیم،. برای مثال، انواع ریزپردازنده‌ها، ICها و دستگاه‌های منطقی برنامه پذیر. زیبایی طراحی این مدارات آنجاست که شما کاملا حس می‌کنید که یک جریان برق از کجا، به کجا و در چه زمانی برود و گاهی خیال می‌کنید که خودتان همین الکترونی هستید که مدار را تغذیه می‌کند. در این مقاله با ما همراه شوید تا بیشتر با این دسته زبان‌ها بیشتر آشنا شوید.



زبان‌های طراحی سخت‌افزار از کجا آمده‌اند؟

زبان‌های طراحی سخت‌افزار به این منظور ساخته شدند که مدارات الکترونیکی در یک محیط مجازی شبیه‌سازی و تست شوند تا در صورت پیاده‌سازی اشتباه، خسارت مالی کمتر شود. دو زبان اصلی و معروف این حوزه، Verilog و VHDL هستند که هر چند از نظر رفتار و ساختار با یکدیگر تفاوت دارند ولی برای کسی که یکی از این دو زبان را یاد گرفته باشد، یادگیری زبان دیگر کار بسیار راحتی خواهد بود.

هرچند اولین زبان طراحی سخت‌افزار در اواخر سال ۱۹۶۰ معرفی شد اما اولین زبان مدرن که Verilog نام داشت توسط شرکت Gateway Design Automation در سال 1985 به بازار عرضه شد. پنج سال بعد شرکت Cadence Design Systems نسخه اولیه را خرید و در سال‌های 1995، 2001 و 2005 تغییراتی روی آن اعمال کرد تا در نهایت، آخرین نسخه آن به نام System Verilog عرضه کرد. نسخه پایانی شباهت زیادی به زبان C++ در قسمت طراحی شی‌گرا و garbage collector (آشغال جمع‌کن) دارد.

دومین زبان اصلی طراحی سخت‌افزار یعنی VHDL‌ در سال ۱۹۸۷ توسط وزارت دفاع آمریکا و به صورت انحصاری برای سیستم‌های داخلی هواپیماهای جنگی و ادوات جنگی، از روی زبان Ada، گسترده شده­­ی زبان پاسکال طراحی شد.

زبان طراحی سخت‌افزاری چگونه کار می‌کند؟

یک زبان طراحی سخت افزاری شبیه زبان‌های برنامه‌نویسی دیگر مانند C و C++ است؛ متنی است که ساختارهای تعریف‌ و بلوک‌های موازی و سری دارد، اما یک تفاوت اصلی آن با دیگر زبان‌ها، وجود معیار خیلی مهم زمان است. در زبان‌هایی که برای طراحی سخت‌افزار به کار می‌رود، باید همه‌ی کارها با کلاک ساعت همگام شود.

یک نمونه از زبان VHDL :

شباهت بسیار با زبان قدیمی Pascal و بلوک‌های مشخص شده با اسم مشخص که خواندن برنامه را ساده‌تر میکند.
شباهت بسیار با زبان قدیمی Pascal و بلوک‌های مشخص شده با اسم مشخص که خواندن برنامه را ساده‌تر میکند.


این زبان­ها نیازمند یک قسمت سنتز منطقی برای طراحی سخت‌افزار‌ی‌اند. این قسمت به منظور استفاده از ترانزیستور­ها و گیت­ها طراحی شده و در مرحله آخر یک فایل RTL Design سنتزشده تولید می‌کند که نشان دهنده­ی شماتیک لایه‌ای مدار است. سوال اصلی‌ در طراحی این بخش این است که تعداد ترانزیستور و ابعاد شماتیک چه مقدار باشد تا مدار بهینه شود. هر چند چالش­های دیگر مانند سرعت پردازش ، میزان برق مصرفی و هزینه نیز گریبان‌گیر مهندسان است.

چگونه یک مدار الکترونیکی با این زبان‌ها طراحی کنیم؟

در ابتدای طراحی یک سیستم سخت افزاری باید فلوچارت و دیاگرام حالت را طراحی کنید و پس از یافتن بهینه­ترین و درست­ترین راه طراحی، شروع به نوشتن کد نمایید، چرا که بهینه‌سازی معیار زمان، ورودی و خروجی‌های سخت افزاری کار بسیار سخت است و به تجربه و مهارت نیاز دارد و امکان ندارد در بار اول برنامه بدون خطا اجرا شود.

زمانی که نوبت بهDebugging می‌رسد، مشکل ورودی دادن و خروجی گرفتن نمایان می‌شود، زیرا ورودی یک مدار مانند زبان‌های کامپایلری دیگر مثل C نیست، بلکه به یک مدار شبیه‌ساز به نام Test Benchنیاز است، مداری که شبیه برنامه‌ اصلی نوشته می‌شود و سپس ورودی‌ها با استفاده از تاخیر­های زمانی، به مدار داده و خروجی­ها را دریافت ‌می‌شود.

یک نمونه از تست گرفته شده از یک سیستم PLA
یک نمونه از تست گرفته شده از یک سیستم PLA


دو حالت کلی سری یا موازی بودن در طراحی سخت افزار وجود دارد که باید در نوشتن کد رعایت شود و اگر نه برنامه جواب درست به ما نمی‌دهد. به ویژه در طراحی ماژول‌هایی که ورودی و خروجی­‌شان به یکدیگر ارتباط دارند، مثلا ماژول‌های که ورودی‌شان در زمان اجرا از خروجی یک قسمت دیگر مدار تامین می‌شود باید به صورت سری و ترتیبی طراحی شوند و تا مقدار خروجی ماژول قبلی، آماده نشده است، ماژول بعدی اجرا نشود. در همین حین امکان دارد چند ورودی یک ماژول از خروجی چندین ماژول دیگر استفاده کنند، در این حالت باید اصول موازی کار کردن رعایت شود.

در پایان توجه داشته باشید که نگاه سخت‌افزاری و نرم‌افزاری خیلی متفاوت هستند و شاید کسی که در رشته‌ی نرم‌افزار مهارت بسیار زیادی داشته باشد، در سخت افزار نتواند طراحی درست انجام دهد زیرا که کاملا دو دنیای متفاوت اما یک زبان مشترک هستند!