مفهوم سیگنال و متغیر در VHDL

مفهوم سیگنال و متغیر در VHDL

در VHDL، اطلاعات را می‌توان در سیگنال (Signal) یا متغیر (Variable) ذخیره کرد. اما نحوه عملکرد آن‌ها متفاوت است.

۱. سیگنال (Signal)

سیگنال‌ها برای ارتباط بین بخش‌های مختلف مدار استفاده می‌شوند. مقدار آن‌ها پس از اجرای فرآیند به‌روزرسانی می‌شود و همزمان (Concurrent) اجرا می‌شوند.

 signal A, B, Y : STD_LOGIC; begin Y <= A AND B; 

در اینجا مقدار Y همزمان با تغییر A و B محاسبه می‌شود.

۲. متغیر (Variable)

متغیرها فقط درون Process استفاده می‌شوند و مقدار آن‌ها بلافاصله تغییر می‌کند. همچنین ترتیبی (Sequential) اجرا می‌شوند.

 process (clk)
variable temp : INTEGER := 0; 
begin if rising_edge(clk) then 
temp := temp + 1; -- بلافاصله تغییر می‌کند 
end if; 
end process; 

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

ویژگی
سیگنال (Signal)
متغیر (Variable)
دامنه
در کل معماری یا بین فرآیندها
فقط داخل یک Process
به‌روزرسانی
در پایان Process اعمال می‌شود
بلافاصله به‌روزرسانی می‌شود
مناسب برای
ارتباط بین ماژول‌ها
محاسبات داخلی

نمونه پروژه — جمع‌کننده ساده

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

 library IEEE;  
use IEEE.STD_LOGIC_1164.ALL   
use IEEE.NUMERIC_STD.ALL; 
entity Adder is 
port ( 
A, B : in STD_LOGIC_VECTOR(3 downto 0);      
Sum : out STD_LOGIC_VECTOR(3 downto 0) );    
end Adder; 
architecture Behavioral of Adder is begin
process (A, B)  
variable temp_sum : INTEGER := 0;    
begin  
temp_sum := to_integer(unsigned(A)) + to_integer(unsigned(B));          
Sum <= std_logic_vector(to_unsigned(temp_sum, 4));    
end process;  
end Behavioral; 

توضیح پروژه

در این پروژه:

  • temp_sum یک متغیر است که بلافاصله مقداردهی می‌شود.
  • Sum یک سیگنال است که مقدار آن پس از پایان فرآیند تغییر می‌کند.

جمع‌بندی

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