verilog使用Moore电路实现交通灯

问题描述

   十字路口南北方向(B)有一组红绿灯,十字路口东西方向(A)有一组红绿灯。

TATB分别表示AB走向是否有学生出现(为True时有学生)。通过当前两组红绿灯的状态和每5秒侦测到的TATB来改变两组红绿灯状态。每种红绿灯状态保持5秒。

问题模型

因为可以根据红绿灯状态,和TATB值抽象为: 在出现一定TATB值时,红绿灯状态转为下一个确定状态。所以为FSM有限状态机模型。

实现方法

实现FSM可以用Moore电路和Mealy电路。(两者是等价的)。

知识准备

1 Moore FSM

  Moore型状态机:下一状态只由当前状态决定,即 次态 = f(现状,输入)输出 = f(现状);

2 Mealy FSM

Mealy型状态机:输出不但与当前状态有关,还与当前输入值有关,即次态 = f(现状,输入)输出 = f(现状,输入);

3 MooreMealy之间的转换:

只要把Moore机中下一状态的输出改变成Mealy机中当前状态的输出。

4 Mealy状态机的化简:

只有当两个状态对应的输入,输出,下一状态完全相同时,可以简化状态。

 e.g 数电12ppt

verilog使用Moore电路实现交通灯


此处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

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电路实现。


你可能感兴趣的:(verilog使用Moore电路实现交通灯)