天天看點

verilog使用Moore電路實作交通燈

源代碼連結:http://download.csdn.net/detail/august717/8743661

問題描述

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

TA,TB分别表示A,B走向是否有學生出現(為True時有學生)。通過目前兩組紅綠燈的狀态和每5秒偵測到的TA,TB來改變兩組紅綠燈狀态。每種紅綠燈狀态保持5秒。

問題模型

因為可以根據紅綠燈狀态,和TA,TB值抽象為: 在出現一定TA,TB值時,紅綠燈狀态轉為下一個确定狀态。是以為FSM有限狀态機模型。

實作方法

實作FSM可以用Moore電路和Mealy電路。(兩者是等價的)。

知識準備

1 Moore FSM:

  Moore型狀态機:下一狀态隻由目前狀态決定,即 次态 = f(現狀,輸入),輸出 = f(現狀);

2 Mealy FSM:

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

3 Moore與Mealy之間的轉換:

隻要把Moore機中下一狀态的輸出改變成Mealy機中目前狀态的輸出。

4 Mealy狀态機的化簡:

隻有當兩個狀态對應的輸入,輸出,下一狀态完全相同時,可以簡化狀态。

 e.g 數電12章ppt

verilog使用Moore電路實作交通燈

此處e,g可以合并為一個狀态,然後再繼續化簡。

參考資料:

  百度文庫

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

verilog使用Moore電路實作交通燈

說明: 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

狀态轉化圖

verilog使用Moore電路實作交通燈

下一篇講Mealy電路實作。

繼續閱讀