مفهوم سیگنال و متغیر در 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 بهصورت کامل بررسی شد. درک صحیح از این دو مفهوم در طراحی مدارهای دیجیتال بسیار مهم است. در مطالب بعدی به بررسی پروژههای پیشرفتهتر میپردازیم.