软件:Quartus
语言:VHDL
功能介绍
本工程实现一个 FPGA 交通灯控制系统,使用 VHDL 编写,开发环境为 Quartus。系统面向主路与支路的交通控制场景,能够输出两组红、黄、绿灯信号,并通过数码管显示相关倒计时信息,形成完整的交通信号灯控制效果。
设计支持复位、紧急情况控制、支路有车传感输入,以及主路绿灯时间和支路绿灯时间的加减调节。主路与支路的灯光按照设定时序切换,黄灯用于过渡提示,红绿灯输出为高电平点亮,适合直接映射到实验箱或开发板 LED 资源。
工程同时包含 Quartus 工程文件、VHDL 源码、管脚分配、仿真波形文件、RTL 图和设计文档内容。对于需要完成 FPGA 课程设计、交通灯实验、状态机设计练习或数码管显示综合实验的用户,可以作为可编译、可验证、可参考修改的完整工程。
运行环境
开发语言:VHDL
开发软件:Quartus
工程类型:FPGA 交通灯控制工程
顶层模块:Traffic_Light_Control
付费文件:Traffic_Light_Control.rar
设计思路
本设计以道路交通灯控制为核心,面向主路与支路的通行管理场景。系统通过时序控制实现红、黄、绿灯状态切换,主路和支路互斥放行,避免两个方向同时绿灯造成冲突。输入端包含复位、紧急控制、支路车辆传感以及主路/支路绿灯时间调节信号,适合用于课程设计、实验箱验证和 FPGA 时序控制练习。
控制逻辑中,主路和支路分别配置红灯、绿灯、黄灯输出,倒计时信息通过多位七段数码管显示。支路车辆传感输入用于参与支路通行判断,紧急控制输入用于处理特殊状态,绿灯加减按键用于调整主路与支路的放行时间,使设计不只是固定周期循环,而具备一定的人机交互和参数调节能力。
工程采用模块化 VHDL 结构,将交通灯状态控制、时间控制、分频、按键处理、七段数码管译码和显示输出分离,便于阅读、调试和二次修改。学习者可以从顶层端口入手理解外设连接,再分别分析控制模块与显示模块,从而掌握 FPGA 中状态机、计数分频、按键消抖和动态/静态显示控制的综合应用。
模块结构
顶层模块为 Traffic_Light_Control,负责连接系统时钟、复位、控制输入、车辆传感输入、绿灯时间调节按键、交通灯输出以及数码管显示输出。
主要模块包括:time_ctrl 时间控制模块,RGY 红黄绿灯控制模块,div_10 分频模块,LED7S 七段数码管译码模块,CLOCK 时钟相关模块,key_jitter 按键消抖模块,HEX 显示相关模块。各模块围绕交通灯时序控制和数码管显示进行分工,结构清晰,便于定位功能和扩展逻辑。
开发板验证
工程包含管脚约束/分配文件,支持将交通灯控制逻辑下载到开发板进行验证。按约束连接后,可通过按键完成复位以及主路、支路绿灯时间的加减调节,通过开关输入紧急控制信号和支路车辆传感信号,输出端驱动主路与支路的红、黄、绿指示灯。
开发板验证重点包括:主路与支路信号灯互锁显示、黄灯过渡、倒计时数码管显示、支路有车时的通行切换、紧急情况控制以及绿灯时间参数调节。工程已生成 Quartus 输出文件,便于在完成管脚核对后直接进行下载测试。
演示视频
包含交通灯控制演示视频,可用于查看工程在实际操作中的灯光切换、按键调节、开关输入与数码管显示效果。
演示视频请点击左下角阅读原文查看。
仿真图/仿真说明/设计文档图片
设计文档中包含工程文件、程序文件、程序编译、RTL 图、管脚分配、仿真图、整体仿真图、控制模块、显示模块、分频模块等内容。工程还包含 vwf 波形文件,可用于查看整体仿真以及相关模块的时序表现。
部分代码
以下展示顶层模块 Traffic_Light_Control 的部分代码,完整源码请下载压缩包查看。
ENTITY Traffic_Light_Control IS
PORT (
clk : IN STD_LOGIC;--50Mhz
reset_n : IN STD_LOGIC;--复位 --key4
control : IN STD_LOGIC;--紧急情况功能 --SW0
car_in : IN STD_LOGIC;--支路有车传感器 --SW1
main_green_add : IN STD_LOGIC;--主路绿灯加--key0
main_green_sub : IN STD_LOGIC;--主路绿灯减--key1
branch_green_add : IN STD_LOGIC;--支路绿灯加--key2
branch_green_sub : IN STD_LOGIC;--支路绿灯减--key3
R1 : OUT STD_LOGIC;--高电平亮,主路红灯--R0
G1 : OUT STD_LOGIC;--高电平亮,主路绿灯--R1
Y1 : OUT STD_LOGIC;--高电平亮,主路黄灯--R2
R2 : OUT STD_LOGIC;--高电平亮,支路红灯--R5
G2 : OUT STD_LOGIC;--高电平亮,支路绿灯--R6
Y2 : OUT STD_LOGIC;--高电平亮,支路黄灯--R7
HEX0 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管0
HEX1 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管1
HEX2 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管2
HEX3 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)--数码管3
);
END Traffic_Light_Control;
代码获取:点击【来源:www.hdlcode.com】
87