基于Verilog-HDL的交通灯控制器设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

0目录第一章设计原理.......................................................................................................................................11.1设计要求..........................................................................................................................11.2设计思路和原理............................................................................................................................11.3实现方法..........................................................................................................................................1第二章Verilog程序设计.........................................................................................................22.1整体设计...........................................................................................................................22.2具体设计..........................................................................................................................3第三章仿真................................................................................................................................................73.1波形仿真..........................................................................................................................7第四章设计总结.......................................................................................................................94.1总结...................................................................................................................................94.2参考资料............................................................................................................................9程序清单.....................................................................................................................................101交通灯控制器设计第一章设计原理1.1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s。能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。1.2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的直行这个过程。其过程如下图所示:绿灯亮黄灯亮红灯亮0s35s30s65s0s绿灯亮红灯亮黄灯亮60s25s65s主干道方向支干道方向图1.交通灯点亮时间控制说明1.3实现方法本次采用文本编辑法,即利用Verilog语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。2第二章Verilog程序设计2.1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:状状00状状11状状10状状01状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环。为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状rstclkhold1KHz1Hz1Hz图3.交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。32.2具体设计根据整体设计要求,编写各个功能部分Verilog程序,设置各输入输出变量说明如下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,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,green1,green2,yellow1,yellow2;1.二极管点亮控制该部分程序的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的译码电路。此外,当检测到特殊情况(hold=‘1’)发生时,无条件点亮红灯的二极管,当检测到复位信号,两个方向计数与控制回复到00状态。因为主、支干道两个方向二极管点亮的顺序与延迟时间不同,顾编写两个独立的部分来控制,具体程序如下:41)主干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1=3'b001;num1=green1;endelseif(hold)beginlight1=3'b100;num1=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//begin//主干道交通灯点亮控制tim1=1;case(state1)2'b00:beginnum1=green1;light1=3'b001;state1=2'b01;end2'b01:beginnum1=yellow1;light1=3'b010;state1=2'b11;end2'b11:beginnum1=red1;light1=3'b100;state1=2'b10;end2'b10:beginnum1=yellow1;light1=3'b010;state1=2'b00;enddefault:light1=3'b100;endcaseEnd2)支干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2=3'b100;num2=red2;endelseif(hold)beginlight2=3'b100;num2=red2;end5elseif(en)beginif(!tim2)begintim2=1;case(state1)2'b00:beginnum2=red2;light2=3'b100;state2=2'b01;end2'b01:beginnum2=yellow1;light2=3'b010;state2=2'b11;end2'b11:beginnum2=green2;light2=3'b001;state2=2'b10;end2'b10:beginnum2=yellow2;light2=3'b010;state2=2'b00;enddefault:light2=3'b100;endcaseEnd2.倒数计时该部分程序完成二极管发光时延的计数,并将计数结果送到数码管显示电路,每切换到一个状态,计数器的初值都被重置,以实现不同颜色二极管不同的时延要求。本次设计直接用逻辑运算完成2位十进制数的计数,未采用分位器的设计。因为主、支干道上计数器的结构完全相同,顾只列出一路的程序,其具体程序如下所示:always@(posedgeclk)beginelsebegin//倒数计时if(num10)if(num1[3:0]==0)beginnum1[3:0]=4'b1001;num1[7:4]=num1[7:4]-1;end

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功