交通灯控制器设计Verilog代码Quartus仿真
名称:交通灯控制器设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
基于 FPGA 的交通灯控制器
设计任务及具体要求: 要求设计一个基于 FPGA 的交通灯控制器。
(1) 交通指示灯:LED 灯模块有 12 个 LED 灯,红黄绿三种颜色,纵向表示南北
方向,横向表示东西方向,输出高电平时,对应的 LED 灯亮。
2) 八个 7 七段数码管:动态显示方式,共阴极连接;
3) 4 个 0-1 开关:K1-K4,开关向上为 1,向下为 0。
4) 外部输入脉冲信号时钟源 CLK(1Hz),供计数器使用。
3、交通灯时序
(1)东西、南北方向均有绿灯、黄灯、红灯指示,其持续时间由自己观察的结果自
定。(要求要合理可行,小于 100 秒)
2)系统设有时钟,以倒计时方式显示每一路允许通行的时间。(八个数码管的左边
六位显示030506,右边两位显示东西和南北通行时间)
3)当东西或南北两路中任一路出现特殊情况时,系统可由交警手动控制立即进入
特殊运行状态,即红灯全亮,时钟停止计时,东西、南北两路所有车辆停止通行;当特殊
运行状态结束后,系统恢复工作,继续正常运行。(本次设计规定 K1 为“0”时自动运行,
K1 为“1”时手动控制)

数码管动态显示:设计中七段数码管采用动态扫描的方式显示,扫描需要一个比较高
频率的信号,本次设计选用 1000HZ 。为了得到 1000Hz 信号,必须对输入的时钟信号
50MHZ 进行分频。显示模块共用 11 个管脚,其中 8 个用于连接 8 个数码管的七段 LED,
还有 3 个管脚用于选择点亮哪个数码管,每隔很短的一段时间 8 个数码管交替点亮,依次
循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。其原理
框图如图所示:



根据如上说明,本设计的主要任务和设计要求步骤是:
1、按照现代数字系统的 Top-Down 模块化设计方法,提出交通灯电 路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、
数码管显示、LED 显示等模块化子系统的设计方案。
2、在 QuartusⅡ13.0 的 EDA 设计环境中,完成系统的顶层设计、各子系统的模块化设
计。分别完成各个基于 Verilog 语言实现的子模块(包括控制器电路、计数器电路、数码管
显示、 LED 显示电路)的逻辑功能仿真。最后对顶层设计进行功能仿真。
3、在完成第 2 步的基础上,锁定管脚并全编译通过。
4、用下载电缆通过 JTAG 口将对应的 sof 文件加载到 FPGA 中,观察实验结果是否与自
己的编程思想一致。(有条件再进行)
5.电路设计与仿真,主要包括:总体方案设计,各个电路子模
块的 Verilog 源文件或者原理图,功能仿真波形;顶层设计的 Verilog 源文件或者 原理图、功能仿真波形;
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件

2. 程序文件





3. 程序编译

4. RTL图(原理图)

5. 管脚分配

6. 仿真图
整体仿真图


分频模块

红绿灯控制模块


数码管计数模块

显示模块


部分代码展示:
/* 红->绿 绿->黄 黄->红 1、红--计时main_red_times------------------------绿--计时main_green_times---main_yellow_times黄灯---------------红 2、绿--计时branch_green_times---branch_yellow_times黄灯--------------------红--计时branch_reg_times-------------------绿 */ module traffic_light( input clk,//时钟 input lock_key,//紧急按键--均为红灯,为1紧急状态,为0正常状态 //红绿灯 1亮0灭 output main_red,//主路灯 output main_green,//主路灯 output main_yellow,//主路灯 output branch_red,//支路灯 output branch_green,//支路灯 output branch_yellow,//支路灯 output [2:0] weixuan,//数码管位选 output [7:0] duanxian//数码管段选 ); wire clk_1Hz; wire [7:0] main_green_BCD; wire [7:0] main_yellow_BCD; wire [7:0] main_red_BCD; wire [7:0] branch_green_BCD; wire [7:0] branch_yellow_BCD; wire [7:0] branch_red_BCD; wire [7:0] main_data; wire [7:0] branch_data; wire main_red_led;//主路灯 wire main_green_led;//主路灯 wire main_yellow_led;//主路灯 wire branch_red_led;//支路灯 wire branch_green_led;//支路灯 wire branch_yellow_led;//支路灯 //led 1亮0灭 assign main_red=main_red_led;//主路灯 assign main_green=main_green_led;//主路灯 assign main_yellow=main_yellow_led ;//主路灯 assign branch_red=branch_red_led;//支路灯 assign branch_green=branch_green_led;//支路灯 assign branch_yellow=branch_yellow_led ;//支路灯 //分频模块 div div100 ( . clk(clk), . clk_out(clk_1Hz) );
代码文件(付费下载):
![]()
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通灯控制器设计Verilog代码Quartus仿真