زبان برنامه نویسی VHDL

زبان VHDL

مرور کلی بر VHDL

VHDL (زبان توصیف سخت‌افزار VHSIC) یک زبان توصیف سخت‌افزار قدرتمند و چندمنظوره است که برای طراحی، شبیه‌سازی و سنتز سیستم‌های الکترونیکی دیجیتال استفاده می‌شود. این زبان در دهه 1980 برای برنامه مدارهای مجتمع با سرعت بسیار بالا (VHSIC) وزارت دفاع ایالات متحده توسعه یافت و به مهندسان این امکان را می‌دهد که مدل‌های انتزاعی از رفتار و ساختار سخت‌افزار ایجاد کنند. قابلیت آن در توصیف سیستم‌های پیچیده، آن را در صنایع مختلف، به ویژه برای طراحی‌های FPGA (آرایه دروازه قابل برنامه‌ریزی میدانی) و ASIC (مدار مجتمع خاص کاربرد) ضروری کرده است.

جنبه‌های تاریخی

ایجاد

VHDL در اوایل دهه 1980 به عنوان بخشی از تلاشی برای استانداردسازی طراحی مدارهای دیجیتال ایجاد شد. این زبان توسط تیمی به رهبری پیتر آشنیدن در وزارت دفاع ایالات متحده توسعه یافت تا نیاز به یک روش منسجم برای توصیف سخت‌افزار را برطرف کند. هدف اولیه تسهیل مستندسازی طراحی‌های موجود برای برنامه VHSIC بود، اما به زودی به یک زبان کامل برای توصیف سخت‌افزار تبدیل شد.

استانداردسازی و تکامل

در سال 1987، VHDL توسط IEEE به عنوان IEEE 1076 استاندارد شد. از آن زمان، این زبان به‌روزرسانی‌های مختلفی را تجربه کرده است که IEEE 1076-1993 و IEEE 1076-2002 از جمله اصلاحات مهم آن هستند. این زبان به گونه‌ای گسترش یافته است که شامل ساختارهایی برای پشتیبانی از تأیید طراحی، محدودیت‌های سنتز و قابلیت‌های شبیه‌سازی باشد.

وضعیت کنونی و تأثیر

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

ویژگی‌های نحو

نوع‌دهی قوی

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

signal CLK : std_logic; -- اعلام یک سیگنال از نوع std_logic

عبارات همزمان

VHDL از اجرای همزمان عبارات پشتیبانی می‌کند. چندین فرآیند می‌توانند به طور همزمان اجرا شوند که برای مدل‌سازی رفتار سخت‌افزار ضروری است.

process (CLK)
begin
    if rising_edge(CLK) then
        -- وظیفه‌ای که باید انجام شود
    end if;
end process;

مدل موجودیت-معماری

VHDL از یک مدل موجودیت-معماری استفاده می‌کند که در آن موجودیت رابط یک مؤلفه سخت‌افزاری را توصیف می‌کند، در حالی که معماری رفتار داخلی آن را توصیف می‌کند.

entity AND_Gate is
    Port ( A, B : in std_logic;
           Y : out std_logic);
end AND_Gate;

architecture Behavior of AND_Gate is
begin
    Y <= A and B;
end Behavior;

انواع داده

VHDL چندین نوع داده داخلی دارد، از جمله مقیاس‌پذیر (مانند عدد صحیح، بیت)، ترکیبی (مانند آرایه، رکورد) و انواع دسترسی.

type MyArray is array (0 to 9) of integer; -- اعلام آرایه

انتساب سیگنال

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

signal C : std_logic;
C <= A and B; -- C زمانی به‌روز می‌شود که A یا B تغییر کند

بسته‌ها

VHDL از بسته‌ها پشتیبانی می‌کند که به کاربران اجازه می‌دهد مؤلفه‌ها و انواع قابل استفاده مجدد را تعریف کنند. بسته‌ها به سازماندهی کد و ترویج استفاده مجدد کمک می‌کنند.

package MyLib is
    type MyType is array (0 to 7) of std_logic_vector(3 downto 0);
end MyLib;

پیکربندی

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

configuration MyConfig of AND_Gate is
    for Behavior
    end for;
end MyConfig;

ایجاد بنچ تست

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

entity TB_AND_Gate is
end TB_AND_Gate;

architecture sim of TB_AND_Gate is
    signal A, B : std_logic;
    signal Y : std_logic;
begin
    uut: entity work.AND_Gate port map (A, B, Y);
    -- فرآیند محرک در اینجا
end sim;

تأییدیه‌ها

تأییدیه‌ها می‌توانند برای بررسی ویژگی‌ها در حین شبیه‌سازی و کمک به اشکال‌زدایی طراحی‌ها استفاده شوند.

assert (A = '1') report "A is not high" severity error;

عمومی‌ها

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

entity Counter is
    generic (N : integer := 4);
    port (CLK : in std_logic;
          COUNT : out std_logic_vector(N-1 downto 0));
end Counter;

ابزارها و زمان‌های توسعه‌دهنده

IDEها و ابزارها

چندین محیط توسعه یکپارچه (IDE) و ابزار از توسعه VHDL پشتیبانی می‌کنند، از جمله:

ساخت پروژه‌ها

برای ساخت یک پروژه VHDL، طراحان معمولاً کد VHDL خود را در فایل‌های .vhdl یا .vhd می‌نویسند، یک بنچ تست برای شبیه‌سازی ایجاد می‌کنند و از یک ابزار مناسب برای سنتز طراحی به سخت‌افزار هدف استفاده می‌کنند. این فرآیند معمولاً شامل مراحل زیر است:

  1. نوشتن کد VHDL.
  2. کامپایل کردن کد با استفاده از ابزار انتخابی.
  3. شبیه‌سازی و آزمایش طراحی.
  4. سنتز طراحی برای پیاده‌سازی سخت‌افزاری.

کاربردهای VHDL

VHDL عمدتاً در طراحی سیستم‌های دیجیتال که نیاز به زمان‌بندی و عملکرد دقیق دارند، استفاده می‌شود. کاربردهای آن شامل:

مقایسه با زبان‌های مرتبط

VHDL می‌تواند با چندین زبان برنامه‌نویسی دیگر مقایسه شود که هر کدام ویژگی‌ها و کاربردهای خاص خود را دارند:

C و C++

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

Verilog

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

Python

Python یک زبان اسکریپت‌نویسی سطح بالا است که در توسعه سریع برنامه‌ها عالی است اما برای توصیف مستقیم سخت‌افزار طراحی نشده است. با این حال، کتابخانه‌هایی مانند MyHDL اجازه می‌دهند کد Python به VHDL تبدیل شود.

MATLAB

MATLAB برای محاسبات عددی و توسعه الگوریتم‌ها استفاده می‌شود اما می‌تواند با VHDL برای پیاده‌سازی سخت‌افزار از طریق HDL Coder و Simulink ادغام شود.

Rust و Ada

Rust و Ada ویژگی‌هایی دارند که ایمنی حافظه و برنامه‌نویسی همزمان را ترویج می‌دهند اما برای توصیف سخت‌افزار تخصصی نیستند. تأکید VHDL بر انتزاع سخت‌افزار در میان این زبان‌ها منحصر به فرد است.

نکات ترجمه از منبع به منبع

ترجمه کد منبع از زبان‌های دیگر به VHDL معمولاً نیاز به توجه ویژه به همزمانی و زمان‌بندی دارد که در طراحی سخت‌افزار ذاتی است.

ابزارهای موجود

چندین ابزار ترجمه منبع به منبع برای کمک به تبدیل کد در دسترس است:

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