基于Verilog的十字路口交通灯控制电路设计

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


一、设计要求

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


二、设计方案

设计一个有五个状态的状态机,其中一个为初始状态。如下图:
verilog十字路口红绿灯程序,fpga开发
在状态S1~S4中,计数器在每个时钟上升沿加一。

verilog十字路口红绿灯程序,fpga开发


三、电路原理图

verilog十字路口红绿灯程序,fpga开发

  • 对上图局部放大处理:
    verilog十字路口红绿灯程序,fpga开发
    verilog十字路口红绿灯程序,fpga开发
    verilog十字路口红绿灯程序,fpga开发
    verilog十字路口红绿灯程序,fpga开发

四、代码实现

1. Verilog代码:

module traffic_light(clk,rst_n,light_east,light_west,light_north,light_south);
input clk,rst_n;
output [2:0]light_east,light_north,light_south,light_west;
reg[2:0] light_east,light_north,light_south,light_west;
parameter
			S0=0,
			S1=1,
			S2=2,
			S3=3,
			S4=4;		
reg [2:0]state;
reg [5:0]cnt;
always @(posedge clk or negedge rst_n )
		begin  
        if(!rst_n) 
			begin
          {light_east,light_north,light_south,light_west}=12'b0;
          cnt <= 0;
          state <= S0;
         end
        else
          begin
          case (state)
      S0: begin            
          {light_east,light_north,light_south,light_west}=12'b1;
          state  <= S1;
          end
          
      S1:                   
         if(cnt==30) begin
          state  <= S2;
          cnt    <= 0;
          end
         else  begin 
          cnt    <= cnt + 1'b1;
          {light_east,light_west,light_north,light_south}=12'b100_100_001_001;
          state  <= S1;
          end
                
      S2:               
         if(cnt==2) begin
          state  <= S3;
          cnt    <= 0;
          end
         else  begin 
          cnt    <= cnt + 1'b1;
          {light_east,light_west,light_north,light_south}=12'b010_010_001_001;
          state  <= S2;
          end
          
      S3:                 
         if(cnt==30) begin
          state  <= S4;
          cnt    <= 0;
          end
         else  begin 
          cnt    <= cnt + 1'b1;
          {light_east,light_west,light_north,light_south}=12'b001_001_100_100;
          state  <= S3;
          end   
       S4:               
         if(cnt==2) begin
          state  <= S1;
          cnt    <= 0;
          end
         else  
				begin 
          cnt   <= cnt + 1'b1;
          {light_east,light_west,light_north,light_south}=12'b001_001_010_010;
          state  <= S4;
          end   
        endcase
     end
end
endmodule              

2. Testbench代码

`timescale 1 ps/ 1 ps
module traffic_light_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire [2:0]  light_east;
wire [2:0]  light_north;
wire [2:0]  light_south;
wire [2:0]  light_west;

// assign statements (if any)                          
traffic_light i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.light_east(light_east),
	.light_north(light_north),
	.light_south(light_south),
	.light_west(light_west),
	.rst_n(rst_n)
);
initial                                                
begin                                                  
clk=0;
rst_n=0;
#20 rst_n=1;
#1000 $stop;                                       
$display("Running testbench");                       
end                                                    
always                                                                   
begin                                                  
#1 clk=~clk;                                                                                                                        
// --> end                                             
end                                                    
endmodule

五、仿真结果

light_east, light_south, light_west, light_north分别为东、南、西、北的信号灯,高位至低位依次为绿灯、黄灯、红灯。
左边下面四个对应的变量名分别为light_east, light_north, light_south, light_west。
verilog十字路口红绿灯程序,fpga开发
verilog十字路口红绿灯程序,fpga开发文章来源地址https://www.toymoban.com/news/detail-779323.html

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

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

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

相关文章

  • 基于AT89C51单片机的十字路口交通灯设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87849986?spm=1001.2014.3001.5503 源码获取 主要内容: 本项目中采用单片机 AT89C51为中心器件来设计交通信号灯控制器, 系统实用性强、操作简单、扩展性强。本设计系统就是由单片机最小系统、交通灯

    2024年02月09日
    浏览(45)
  • 【毕业设计】基于PLC的十字路口交通灯控制系统设计【仿真+源码+论文】

    摘 要 本次设计的课题是基于PLC的十字路口交通灯控制系统设计,传统的十字路口交通灯多采用单片机集成电路作为控制系统,单片机系统虽然在功能上能够实现十字路口交通灯的各种控制需求,但是单片机控制系统在设计时需要数字电路与模拟电路的完美结合,这样的控制

    2024年02月08日
    浏览(48)
  • DE0开发板交通灯十字路口红绿灯VHDL

    名称:基于DE0开发板的交通灯十字路口红绿灯 软件:Quartus 语言:VHDL 要求: 设计一个十字路口交通信号灯的控制电路。分为两种情况,正常状态和报警状态。 1.正常状态:要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,且将运行时间用数码管显示出来。 绿灯

    2024年02月07日
    浏览(45)
  • 51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总

    浏览必读: 使用搜索可以达到事半功倍的效果。 电脑浏览器CTRL+F可以使用搜索查找 功能说明: 1.四路交通灯,带有红绿灯倒计时,绿灯倒计时结束后转黄灯5秒,再转红灯。 2.紧急情况下按键紧急按钮,四路黄灯快闪。 3.可以动态设置红绿灯时间。 涉及知识点:按键扫

    2024年02月11日
    浏览(89)
  • 多功能交通灯控制系统VHDL十字路口红绿灯倒计时DE2-115开发板代码

    名称:多功能交通灯控制系统VHDL十字路口红绿灯倒计时DE2-115开发板 软件:Quartus II 语言:VHDL 代码功能: 要求设计一个多功能交通灯控制系统。并进行软件仿真与硬件实现。要求做到  (1)主干道绿灯亮时,支干道红灯亮,反之亦然,两者交替允许通行,主干道每次放行60s,支干道每

    2024年02月04日
    浏览(61)
  • 基于51单片机十字路交通灯仿真_黄灯闪烁_正常模式+夜间模式+紧急模式

    (程序+仿真+仿真视频) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J002 51单片机十字路交通灯仿真_黄灯闪烁+夜间+紧急 通过单片机模拟交通灯,东西方向黄绿红,南北方向黄绿红的工作方式。 1、显示时间倒计时; 2、夜晚能够进行所有黄灯闪烁;

    2024年02月10日
    浏览(36)
  • 基于Openmv H7 Plus 的红色巡线+十字路口+多数字识别算法

    由于是采用命令集的方式控制openmv,摄像头不需要接收太多的数据,我采用的是判断串口接收的长度来区分命令集。flag为接收数据的长度,通过发送不同长度数据来改变openmv的工作模式 1.巡线 在openmv的开源库中有色块识别的关键函数blob(),可以传回识别出的矩形色块的中心

    2024年02月16日
    浏览(45)
  • 交通灯电路及verilog实现(状态机)

    功能描述 : 1 )初始状态:主路绿灯、支路红灯; 2 )检测到支路有车 (X=1),灯状态的变化过程为:         ①主路变黄灯、支路红灯         ②主路变红灯、支路红灯         ③主路红灯、支路变绿灯 3)当支路没车(X=0),灯状态的变化过程为:         ①主路红灯、

    2024年02月06日
    浏览(35)
  • 【verilog基础】用状态机解决交通灯问题

    思路:计数器加状态机 1、状态组合 light1 light2 状态 状态转移条件 跳转至 红 (100) 绿 (001) S0

    2024年02月11日
    浏览(30)
  • vivado交通灯设计verilog代码ego1板红绿灯时间可修改

    名称:vivado交通灯设计verilog代码ego1板红绿灯时间可修改 软件:VIVADO 语言:Verilog 代码功能: 十字路口红绿灯设计; 1、每次通行时间可在0-99秒内设定,可以通过按键修改通行时间。 2、路口四边均设红黄绿三色信号灯和用于计时的两位数码管显示时间(十进制数)。 3、黄灯亮

    2024年02月04日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包