فرآیند (Process) در VHDL
در VHDL ،فرآیند یا Process یک بلوک اجرایی است که برای توصیف رفتار مدارات ترتیبی و ترکیبی بهکار میرود. این بلوک به لیست حساسیت (sensitivity list) واکنش نشان میدهد و تنها زمانی اجرا میشود که یکی از این سیگنالها تغییر کند.
🔹 ساختار کلی Process
process (sensitivity_list)
begin
-- دستورات VHDL
end process;
- لیست حساسیت: شامل سیگنالهایی است که تغییر آنها باعث اجرای مجدد بلوک میشود.
- دستورات VHDL: شامل تخصیصها، شرطها و حلقهها.
1️⃣ نحوه کارکرد Process
در VHDL، عبارت Process تنها در دو حالت اجرا میشود:
- در ابتدای شبیهسازی (Initialization)
- با تغییر در سیگنالهای موجود در لیست حساسیت
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 برای توصیف مدارات ترتیبی و ترکیبی استفاده میشود.
- تفاوت در نحوه بهروزرسانی سیگنال و متغیر اهمیت دارد.
- استفاده صحیح از لیست حساسیت برای عملکرد بهینه حیاتی است.