【VHDL】狀態機設計——moore型

完成自動售貨機的VHDL設計。要求:有兩種硬幣:1元或5角,
投入1元5角硬幣輸出貨物,投入2元硬幣輸出貨物並找5角零錢

程序:

library ieee;
use ieee.std_logic_1164.all;

entity sale is
port(clk: in std_logic;
	rst:in std_logic;
	input:in std_logic_vector(1 downto 0);
	output:out std_logic_vector(2 downto 0));
end entity;

architecture one of sale is
type STATE is (S0,S1,S2,S3,S4);
SIGNAL CURRENT_STATE,NEXT_STATE:STATE;
begin
	REG:PROCESS(clk,rst)
		BEGIN
			if rst='0' then CURRENT_STATE<=S0;
			ELSIF CLK'EVENT AND CLK='1' THEN
			CURRENT_STATE<=NEXT_STATE;
			END IF;
		END PROCESS;
	COM:PROCESS(CURRENT_STATE)--,NEXT_STATE)
		BEGIN
			CASE CURRENT_STATE IS
			WHEN S0=>output<="00"; 
				if input="00" then NEXT_STATE<=S0;
				elsif input="01" then NEXT_STATE<=S1;
				elsif input="10" then NEXT_STATE<=S2;
				end if;
			WHEN S1=>output<="00"; 
				if input="00" then NEXT_STATE<=S1;
				elsif input="01" then NEXT_STATE<=S2;
				elsif input="10" then NEXT_STATE<=S3;
				end if;
			WHEN S2=>output<="00"; 
				if input="00" then NEXT_STATE<=S2;
				elsif input="01" then NEXT_STATE<=S3;
				elsif input="10" then NEXT_STATE<=S4;
				end if;
			WHEN S3=>output<="10"; 
				if input="00" then NEXT_STATE<=S0;
				elsif input="01" then NEXT_STATE<=S1;
				elsif input="10" then NEXT_STATE<=S2;
				end if;
			WHEN S4=>output<="11"; 
				if input="00" then NEXT_STATE<=S0;
				elsif input="01" then NEXT_STATE<=S1;
				elsif input="10" then NEXT_STATE<=S2;
				end if;	
		   end case;
		 END PROCESS;
end;

分析:

  1. 狀態定義:S0表示初態,S1表示投入5角硬幣,S2表示投入1元硬幣,S3表示投入1元5角硬幣,S4表示投入2元硬幣
  2. 輸入信號: state_ input(o)表示投入1元硬幣, state_ input(1)表示投入5角硬幣。輸入信號爲1表示投入硬幣,輸入信號爲0表示未投入硬幣
  3. 輸出信號: comb outputs(⑦0)表示輸出貨物, comb outputs(1)表示找5角零錢。
  4. 輸出信號爲1表示輸出貨物或找錢,輸出信號爲0表示不輸出貨物或不找錢

流程圖:
在這裏插入圖片描述

理論部分:

1.狀態機( State Machine)是一類很重要的時序電路,是很多邏輯
電路的核心部件,是實現高效率、高可靠性邏輯控制的重要途徑。

2.狀態機相當於一個控制器,它將一項功能的完成分解爲若干步,
每一步對應於二進制的一個狀態,通過預先設計的順序在各狀態
之間進行轉換,狀態轉換的過程就是實現邏輯功能的過程

狀態機根據輸出信號與當前狀態以及輸入信號的關係來分,可以分爲摩爾( Moore)型米立( Mealy)型
輸出信號只和當前狀態有關的狀態機稱爲 Moore型狀態機;
輸出信號不僅和當前狀態有關,而且也和輸入信號有關的狀態機稱爲 Mealy型狀態機
Moore型狀態機
Moore型狀態機
在這裏插入圖片描述
Mealy型狀態機

狀態機主要由四部分組成,但這4部分並非都是必須的。它們可以進行各種不同形式的變換,但基本構成思想是一樣的
(1)說明部分:定義枚舉型數據類型 Iype state is(s0,s1,s2,:;定義現態信號 current state和次態信號 next state
*2)主控時序進程:在時鐘驅動下負責狀態轉換。只是機械地將代表次態信號的 next state中的內容送入現態信號的 current state中。
(3)主控組合進程:根據外部輸入的控制信號和當前狀態確定下狀態的取向,以及確定當前對外的輸出
(4)輔助進程:爲了完成某種算法或爲了輸出設置的鎖存器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章