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

名称:交通灯控制器设计Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

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

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

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
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值