交通灯控制器设计Verilog代码Quartus仿真

名称:交通灯控制器设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

一、 设计任务和要求: 交通灯控制系统主要是实现城市十字路口红绿灯的控制。在现代化的大城市中,十字 路口越来越多,在每个路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换 要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯 的转换进行管理,本课程设计就是基于此,要求设计一个基于 FPGA 交通灯控制器。

二、设计原理: 1、 就近观察并记录十字路口交通灯的变化情况。 2、 以实验室的 EDA 开发箱的资源为基础,设计一个交通灯控制器。开发箱的资源: 1) 交通指示灯:LED 灯模块有 12 个 LED 灯,红黄绿三种颜色,纵向表示南北 方向,横向表示东西方向,输出高电平时,对应的 LED 灯亮。 2) 八个 七段数码管:动态显示方式,共阴极连接; 3) 个 0-1 开关:K1-K4,开关向上为 1,向下为 0。 4) 外部输入脉冲信号时钟源 CLK1Hz),供计数器使用。


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


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件





3. 程序编译


4. RTL图

5. 管脚分配

6. 仿真图

整体仿真图



分频模块仿真图


交通灯控制模块仿真图





数码管显示模块仿真图


部分代码展示:

//红绿灯控制模块
module light_ctrl(
input clk_in,//时钟
input clk_1Hz,//1Hz时钟
input busy_key,//紧急控制按键
output reg main_R,//主干道红灯
output reg main_G,//主干道绿灯
output reg main_Y,//主干道黄灯
output reg branch_R,//支干道红灯
output reg branch_G,//支干道绿灯
output reg branch_Y,//支干道黄灯
output reg [7:0] Main_road,//主干道数码管数据显示
output reg [7:0] Branch_road//支干道数码管数据显示
);
reg [7:0] main_G_cnt;
reg [7:0] main_Y_cnt;
reg [7:0] main_R_cnt;
reg [7:0] branch_G_cnt;
reg [7:0] branch_Y_cnt;
reg [7:0] branch_R_cnt;
reg [2:0] state=3'd0;
parameter M_G_state=3'd0;
parameter M_Y_state=3'd1;
parameter B_G_state=3'd2;
parameter B_Y_state=3'd3;
parameter busy_state=3'd4;
reg [7:0] M_G_cnt=1;
reg [7:0] M_Y_cnt=1;
reg [7:0] B_G_cnt=1;
reg [7:0] B_Y_cnt=1;
//状态机控制
always@(posedge clk_1Hz or posedge busy_key)
if(busy_key==1)begin//紧急情况
state<=busy_state;//紧急状态
end
else//1表示支干道有车
case(state)
M_G_state:
if(M_G_cnt<8'd45) begin//主干道绿灯45秒
state<=M_G_state;
M_G_cnt<=M_G_cnt+1;//计数
end
else begin
state<=M_Y_state;//下一状态
M_G_cnt<=1;
end
M_Y_state:   
   if(M_Y_cnt<8'd5) begin//主干道黄灯5秒
state<=M_Y_state;
      M_Y_cnt<=M_Y_cnt+1;//计数
end
else begin
state<=B_G_state;//下一状态
      M_Y_cnt<=1;
end
   B_G_state:
if(B_G_cnt<8'd25) begin//支干道绿灯25秒
state<=B_G_state;
B_G_cnt<=B_G_cnt+1;//计数
end
else begin
state<=B_Y_state;//下一状态
B_G_cnt<=1;
end    
   B_Y_state:
   if(B_Y_cnt<8'd5) begin//支干道5s黄灯
state<=B_Y_state;
      B_Y_cnt<=B_Y_cnt+1;//计数
end
else begin
state<=M_G_state;//下一状态
      B_Y_cnt<=1;
end
default:state<=M_G_state;
endcase
//交通灯状态控制,state为相应状态时亮相应灯
always@(posedge clk_1Hz )
begin
if(state==M_G_state)
main_G<=1;
else
main_G<=0;
end
always@(posedge clk_1Hz )
begin
if(state==M_Y_state )
main_Y<=1;
else
main_Y<=0;
end

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通灯控制器设计Verilog代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员