طراحی مدارات دیجیتال از 25 سال گذشته تا کنون بسیار متحول گشته است، مدارهای دیجیتال ابتدایی که به سختی میتوان نام سختافزار را بر روی آنها گذاشت، با لامپهای خلا و تعداد اندکی ترانزیستور ساخته میشدند.
با ظهور تکنولوژی مدار مجتمع، امکان پیادهسازی مدارات دیجیتال بر روی یک تراشه فراهم گردید. اولین نسل مداراتمجتع یا IC ها، SSI سر نام Small Scale Integration نام دارد که در این نسل تراشهها با تعداد بسیار اندکی ترانزیستور و گیتهای منطقی ساخته میشدند، پس از آن حجم مجتمع سازی در نسلهای MSI سر نام Medium ScaleIntegration و LSI سر نام Large Scale Integration به سرعت گسترش یافت و به طوری که امکان مجتمع سازی هزاران گیت منطقی، در داخل یک تراشه برای طراحان سختافزار فراهم آمده بود.
در این مرحله روند طراحی بسیار پیچیده و دشوار گردیده بود و طراحان نیاز داشتند تا بخشی از مراحل طراحی را به کامپیوتر بسپارند. به کمک ابزارهای طراحی دیجتال کامپیوتری یا CAD Toolها طراحان توانستند کامپیوتر را در فرایند طراحی اجزای خود سهیم سازند.
نمایی از یک طراحی بسیار پیچیده
با پیشرفت نسل VLSI سر نام Very Large Scale Integration امکان طراحی مدارات مجتمع با میلیونها ترانزیستور فراهم گشته است(مانند تصویر بالا). به دلیل پیچیدگی بسیار زیاد این مدارات ،طراحی و ارزیابی عملکرد آنها به روشهای سنتی دیگر میسر نیست، به همین خاطر ایدهای جهت توصیف طرح به یک زبان قابل فهم برای کامپیوتر مطرح گردید تا زمینه حضور کامپیوتر در پروسه طراحی یک مدار VLSI گستردهتر گشته و مسائل طراحی و ارزیابی در پروسه طراحی یک سختافزار جدید، با الگوریتمهای از پیش تعریف شده، پردازش شوند.
زبان توصیف سختافزار چیست ؟
HDL سر نام Hardware DeionLanguage ، به خانوادهای از زبانهای برنامهنویسی گفته میشود که جهت مدلسازی عملکرد بخشی از یک سختافزار به کار گرفته میشوند. توصیف سختافزار به کمک HDLها به دو شکل کلی امکان پذیر است:
روش اول:
مدلسازی ساختاری سختافزار، که با تشرح ارتباطات خارجی، اجزای تشکیل دهنده داخلی و اتصالات میانها، جهت توصیف ساختار و اجزای تشکیل دهنده یک سختافزار به کار برده میشود.
روش دوم:
مدلسازی رفتاری سختافزار، جهت توصیف انتزاعی رفتار یک سختافزار بدون در نظر گرفتن جزئیات ساختار آن میباشد که بدون لحاظ کردن اجزای تشکیل دهنده، به توصیف خروجیهای مدل بر اساس تابعی از ورودیهای آن میپردازد. مدلسازی رفتاری یک سختافزار در سطوح مختلفی از انتزاع صورت میپذیرد که سطوح بالاتر رفتار سختافزار را به صورت چکیدهتر با جزئیات کمتری نسبت به سطوح پایین تر انتزاع، توصیف میکنند.
طراحی یک سختافزار بر اساس طرح شماتیک مداری که در گذشته از آن به وفور استفاده میشد، با اینکه شامل اطلاعات بسیار کاملی در مورد سختافزار و اجزای تشکیل دهنده آن بود، اما در توصیف طرحهای بزرگ به خاطر حجم بسیار زیاد اجزای تشکیل دهنده طرح بسیار پیچیده گشته و حجم مستندات آن خارج از کنترل میگشت. همچنین در روش سنتی طراحی از ایدههای مطرح شده در طرح هیچ گونه حفاظتی به عمل نمیآمد و امکان سواستفاده از آنها توسط اشخاصی که طرح به آنها فروخته میشود، وجود داشت.
نمایی از یک سختافزار مدرن، طراحی شده به کمک زبانهای توصیف سختافزار
در طراحی یک سختافزار با توصیف متنی آن به کمک یک زبان برنامهنویسی، هم حجم مستندات طرح کاهش یافته و هم امکان حفاظت ایدههای طرح به وجود آمده است. علاوه بر این توصیف متنی یک سختافزار به کمک HDLها برای کامپیوتر قابل فهمتر از طرح شماتیکی آن سختافزار با اطلاعات تصویری میباشد.
مهمترین وجه تمایز یک زبان توصیف سختافزار با یک زبان برنامهنویسی متداول مانند C ، در نحوه اجرای خطکدها میباشد، در زبانهای برنامه نویسی متداول مانند C خط کدهای نوشته شده به ترتیب از بالا به پایین اجرا شده تا در نهایت به اتمام برسند، در حالی که در زبانهای توصیف سختافزار اجرای دستورات ماهیت ترتیبی و سریال نداشته و تمام خطکدها به صورت موازی و همزمان اجرا میشوند، در واقع برای توصیف سختافزاری که ممکن است از چندین بخش ساخته شده باشد که خروجی آنها به صورت همزمان تغییر میکند، زبانهای برنامهنویسی متداول با ماهیت اجرای ترتیبی خود کاربردی ندارند.