基于fpga的交通灯控制器设计.doc
上传人:王子****青蛙 上传时间:2024-09-14 格式:DOC 页数:14 大小:1.8MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于fpga的交通灯控制器设计.doc

基于fpga的交通灯控制器设计.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数字系统课程设计基于FPGA得交通控制灯设计姓名:学号:班级:摘要随着社会得发展,城市规模得不断扩大,城市交通成为制约城市发展得一大因素。人口与汽车日益增长,市区交通也日益拥挤,人们得安全问题当然也日益重要。因此,红绿交通信号灯成为交管部门管理交通得重要工具之一。有了交通灯,人们得安全出行也有了很大得保障。自从交通灯诞生以来,其内部得电路控制系统就不断得被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。尤其就就是近几年来,随着电子与计算机技术得飞速发展,电子电路分析与设计方法有了很大得改进,电子设计自动化也已经成为现代电子系统中不可或缺得工具与手段,这些都为交通灯控制系统得设计提供了一定得技术基础。本课程设计运用erilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求得交通灯控制及时间显示,并最后进行了软件实现,达到了系统要求得功能。设计原理1、1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯得过程中,亮光得黄灯作为过渡,黄灯得时间为5s。能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态得显示灯亮。能实现特殊状态得功能显示,1、2设计思路与原理本次设计就就是针对十字路口,进行南北与东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯得亮得规则,在初始状态下四个方向得都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道与支干道上得黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道与支干道上得黄灯都亮启5s,一个循环完成。循环往复得直行这个过程。其过程如下图所示:图1、交通灯点亮时间控制说明1、3实现方法本次采用文本编辑法,即利用VerilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求得交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上得交通灯,用4个7段数码管分别显示两个方向上得交通灯剩余时间,控制时钟由试验箱上频率信号提供。VerilogHDL程序设计2、1整体设计根据上章设计原理,交通灯控制得关键就就是各个状态之间得转换与进行适当得时间延时,根据状态机得设计规范,本次设计了三个状态之间得循环转化,其真值表及状态转化图如下所示:图2、交通灯控制状态转化说明:该状态图为交通灯在正常情况下得状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环。为实现控制与显示得功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3、交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。2、2具体设计根据整体设计要求,编写各个功能部分VerilogHDL程序,设置各输入输出变量说明如下clk:为计数时钟;qclk:为扫描显示时钟;en:使能信号,为1得话,则控制器开始工作;rst:复位信号,为1得话,控制及技术回到初始状态;hoid:特殊情况控制信号,为1得话,则两个方向无条件显示为红灯;light1:控制主干道方向四盏灯得亮灭;其中,light1[0]~light[2],分别控制主干道方向得绿灯、黄灯与红灯;light2:控制支干道方向四盏灯得亮灭;其中,light2[0]~light2[2],分别控制支干道方向得绿灯、黄灯与红灯;num1:用于主干道方向灯得时间显示,8位,可驱动两个数码管;num2:用于支干道方向灯得时间显示,8位,可驱动两个数码管;counter:用于数码管得译码输出;st1,st2:数码管扫描信号。输入输出及中间变量设置如下:moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]state1,sta