文档详情

交通信号灯控制器..doc

发布:2016-12-27约4.64千字共8页下载文档
文本预览下载声明
交通信号灯控制器课程报告 一.设计要求 设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 主、支干道交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。 提示: 选择1HZ时钟脉冲作为系统时钟。 45秒、25秒、5秒定时信号用倒计时,计时起始信号由主控电路给出,每当计满所需时间,计数器清零,由主控电路启、闭三色信号灯或启动另一计时电路。 设计思路 本设计针对一条主干道和一条支干道汇合成的十字路口,进行南北和东西直行情况下交通灯控制。根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续45S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的执行这个过程。 设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。 根据状态机的设计规范,本次设计了四个状态之间的循环转化,其真值表及状态转化图如下所示 目前状态 下一状态 输出 Light1 Light2 S0=00 S1=01 001 100 S1=01 S2=10 010 010 S2=10 S3=11 100 001 S3=11 S0=00 010 010 程序说明 1.各输入输出变量说明: clk:计数时钟 qclk:扫描显示时钟 rst:复位信号,当rst为1时,控制器和计数器回到初始状态 en:使能信号,当en为1时控制器开始工作,en为0时 hold:特殊情况控制信号,hold为1时,主、支干道方向无条件显示为红灯 seg:用于数码管的译码输出 dig:用于选择显示的数码管(片选) num1:用于主干道方向灯的时间显示 num2:用于支干道方向灯的时间显示 light1:控制主干道方向四盏灯的亮灭,其中,light1[0]~light1[2]分别控制主干道方向的绿灯、黄灯和红灯 light2:控制支干道方向四盏灯的亮灭,其中,light2[0]~light2[2]分别控制支干道方向的绿灯、黄灯和红灯 2.输入输出及中间变量设置: module traffic(en,clk,qclk,rst,hold,num1,num2,light1,light2,seg,dig; input en,clk,qclk,rst,hold; output [5:0]dig; output[7:0] num1,num2; output[6:0]seg; output[2:0]light1,light2; reg tim1,tim2; reg[3:0]disp_dat; reg[6:0]seg; reg[7:0]num1,num2; reg[7:0]red1,red2,green1,green2,yellow1,yellow2; reg[5:0]dig; reg [1:0]count; reg[1:0]state1,state2; reg[2:0]light1,light2; 3.初始状态设置: always @(en) if(!en) begin green1=8 red1=8 yellow1=8 green2=8 red2=8 yellow2=8 end 4.主干道方向点亮顺序: always@(posedge clk) //主干道 begin if(rst) begin light1=3b001; num1=green1; end else if(hold) begin light1=3b100; num1=green1; end else 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=yello
显示全部
相似文档