• 正文
  • 相关推荐
申请入驻 产业图谱

交通灯控制FPGA设计VHDL Quartus

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

名称:交通灯控制 FPGA 设计 VHDL Quartus

软件: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

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

本站代码库拥有大量 Verilog/VHDL的FPGA代码资源:hdlcode.com。代码有详细注释、演示视频、仿真图等资料,适合入门学习

微信公众号