زبان توصیف سخت‌افزار

**زبان توصیف سخت‌افزار**  در الکترونیک، یک زبان تخصصی کامپیوتر برای توصیف ساختار و رفتار مدارهای الکترونیکی و اغلب مدارهای منطقی دیجیتال است.

زبان توصیف سخت‌افزار قادر به توصیف دقیق و رسمی از یک مدار الکترونیکی است که اجازه تجزیه و تحلیل خودکار و شبیه‌سازی یک مدار الکترونیکی را می‌دهد. همچنین اجازه سنتز توصیفHDL به یک لیستنت (مشخصات قطعات الکترونیکی فیزیکی و چگونگی اتصال آن‌ها به همدیگر) را می‌دهد که می‌تواند برای تولید مجموعه‌ای از ماسک‌ها و ایجاد یک مدار یکپارچه مورد استفاده قرار گیرد.

یک زبان توصیف سخت‌افزار بسیار شبیه به زبان برنامه‌نویسی می‌باشد، مثل C که یک توصیف متنی شامل عبارت، بیانیه‌ها و ساختارهای کنترل است. یکی از مهم‌ترین تفاوت‌ها بین اکثر زبان‌های برنامه‌نویسی و HDLها دقیقاً شامل مفهوم زمان است. HDLها بخش جدای ناپذیر از سیستم‌های اتوماسیون طراحی الکترونیکی (EDA)، به ویژه برای مدارات پیچیده مانند مدارات یکپارچه برنامه‌های خاص، میکروپروسسورها و دستگاه‌های منطقی قابل برنامه‌ریزی هستند.

## انگیزه
با توجه به انفجار پیچیدگی مدارهای الکترونیکی دیجیتال از سال ۱۹۷۰(قانون مور را ببینید) طراحان مدار به یک توصیف منطق دیجیتال جهت ارائه در سطح بالا جدا از یک تکنولوژی خاص الکترونیکی مانند CMOS یا BJT، نیاز پیدا کرده‌اند.HDLها برای پیاده‌سازی سطح انتزاعی از انتقال رجیستر، مدلی از جریان داده و زمان یک مدار ایجاد شده‌اند.

دو زبان عمده توصیف سخت‌افزار وجود دارد وی‌اچ‌دی‌ال (VHDL) و VERILOG. تفاوت‌هایی بین توصیف جریان داده و رفتار و ساختار آن‌ها وجود دارد. به‌طور مثال جریان داده‌ای از VHDL:
```vhdl
library iEEE;
use iEEE.STD_LOGIC_1164.ALL;
use iEEE.STD_NUMERIC_STD.ALL;
entity not1 is
  port(a:in STD_LOGIC;
       b:out STD_logic);
end not1;
architecture behavioral of not1 is
begin
  b <= not a;
end behavioral;
```


## ساختار HDL
HDLها عبارات استاندارد مبتنی بر متن از ساختار سیستم‌های الکترونیکی و رفتار آن‌ها در طول زمان هستند. HDL مانند زبان‌های برنامه‌نویسی همزمان، شامل نحو و معناشناسی و نمادهای صریح برای بیان همزمانی می‌باشد. در مقابل اکثر زبان‌های برنامه‌نویسی نرم‌افزار، HDLها شامل یک مفهوم صریح و روشن از زمان که ویژگی اصلی سخت‌افزار است، می‌باشند. زبان‌هایی که تنها ویژگی آن بیان همزمانی مداری بین سلسه مراتبی از بلوک‌های رده‌بندی مناسب می‌باشد به عنوان زبان‌های لیستنت برای طراحی از طریق کامپیوتر برق CAD)) مورد استفاده قرار می‌گیرد.

HDL می‌تواند برای بیان طراحی در معماری ساختار و رفتار یا سطح انتقال ثبات به منظور عملکرد مدارات مورد استفاده قرار گیرد. دو مورد آخر سنتز، تصمیم بر لایه بندی گیت‌های منطقی و معماری می‌گیرند. HDLها برای نوشتن مشخصات خاص سخت‌افزار مورد استفاده قرار می‌گیرند. یک برنامه که پیاده‌سازی معانی اساسی حالت‌های زبان و شبیه‌سازی پیشرفت زمان با توانایی مدلسازی یک قطعه از سخت‌افزار را قبل از ساخت فیزیکی، طراحی می‌کند.HDLها قابلیت آن را دارند که توهمی از زبان‌های برنامه‌نویسی بدهند درحالی که آن‌ها دقیقاً به عنوان زبان‌های خاص یا زبان مدلسازی طبقه‌بندی شده‌اند. شبیه‌سازها قادر به حمایت از مدلسازی رویداد گسسته (دیجیتال) و پیوسته در زمان (آنالوگ) هستند و HDLهای هدفمند برای هر دو در دسترس هستند.

### مقایسه با زبان‌های کنترل جریان
ارائه معناشناسی سخت‌افزار با استفاده از زبان‌های برنامه‌نویسی سنتی مانند C++ که بر روی کنترل جریان معناشناسی به عنوان مخالف جریان داده عمل می‌کند، قطعاً امکان‌پذیر است، اگرچه برای اینچنین عملکردی برنامه‌ها باید از قبل با کلاس‌های کتابخانه‌ای پهناور و سنگین تقویت شوند. به‌طور کلی زبان‌های برنامه‌نویسی نرم‌افزار قادر به بیان دقیق زمان نیستند و نمی‌توانند همانند زبان توصیف سخت‌افزار عمل کنند. قبل از معرفی سیستم وریلاگ در سال ۲۰۰۲، مجتمع c++ یکی از معدود روش‌ها برای منطق شبیه‌ساز بود که برای برنامه‌نویسی شی گرا در شناسایی سخت‌افزار استفاده می‌شد. سیستم وریلاگ اولین و عمده‌ترین HDL برای شی گرایی و جمع کردن کاربیج پیشنهاد شد.

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

## تاریخ
به نظر می‌رسد اولین زبان توصیف سخت‌افزار در اواخر ۱۹۶۰ همانند اکثر زبان‌های برنامه‌نویسی ظاهر شده. گوردن بل و الن نیوئل که اولین بار آخرین تأثیر تعریف شده در ۱۹۷۱ در c بود. ساختار متن کامپیوتر این متن مفهوم سطح انتقال ثبات را معرفی می‌کرد و برای اولین بار در زبان isp برای توصیف رفتار دیجیتال تجهیزات شرکت (DEC) PDP-8 استفاده شد.

زبان با معرفی DEC's PDP-16 ماژول سطح انتقال گیت خیلی وسیعتر می‌شود و یک کتاب توصیف برای استفاده.

حداقل دو پیاده‌سازی از زبان isp (ISPL وISPS)پیروی می‌کنند. ISPها برای توصیف روابط بین ورودی و خروجی طراحی منسب می‌باشند و به سرعت توسط تیم‌های تجاری در دسامبر وب همچنین با تعدادی از تیم‌های تحقیقاتی هر دو در ایالات متحده آمریکا و در میان متحدان ان در ناتو به تصویب رسید.

تولیدات RTM هرگز به‌طور تجاری خاموش نشدند وDEC بازاریابی آن‌ها را در اواسط ۱۹۸۰ متوقف کرد. به عنوان تکنیک جدید و VLSI مخصوص بیشتر محبوب شد.

کارجداگانه‌ای در ۱۹۷۹ در دانشگاه کایزر سلاترن منجر به تولید یک زبان به نام کارل شد (کایزرسلاترن زبان انتقال ثبات) که شامل طراحی ویژگی‌های زبان حساب‌ها که از چیپ‌های VLSI و صنف طرح سخت‌افزار ساخت یافته حمایت می‌کرد. این کار نیز پایه زبان تعاملی گرافیک زبان کرل خواهر زبان ABL، که نام یک initialism برای «بلوک دیاگرام زبان» بود.

ABL در اوایل سال 1980 ABL توسط مرکز Studi در یک آزمایشگاه Telecomunicazioni (CSELT) تروینو در ایتالیا اجرا شد منجر به تولید ویرایشگر گرافیکی طراحی VLSI شد. در میانه سال ۱۹۸۰ یک چارچوب طراحی VLSIحول کرل و ABL توسط یک کنسرسیوم بین‌المللی بودجه توسط اتحادیه اروپا به اجرا گذاشت.

## طراحی با استفاده از HDL
یکی از نتیجه دستاوردهای سودمند استفاده از HDL، این است که اکثریت طراحی مدارهای دیجیتال مدرن در حول آن هستند، بسیاری از طراحی‌ها به عنوان یک مجموعه از الزامات یا نمودارهای معماری در سطح بالا آغاز شد. ساختارهای کنترل و تصمیم اغلب در برنامه‌های کاربردی فلوچارت نمونه‌سازی یا در یک ویرایشگر نمودار حالت وارد می‌شوند. روند نوشتن توضیحات HDL بسیار وابسته به طبیعت مدار و ترجیح طراح برای برنامه‌نویسی سبک است.HDL صرفاً «زبان ضبط» است که اغلب با یک توضیحات الگوریتم سطح بالا مانند مدل ریاضی به زبان C++ شروع شده‌است. طراحان اغلب از زبان اسکریپت مانند کرل برای تولید تکراری و اتوماتیک ساختار زبان درHDL استفاده می‌کنند. ویرایشگرهای خاص متن ویژگی‌هایی برای کنگره اتوماتیک، رنگ وابسته به نحو و گسترش مبتنی بر ماکرو که از نهاد معماری اعلام سیگنال را ارائه می‌دهند را پیشنهاد می‌دهند.

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

در اصطلاح علمی، طراحی HDL به‌طور کلی در مرحله سنتز به پایان می‌رسد. هنگامی که ابزار سنتز از توصیفات HDL برای یک گیت نت لیست نقشه‌برداری می‌کند، نت لیست به مرحله قبل آخرین حالت برمی گردد. بسته به نوع تکنولوژی (FPGA,ASIC,ASIC)HDL ممکن است نقش مهمی در جریان پایانی عقب بازی نکند. به‌طور کلی پیشرفت جریان طراحی در راستای یک شکل فیزیکی تحقق می‌یابد، طراحی پایگاه داده که با اطلاعات تکنولوژی خاص به تدریج سنگین می‌شوند و نمی‌تواند در حالت کلی توصیف HDL ذخیره شود، در نهایت یک مدار مجتمع برای استفاده یا برنامه‌ریزی ساخته می‌شود.

## شبیه‌سازی و دیباگ کد HDL
اساس طراحی HDL توانایی شبیه‌سازی برنامه‌های HDL می‌باشد. شبیه‌سازی اجازه توصیف سخت‌افزاریHDL (مدل نامیده می‌شود) برای گذر از تأیید طراحی یک مرحله مهمی که توابع در نظر گرفته شده طراحی (خاص) را در مقابل پیاده‌سازی کد در توصیف HDL اعتبار سنجی می‌کند و همچنین اجازه اکتشاف معماری را می‌دهد. طراح می‌تواند با انتخاب طرح نوشتن تغییرات متعدد طراحی از پایه طرح را آزمایش کند. سپس رفتار آن‌ها را در شبیه‌سازی مقایسه کند؛ بنابراین در شبیه‌سازی برای طراحی موفق HDL خیلی مهم است.

یک مهندس برای شبیه‌سازی یک مدل HDL، یک محیط شبیه‌سازی سطح بالا می‌نویسد (تست پنج نامیده می‌شود). یک تست پنج حداقل شامل یک ساختار از مدل (دستگاه تحت تست یا DUT) اعلام پنن سیگنال برای مدل ورودی خروجی و یک موج کلاس است. کد تست پنج رویداد محور است: مهندس حالات HDL را برای پیاده‌سازی تنظیمات سیگنال (تست پنج تولید شده) برای مدل خط اتصال تراکنش (به عنوان یک باس میزبان نوشتن/خواندن) و برای نظارت خروجی DUP. یک شبیه‌ساز HDL –برنامه‌ای که شبیه‌ساز را اجرا می‌کند- کلاک شبیه‌ساز، منبع اصلی برای همه رویدادهای شبیه‌سازی تست پنج را القا می‌کند. رویدادها تنها در هم لحظه دیکته شده به وسیلهٔ تست پنج HDL اتفاق می‌افتند (به عنوان بازنشانده به یکدیگر کدشده به تست پنج) یا در عکس‌العمل (توسط مدل) برای شبیه‌سازی راه اندازی رویدادها. شبیه‌سازهای مدرن واسط گرافیکی کاربر تماماً برجسته دارند. با تمام ابزار مناسب خطایابی. این‌ها به کاربر اجازه توقف و اجرای شبیه‌ساز را در هرزمانی، داخل کردن نقطه انفصال در شبیه‌ساز، (مستقل از کد HDL) و نظارت و اصلاح هر قسمتی در سلسه مرتب مدل HDL را می‌دهد. شبیه‌سازهای مدرن همچنین می‌توانند محیط HDL را به کتابخانه‌های کامپایل شده کاربر پیوند دهند، در میان یک واسط PLI/VHPI تعریف شده. پیوند سیستم وابسته (WIN32,LINUX,SPARC)، به عنوان شبیه‌ساز HDL و کتابخانه‌های کاربر کامپایل می‌شوند و پیوند می‌خورند از بیرون به محیط HDL. بازبینی طراحی اغلب بیشترین بخش وقت گیر از فرایند طراحی می‌باشد که با توجه به قطع ارتباط بین خصوصیات عملکردی دستگاه، تفسیر دستگاه از خصوصیات، و عدم دقت از زبان HDLاست. اکثر چرخه آزمون اشکال زدایی اولیه در محیط شبیه‌ساز HDL هدایت شده‌است، به عنوان حالت اولیه طراحی به تغییرات مکرر مدار بزرگ است. یک توصیف HDL همچنین می‌تواند نمونه‌سازی و تست شده در سخت‌افزار قابل برنامه‌ریزی در دستگاهایی باشد که اغلب برای این هدف استفاده می‌شوند. نمونه‌سازی سخت‌افزار نسبتاً گران‌تر از شبیه‌سازی HDL است، اما دنیای واقعی از طراحی را نمایش می‌دهد. نمونه‌سازی بهترین راه برای چک کردن اتصال در برابر دیگر دستگاه‌های سخت‌افزاری و نمونه‌های اولی سخت‌افزاری است. حتی کسانی که در حال اجرا در FPGAهای کند هستند زمان شبیه‌سازی را کمتر از شبیه‌سازی خالص HDL پیشنهاد می‌دهند.

## بازبینی طراحی با DHL
از لحاظ تاریخی، بازبینی طراحی یک کار پرزحمت، حلقه تکراری نوشتن و اجرای موارد آزمون شبیه‌سازی در مقابل طراحی تحت تست بود. چون که تراشه‌های طراحی بزرگتر و پیچیده‌تر شده‌اند، وظیفه بررسی طراحی به نقطه‌ای که آن را در حال حاضر غالب برنامه تیمی طراحی است افزایش پیدا کرده‌است. دنبال راه‌هایی برای بهبود بهره‌وری طراحی، طراحی الکترونیکی صنعت اتوماسیون زبان مشخصات اموال را توسعه داده است. در شرایط تأیید رسمی، ویژگی‌ها بیانیه واقعی در مورد رفتار مورد انتظار یا فرض‌های شی دیگری است. در حالت ایده‌آل، برای توصیف دادن ،HDL می‌توان ثابت کرد درستی یا غلط بودن یک ملک یا ویژگی را با استفاده از روش‌های رسمی ریاضیات، در مورد عملی، خیلی از ویژگی‌ها نمی‌توانند ثابت بشوند زیرا آن‌ها یک فضای راه حل نامحدود را اشغال می‌کنند. به هر حال اگر یک مجموعه از فرضیات عمل یا محدودیت‌ها فراهم شوند، یک چک‌کننده ملک می‌تواند ویژگی‌های خاصی را توسط فضای راه حل باریک معین کاوش کند.

اظهارات یک مدل مداری فعالی درست نمی‌کند اما ضبط و اسناد منظور طراح در کد HDL است. در یک محیط شبیه‌سازی، شبیه‌ساز همه اعلان‌های خاص را ارزیابی می‌کند و محل و شدت هرگونه نقض را گزارش می‌دهد. در محیط سنتز، ابراز سنتز معمولاً با سیاست توقف سنتز برهرروی گونه تخلف عمل می‌کند. تأیید مبتنی بر اعلان هنوز در مراحل ابتدایی است اما انتظار می‌رود به بخشی جدایی ناپذیر از مجموعه ابزارهای طراحی HDL تبدیل شود.

## HDL و زبان‌های برنامه‌نویسی
به شدت شبیه به یک زبان برنامه‌نویسی نرم‌افزار است، اما تفاوت عمده وجود دارد. بسیاری از زبان‌های برنامه‌نویسی ذاتاً رویه (تک رشته‌ای)، با پشتیبانی ساختاری و مفهومی محدود به راه اندازی همزمانی هستند.

HDLها از سوی دیگر، شباهت زیادی به زبان‌های برنامه‌نویسی هم‌زمان در توانایشان در مدلینگ پردازش موازی (مانند فلیپ فلاپ‌ها و جمع‌کننده‌ها) دارند که به صورت اتوماتیک به‌طور مستقل از یکدیگر اجرا می‌کند.

هر تغییری در وردی فرایند به صورت اتوماتیک یک بروزرسانی در پشته فرایند شبیه‌ساز را راه اندازی می‌کند. هر دو زبان‌های برنامه‌نویسی برم افزار و HDLها به وسیله کامپایلر عمل کنند (در HDLها معمولاً سنتز نامیده می‌شوند) ولی با هدف متفاوت. در HDLها «کامپایل» به سنتز منطقی اشاره، به فراینده انتقال لیست کدHDL به یک لستنت گیت فیزیکی قابل درک، خروجی نت لیست هر فرمی را می‌تواند بگیرد، یک لیست نت«شبیه‌سازی» با اطلاعات تأخیر گیت و یک لیستنت «بدون دست» برای مکان سنتز پست و مسیر، یا یک فرمت طرح کلی مجتمع الکترونیک استاندارد صنعتی (EDIF)(برای تبدیل زیردنباله به یک فایل فرمت JEDEC)

از سوی دیگر، یک کامپایلر نرم‌افزار کد منبع را به یک کد شی ریزپردازنده خاص برای اجرا در ریزپردازنده هدف تبدیل می‌کند. چون HDLها و زبان‌های برنامه‌نویسی قرض می‌کنند مفاهیم و ویژگی‌هایی از یکدیگر، مرز بین آن‌ها کمتر نامشخص شده‌است. با این حال، HDL خالص برای اهداف عمومی توسعه نرم‌افزار کاربردی نامناسب هستند، همان‌طور که زبان‌های برنامه‌نویسی همه منظوره برای مدلسازی سخت‌افزار مناسب نیستند. با این حال، چون سیستم‌های الکترونیکی رشد فزاینده پیچیده‌ای دارند، و سیستم‌های قابل پیکربند به‌طور فزاینده رایج شده‌اند، تمایل به رشد در صنعت برای یک زبان واحد وجود دارد که می‌تواند برخی از وظایف هر دو طراحی سخت‌افزار و برنامه‌نویسی نرم‌افزار را انجام دهند. System C یک نمونه از سخت‌افزار سیستم تعبیه شده‌است که می‌تواند بلوک‌های غیرجزئی معماری (جعبه سیاه با ورودی سیگنال مدل و درایور خروجی) را مدل کند.

نرم‌افزار هدف در C و C ++ نوشته شده و برای سیستم توسعه میزبان به صورت محلی کامپایل می‌شود (به عنوان مخالف هدف CPU تعبیه شده، که نیاز به میزبان شبیه‌سازی از CPU جاسازی شده یا پردازنده شبیه‌سازی شده). سطح انتزاعی بالا از مدل‌های سیستمی C برای اکتشاف معماری اولیه بسیار مناسب هستند، به عنوان اصلاحات معماری می‌تواند به راحتی با کمی نگرانی برای مسائل پیاده‌سازی سطح سیگنال مورد بررسی قرار گیرد. به هرحال، مدل نخ مورد استفاده در System C و وابستگی آن به حافظه مشترک این معنی است که آن به خوبی اجرای موازی یا مدل‌های سطح پایین‌تر را اجرا نمی‌کند.

## سنتز سطح بالا
HDLها در سطح انتزاع خودشان با زبان‌های اسمبلی مقایسه شده‌اند. به منظور بالا بردن سطح انتزاع از طراحی برای کاهش پیچیدگی برنامه‌نویسی در HDLها، ایجاد یک زیر زمینه به نام سنتز سطح بالا وجود دارد. شرکت‌هایی مانند Cadence, Synopsys and Agility به چابکی راه حل‌هایی در حال ارتقا System C به عنوان راهی برای ترکیب زبان‌های سطح بالا با مدل‌های همزمانی طراحی کردند که اجازه می‌دهد تا چرخه طراحی سریعتری برای FPGAها با استفاده از HDLهای سنتی ممکن باشد. رویکردهای مبتنی بر استانداردهای C یا C ++ (با کتابخانه یا پسوندهای دیگر اجازه می‌دهد برنامه‌نویسی موازی) در ابزار منجنیق C از مربی گرافیک یافت شده‌اند، و همچنین ابزار ضربه C از ضربه تسریع فناوری. آناپولیس میکرو سیستم، شرکت در Core Fire طراحی سوئیت و ابزار ملی دید آزمایشی FPGA یک رویکرد گرافیکی data flow برای دستیابی به طراحی سطح بالا و زبان‌هایی مانند System Verilog, System VHDL فراهم می‌کنند و هندل-C به دنبال انجام هدف یکسان هستند، اما در هدف ایجاد سخت‌افزار موجود مهندسی سازنده تر، بیشتر از FPGAها در دسترس تر به مهندسین نرم‌افزار. همچنین طراحی ماژول‌های سخت‌افزاری با استفاده از نرم‌افزار MATLAB و شبیه‌سازی با استفاده از ابزار MATHWORKS HDL رمزگذار یا تراشه Xilinx ژنراتور سیستم (XSG) (که قبلاً به پدال گاز DSP) از شرکت Xilinx امکان‌پذیر است.

## مثال‌هایی از HDL
### HDLهای برای طراحی مدارات آنالوگ

### HDLهایی برای طراحی مدارات دیجیتال
از دو نوع HDL که در صنعت به‌طور گسترده استفاده می‌شود و به خوبی پشتیبانی می‌شوند VERILOG و VHDL هستند.

### HDLهایی برای طراحی مدارهای چاپ شده
چندین پروژه برای تعریف چاپ اتصال مدار با استفاده از روش زبان، متنی ورودی

## منابع

رده:ارتباطات فنی
رده:رده‌بندی زبان‌های برنامه‌نویسی
رده:زبان‌های توصیف سخت‌افزار
رده:سخت‌افزار رایانه
رده:طراحی منطق