DebanjonDas/Intelligent-Traffic-Light-Controller
GitHub: DebanjonDas/Intelligent-Traffic-Light-Controller
基于 Verilog HDL 的自适应交通灯控制器,通过密度感知计时、紧急优先和行人安全等机制替代传统固定配时方案。
Stars: 0 | Forks: 0
# 🚦 智能交通灯控制器
一个使用 **Verilog HDL** 设计和验证的自适应、模块化数字硬件系统。该控制器用动态的实时传感能力取代了原始的固定定时器系统——整合了自适应交通密度计时、紧急车辆路由、行人处理以及节能夜间模式。
## 📌 项目概述
该项目的目标是使用分层结构架构,建模一个优化的、可用于生产环境的交通管理枢纽。系统主动处理道路状况(传感器数据),以最大化交通吞吐量并最小化路口等待时间。
### 主要功能
* 📊 **基于密度的计时:** 根据实际车辆排队情况,动态计算绿灯间隔(10秒至60秒)。
* 🚑 **紧急车辆优先:** 自动覆盖标准周期,为紧急车辆开辟通道,并通过检查排队密度来解决同时发起的请求。
* 🚶 **行人过街系统:** 通过专用的锁存控制器锁存行人请求,在完整周期结束时插入安全的步行阶段(`PED_WALK`)。
* 🌙 **夜间模式运行:** 暂停正常的状态序列,通过结构化硬件时钟分频器在所有路线上闪烁警告黄灯。
* ⚡ **严格的功能验证:** 通过涵盖重叠的异步事件触发的广泛 testbench 进行了验证。
## 🏗️ 模块分解
该设计采用了**分层和模块化的方法**,将任务分配给专门的计算块和独立的有限状态机(FSM)控制引擎。
* **`intelligent_traffic_controller`**:顶层封装模块,负责管理内部网络路由和结构化模块实例化。
* **`Traffic_fsm`**:中央控制器,根据计时器状态、紧急标志和模式输入管理状态转换。
* **`timer`**:硬件倒计时块,根据动态注入的持续时间处理精确的延迟生成。
* **`density_processor`**:组合查找矩阵,将计算出的车辆数映射到最佳相位延迟。
* **`emergency`**:优先级排序和路由矩阵,处理活动的紧急覆盖和密度仲裁。
* **`pedestrian_controller`**:时序事件捕获器,确保行人请求被锁存并安全保留,直到被服务。
* **`light_output_decoder`**:将当前状态向量直接映射到标准驱动信号,同时结合用于低功耗操作的活动脉冲宽度切换闪烁例程。
## 🚦 有限状态机(FSM)规范
该引擎依赖于一个包含 9 个结构化操作状态的稳健的 Moore 型 FSM。
| 状态指标 | 十六进制值 | 激活输出映射 | 退出触发条件 |
| :--- | :---: | :--- | :--- |
| **`NS_G`** | `4'b0000` | 南北绿灯,东西红灯 | `done`(动态密度时间) |
| **`NS_Y`** | `4'b0001` | 南北黄灯,东西红灯 | `done`(固定 5 秒时间) |
| **`ALL_R1`** | `4'b0010` | 南北红灯,东西红灯 | `done`(固定 2 秒清空时间) |
| **`EW_G`** | `4'b0011` | 南北红灯,东西绿灯 | `done`(动态密度时间) |
| **`EW_Y`** | `4'b0100` | 南北红灯,东西黄灯 | `done`(固定 5 秒时间) |
| **`ALL_R2`** | `4'b0101` | 南北红灯,东西红灯 | `done` $\rightarrow$ 分支至 `PED_WALK` 或 `NS_G` |
| **`PED_WALK`**| `4'b0110` | 全部路线红灯,行人通行高电平 | `done`(固定 15 秒通行时间) |
| **`EMERGENCY`**| `4'b0111`| 优先路线绿灯,受阻路线红灯 | `!emergency_present`(异步释放) |
| **`NIGHT`** | `4'b1000` | 同步闪烁黄灯信号 | `!night_mode` |
### 自适应密度映射逻辑
`density_processor` 使用以下组合边界动态调整计时:
* **密度 $\le$ 5:** 绿灯时间 = **10秒**
* **密度 $\le$ 15:** 绿灯时间 = **20秒**
* **密度 $\le$ 30:** 绿灯时间 = **40秒**
* **密度 $>$ 30:** 绿灯时间 = **60秒**
## 💻 仿真与验证策略
该设计已通过高覆盖率的 testbench(`tb`)进行了验证,重点测试了异步系统事件和极端情况下的压力测试。
### 测试矩阵概况
仿真环境迫使硬件经历几个核心操作场景:
1. **标准序列循环:** 在低车辆密度条件下运行完整的流水线周期。
2. **行人锁存与服务:** 在活动车辆窗口期间插入任意的行人请求按钮按下动作,并测试安全相位转换。
3. **紧急中断与仲裁:** * 触发单独的南北和东西紧急覆盖。
* 模拟双重同时紧急请求,以验证基于竞争车辆队列的状态仲裁行为。
4. **动态密度更改:** 在周期中间修改交通密度寄存器,以证明系统能实时重新计算计时。
5. **夜间模式进入/退出:** 强制立即暂停循环以运行闪烁模式,并在退出时干净利落地返回清空周期。
### 如何在本地运行仿真
确保您安装了 HDL 编译器(如 **Icarus Verilog**)和波形查看器(**GTKWave**)。
```
# 克隆 repository
git clone [https://github.com/DebanjonDas/intelligent-traffic-controller.git](https://github.com/yourusername/intelligent-traffic-controller.git)
cd intelligent-traffic-controller
# 编译 source files 和 testbench
iverilog -o traffic_sim intelligent_traffic_controller.v
# 运行 simulation executable 以生成 VCD dumps
vvp traffic_sim
# 启动 wave viewer 以检查 signals
gtkwave traffic.vcd
```
## 📊 仿真与架构图库
以下是编译后的状态路由配置,以及通过 GTKWave 生成的功能验证波形。
### 功能波形验证

### 架构设计结构
本节捕获了跨您的设计阶段映射的 RTL 架构拓扑和块交互。
| 流水线框图 (1–4) | 流水线框图 (5–7) |
| :---: | :---: |
| ![设计阶段 1]() | ![设计阶段 5]() |
| ![设计阶段 2]() | ![设计阶段 6]() |
| ![设计阶段 3]() | ![设计阶段 7]() |
| ![设计阶段 4]() | *架构布局结束* |
### 测试套件仿真输出
详细说明状态转换、紧急覆盖和验证成功日志的实时编译终端打印输出。
| 验证日志 | 日志概况配置 |
| :---: | :--- |
| ![输出日志 1]() | 完整的测试套件初始化和基线循环。 |
| ![输出日志 2]() | 行人锁存处理和紧急路由检查。 |
| ![输出日志 3]() | 同步密度压力测试和安全退出验证。 |
标签:Verilog, 交通信号控制, 数字电路设计, 智能交通, 有限状态机, 硬件开发