فرآیند (Process) در VHDL


فرآیند (Process) در VHDL

در VHDL ،فرآیند یا Process یک بلوک اجرایی است که برای توصیف رفتار مدارات ترتیبی و ترکیبی به‌کار می‌رود. این بلوک به لیست حساسیت (sensitivity list) واکنش نشان می‌دهد و تنها زمانی اجرا می‌شود که یکی از این سیگنال‌ها تغییر کند.

🔹 ساختار کلی Process


process (sensitivity_list)
begin
 -- دستورات VHDL
end process;
  • لیست حساسیت: شامل سیگنال‌هایی است که تغییر آن‌ها باعث اجرای مجدد بلوک می‌شود.
  • دستورات VHDL: شامل تخصیص‌ها، شرط‌ها و حلقه‌ها.

1️⃣ نحوه کارکرد Process

در VHDL، عبارت Process تنها در دو حالت اجرا می‌شود:

  1. در ابتدای شبیه‌سازی (Initialization)
  2. با تغییر در سیگنال‌های موجود در لیست حساسیت

2️⃣ تفاوت سیگنال و متغیر در Process

  • سیگنال (Signal): مقدار آن در انتهای Process به‌روزرسانی می‌شود.
  • متغیر (Variable): مقدار آن بلافاصله پس از تخصیص به‌روزرسانی می‌شود.

مثال: تفاوت سیگنال و متغیر


process (clk)
 variable temp_var : integer := 0;
begin
 if rising_edge(clk) then
 temp_var := temp_var + 1; -- به‌روزرسانی فوری
 signal_out <= temp_var; -- به‌روزرسانی در انتهای Process
 end if;
end process;

3️⃣ مثال: شمارنده ترتیبی با Process

یک شمارنده ۴ بیتی با قابلیت ریست:


process (clk, rst)
begin
 if rst = '1' then
 count <= 0;
 elsif rising_edge(clk) then
 count <= count + 1;
 end if;
end process;

4️⃣ حساسیت به سیگنال‌ها

یک Process تنها زمانی اجرا می‌شود که سیگنال‌های موجود در لیست حساسیت تغییر کنند.

مثال: Process با چند سیگنال حساس


process (a, b)
begin
 y <= a and b;
end process;

🎯 جمع‌بندی

  • Process برای توصیف مدارات ترتیبی و ترکیبی استفاده می‌شود.
  • تفاوت در نحوه به‌روزرسانی سیگنال و متغیر اهمیت دارد.
  • استفاده صحیح از لیست حساسیت برای عملکرد بهینه حیاتی است.