verilog使用Moore電路實現交通燈

問題描述編碼

   十字路口南北方向(B)有一組紅綠燈,十字路口東西方向(A)有一組紅綠燈。url

TATB分別表示AB走向是否有學生出現(爲True時有學生)。經過當前兩組紅綠燈的狀態和每5秒偵測到的TATB來改變兩組紅綠燈狀態。每種紅綠燈狀態保持5秒。spa

問題模型設計

由於能夠根據紅綠燈狀態,和TATB值抽象爲: 在出現必定TATB值時,紅綠燈狀態轉爲下一個肯定狀態。因此爲FSM有限狀態機模型。orm

實現方法blog

實現FSM能夠用Moore電路和Mealy電路。(二者是等價的)。ip

知識準備ci

1 Moore FSMget

  Moore型狀態機:下一狀態只由當前狀態決定,即 次態 = f(現狀,輸入)輸出 = f(現狀);it

2 Mealy FSM

Mealy型狀態機:輸出不但與當前狀態有關,還與當前輸入值有關,即次態 = f(現狀,輸入)輸出 = f(現狀,輸入);

3 MooreMealy之間的轉換:

只要把Moore機中下一狀態的輸出改變成Mealy機中當前狀態的輸出。

4 Mealy狀態機的化簡:

只有當兩個狀態對應的輸入,輸出,下一狀態徹底相同時,能夠簡化狀態。

 e.g 數電12ppt


此處eg能夠合併爲一個狀態,而後再繼續化簡。

參考資料:

  百度文庫

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

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電路實現。

相關文章
相關標籤/搜索