交通信号灯控制系统 Verilog Vivado

名称:交通信号灯控制系统 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计为交通信号灯控制系统,使用 Verilog 在 Vivado 环境下实现。系统面向主干道与支干道交叉路口控制场景,能够输出主干道红灯、绿灯、黄灯、左转灯以及支干道红灯、绿灯、黄灯、左转灯等控制信号,并带有数码管倒计时显示接口。 设计支持支路有车检测输入 car_branch,可根据支路车辆信号参与交通灯状态控制。顶层模块 trafic 将分频、状态机和显示功能连接在一起,使交通灯控制逻辑、倒计时数据和数码管显示形成完整闭环。 该工程包含 testbench 与 Vivado 仿真相关文件,适合用于课程设计、FPGA 入门综合实验、有限状态机项目训练以及交通灯控制逻辑参考。代码层次简洁,模块划分明确,便于二次修改信号灯时序、状态跳转条件或显示方式。

运行环境

开发语言:Verilog 开发软件:Vivado 工程类型:Vivado FPGA 工程 顶层模块:trafic 主要源文件:trafic.v、state_machine.v、div.v、display.v、trafic_vlg_tst.v

设计思路

设计采用顶层模块统一组织分频、状态机控制和数码管显示三个主要功能单元。外部输入包括系统时钟、复位信号以及支路有车信号,输出包括主干道和支干道的红灯、绿灯、黄灯、左转灯控制信号,同时通过数码管输出倒计时信息。 时钟处理部分由 div 模块完成,将输入时钟分频得到 1Hz 节拍,作为交通灯状态切换和倒计时递减的时间基准。这样可以把较快的显示扫描时钟与较慢的交通控制节拍区分开,便于状态机逻辑和动态数码管显示分别工作。 核心控制由 state_machine 模块实现。该模块根据复位信号、1Hz 时钟以及 car_branch 支路有车信号进行状态转移,分别驱动主干道和支干道的红、绿、黄、左转信号灯,并输出 main_cnt、branch_cnt 两组倒计时数据。显示模块 display 接收两路倒计时数据,通过 SEG1 和 SEL1 完成数码管段选、位选显示。 整体结构清晰,适合作为交通灯控制、有限状态机设计、Verilog 模块化设计、Vivado 仿真与综合练习项目使用。

模块结构

顶层模块为 trafic,负责连接分频模块、状态机控制模块和数码管显示模块。 主要模块包括: 1. trafic:系统顶层模块,定义输入输出接口并例化各功能模块。 2. div:分频模块,将输入时钟转换为 1Hz 控制节拍。 3. state_machine:交通灯状态机模块,负责主干道、支干道信号灯控制和倒计时输出。 4. display:数码管显示模块,接收主路和支路倒计时数据,输出段选 SEG1 与位选 SEL1。 5. trafic_vlg_tst:仿真测试模块,用于行为仿真验证。

演示视频

配套演示视频展示交通信号灯控制系统的运行效果,可用于直观查看主干道、支干道信号灯状态切换以及倒计时显示效果。

仿真图/仿真说明/设计文档图片

设计文档包含工程文件、程序文件、程序编译、RTL 图、仿真图、Testbench、顶层仿真图、分频模块、状态机控制模块和数码管显示模块等内容,可用于查看工程组织方式、模块连接关系与仿真参考结果。

交通信号灯控制系统 Verilog Vivado 设计文档图片 image1.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image10.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image11.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image12.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image13.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image14.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image2.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image3.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image4.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image5.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image6.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image7.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image8.png

交通信号灯控制系统 Verilog Vivado 设计文档图片 image9.png

部分代码

以下展示顶层模块 trafic 的部分代码,完整源码请下载压缩包查看。

module trafic(
input clk,//1K
input rst_p,//复位

input car_branch,//支路有车信号

output main_red,//主干道红灯
output main_green,//主干道绿灯
output main_yellow,//主干道黄灯
output main_left,//主干道左转灯
output branch_red,//支干道红灯
output branch_green,//支干道绿灯
output branch_yellow,//支干道黄灯
output branch_left,//支干道左转灯

output [7:0] SEG1,//数码管段选显示
output [3:0] SEL1 //数码管位选显示
);

wire clk_1Hz;
wire [7:0] main_cnt;
wire [7:0] branch_cnt;
//分频模块
div i_div(
. clk(clk),//时钟
. clk_1Hz(clk_1Hz)//1Hz
);	

//状态机控制模块
state_machine i_state_machine(
. clk_1Hz(clk_1Hz),//1Hz
. rst_p(rst_p),
. car_branch(car_branch),//支路有车信号
. main_red(main_red),
. main_green(main_green),
. main_yellow(main_yellow),
. main_left(main_left),
. branch_red(branch_red),
. branch_green(branch_green),
. branch_yellow(branch_yellow),
. branch_left(branch_left),
. main_cnt(main_cnt),
. branch_cnt(branch_cnt)
);

//显示模块
display i_display
(
. clk_1K(clk),//时钟
. main_data(main_cnt),//主路,两个数码管
. branch_data(branch_cnt),//支路,两个数码管
. SEG1(SEG1),//数码管段选显示
. SEL1(SEL1) //数码管位选显示
);

endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通信号灯控制系统 Verilog Vivado

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

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