扫码加入

  • 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

智能交通灯系统设计Verilog代码Quartus仿真

2025/07/07
511
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24011Q52335W0.doc

共1个文件

名称:智能交通灯系统设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

智能交通灯系统设计

设计要求:

1、设计一个两路口智能交通灯系统。要求每条路口都有红、黄、绿三种灯,按照绿灯→黄灯→红灯等顺序循环照亮。一条路口亮绿灯或黄灯时,另一路口亮红灯。具体亮灯顺序如下:“A路口亮绿灯,同时B路口亮红灯60 s”→ “A路口亮黄灯,同时B路口亮红灯10 s” →“A路口亮红灯,同时B路口亮绿灯50 s”→ “A路口亮红灯,同时B路口亮黄灯10 s” →“A路口亮绿灯,同时B路口亮红灯60 s” →……

2、用数码管显示出每个路口对应指示灯显示的剩余时间;

3、设计中采用实验开发板上的50MHz晶振系统时钟作为基准,且设计成同步电路

4、程序设计尽可能考虑模块化、参数化设计思想,并遵循基本的格式规范;

5、采用模块化设计方式,底层模块必须进行功能仿真。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

状态图

5. 仿真图

整体仿真图

分频模块仿真图

状态控制模块仿真

显示模块仿真

部分代码展示:

//状态控制模块
module state_control(
input clk_1Hz,//1Hz时钟
output [2:0] main_LEDs,//主干道红绿黄
output [2:0] branch_LEDs,//支干道红绿黄
output reg [7:0] main_number,//主干道倒计时
output reg [7:0] branch_number//支干道倒计时
);
//红灯60 黄灯10s 绿灯50s
reg red_M;//主干道红灯
reg green_M;//主干道绿灯
reg yellow_M;//主干道黄灯
reg red_B;//支干道红灯
reg green_B;//支干道绿灯
reg yellow_B;//支干道黄灯
assign main_LEDs  ={red_M,green_M,yellow_M};
assign branch_LEDs={red_B,green_B,yellow_B};
reg [7:0] green_M_count;
reg [7:0] yellow_M_count;
reg [7:0] red_M_count;
reg [7:0] green_B_count;
reg [7:0] yellow_B_count;
reg [7:0] red_B_count;
reg [7:0] S0_count=1;
reg [7:0] S1_count=1;
reg [7:0] S2_count=1;
reg [7:0] S3_count=1;
reg [1:0] state=0;
parameter S0=2'd0;
parameter S1=2'd1;
parameter S2=2'd2;
parameter S3=2'd3;
//状态机控制
always@(posedge clk_1Hz)
case(state)
S0://主干道绿灯状态
if(S0_count<50) begin//绿灯50秒
state<=S0;
S0_count<=S0_count+1;//计数
end
else begin
state<=S1;//下一状态
S0_count<=1;
end
S1://主干道黄灯状态   
   if(S1_count<10) begin//黄灯10秒
  state<=S1;
      S1_count<=S1_count+1;//计数
end
else begin
state<=S2;//下一状态
      S1_count<=1;
end
   S2://支干道绿灯状态
if(S2_count<50) begin//绿灯50秒
state<=S2;
S2_count<=S2_count+1;//计数
end
else begin
state<=S3;//下一状态
S2_count<=1;
end    
   S3://支干道黄灯状态
   if(S3_count<10) begin//黄灯10秒
state<=S3;
      S3_count<=S3_count+1;//计数
end
else begin
state<=S0;//下一状态
      S3_count<=1;
end
default:;
endcase
//主干道交通灯控制
always@(posedge clk_1Hz )
begin
if(state==S0)//主干道绿灯状态
green_M<=1;
else
green_M<=0;
if(state==S1 )//主干道黄灯状态   
yellow_M<=1;
else
yellow_M<=0;
if(state==S2 | state==S3)//主干道红灯状态   
red_M<=1;
else
red_M<=0;
end
//支干道交通灯控制
always@(posedge clk_1Hz )
begin
if(state==S2)//支干道绿灯状态
green_B<=1;
else
green_B<=0;
if(state==S3 )//支干道黄灯状态
yellow_B<=1;
else
yellow_B<=0;
if(state==S0 | state==S1)//支干道红灯状态
red_B<=1;
else
red_B<=0;
end
//支干道时间计数
always@(posedge clk_1Hz )
begin
green_M_count<=S0_count;//绿灯计数
yellow_M_count<=S1_count;//黄灯计数
//红灯计数
if(state==S2)//支干道绿灯状态
red_M_count<=S2_count;
else if(state==S3)//支干道黄灯状态
red_M_count<=S3_count+50;///绿灯+黄灯=红灯时间
else
   red_M_count<=0;
end

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=599

  • 2-24011Q52335W0.doc
    下载

相关推荐