EDA工具:Modelsim and Vivado
##一、产品要求:

该控制器用于主干道和支道公路交叉口,优先保证主干道通行,平时处于"主干道绿灯,支道红灯"状态,支道有车辆要穿过主干道时,信号灯改为"主干道红灯,支道绿灯",支道无车辆时,信号灯返回"主干道绿灯,支道红灯"状态。如果支道始终有车,按普通信号灯处理。主干道和支道每次通行时间不得短于30s,两个状态交换之间有"主黄,支红"和"主红,支黄"的中间状态,持续时间均为4s。支道是否来车用开关代替,交通信号灯用LED代替。

##二、代码设计:

module traffic_ctrl(input sys_clk,input sys_rst_n,input bypass_car,output reg main_light,output reg bypass_light);
//wire sys_rst_n;
//assign sys_rst_n = 1'b1;
parameter S0 = 2'b00;
parameter S1 = 2'b01;
parameter S2 = 2'b11;
parameter S3 = 2'b10;
/**************************实际测试数据*********************************************************/
//parameter CLK_CNT    = 32'B1100_1010_1010_0111_1110_0010_0000_0000;//68s
//parameter YELLOW_CNT = 25'B1_0111_1101_0111_1000_0100_0000;
/**************************缩小1000000倍后的用于仿真测试数据**************************************/
parameter CLK_CNT    = 35'd3400;
parameter YELLOW_CNT = 25'd25;reg [31:0]clk_cnt;
reg [24:0]yellow_cnt;
wire red;
reg yellow;
wire green;
assign red   = 1'b1;
assign green = 1'b0;always@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n||!bypass_car)yellow_cnt <= 25'b0;else if(yellow_cnt == YELLOW_CNT - 1)beginyellow <= ~yellow;yellow_cnt <= 25'b0;endelseyellow_cnt <= yellow_cnt + 1'b1;
end//计数模块
always@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n||!bypass_car)clk_cnt <= 32'b0;else if(clk_cnt==CLK_CNT-1)clk_cnt <= 32'b0;elseclk_cnt <= clk_cnt + 1'b1;
end
reg [1:0]curr_st;
reg [1:0]next_st;//状态机之一段
always@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n||!bypass_car)curr_st = S0;
//    else if((clk_cnt==(30*50_000_000-1))||            /*
//            (clk_cnt==(34*50_000_000-1))||                实际时间
//            (clk_cnt==(64*50_000_000-1))||
//            (clk_cnt==(68*50_000_000-1))  )            */
/**************************缩小1000000倍后的仿真测试**************************************/else if((clk_cnt==(30*50_-1))||             (clk_cnt==(34*50_-1))||(clk_cnt==(64*50_-1))||(clk_cnt==(68*50_-1))  )curr_st <= next_st;elsecurr_st <= curr_st;
end//状态机之二段
always@(*)begincase(curr_st)S0 : next_st = S1;S1 : next_st = S2;S2 : next_st = S3;S3 : next_st = S0;default :;endcase
end//状态机之第三段
always@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)beginmain_light <= green;bypass_light <= red;endelse begincase(curr_st)S0: beginmain_light <= green;bypass_light <= red;endS1:  beginmain_light <= yellow;bypass_light <= red;endS2:  beginmain_light <= red;bypass_light <= green;endS3:   beginmain_light <= green;bypass_light <= yellow;enddefault:;  endcase
end
endendmodule

##三、测试代码设计:

`timescale 1ns/1ps
module tb_traffic_light();reg sys_clk;
reg sys_rst_n;
reg bypass_car;
wire main_light;
wire bypass_light;initial begin sys_clk    = 1'b1;sys_rst_n  = 1'b0;bypass_car = 1'b0;end
initial begin#20 sys_rst_n  = 1'b1;#1000 bypass_car = 1'b1;
end
always #10 sys_clk = ~sys_clk;traffic_ctrl u_traffic_ctrl(.sys_clk          (sys_clk         )  ,.sys_rst_n        (sys_rst_n       )  ,.bypass_car       (bypass_car      )  ,.main_light       ( main_light     )  ,.bypass_light     ( bypass_light   )  );endmodule

##四、仿真测试结果

由于仿真工具的仿真时间的考虑,本次仿真是在缩小1000_000倍的前提下进行的仿真,入下(前提采用了两个led作为测试 灯亮表示红灯 灯灭表示绿灯 黄灯表示led灯闪烁 )

为什么黄灯会变成不定态(原因:可能因为led灯反转太快 导致的 在实际情况下不存在此情况如视频中演示)

在bypass_car=1(i.g. 旁路有车)前提下
一区:相隔30000ns后进行的
二区:相隔4000ns后进行的
三区:相隔30000ns后进行的
四区:相隔4000ns后进行的
五区:返回到主车道绿灯,旁车道红灯

##五、上板验证结果
Led1灯表示主干道 led3表示枝干道

交通信号灯

基于FPGA的交通灯设计与实现相关推荐

  1. CASE_01 基于FPGA的交通灯控制器

        该系类博客序言和资源简介可浏览该博客:PREFACE FPGA经典案例序言 快速了解该系列博客的内容与可用 资源. 目录 1 案例引导 1.1 硬件设计初窥 1.2 逻辑设计初窥 2 模块级逻 ...

  2. 基于FPGA的交通灯系统

    基于FPGA的交通灯系统 一.实验目的 1.学习和掌握将实践中的要求抽象为逻辑需求关系的方法. 2.掌握将小型数字系统划分为控制器和处理器的方法. 3.掌握依据ASM图设计小型数字系统的方法 4.掌握 ...

  3. 基于FPGA的呼吸灯设计

    一:背景介绍: 网上类似的标题很多,有一些呼吸灯的设计是基于单片机的,还有一部分设计是基于FPGA的,我也一时手痒,将这两天自己重新写的verilog描述语句晒出来,免得压箱底放久了,出现发霉点. 为 ...

  4. 基于红外技术的交通灯设计

    目录 基于红外技术的交通灯设计 1 摘 要 1 Abstract 2 1 引言 1 1.1基于红外技术的交通灯的选题背景 1 1.2基于红外技术的交通灯选题的现实意义 1 1.3国内外研究现状及其发展 ...

  5. ewb交通灯报告和文件_基于EWB的交通灯设计

    本文着眼于目前普遍应用在城市道路上的交通灯控制系统,从课程设计的题目要求出发,设计了一个十字路口主次街道的交通灯控制电路. 首先进行交通灯状态变换的分析和交通灯总体框架的设计,接着提出了2种电路设计方 ...

  6. 基于单片机的交通灯设计

    摘要 本系统由单片机系统.键盘.LED 显示.交通灯演示系统组成.系统包括人行道.左转.右转.以及基本的交通灯的功能.系统除基本交通灯功能外,还具有倒计时.时间设置.紧急情况处理.分时段调整信号灯的点 ...

  7. 基于fpga的交通灯的设计

    课题一:交通灯控制设计 1.课程设计的目的与要求 1.1目的 以FPGA为核心,设计一个交通灯控制器,每个路口都有红.黄.绿三盏灯.该交通信号灯控制器由一条车道A和一条车道B汇合成十字路口,在每个入口 ...

  8. 基于FPGA的交通信号灯设计

    1.1 设计目的 1.2 设计任务 1.模拟十字路口交通信号灯的工作过程,利用交通信号灯上的两组红,黄,绿LED发光二极管作为交通信号灯,设计一个交通信号灯控制器. 2.模拟两条公路,一条交通主干道, ...

  9. 基于FPGA的交通灯

    交通灯是单片机和FPGA都会做的简单项目.本次交通灯做得比较简单,只是模仿一个十字路口的交通灯. 总共有三个模块组成,RTL视图如下: 顶层模块,控制模块,数码管显示模块.代码如下: 顶层模块: mo ...

最新文章

  1. 无线红外探测器03-环境搭建及程序详解
  2. JAVA多线程和并发
  3. python middleware_Sanic middleware – 中间件
  4. EventBus1.0.1源码解析
  5. ajax 中文日历显示
  6. 集算器(仓库版)发布,黑科技获得用户好评
  7. Linux 和 Android 系统性能分析
  8. 《流言终结者》,再见
  9. 麻省理工计算机相关网络课程,麻省理工MIT计算机课程表
  10. 数据库:简述对数据库的认识
  11. 小米无线显示与电脑连接到服务器,小米手机和电脑进行怎么无线连接
  12. C语言实现双人五子棋
  13. 行列式 (背诵内容)
  14. microsoft的罗马帝国——浪潮之巅
  15. ML之SHAP:机器学习可解释性之SHAP值之理解单样本单特征预测
  16. python中imag是什么意思_Python-在imag中查找对象的中心
  17. 中国特种腈行业市场供需与战略研究报告
  18. java双冒号_jdk8新特性之双冒号 :: 用法及详解
  19. Java 编写在线考试系统-049 窗体程序 完整源码
  20. Verilog中三态门(高阻态)的理解与例子

热门文章

  1. china-pub登录问题
  2. jsp---JSTL核心标签
  3. 常见的嵌入式微处理器(Micro Processor Unit,MPU)
  4. 你可能无法想象我现在正在做着朝九晚五
  5. 阿里云学生服务器配置及免费学生机领取攻略
  6. 关于网易云信聊天室 FAQ
  7. 您的 MAD 得分是多少?| MAD Skills
  8. 《Effective Java》读书笔记
  9. 刘强东呼吁大家帮一帮东北经济;滴滴“复活”小蓝单车;苹果股票评级遭下调丨价值早报
  10. 不正确站立会_站立式办公桌可能(不一定)挽救您的生命