交通灯 实习报告

  • 格式:docx
  • 大小:208.68 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xxxxxx学院信息工程学院

数字系统课程设计报告书

课题名称:基于FPGA的交通灯设计

院系:信息工程学院信工系

姓名学号:xxxxxxxx

专业班级:xxxxxxxxxxxx

指导教师:xxxxxxxxxxx

设计时间: 2015-2016学年第2学期15-16周

2016年 6月 28日

目录

1、摘要 (2)

2、设计内容及要求 (2)

3、系统设计总体方案及设计原理 (3)

4、各模块电路设计与实现 (3)

4.1时钟分频模块 (3)

4.2计数模块和交通信号灯电路模块 (4)

4.3时序状态控制模块 (6)

5、设计检测结果 (8)

参考文献 (10)

摘要:

交通灯控制系统的设计主要利用计数器,用做时间显示电路,定时器构成多谐振荡器为控制系统提供时钟,D触发器在输入高电平时具有翻转特性来控制黄灯闪烁,十字路口东西与南北方向的交通灯相互交替亮,黄灯在红绿灯都不亮时闪烁的特点来设计信号灯控制电路。

在该设计的制作过程中Quartus II9.1综合性PLD开发平台和Verilog HDL 硬件描述语言必不可少的工具。设计的各个模块功能都要运用到Verilog HDL 硬件描述语言、Quartus II9.1综合性PLD开发平台对其进行编写和模拟仿真。本次实习是基于FPGA设计交通灯系统的一种新方案,本设计就是针对交通信号灯控制器的设计问题,提出了基于verilog语言的交通信号灯系统的硬件实现方法。分频、计时、显示等各个模块的verilog程序,用verilog语言进行电路设计时,应充分认识到verilog语言的特点,从设计思想、语句运用及描述硬件方法上等多方面对电路进行优化设计。

关键词:可编程逻辑器件;交通灯;Quartus II 9.1

2设计内容及要求

(1)设计内容

交通灯控制器是可以自动控制交通灯,以倒计时的方式显示时间。交通灯控制器是以七段显示数码管显示时间,以发光二极管模仿交通灯,在这次实验中,采用的是基本的数字芯片和发光二极管来实现这样的要求。

(2)设计要求

1.主道路绿、黄、红灯亮的时间分别为30秒、5秒、65秒;

2.次道路绿、黄、红灯亮的时间分别为60秒、5秒、35秒;

3.主、次道路时间指示采用倒计时制,用2位数码管显示。

3系统设计总体方案及设计原理如图3-1

图3-1 系统设计框架

采用模块化层次设计,共分为4个模块(分频,计数,交通信号灯,时序状态)

4频模块设计与实现

4.1时钟分频模块

分频模块输入为50MHZ的矩形脉冲信号,要求输出为1HZ(用于时钟计时)、1000H(用于decode显示器显示)分频模块的源代码为:

module fp50(cp_50mhz,clk_1hz,clk_1khz);

input cp_50mhz;

output clk_1hz,clk_1khz;

reg clk_1hz,clk_1khz;

reg [27:0]count,count1;

always@ (posedge cp_50mhz)

begin

if(count==24999999)

begin

clk_1hz=~clk_1hz;

count=0;

end

else begin

count=count+1;

end

end

always@ (posedge cp_50mhz)

begin

if(count1==24999)

begin

clk_1khz=~clk_1khz;

count1=0;

end

else begin

count1=count1+1;

end

end

Endmodule

分频模块如图4-1

图4-1 分频模块4.2计数模块和交通信号灯电路模块

交通灯控制器

/* 信号定义与说明:

CLK:为同步时钟;

EN:使能信号,为1 的话,则控制器开始工作;

模块源代码为:

module jiao_tong_deng(ra,ga,ya,rb,gb,yb,clk1hz,jin,qh,ql);

input jin;

input clk1hz; //输入分频信号

output ra,ga,ya,rb,gb,yb; //输出主干道和次干道红绿灯output qh,ql;

reg [1:0]dig;

reg [6:0]seg;

reg ra,ga,ya,rb,gb,yb;

reg [1:0]state,next_state;

parameter state0=2'b00,state1=2'b01,state2=2'b10,state3=2'b11;

reg [3:0]one,ten;reg [1:0]cnt;

reg [3:0]data;reg [6:0]seg_temp;

reg r1,g1,y1,r2,g2,y2;reg [13:0]count1;

reg [8:0]count2;reg a;

reg [3:0]qh,ql;always @(posedge clk1hz)

Begin //设置各种灯的计数器置数state=next_state;

case(state)

state0:begin

if(!jin)

Begin if(!a) q h<='b0011;

Begin

qh<='b0010;ql<='b0100;a<=1;r1<=1;y1<=0;g1<=0;r2<=0;y2<=0;g2<=1;

end

else

state3:begin

if(!jin)

Begin