ماشین حالت (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 یکی از روشهای مهم در طراحی مدارهای دیجیتال ترتیبی است که شامل تعریف حالتها، انتقال بین آنها و تولید خروجی میباشد.