交通信号灯控制器..doc
文本预览下载声明
交通信号灯控制器课程报告
一.设计要求
设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
主、支干道交替允许通行,主干道每次放行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
显示全部