• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的交通灯控制器设计Verilog代码Quartus仿真

09/30 09:00
918
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24103119394c55.doc

共1个文件

名称:交通灯控制器设计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)
);

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1307

  • 2-24103119394c55.doc
    下载

相关推荐