狀態機分為兩種
一種稱為mealy狀態機,它的時序邏輯輸出不但取決於狀態還取決於輸入;
另外一種稱為moore狀態機,它的輸出只取決於當前的狀態。實際的設計工作中大部分都是mealy狀態機。
有限狀態機設計一般步驟:1、邏輯抽象,得出狀態轉換圖;2、狀態化簡;3、狀態分配;4、選定觸發器的型別並求出狀態方程、驅動方程和輸出方程;5、按照方程得出邏輯圖。
1、「111」序列檢測器(公尺里型)
module fsm111 ( clk,rst,x,z) ;
input clk,rst,x; output reg z ;
reg[1:0] state;
parameter s0=2』b00,s1=2』b01,s2=2』b11;//狀態轉換圖在心中,哈哈
always@(posedge clk or negedge rst)
begin if(!rst) state<=s0;
else case(state)
s0:begin if(x) state<=s1 ;
else state<=s0 ; end
s1:begin if(x) state<=s2;
else state<=s0 ; end
s2:begin if(x) state<=s2 ;
else state<=s0 ; end
defualt : state<=s0;
always @(state)
begin case(state)
s2: begin if(x) z=1』b1;
else z=1』b0;
defualt : z=1』b0;
endendmodule
2、「101」序列檢測器(摩爾型)
module fsm101 ( clk,rst,x,z) ;
input clk,rst,x; output reg z ;
reg[1:0] state,next_state;
parameter s0=2』b00,s1=2』b01,s2=2』b11,s3=2』b10;//狀態編碼,採用格雷碼
always@(posedge clk or negedge rst)
begin if(!rst) state<=s0;
else state<=next_state;
endalways(state or x)
begin
case(state)
s0:begin if(x) next_state<=s1 ;
else next_state<=s0 ; end
s1:begin if(x) next_state<=s1;
else next_state<=s2 ; end
s2:begin if(x) next_state<=s3 ;
else next_state<=s0 ; end
s3:begin if(x) next_state<=s1 ;
else next_state<=s2 ; end
default : state<=s0;
endcase
endalways @(state)
begin case(state)
s3: z=1』b1;
default: z=1』b0;
endcase
endendmodule
3、「1001」序列檢測器
module fsm1001 ( clk,clr,x,z) ;
input clk,clr,x; output reg z ;
reg[1:0] state;
parameter s0=2』b00,s1=2』b01;
parameter s2=2』b11,s3=2』b10;
always @(posedge clk or posedge clr)
begin if(clr) state<=s0;
else case(state)
s0:begin if(x) state<=s1 ;
else state<=s0 ; end
s1:begin if(x) state<=s1;
else state<=s2 ; end
s2:begin if(x) state<=s1 ;
else state<=s3 ; end
s3:begin if(x) state<=s1;
else state<=s0 ; end
defualt : state<=s0;
always @(state)
begin case(state)
s3: begin if(x) z=1』b1;
else z=1』b0;
defualt : z=1』b0;
endendmodule
1、格雷碼概念
在一組數的編碼中,若任意兩個相鄰的**只有一位二進位制數不同,則稱這種編碼為格雷碼;另外由於最大數與最小數之間也僅一位數不同,即「首尾相連」,因此又稱迴圈碼或反射碼;
2、優點:
若採用8421碼,則數0111變到1000時四位均要變化,而在實際電路中,4位的變化不可能絕對同時發生,則計數中可能出現短暫的其它**(1100、1111等)。在特定情況下可能導致電路狀態錯誤或輸入錯誤,使用格雷碼可以避免這種錯誤。
3.gray碼的編碼形式(我們討論四位gray碼,二位三位方法相同)
十進位制數
4位二進位製碼
四位典型gray碼
00000
0000
10001
0001
20010
0011
30011
0010
40100
0110
50101
0111
60110
0101
70111
0100
81000
1100
91001
1101
101010
1111
111011
1110
121100
1010
131101
1011
141110
1001
151111
1000
FPGA狀態機總結
1.狀態機的結構 1 邏輯表示式 下乙個狀態 f 當前狀態,輸入訊號 輸出訊號 g 當前狀態,輸入訊號 2 mealy狀態機 時序邏輯的輸出取決於狀態與輸入 3 moore狀態機 時序邏輯的輸出取決於狀態 2.狀態編碼的型別 1 獨熱編碼 乙個bit代表乙個狀態 4中狀態的編碼有 4 b0001,4...
FPGA 狀態機的模型之Moore型狀態機
上篇博文 狀態機,fpga的靈魂,說到了狀態機的基礎知識,講到了狀態機的組成六要素,工作四要素。這篇博文來講狀態機的模型之moore狀態機,從標題也能看出,狀態機的知識並沒有結束,後面還會提到mealy型狀態機。根據狀態機的輸出與其現態 輸入之間的關係,可將fpga中的狀態機抽象為三種基本模型 mo...
FPGA 狀態機的模型之Mealy型狀態機
上篇博文講了 moore型狀態機,這篇博文和上篇博文思路一致,如果讀懂了上篇博文,這篇博文就很容易理解了。如果乙個狀態機的輸出是由現態和輸入共同決定的,那麼它就是乙個mealy型的狀態機。而按照驅動輸出的數位電路特性,又將mealy型狀態機細分為mealy 1型 mealy 2型 mealy 3型,...