news 2026/6/12 7:37:02

交通灯控制系统仿真 FPGA 设计 Verilog Vivado

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
交通灯控制系统仿真 FPGA 设计 Verilog Vivado

名称:交通灯控制系统仿真 FPGA 设计 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计实现一个基于 Verilog 的交通灯控制系统,面向 FPGA 数字逻辑课程设计、状态机实验和 Vivado 仿真验证场景。系统以 A、B 两个方向的车流输入作为控制条件,输出两组红、黄、绿交通灯信号,并配合数码管显示倒计时信息,便于观察交通灯状态切换和剩余时间变化。 交通灯逻辑支持多种交通场景:无车、仅 B 方向有车、双向有车、仅 A 方向有车等。仿真激励中对不同车流输入进行了分段测试,可观察主路绿灯保持、黄灯过渡、支路放行以及双向交替控制过程。通过这种输入场景安排,可以较完整地验证控制状态机在不同交通需求下的响应。 工程适合作为 Verilog 时序逻辑、有限状态机、分频计时、动态数码管显示和 Vivado 仿真流程的参考案例。整体结构清晰,模块划分明确,便于在现有逻辑基础上继续扩展倒计时时长、灯色策略、传感器输入或显示方式。

运行环境

开发软件:Vivado 设计语言:Verilog 工程形式:Vivado 工程,包含 Verilog 源码、仿真 Testbench、行为仿真相关文件和设计文档。

设计思路

系统采用模块化设计思路,将时钟分频、交通灯控制、数码管扫描显示和顶层连接分开实现。顶层模块负责连接外部时钟、复位、车流输入、交通灯输出以及数码管显示信号;控制模块根据 A、B 两路车流输入和计时信号进行状态切换;分频模块把系统时钟转换为控制逻辑需要的节拍;显示模块负责将倒计时信息通过数码管动态扫描输出。 交通灯控制核心以状态机为主,围绕红灯、黄灯、绿灯的组合关系进行切换。A、B 两个方向不会同时放行,黄灯阶段作为方向切换前的过渡状态。仿真中通过调整分频参数,将实际较长的秒级计时压缩为更快的仿真节拍,从而在较短仿真时间内观察完整状态转换过程。 测试文件设置了多组典型车流输入:先复位并进入无车状态,再依次测试支路有车、双向有车、主路有车、支路再次有车等场景。监视语句输出灯色状态和内部倒计时数值,便于结合波形或控制台信息判断交通灯逻辑是否按预期运行。

模块结构

主要模块包括: 1. top:系统顶层模块,连接时钟、复位、车流输入、交通灯输出和数码管显示接口。 2. traffic_ctrl:交通灯控制模块,根据 AS、BS 车流输入和计时节拍生成 A、B 两方向红黄绿灯控制信号,并维护倒计时状态。 3. clk_div:时钟分频模块,为交通灯控制提供计时节拍;仿真中可通过参数调整加快验证速度。 4. seg_scan:数码管扫描显示模块,用于输出位选和段选信号,显示交通灯倒计时信息。 5. top_tb:仿真测试模块,产生 50MHz 时钟、复位和多组车流输入激励,并监视灯色与倒计时变化。

演示视频

包含交通灯控制系统演示视频,可用于直观看到工程仿真或运行展示效果,辅助理解不同车流条件下红、黄、绿灯状态以及倒计时显示的变化过程。

演示视频请关注公众号后获取对应资料查看。

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

设计文档内容覆盖工程文件、程序文件、程序编译、RTL 图、仿真图、Testbench、顶层仿真、分频模块、控制模块和显示模块等部分。文档配套多张设计与仿真相关图片,适合结合 Vivado 工程查看模块层次、仿真过程和关键逻辑结构。

部分代码

以下展示顶层模块top_tb的部分代码,完整代码可关注下方公众号卡片获取。

module top_tb; // 时钟与复位 reg clk; reg rst_n; // 车流输入 reg AS; reg BS; // 顶层输出 wire AR, AY, AG; wire BR, BY, BG; wire [3:0] an; wire [7:0] seg; // 实例化被测顶层 top DUT ( .clk(clk), .rst_n(rst_n), .AS(AS), .BS(BS), .AR(AR), .AY(AY), .AG(AG), .BR(BR), .BY(BY), .BG(BG), .an(an), .seg(seg) ); // 将分频系数设小:例如1000(配合50MHz时钟,相当于每1000个clk出一次tick_1hz脉冲) // 这会让"1秒"在仿真中非常快(1000*20ns = 20us) defparam DUT.u_div.DIV_1HZ = 1000; // 50MHz 时钟:周期20ns initial begin clk = 1'b0; forever #10 clk = ~clk; end // 复位过程 initial begin rst_n = 1'b0; AS = 1'b0; BS = 1'b0; repeat(10) @(posedge clk); // 200ns 复位 rst_n = 1'b1; end // 任务:等待N个"秒"脉冲(由参数化分频产生的tick_1hz) task wait_secs(input integer n); integer i; begin for (i=0; i

代码获取:点击下方公众号卡片

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 7:37:00

串口 FIFO 发送控制 FPGA 设计 Verilog Vivado VHDL

名称:串口 FIFO 发送控制 FPGA 设计 Verilog Vivado VHDL软件:Vivado语言:VHDL功能介绍本设计实现 FPGA 端 UART 串口发送功能,面向需要将内部数据通过 RS232/串口链路输出到上位机或串口调试工具的场景。顶层提供时钟、复位、串口…

作者头像 李华
网站建设 2026/6/12 7:35:04

格林函数方法在偏微分方程求解中的应用与优化

1. 偏微分方程系统求解的挑战与格林函数方法在科学计算和工程仿真领域,偏微分方程(PDE)系统的求解一直是个核心难题。这类问题广泛存在于电磁场分析、流体力学模拟、结构力学计算等场景中。传统数值解法如有限元法(FEM)和有限差分法(FDM)虽然成熟,但在处…

作者头像 李华
网站建设 2026/6/12 7:31:55

当Excel成为CAD的遥控器:揭秘Office与AutoCAD的COM接口交互实战

Excel与AutoCAD的深度对话:COM接口技术解析与实战应用在工程设计与数据分析的交叉领域,Excel和AutoCAD这对看似毫不相关的软件组合,却能够通过Windows平台的COM技术实现令人惊叹的深度交互。这种技术不仅能够提升工作效率,更能为跨…

作者头像 李华
网站建设 2026/6/12 7:28:00

金融专硕考396的学校有哪些|396|资料已整理

金融专硕考396的学校有哪些|396|资料已整理资料全科都有金融专硕396院校资料 PDFhttps://pan.quark.cn/s/c10fdd3f93a0 【英语真题】1. Some programs use a different entrance examination. The word "entrance" means( )A. admission-rela…

作者头像 李华
网站建设 2026/6/12 7:19:12

OptiScaler终极指南:简单三步让游戏画质飞升的免费方案

OptiScaler终极指南:简单三步让游戏画质飞升的免费方案 【免费下载链接】OptiScaler OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2/XeSS/FSR2 inputs, replaces native upscalers, enables FSR-FG/XeFG on non-FG titles. Supports Nukem m…

作者头像 李华