مفهوم سیگنال و متغیر در 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) thentemp := temp + 1; -- بلافاصله تغییر میکندend if;end process;
تفاوت بین سیگنال و متغیر
| ویژگی | سیگنال (Signal) | متغیر (Variable) |
|---|---|---|
| دامنه | در کل معماری یا بین فرآیندها | فقط داخل یک Process |
| بهروزرسانی | در پایان Process اعمال میشود | بلافاصله بهروزرسانی میشود |
| مناسب برای | ارتباط بین ماژولها | محاسبات داخلی |
نمونه پروژه — جمعکننده ساده
برای درک بهتر تفاوت سیگنال و متغیر، یک پروژه ساده طراحی میکنیم که در آن از هر دو استفاده شود.
library IEEE;use IEEE.STD_LOGIC_1164.ALLuse IEEE.NUMERIC_STD.ALL;entity Adder isport (A, B : in STD_LOGIC_VECTOR(3 downto 0);Sum : out STD_LOGIC_VECTOR(3 downto 0) );end Adder;architecture Behavioral of Adder is beginprocess (A, B)variable temp_sum : INTEGER := 0;begintemp_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 بهصورت کامل بررسی شد. درک صحیح از این دو مفهوم در طراحی مدارهای دیجیتال بسیار مهم است. در مطالب بعدی به بررسی پروژههای پیشرفتهتر میپردازیم.