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

Quartus交通灯控制器Verilog代码远程云端平台

06/05 08:05
514
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-23121Z9533a51.doc

共1个文件

名称:Quartus交通灯控制器Verilog代码远程云端平台

软件:Quartus

语言:Verilog

代码功能:

设计要求:

由一条主干道和一条支干道汇合成十字路口,在每个人口处设置红,绿、黄,左拐允许。

四盏信号灯,红灯亮禁止通行,绿灯亮允许迪行,黄灯亮则给行驶中的车辆有时间停在禁行线外,左拐灯亮允许车转向左拐弯。

信号灯变换次序为:主支干道交替通行,主干行亮5s黄灯让行驶中的车辆有时间停到共行线外,左拐应行15,亮5s黄灯,支30s,亮5s黄灯,左拐放行15s,亮5黄订、各计时电路为倒计时显示。

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

本代码已在远程云端平台验证,远程云端平台如下,其他远程云端平台可以修改管脚适配:

远程平台照片.png

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. 管脚分配

5. 仿真图

分频模块

控制模块

显示模块

部分代码展示:

//状态机控制模块
module?state_machine(
input?clk_1Hz,//1Hz
input?key,//复位
output?reg?main_red,//主干道红灯
output?reg?main_green,//主干道绿灯
output?reg?main_yellow,//主干道黄灯
output?reg?main_left,//主干道左转灯
output?reg?branch_red,//支干道红灯
output?reg?branch_green,//支干道绿灯
output?reg?branch_yellow,//支干道黄灯
output?reg?branch_left,//支干道左转灯
output?reg?[7:0]?main_cnt,//主路倒计时
output?reg?[7:0]?branch_cnt//支路倒计时
);
//状态机控制模块
reg?[3:0]?state=4'd0;
//定义5个状态
parameter?S0=4'd0;
parameter?S1=4'd1;
parameter?S2=4'd2;
parameter?S3=4'd3;
parameter?S4=4'd4;
parameter?S5=4'd5;
parameter?S6=4'd6;
parameter?S7=4'd7;
parameter?S8=4'd8;
reg?[7:0]?count_S0=8'd0;//定义计数器
reg?[7:0]?count_S1=8'd0;//定义计数器
reg?[7:0]?count_S2=8'd0;//定义计数器
reg?[7:0]?count_S3=8'd0;//定义计数器
reg?[7:0]?count_S4=8'd0;//定义计数器
reg?[7:0]?count_S5=8'd0;//定义计数器
reg?[7:0]?count_S6=8'd0;//定义计数器
reg?[7:0]?count_S7=8'd0;//定义计数器
wire?[7:0]?main_red_time;//主干道红灯
wire?[7:0]?main_green_time;//主干道绿灯
wire?[7:0]?main_yellow_time;//主干道黄灯
wire?[7:0]?main_left_time;//主干道左转灯
wire?[7:0]?branch_red_time;//主干道红灯
wire?[7:0]?branch_green_time;//主干道绿灯
wire?[7:0]?branch_yellow_time;//主干道黄灯
wire?[7:0]?branch_left_time;//主干道左转灯
assign?main_red_time=8'd55;//主干道红灯
assign?main_green_time=8'd40;//主干道绿灯
assign?main_yellow_time=8'd5;//主干道黄灯
assign?main_left_time=8'd15;//主干道左转灯
assign?branch_red_time=8'd65;//支干道红灯
assign?branch_green_time=8'd30;//支干道绿灯
assign?branch_yellow_time=8'd5;//支干道黄灯
assign?branch_left_time=8'd15;//支干道左转灯
//状态机控制
always@(posedge?clk_1Hz?or?posedge?key)
if(key==1)
state<=S8;//复位
else
case(state)
S8:
state<=S0;
S0://主干道绿灯
if(count_S0>=main_green_time-1)//40s
state<=S1;
else
state<=S0;
S1://主干道黄灯
if(count_S1>=main_yellow_time-1)//5s
state<=S2;
else
state<=S1;
S2://主干道左转灯
if(count_S2>=main_left_time-1)//15s
state<=S3;
else
state<=S2;
S3://主干道黄灯
if(count_S3>=main_yellow_time-1)//5s
state<=S4;
else
state<=S3;
S4://支干道绿灯
if(count_S4>=branch_green_time-1)//30s
state<=S5;
else
state<=S4;
S5://支干道黄灯
if(count_S5>=branch_yellow_time-1)//5s
state<=S6;
else
state<=S5;
S6://支干道左转灯
if(count_S6>=branch_left_time-1)//15s
state<=S7;
else
state<=S6;
S7://支干道黄灯
if(count_S7>=branch_yellow_time-1)//5s
state<=S0;
else
state<=S7;
default:;
endcase
//主干道绿灯计时
always@(posedge?clk_1Hz)
if(state==S0)
count_S0<=count_S0+1;//计时
else
count_S0<=8'd0;
//主干道黄灯计时
always@(posedge?clk_1Hz)
if(state==S1)
count_S1<=count_S1+1;//计时
else
count_S1<=8'd0;
//主干道左转灯计时
always@(posedge?clk_1Hz)
if(state==S2)
count_S2<=count_S2+1;//计时
else
count_S2<=8'd0;
//主干道黄灯计时
always@(posedge?clk_1Hz)
if(state==S3)
count_S3<=count_S3+1;//计时
else
count_S3<=8'd0;
//支干道绿灯计时
always@(posedge?clk_1Hz)
if(state==S4)
count_S4<=count_S4+1;//计时
else
count_S4<=8'd0;
//支干道黄灯计时
always@(posedge?clk_1Hz)
if(state==S5)?
count_S5<=count_S5+1;//计时
else
count_S5<=8'd0;
//支干道左转灯计时
always@(posedge?clk_1Hz)
if(state==S6)
count_S6<=count_S6+1;//计时
else
count_S6<=8'd0;
//支干道黄灯计时
always@(posedge?clk_1Hz)
if(state==S7)
count_S7<=count_S7+1;//计时
else
count_S7<=8'd0;
//控制红绿灯
always@(posedge?clk_1Hz)
case(state)
S0://主干道绿灯
begin
main_red<=0;
main_green<=1;
main_yellow<=0;
main_left<=0;
branch_red<=1;
branch_green<=0;
branch_yellow<=0;
branch_left<=0;
end
S1://主干道黄灯
begin
main_red<=0;
main_green<=0;
main_yellow<=1;
main_left<=0;
branch_red<=1;
branch_green<=0;
branch_yellow<=0;
branch_left<=0;
end
S2://主干道左转灯
begin
main_red<=0;
main_green<=0;
main_yellow<=0;
main_left<=1;
branch_red<=1;
branch_green<=0;
branch_yellow<=0;
branch_left<=0;
end
S3://主干道黄灯
begin
main_red<=0;
main_green<=0;
main_yellow<=1;
main_left<=0;
branch_red<=1;
branch_green<=0;
branch_yellow<=0;
branch_left<=0;
end
S4://支干道绿灯
begin
main_red<=1;
main_green<=0;
main_yellow<=0;
main_left<=0;
branch_red<=0;
branch_green<=1;
branch_yellow<=0;
branch_left<=0;
end
S5://支干道黄灯
begin
main_red<=1;
main_green<=0;
main_yellow<=0;
main_left<=0;
branch_red<=0;
branch_green<=0;
branch_yellow<=1;
branch_left<=0;
end
S6://支干道左转灯
begin
main_red<=1;
main_green<=0;
main_yellow<=0;
main_left<=0;
branch_red<=0;
branch_green<=0;
branch_yellow<=0;
branch_left<=1;
end
S7://支干道黄灯
begin
main_red<=1;
main_green<=0;
main_yellow<=0;
main_left<=0;
branch_red<=0;
branch_green<=0;
branch_yellow<=1;
branch_left<=0;
end
S8://复位
begin
main_red<=1;
main_green<=0;
main_yellow<=0;
main_left<=0;
branch_red<=1;
branch_green<=0;
branch_yellow<=0;
branch_left<=0;
end
default:;
endcase
//倒计时控制
always@(posedge?clk_1Hz)
if(state==S0)begin//主干道绿灯
main_cnt=main_green_time-count_S0;
branch_cnt=branch_red_time-count_S0;
end
else?if(state==S1)begin//主干道黄灯
main_cnt=main_yellow_time-count_S1;
branch_cnt=branch_red_time-(main_green_time+count_S1);
end
else?if(state==S2)begin//主干道左转灯
main_cnt=main_left_time-count_S2;
branch_cnt=branch_red_time-(main_green_time+main_yellow_time+count_S2);
end
else?if(state==S3)begin//主干道黄灯
main_cnt=main_yellow_time-count_S3;
branch_cnt=branch_red_time-(main_green_time+main_yellow_time+main_left_time+count_S3);
end
else?if(state==S4)begin//支干道绿灯
branch_cnt=branch_green_time-count_S4;
main_cnt=main_red_time-count_S4;
end
else?if(state==S5)begin//支干道黄灯
branch_cnt=branch_yellow_time-count_S5;
main_cnt=main_red_time-(branch_green_time+count_S5);
end
else?if(state==S6)begin//支干道左转灯
branch_cnt=branch_left_time-count_S6;
main_cnt=main_red_time-(branch_green_time+branch_yellow_time+count_S6);
end
else?if(state==S7)begin//支干道黄灯
branch_cnt=branch_yellow_time-count_S7;
main_cnt=main_red_time-(branch_green_time+branch_yellow_time+branch_left_time+count_S7);
end
else?begin
branch_cnt=8'd88;
main_cnt=8'd88;
end
endmodule

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

  • 2-23121Z9533a51.doc
    下载

相关推荐