問題描述編碼
十字路口南北方向(B)有一組紅綠燈,十字路口東西方向(A)有一組紅綠燈。url
TA,TB分別表示A,B走向是否有學生出現(爲True時有學生)。經過當前兩組紅綠燈的狀態和每5秒偵測到的TA,TB來改變兩組紅綠燈狀態。每種紅綠燈狀態保持5秒。spa
問題模型設計
由於能夠根據紅綠燈狀態,和TA,TB值抽象爲: 在出現必定TA,TB值時,紅綠燈狀態轉爲下一個肯定狀態。因此爲FSM有限狀態機模型。orm
實現方法blog
實現FSM能夠用Moore電路和Mealy電路。(二者是等價的)。ip
知識準備ci
1 Moore FSM:get
Moore型狀態機:下一狀態只由當前狀態決定,即 次態 = f(現狀,輸入),輸出 = f(現狀);it
2 Mealy FSM:
Mealy型狀態機:輸出不但與當前狀態有關,還與當前輸入值有關,即次態 = f(現狀,輸入),輸出 = f(現狀,輸入);
3 Moore與Mealy之間的轉換:
只要把Moore機中下一狀態的輸出改變成Mealy機中當前狀態的輸出。
4 Mealy狀態機的化簡:
只有當兩個狀態對應的輸入,輸出,下一狀態徹底相同時,能夠簡化狀態。
e.g 數電12章ppt
此處e,g能夠合併爲一個狀態,而後再繼續化簡。
參考資料:
百度文庫
wiki(中文)
http://zh.wikipedia.org/wiki/%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E6%9C%BA
http://blog.163.com/enjoy_yourself_ok/blog/static/1645812142012227102738745/
Moore 電路實現十字路口交通燈
使用Verilog語言完成十字路口交通燈的設計與實現。用2個手撥開關表示南北向和東西向通道的狀態,6個led燈從左到右依次顯示A路口紅燈,A路口黃燈,A路口綠燈,B路口紅燈,B路口黃燈,B路口綠燈,再用一個手撥開關實現復位(高電平有效)。
其中時鐘分頻爲5秒,即每5秒檢測一次路口狀態,肯定燈亮的下一狀態。
原理
Moore Machine
說明: led[5:0] : A’red A’yellow A’green ; B’red, B’yellow, B’ green
t[1:0]: TA, TB
狀態節點
狀態 |
狀態編碼 |
狀態輸出 : led[5:0] |
INI (啓動狀態) |
0000 |
000_000 |
S1 |
0001 |
001_100 |
S2 |
0010 |
010_100 |
S3 |
0100 |
100_001 |
S4 |
1000 |
100_010 |
狀態轉化
當前狀態 |
輸出 (led[5:0]) |
輸入(t[1:0]) |
下一狀態 |
INI |
000_000 |
XX |
S1 |
S1 |
001_100 |
1X |
S1 |
S1 |
001_100 |
0X |
S2 |
S2 |
010_100 |
XX |
S3 |
S3 |
100_001 |
X1 |
S3 |
S3 |
100_001 |
X0 |
S4 |
S4 |
100_010 |
XX |
S1 |
狀態轉化圖
下一篇講Mealy電路實現。