verilog使用Mealy電路實現交通燈

 Mealy電路實現十字路口交通燈html

使用Verilog語言完成十字路口交通燈的設計與實現。用2個手撥開關表示南北向和東西向通道的狀態,6個led燈從左到右依次顯示A路口紅燈,A路口黃燈,A路口綠燈,B路口紅燈,B路口黃燈,B路口綠燈,再用一個手撥開關實現復位(高電平有效)。編碼

其中時鐘分頻爲5秒,即每5秒檢測一次路口狀態,肯定燈亮的下一狀態。url


原理
spa

Mealy Machine設計

說明 led[5:0] :   A’red  A’yellow  A’green ;  B’red,  B’yellow,  B’ greenhtm

        t[1:0]:  TA, TB blog

 

狀態節點ci

狀態get

狀態編碼table

狀態輸出 :

INI (啓動狀態)

0000

000_000

S1

0001

001_100

S2

0010

010_100

S3

0100

100_001

S4

1000

100_010

 

 

狀態轉化

TA TB

 

當前狀態

下一狀態 / 燈的輸出

 


00

01

10

11

S1

S2/010_100

S2/010_100

S1/001_100

S1/001_100

S2

S3/100_001

S3/100_001

S3/100_001

S3/100_001

S3

S4/100_010

S3/100_001

S4/100_010

S3/100_001

S4

S1/001_100

S1/001_100

S1/001_100

S1/001_100

INI

S1/001_100

S1/001_100

S1/001_100

S1/001_100

 

狀態轉化圖



總結Moore電路和Mealy電路

Moore電路的狀態結點就表示了輸出。而Mealy電路的狀態結點僅表示狀態,輸出在有向邊上,和輸入用斜槓區分,表示當前輸出依賴於有向邊的起點和並列的輸入值。

通常來講根據實際問題能夠靈活選擇Moore或者Mealy狀態機,看哪種更接近實際問題的描述。

Mealy狀態機在一些狀況下會比等價的Moore狀態機節點數少一些,可是本次實驗交通燈並無少。針對其餘一些問題:

1、畫出Moore狀態機後能夠直接列出表格,也能夠進一步轉化爲Mealy狀態機,只要把Moore機中下一狀態的輸出改變成Mealy機中當前狀態的輸出,而後再進一步列表格簡化Mealy狀態機。

2、畫出Mealy狀態機後能夠直接列出表格,進行化簡。也能夠進一步轉化爲Moore狀態機,只要把現時輸出改變爲下一時刻輸出。當一個狀態有多(n)個輸出時,須要將該狀態拆分爲多(n)個狀態。

e.g


                                                               Mealy型機轉換爲Moore型機

如上圖所示,把Mealy型機轉換爲Moore型機,只要把現時輸出改變爲下一時刻輸出。對於狀態A,有4個箭頭指向它,表示在當前狀態下有4個狀態能夠轉換爲下一狀態的A;同時當前輸出均爲0,能夠把0移入狀態A內部,表示在Moore機中狀態A的輸出爲0。同理,能夠把0分別移位B/C狀態。但對於狀態D,有兩個箭頭指向且具備不一樣的輸出值,須要把狀態D分解成兩個狀態D1和D2(每一個狀態對應一個輸出,當輸出不一樣須要利用不一樣的狀態表示,這便是Moore機具備更多狀態的緣由),獲得完整的Moore機狀態模型。

同理,若把上圖的Moore機轉換爲Mealy機,只要把Moore機中下一狀態的輸出改變成Mealy機中當前狀態的輸出,因爲D1/D2兩狀態處於A/C兩狀態之間,且至關於A/C節點之間的一個等效節點,能夠把D1/D2兩狀態合併爲一個狀態。

 

參考資料:

http://blog.sina.com.cn/s/blog_78699cbf01016mvt.html

http://www.eefocus.com/alvin1130/blog/12-01/236722_9a984.html

http://wenku.baidu.com/link?url=KPstJgatFudWA0erLG52UYAZTJgLli9Y5LqZ_6UgF01pnAJd3xnIFfZKJLdwH_YL6R1JxhEhoj3SyWxKlqwM15PE50BgllTqUE1oWGckOzG

相關文章
相關標籤/搜索