红绿灯的状态机实现

module traffic(clk,rst,out,time1,time2);
input clk,rst;
output reg [5:0] out;
reg [3:0]timecont;
output reg [3:0]time1;
output reg[3:0]time2;

wire clk1h;

reg [1:0] cur_state;
reg [1:0] next_state;

parameter S1 = 4‘b00,
S2 = 4‘b01,
S3 = 4‘b10,
S4 = 4‘b11;

parameter timegreen = 10,
timeyellow = 3,
timered = 5;

divodd #(12500000) CLK1H (
.clk(clk),
.rst(rst),
.clkout(clk1h));

always @ (posedge clk1h or negedge rst )
begin
if(!rst)
cur_state <= S1;
else begin
cur_state <= next_state;
end
end
always @ (cur_state or rst or timecont)
begin
if(!rst) begin
next_state <= S1;
end
else begin
case(cur_state)
S1:begin
if(timecont==0) begin
next_state <= S2;
end
else begin
next_state <= S1;
end
end

S2:begin
if(timecont==0) begin
next_state <= S3;
end
else begin
next_state <= S2;
end
end

S3:begin
if(timecont==0) begin
next_state <= S4;
end
else begin
next_state <= S3;
end
end

S4:begin
if(timecont==0) begin
next_state <= S1;
end
else begin
next_state <= S4;
end
end

default: begin
next_state <= S1;
end

endcase
end
end

always @ (posedge clk1h or negedge rst )
begin
if(!rst) begin
out <= 6‘b110011;
timecont <= timegreen;
end
else begin
case(next_state)
S1:begin
out <= 6‘b110011;
if(timecont == 0)
begin
timecont <= timegreen;
time1<=timegreen;
time2<=14;
end
else
begin
timecont <= timecont - 1;
time1<=time1-1;
time2<=time2-1;
end
end
S2:begin
out <= 6‘b101011;
if(timecont == 0)
begin
timecont <= timeyellow;
time1<=timeyellow;
time2<=3;
end
else
begin
timecont <= timecont - 1;
time1<=time1-1;
time2<=time2-1;
end
end
S3:begin
out <= 6‘b011110;
if(timecont == 0)
begin
timecont <= timered;
time1<=9;
time2<=timered;
end
else
begin
time1<=time1-1;
time2<=time2-1;
timecont <= timecont - 1;
end
end
S4:begin
out <= 6‘b011101;
if(timecont == 0)
begin
time1<=3;
time2<=timeyellow;
timecont <= timeyellow;
end
else
begin
time1<=time1-1;
time2<=time2-1;
timecont <= timecont - 1;
end
end
default:begin
out <= 6‘b110011;
end
endcase
end
end
endmodule

时间: 2024-10-12 20:32:36

红绿灯的状态机实现的相关文章

停车场门禁系统状态机

一辆汽车的通过流程为: 起落杆处于落下状态,通行灯为红灯. 汽车进入门禁系统,入闸传感器值变为True. 控制起落杆上升,直到起落杆位置传感器到达升起位置. 通行灯为绿灯. 汽车离开门禁,触发汽车出闸传感器值为True. 控制起落杆下降,直到起落杆位置传感器到达落下位置. 通行灯变为红灯. 所描述的控制系统的状态机包括: 状态机的所有状态 状态机所接收到的外部事件 状态机所产生的动作 状态机的所有状态跃迁:(原状态.新状态.触发条件.产生动作) 状态机的状态分析: 根据工作条件和形式,状态机总共

简易状态机

SimpleFSM 包含状态切换以及事件驱动传递参数 下面的代码是登录的状态码 1 using System; 2 using UnityEngine; 3 using System.Collections; 4 5 public class LoginState : SingletonPrivider<LoginState>, GameState 6 { 7 private delegate void LoginEventHandler(object sender, LoginEventAr

MediaPlayer 状态机 API 详解 示例

简介 public class android.media.MediaPlayer extends Object implements VolumeAutomation 可能需要的权限: One may need to declare a corresponding(相应) WAKE_LOCK permission <uses-permission> element. <uses-permission android:name="android.permission.WAKE_

人生就是一个状态机

从出生到死亡人生走的是一个过程. 从宏观来看,人分为幼年.青年.中年和老年:从微观来看.人每天吃饭.睡觉.学习.工作和娱乐.古语有云:良田千倾只是一日三餐.广厦万间仅仅睡卧榻三尺.不是必需我一己私利而贪得无厌.而我看来人生就如同一个大型状态机. 人生的状态机从大的方面看,它的输入为时间,输出为做出的成果.而人生的不同年龄为所处的状态.时间我们能够看做连续的,也能够看做离散的.时间在不知不觉中流逝,也在分秒钟跳变.而时间人生的输入,他使我们从孩童成长为青年,又使我们从青年变为老年,时间不会停止.输

停车场门禁控制系统的状态机

其状态机如下图: #include<iostream>using namespace std;void main(){ char enter_or_out; //1表示入闸传感器ture,0表示出闸传感器ture int up_or_downt = 0; //1表示起落杆升起,0表示起落杆落下 cout << "状态初始化..." << '\n'; cout << "当前状态为起落杆落下,红灯状态,禁止通行" <

UNITY 状态机 + SVN + 码云 下篇

上篇说到自己写的一个FSM状态机,这篇写怎么把代码和码云联系在一起! 首先,我们应该知道为什么使用码云? 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进和定制开发,目前已经成为国内最大的代码托管系统,致力于为国内开发者提供优质稳定的托管服务. 码云除了提供最基础的 Git 代码托管之外,还提供代码在线查看.历史版本查看.Fork.Pull Request.打包下载任意版本.Is

001-初识状态机

状态机 FPGA的灵魂 状态机的设计贯穿FPGA设计的始终 一.状态机的概念 1.状态机简述 状态机:描述状态变迁的状态转移图,体现系统对外界事件的反应和行为. 有限状态机(FSM):状态节点数和输入.输出范围有限的状态机. 2.状态机的组成六要素 (1)状态集合   (必备要素):包含了状态机所能达到的所有状态. (2)初态         (必备要素):是整个状态机开始工作的起点.初态是一个相对的参考态. (3)终态   () :状态机的结束状态.事实上,大部分运行在FPGA上的状态机是没有

【slighttpd】基于lighttpd架构的Server项目实战(8)—状态机机制回顾

有限状态机FSM(Finite State Machine) 关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成.状态机通过响应一系列事件而"运行".每个事件都在属于"当前" 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集.函数返回"下一个"(也许是同一个)节点.这些节点中至少有一个必须是终态.当到达终态, 状态机停止. 传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行.很少有事

三、状态机的设计指导原则

---恢复内容开始--- 1.状态机设计关键是什么? 如何才能把一个电路系统抽象为一个或者多个相互配合嵌套的状态机和组合系统模块?是关键. ---恢复内容结束--- 1.状态机设计关键是什么? 如何才能把一个电路系统抽象为一个或者多个相互配合嵌套的状态机和组合系统模块?是关键.