基于FPGA的交通灯设计与实现

这篇具有很好参考价值的文章主要介绍了基于FPGA的交通灯设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

EDA工具:Modelsim and Vivado
##一、产品要求:
基于FPGA的交通灯设计与实现
该控制器用于主干道和支道公路交叉口,优先保证主干道通行,平时处于"主干道绿灯,支道红灯"状态,支道有车辆要穿过主干道时,信号灯改为"主干道红灯,支道绿灯",支道无车辆时,信号灯返回"主干道绿灯,支道红灯"状态。如果支道始终有车,按普通信号灯处理。主干道和支道每次通行时间不得短于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)begin
    if(!sys_rst_n||!bypass_car)
        yellow_cnt <= 25'b0;
    else if(yellow_cnt == YELLOW_CNT - 1)begin
        yellow <= ~yellow;
        yellow_cnt <= 25'b0;
        end
    else
        yellow_cnt <= yellow_cnt + 1'b1; 
end

//计数模块
always@(posedge sys_clk or negedge sys_rst_n)begin
    if(!sys_rst_n||!bypass_car)
        clk_cnt <= 32'b0;
    else if(clk_cnt==CLK_CNT-1)
        clk_cnt <= 32'b0;
    else
         clk_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)begin
    if(!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;
    else
        curr_st <= curr_st;
end

//状态机之二段
always@(*)begin
    case(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)begin
    if(!sys_rst_n)begin
        main_light <= green;
        bypass_light <= red;
    end
    else begin
        case(curr_st)
            S0: begin
		    	main_light <= green;
		    	bypass_light <= red;
		        end
            S1:	begin
		    	main_light <= yellow;
		    	bypass_light <= red;
		        end
            S2:	begin
		    	main_light <= red;
		    	bypass_light <= green;
		        end
            S3:	begin
		    	main_light <= green;
		    	bypass_light <= yellow;
		        end
            default:;  
        
endcase
end 
end
  

endmodule

##三、测试代码设计:

`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后进行的
五区:返回到主车道绿灯,旁车道红灯

基于FPGA的交通灯设计与实现

##五、上板验证结果
Led1灯表示主干道 led3表示枝干道
基于FPGA的交通灯设计与实现
基于FPGA的交通灯设计与实现

交通信号灯文章来源地址https://www.toymoban.com/news/detail-432259.html

到了这里,关于基于FPGA的交通灯设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA实验四:交通灯控制器设计

    目录 一、实验目的 二、设计要求 三、实验代码 1.design source文件代码

    2024年02月13日
    浏览(49)
  • FPGA智能交通灯控制器系统系统设计

    把由5OM的有源晶振产生的现场可编程逻辑器件FPGA 的系统时钟输入到分频模块,经分频模块分频产生频率为1Hz的时钟脉冲,作为控制定时模块、控制模块、紧急模块、计数模块的时钟信号,然后再由定时模块来控制紧急模块和控制模块,按照交通管理规则控制交通工作状态的

    2024年02月04日
    浏览(44)
  • EDA实验(Quartus Ⅱ+fpga) (四)---交通灯设计

    前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6。 (一)实验目的 (1)熟悉交通灯控制器的工作原理; (2)了解设计中的优化方案; (3)进一步掌握状态机的设计; (4)学习较复杂数字系

    2024年02月02日
    浏览(54)
  • 基于高云FPGA开发板的十字路口交通灯

    结合高云MiniStar_Nano EDA开发板,完成设计十字路口交通信号灯控制系统。 1.要求该交通灯为三色灯控制器,红灯亮表示禁止通行,绿灯亮表示允许通行,黄灯亮表示要求压线车辆快速穿越。主干道和次干道灯的亮灭时序按照交通规则设置。 2.可以调整主干道和次干道绿灯和红

    2024年01月19日
    浏览(75)
  • 基于单片机的交通灯设计

    本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。随着社会经济的发

    2024年02月06日
    浏览(82)
  • 基于机器视觉的交通灯控制系统设计

    随着工业自动化和汽车行业的发展,汽车数量猛增,导致交通故障和城市交通拥堵发生的现象越来越频繁。即使道路日益扩宽,但仍无法解决现有存在问题,交通环境问题仍日趋严重。为了解决该问题,本文对交通灯配时控制器展开设计和研究,提出了一种基于机器视觉的交

    2024年02月04日
    浏览(43)
  • 基于单片机控制的交通灯系统设计

    本设计是交通灯的控制实验,必须要先了解实际交通灯的变化规律。假设一个路口为东西南北走向,即十字路口,初始状态零为东西南北灯都熄灭。然后转状态一东西绿灯通车,南北为红灯。过段时间转状态二,东西绿灯闪几次转黄灯,延时几秒,南北仍为红灯。再转状态三

    2024年02月08日
    浏览(56)
  • 基于单片机的智能交通灯系统的设计

    目 录 1绪论 1 2课题的设计要求和设计方案 2 2.1设计要求 2 2.1.1 题目概述 2 2.1.2 设计任务 2 2.1.3 设计要求 2 2.2设计方案 2 2.2.1供电方案 2 2.2.2输入方案 3 2.2.3显示界面方案 3 2.2.4交通灯方案 3 2.2.4.1交通灯规则方案 3 2.2.4.2 各种模式下通行时间 5 2.2.5万年历设计方案 5 3芯片的介绍及

    2023年04月08日
    浏览(46)
  • 基于51单片机的交通灯Protues仿真设计

    目录 一、设计背景 二、实现功能 三、 硬件电路设计说明 3.1 主控模块电路设计 3.2 数码管显示电路设计 ​​​​​​​3.3 键盘电路设计 ​​​​​​​3.4 复位电路设计 ​​​​​​​3.5 时钟电路设计 三、仿真演示 四、源程序        交通是城市经济活动的生命线,

    2024年02月09日
    浏览(46)
  • 基于Verilog的十字路口交通灯控制电路设计

    设计并实现一个简单的十字路口交通灯控制电路。以4个红色指示灯、4个绿色指示灯和4个黄色指示灯模拟路口东西南北4个方向的红绿黄交通灯。控制这些灯,使它们安下列规律亮灭。 1、东西方向绿灯亮,南北方向红灯亮。东西方向通车,时间30秒; 2、东西方向黄灯闪烁,南

    2024年02月03日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包