ماشین حالت (FSM) در VHDL


ماشین حالت (FSM) در VHDL

ماشین حالت متناهی (FSM) یک مدل ریاضی برای طراحی سیستم‌های دیجیتال است که شامل مجموعه‌ای از حالت‌ها است که بر اساس ورودی‌ها بین آن‌ها جابجا می‌شود.

اجزای FSM

  • حالت‌ها (States): وضعیت‌های ممکن سیستم.
  • ورودی‌ها (Inputs): سیگنال‌هایی که باعث تغییر حالت می‌شوند.
  • خروجی‌ها (Outputs): مشخص‌کننده رفتار سیستم در هر حالت.
  • تابع انتقال حالت (State Transition): تعیین نحوه جابجایی بین حالت‌ها.

انواع FSM

  • ماشین حالت Moore: خروجی فقط به حالت فعلی بستگی دارد.
  • ماشین حالت Mealy: خروجی علاوه بر حالت، به ورودی نیز بستگی دارد.

مثال: FSM سه حالته در VHDL

تعریف حالات

 type state_type is (IDLE, LOAD, PROCESS); 
signal current_state, next_state : state_type 

فرآیند تغییر حالت

process (clk, rst) 
begin 
if rst = '1' then 
current_state <= IDLE;   
elsif rising_edge(clk) then 
current_state <= next_state;   
end if; 
end process; 

فرآیند انتقال بین حالت‌ها

 process (current_state, input_signal) 
begin 
case current_state is when 
IDLE => 
if input_signal = '1' then 
next_state <= LOAD; 
else 
next_state <= IDLE; 
end if; 
when LOAD => 
next_state <= PROCESS; 
when PROCESS => 
next_state <= IDLE; 
when others => 
next_state <= IDLE; 
end case; 
end process; 

فرآیند تولید خروجی

 process (current_state) 
begin 
case 
current_state is 
when IDLE => 
output_signal <= '0'; 
when LOAD => 
output_signal <= '1'; 
when PROCESS => 
output_signal <= '1'; 
when others => 
output_signal <= '0'; 
end case; 
end process; 

جمع‌بندی

FSM یکی از روش‌های مهم در طراحی مدارهای دیجیتال ترتیبی است که شامل تعریف حالت‌ها، انتقال بین آن‌ها و تولید خروجی می‌باشد.