دانشجوی مهندسی کامپیوتر دانشگاه تبریز
تکنولوژی زبان های سخت افزاری
زبان طراحی سختافزار، زبانی مخصوص برای تعریف ساختار و رفتار مدارهای الکترونیکی است. ما با استفاده از این زبانها اتوماسیونهای الکترونیکی، یعنی ماشینهایی که ورردی و خروجیشان برق است، طراحی میکنیم،. برای مثال، انواع ریزپردازندهها، ICها و دستگاههای منطقی برنامه پذیر. زیبایی طراحی این مدارات آنجاست که شما کاملا حس میکنید که یک جریان برق از کجا، به کجا و در چه زمانی برود و گاهی خیال میکنید که خودتان همین الکترونی هستید که مدار را تغذیه میکند. در این مقاله با ما همراه شوید تا بیشتر با این دسته زبانها بیشتر آشنا شوید.
زبانهای طراحی سختافزار از کجا آمدهاند؟
زبانهای طراحی سختافزار به این منظور ساخته شدند که مدارات الکترونیکی در یک محیط مجازی شبیهسازی و تست شوند تا در صورت پیادهسازی اشتباه، خسارت مالی کمتر شود. دو زبان اصلی و معروف این حوزه، Verilog و VHDL هستند که هر چند از نظر رفتار و ساختار با یکدیگر تفاوت دارند ولی برای کسی که یکی از این دو زبان را یاد گرفته باشد، یادگیری زبان دیگر کار بسیار راحتی خواهد بود.
هرچند اولین زبان طراحی سختافزار در اواخر سال ۱۹۶۰ معرفی شد اما اولین زبان مدرن که Verilog نام داشت توسط شرکت Gateway Design Automation در سال 1985 به بازار عرضه شد. پنج سال بعد شرکت Cadence Design Systems نسخه اولیه را خرید و در سالهای 1995، 2001 و 2005 تغییراتی روی آن اعمال کرد تا در نهایت، آخرین نسخه آن به نام System Verilog عرضه کرد. نسخه پایانی شباهت زیادی به زبان C++ در قسمت طراحی شیگرا و garbage collector (آشغال جمعکن) دارد.
دومین زبان اصلی طراحی سختافزار یعنی VHDL در سال ۱۹۸۷ توسط وزارت دفاع آمریکا و به صورت انحصاری برای سیستمهای داخلی هواپیماهای جنگی و ادوات جنگی، از روی زبان Ada، گسترده شدهی زبان پاسکال طراحی شد.
زبان طراحی سختافزاری چگونه کار میکند؟
یک زبان طراحی سخت افزاری شبیه زبانهای برنامهنویسی دیگر مانند C و C++ است؛ متنی است که ساختارهای تعریف و بلوکهای موازی و سری دارد، اما یک تفاوت اصلی آن با دیگر زبانها، وجود معیار خیلی مهم زمان است. در زبانهایی که برای طراحی سختافزار به کار میرود، باید همهی کارها با کلاک ساعت همگام شود.
یک نمونه از زبان VHDL :
این زبانها نیازمند یک قسمت سنتز منطقی برای طراحی سختافزاریاند. این قسمت به منظور استفاده از ترانزیستورها و گیتها طراحی شده و در مرحله آخر یک فایل RTL Design سنتزشده تولید میکند که نشان دهندهی شماتیک لایهای مدار است. سوال اصلی در طراحی این بخش این است که تعداد ترانزیستور و ابعاد شماتیک چه مقدار باشد تا مدار بهینه شود. هر چند چالشهای دیگر مانند سرعت پردازش ، میزان برق مصرفی و هزینه نیز گریبانگیر مهندسان است.
چگونه یک مدار الکترونیکی با این زبانها طراحی کنیم؟
در ابتدای طراحی یک سیستم سخت افزاری باید فلوچارت و دیاگرام حالت را طراحی کنید و پس از یافتن بهینهترین و درستترین راه طراحی، شروع به نوشتن کد نمایید، چرا که بهینهسازی معیار زمان، ورودی و خروجیهای سخت افزاری کار بسیار سخت است و به تجربه و مهارت نیاز دارد و امکان ندارد در بار اول برنامه بدون خطا اجرا شود.
زمانی که نوبت بهDebugging میرسد، مشکل ورودی دادن و خروجی گرفتن نمایان میشود، زیرا ورودی یک مدار مانند زبانهای کامپایلری دیگر مثل C نیست، بلکه به یک مدار شبیهساز به نام Test Benchنیاز است، مداری که شبیه برنامه اصلی نوشته میشود و سپس ورودیها با استفاده از تاخیرهای زمانی، به مدار داده و خروجیها را دریافت میشود.
دو حالت کلی سری یا موازی بودن در طراحی سخت افزار وجود دارد که باید در نوشتن کد رعایت شود و اگر نه برنامه جواب درست به ما نمیدهد. به ویژه در طراحی ماژولهایی که ورودی و خروجیشان به یکدیگر ارتباط دارند، مثلا ماژولهای که ورودیشان در زمان اجرا از خروجی یک قسمت دیگر مدار تامین میشود باید به صورت سری و ترتیبی طراحی شوند و تا مقدار خروجی ماژول قبلی، آماده نشده است، ماژول بعدی اجرا نشود. در همین حین امکان دارد چند ورودی یک ماژول از خروجی چندین ماژول دیگر استفاده کنند، در این حالت باید اصول موازی کار کردن رعایت شود.
در پایان توجه داشته باشید که نگاه سختافزاری و نرمافزاری خیلی متفاوت هستند و شاید کسی که در رشتهی نرمافزار مهارت بسیار زیادی داشته باشد، در سخت افزار نتواند طراحی درست انجام دهد زیرا که کاملا دو دنیای متفاوت اما یک زبان مشترک هستند!
مطلبی دیگر از این انتشارات
فاصلهگذاری اجتماعی تا 2022 طول خواهد کشید؟
مطلبی دیگر از این انتشارات
هوش مصنوعی در بازی
مطلبی دیگر از این انتشارات
چرا پرسش از هوش مصنوعی برای توضیح خودش، کار را خرابتر میکند؟