基于FPGA的交通灯控制器设计.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于FPGA的交通灯控制器设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的交通灯控制器设计.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于FPGA的交通灯控制器设计 数字系统课程设计 基于FPGA的交通控制灯设计姓名:学号:班级: 摘要 随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素.人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题当然也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯,人们的安全出行也有了很大的保障。自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化.尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可或缺的工具和手段,
2、这些都为交通灯控制系统的设计提供了一定的技术基础。本课程设计运用erilog HDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示,并最后进行了软件实现,达到了系统要求的功能。 设计原理1.1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数 主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s.能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初
3、始状态开始计数,对应状态的显示灯亮。能实现特殊状态的功能显示,1。2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成.循环往复的直行这个过程。其过程如下图所示:图1。交通灯点亮时间控制说明1.3实现方法本次采用文本编辑法,即利用Verilog HDL语言描述交通控制器,通过状态机计
4、数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。 Verilog HDL程序设计2.1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结
5、束一个循环,从00状态重新开始循环。为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3。交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起.2。2 具体设计根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下clk: 为计数时钟;qclk:为扫描显示时钟;en: 使能信号,为1 的话,则控制器开始工作;rst: 复位信号,为1的话,控制及技术回到初始状态;hoid:特殊情况控制信号,为1的话,则两个方
6、向无条件显示为红灯;light1: 控制主干道方向四盏灯的亮灭;其中,light10light2,分别控制主干道方向的绿灯、黄灯和红灯;light2: 控制支干道方向四盏灯的亮灭;其中,light20 light22,分别控制支干道方向的绿灯、黄灯和红灯;num1: 用于主干道方向灯的时间显示,8 位,可驱动两个数码管;num2: 用于支干道方向灯的时间显示,8 位,可驱动两个数码管;counter:用于数码管的译码输出;st1,st2:数码管扫描信号 。输入输出及中间变量设置如下:module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light
7、1,light2,counter,st1,st2);input en,clk,qclk,rst,hold,rst1;output st1,st2;output7:0 num1,num2;output6:0counter;output2:0 light1,light2;reg tim1,tim2,st1,st2;reg1:0state1,state2,ste;reg2:0light1,light2;reg3:0num;reg6:0counter;reg7:0 num1,num2;reg7:0 red1,red2,green1,green2,yellow1,yellow2;1. 二极管点亮控制该部
8、分程序的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的译码电路。此外,当检测到特殊情况(hold=1)发生时,无条件点亮红灯的二极管,当检测到复位信号,两个方向计数与控制回复到00状态。因为主、支干道两个方向二极管点亮的顺序与延迟时间不同,顾编写两个独立的部分来控制,具体程序如下:1)主干道方向always (posedge clk )begin if(rst) /复位与特殊情况控制 begin light1=3b001;num1=green1; end else if(hold) begin light1=3b100; num1=green1; end el
9、se if(en) begin /使能有效开始控制计数 if(!tim1) / begin /主干道交通灯点亮控制 tim1=1; case(state1) 2b00:begin num1=green1;light1=3b001;state1=2b01;end 2b01:begin num1=yellow1;light1=3b010;state1=2b11;end 2b11:begin num1=red1;light1=3b100;state1=2b10;end 2b10:begin num1=yellow1;light1=3b010;state1=2b00;end default:light
10、1=3b100; endcase end2)支干道方向 always (posedge clk )begin if(rst) /复位与特殊情况控制 begin light2=3b100; num2=red2; end else if(hold) begin light2=3b100; num2=red2; end else if(en) begin if(!tim2) begin tim2=1; case(state1) 2b00:begin num2=red2;light2=3b100;state2=2b01;end 2b01:begin num2=yellow1;light2=3b010;
11、state2=2b11;end 2b11:begin num2=green2;light2=3b001;state2=2b10;end 2b10:begin num2=yellow2;light2=3b010;state2=2b00;end default:light2=3b100; endcase end2. 倒数计时该部分程序完成二极管发光时延的计数,并将计数结果送到数码管显示电路,每切换到一个状态,计数器的初值都被重置,以实现不同颜色二极管不同的时延要求。本次设计直接用逻辑运算完成2位十进制数的计数,未采用分位器的设计。因为主、支干道上计数器的结构完全相同,顾只列出一路的程序,其具体程序
12、如下所示:always (posedge clk )beginelse begin /倒数计时 if(num10) if(num13:0=0) begin num13:0=4b1001; num17:4=num17:4-1; end else num13:0=num13:01; if(num1=1) tim1=0; end end else begin light1=3b010; num1=2b00; tim1=0; endend3. 数码管的译码及扫描显示该段程序主要完成4个7段数码管的译码显示及扫描,使系统能正常显示主、支干道两个方向上的剩余时间。译码的时钟频率要低,为Hz级。扫描的时钟频
13、率要高,最低不得小于人眼分辨频率50Hz,具体程序如下所示:always (posedge qclk)begin /数码管扫描 if(rst1) begin st1=0; st2=0; end else begin case(st2,st1) 2b00:begin num=num13:0;st2,st1=2b01; end 2b01:begin num=num17:4;st2,st1=2b10; end 2b10:begin num=num23:0;st2,st1=2b11; end 2b11:begin num=num27:4;st2,st1=2b00; end endcase endend
14、always (posedge qclk)begin /数码管译码显示case(num)4b0000: counter=7b0111111; /04b0001: counter=7b0000110; /14b0010: counter=7b1011011; /24b0011: counter=7b1001111; /34b0100: counter=7b1100110; /44b0101: counter=7b1101101; /54b0110: counter=7b1111101; /64b0111: counter=7b0000111; /74b1000: counter=7b111111
15、1; /84b1001: counter=7b1101111; /9default: counter=7b0111111; /0endcaseendendmodule总体程序见程序清单所示 仿真与硬件调试3。1 波形仿真在Quarturs软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。设置仿真时间,时钟周期,输入输出端口,进行波形仿真。具体仿真波形图及说明如下所示:仿真截止时间:100us;时钟:clk 1us,qclk 0.1us1. 正常工作时波形仿真图图4. 正常工作时波形仿真图图形说明波形仿真主要完成了控制与计数以及数码管显示的波形图。en为低电品时,计数器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 交通灯 控制器 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内