三段式moore状态机实现典型交通灯

本文介绍了如何使用Verilog设计一个三段式Moore状态机来控制典型的交通灯系统,该系统适用于主干道和支路交叉口。交通灯在状态转换时会设置黄灯作为缓冲,例如从绿灯到左拐灯。主干道红灯时,支路非红灯,反之亦然。设计中,所有状态共用一个计时器,当计时达到预设时长,状态自动切换。通过仿真验证了设计的正确性,显示了状态机的完整时序执行情况。
摘要由CSDN通过智能技术生成

交通灯说明

作为IC/FPGA应聘者,交通灯的verilog设计是必须掌握的基本技能。本文以典型交通灯为例,即在主干道和支路相交的十字路口,主干道具有较高优先级。首先,应该明确:
【1】除红灯外,其他有效灯转为另一个状态,中间都应设定黄灯作为缓冲,如:交通灯由绿灯转为左拐灯之前,应该有一段黄灯作为缓冲段,同理,如果左拐灯转为红灯,也应设定黄灯作为缓冲段;
【2】主干道处于红灯时,支路应处于非红灯的其他几个状态的转换过程,支路处于红灯时,主干道同理;
本文假定灯的状态包括:绿灯、黄灯、左拐,主干道绿灯亮40s,支路绿灯亮30s,画出各灯状态转换及亮的时间如下:
在这里插入图片描述

图1 典型交通灯状态转换示意图

FSM建模

本交通灯没有外部输入信号,内部各个状态的转换与外界无关,按照图1 的时序,上一个状态结束(即亮灯的时间到),就跳入下一个状态,如此循环。故,设定一个计数器,对每一段状态按照既定的时长计时,在计数到最后1次时,产生状态跳转条件。本设计巧妙利用这一点,所有状态共用一个计数器,完成状态转换条件的产生。最后,在各个状态下,点亮相应的灯(即输出),因为输出只与当前状态有关,故交通灯采用moore状态机描述。同时,采用典型三段式FSM的描述方式,代码通俗易懂。
交通灯的三段式moore_FS描述如下:

module transport_lamp # (
	parameter L_WID = 4 	 	// 灯的个数
)(
	input 	clk ,
	input 	rst_n ,
	
	// input 	start , 	 	 	 	 	// 触发信号
	output 	[L_WID - 1 : 0] m_lamp , 	// 主干道从高到低分别表示:绿、黄、左、红
	output	[L_WID - 1 : 0] s_lamp 	 	// 同上
);

//-----------------------------功能说明------------------------------//
// 本交通灯描述经典交通灯,主干道和支干道各
// 主干道:绿(40s)黄(5s)左(15s)黄(5s) | 红(55s)----------------------
// 支干道:红(65s)------------------------| 绿(30s)黄(5s)左(15s)黄(5s)
// 说明:绿灯结束后过渡到
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值