您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 数字系统课程设计-交通灯控制器实验报告
交通灯控制器——数字系统设计报告姓名:学号:一.实验目的1.基本掌握自顶向下的电子系统设计方法2.学会使用PLD和硬件描述语言设计数字电路,掌握QuartusII等开发工具的使用方法3.培养学生自主学习、正确分析和解决问题的能力二.设计要求我所选择的课题是用VerilogHDL实现交通灯控制器。该课题的具体内容及要求如下:主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。主干道和乡村公路都安装了传感器,检测车辆通行情况,用于主干道的优先权控制。(1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。(2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。主干道最短通车时间为25s。(3)当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。(4)不论主干道情况如何,乡村公路通车最长时间为16s。(5)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。(6)用开关代替传感器作为检测车辆是否到来的信号。用红、绿、黄三种颜色的发光二极管作交通灯。(7)要求显示时间,倒计时。交通灯控制器框图如下:(C表示乡村道路是否有车到来,1表示有,0表示无;SET用来控制系统的开始及停止;RST是复位信号,高电平有效,当RST=1时,恢复到初始设置;CLK是外加时钟信号;MR、MY、MG分别表示主干道的红灯、黄灯和绿灯;CR、CY、CG分别表示乡村道路的红灯、黄灯和绿灯,1表示亮,0表示灭)系统流程图如下:(MGCR:主干道绿灯,乡村道路红灯;MYCR:主干道黄灯,乡村道路红灯;MRCG:主干道红灯,乡村道路绿灯;MRCY:主干道红灯,乡村道路黄灯;T0=1表示主干道最短通车时间到,T1=1表示5秒黄灯时间到,T2=1表示乡村道路最长通车时间到。)交通灯控制器主干道计数器乡村公路计数器显示显示CSETRSTCLKMRMYMGCRCYCG三.设计方案本交通灯控制系统设计利用VerilogHDL语言进行设计编程,利用CycloneEP1C6Q240C8芯片和一些外围器件组成硬件电路,利用QUARTUSII软件将编写好的程序进行编译、仿真,并将调试完成的程序下载到CycloneEP1C6Q240C8芯片上,观测电路板上的红绿信号灯以及数码管显示,看是否按设计要求正常工作.四、设计流程本系统采用自顶向下的设计,设计一个顶层文件和三个底层文件。各模块关系如下:MGCRMYCRMRCYT1=1MRCGT1=1C=0C=1T0=1C=1T2=1设计文件如下:1.低层文件(1)系统工作模块(traffic1)如下:CLKrstcLAMPA[2..0]LAMPB[2..0]TAH[3..0]TAL[3..0]TBH[3..0]TBL[3..0]traffic1inst5功能:该模块完成对输入信号CLK,rst,c的处理,实现交通灯控制的主要功能。源程序:moduletraffic1(CLK,rst,c,LAMPA,LAMPB,TAH,TAL,TBH,TBL);output[3:0]TAH,TAL,TBH,TBL;//TAH,TAL分别表示主干道倒计时的高位和低位,TBH,TBL表示乡村道路倒计时的高位和低位交通灯控制器(jiaotongdeng)系统工作模块(traffic1)八段译码模块(decode4_7)分频模块(blk1)output[2:0]LAMPA,LAMPB;//从高位到低位分别表示红,黄,绿inputCLK,rst,c;reg[7:0]numa,numb,s1,s2;//numa,numb分别表示主干道和乡村道路的倒计时;s1用来表示主干道最短通车时间是否已到,到了s1=1;s2用来表示乡村道路最长通车时间是否已到,到了s2=1reg[3:0]TAH,TAL,TBH,TBL;reg[2:0]LAMPA,LAMPB;always@(posedgeCLKorposedgerst)//该进程控制主道方向的四种灯beginif(rst)//重置beginLAMPA=1;LAMPB=4;//重置情况视乡村道路无车,主干道一直通行numa=8'b00100000;//主干道计时20秒numb=8'b00100101;//乡村道路计时25秒endelsebeginif(LAMPA==1)//主干道绿灯亮beginif(numa==1&&c==0&&s1)//主干道最短通车时间已到,但乡村道路没车beginnuma=1;//倒计时停在1秒LAMPA=1;//保持在主干道绿灯endelseif(numa==1&&c==1&&s1)//主干道最短通车时间没到,并且乡村道路有车begin//主干道变黄灯倒计时变成5秒s1=0;LAMPA=2;numa=8'b00000110;//为了配合时钟设置为6秒endelsebeginif(numa[3:0]==0&&numa[7:4])//逢十时beginnuma[3:0]=9;numa[7:4]=numa[7:4]-1;endelseif(numa[7:0]&&numa[3:0])beginnuma[3:0]=numa[3:0]-1;endif(numa==0)begin//主干道变黄灯倒计时变成5秒LAMPA=2;numa=8'b00000110;//为了配合时钟设置为6秒endendendif(LAMPA==2)//假如主干道是黄灯beginif(numa[3:0]==0&&numa[7:4])//开始主干道黄灯的倒计时beginnuma[3:0]=9;numa[7:4]=numa[7:4]-1;endelseif(numa[7:0]&&numa[3:0])beginnuma[3:0]=numa[3:0]-1;endif(numa[7:0]==0)//黄灯倒计时时间到beginif(c)//乡村道路有车begin//主干道变红灯,倒计时变成16秒LAMPA=4;numa=8'b00010111;//为了配合时钟设置为17秒endelseif(!c)begins1=1;LAMPA=1;numa=8'b00000001;//主干道计时1秒endendendif(LAMPA==4&&c)//假如主干道是红灯并且乡村道路有车beginif(numa[3:0]==0&&numa[7:4])//开始主干道红灯的倒计时beginnuma[3:0]=9;numa[7:4]=numa[7:4]-1;endelseif(numa[7:0]&&numa[3:0])beginnuma[3:0]=numa[3:0]-1;endif(numa==0)//红灯倒计时到begin//主干道变绿灯,倒计时变成20秒LAMPA=1;numa=8'b00100000;endendif(LAMPA==4&&!c&&numa5)//假如主干道是红灯并且乡村道路无车并且倒计时时间大于5米秒,使主干道倒计时变成5秒begin//主干道仍是红灯,倒计时变成5秒numa=8'b00000110;endif(LAMPA==4&&!c&&numa7)beginif(numa[3:0]==0&&numa[7:4])//开始主干道5秒的倒计时beginnuma[3:0]=9;numa[7:4]=numa[7:4]-1;endelseif(numa[7:0]&&numa[3:0])beginnuma[3:0]=numa[3:0]-1;endif(numa==0)//5秒倒计时到begin//主干道变绿灯,倒计时变成20秒LAMPA=1;numa=8'b00100000;endendif(LAMPB==4)//乡村道路红灯亮begin//开始乡村道路红灯的倒计时if(c==0&&numb==1)numb=1;if(c==1&&numb==1&&s2==1)beginnumb=5;s2=0;endelsebeginif(numb[3:0]==0&&numb[7:4])//逢十时beginnumb[3:0]=9;numb[7:4]=numb[7:4]-1;endelseif(numb&&numb[3:0])beginnumb[3:0]=numb[3:0]-1;endif(numb==0)//红灯时间到beginif(c)begin//乡村道路变绿灯,倒计时变11秒LAMPB=1;numb=8'b00010010;endelseif(!c)beginLAMPB=4;numb=8'b00000001;//乡村道路计时1s2=1;//s置为1;endendendendif(LAMPB==1&&c)//假如乡村道路是绿灯并且乡村道路有车并且倒计时大于五秒beginif(numb[3:0]==0&&numb[7:4])//开始乡村道路绿灯的倒计时beginnumb[3:0]=9;numb[7:4]=numb[7:4]-1;endelseif(numb&&numb[3:0])beginnumb[3:0]=numb[3:0]-1;endif(numb==0)//绿灯倒计时时间到begin//乡村道路变黄灯,倒计时变成5秒LAMPB=2;numb=8'b00000110;endendif(LAMPB==1&&!c)//假如乡村道路是绿灯并且乡村道路无车begin//绿灯变黄灯,倒计时变成5秒LAMPB=2;numb=8'b00000110;endif(LAMPB==2)//假如乡村道路是黄灯beginif(numb[3:0]==0&&numb[7:4])//开始乡村道路黄灯的倒计时beginnumb[3:0]=9;numb[7:4]=numb[7:4]-1;endelseif(numb&&numb[3:0])beginnumb[3:0]=numb[3:0]-1;endif(numb==0)//黄灯倒计时时间到begin//乡村道路变红灯,倒计时变成25秒LAMPB=4;numb=8'b00100101;endendendTAH=numa[7:4];TAL=numa[3:0];TBH=numb[7:4];TBL=numb[3:0];endendmodule仿真结果:对该模块进行仿真,考虑各种情况,结果如下:1)乡村道路一直没车,即c=0:可以看到主干道是绿灯20秒,黄灯5秒,然后变成绿灯,倒计时停在1秒,乡村道路一直是红灯,倒计时从25一直到1停止。2)乡村道路开始没车,T时间后(T25秒)有车来:从图中可以看出主干道绿灯20秒后变成黄灯,5秒后变成红灯,16秒后又变成绿灯,乡村道路红灯25秒后变成绿灯,11秒后变成黄灯,5秒后又变成红灯。符合设计要求。3)乡村道路开始没车,T时间后(T25秒)有车来:从图中可以看到开始时c=0,主干道绿灯20秒后变成黄灯,5秒后由于没车又变成绿灯,倒计时停在1,乡村道路红灯25秒后变成绿灯,倒计时停在1。c变成1后,主干道变成黄灯倒计时5秒,之后变成红灯,乡村道路红灯倒计时5秒后变成绿灯,再后面的变化同情况2。4)当乡村道路为绿灯时c变成0:可以看到,当乡村道路为绿灯,c变成0时,乡村道路立刻变成黄灯,倒计时5秒后变成红灯,而主干道红灯倒计时5秒后变成绿灯。(2)八段译码模块(decode4_7)如下:indec[3..0]decodeout[7..0]decode4_7inst7功能:将输入的四位信号进行译码,输出到八段共阳极数码管显示出来。用于显示倒计时。源程序:moduledecode4_7(decodeout,indec);output[7:0]decodeout;input[3:0]indec;reg[7:0]decodeout;always@(indec)begincase(indec)//用case语句进行译码,小数点始终不亮4'd0:decodeout=8'b00000011;4'd1:
本文标题:数字系统课程设计-交通灯控制器实验报告
链接地址:https://www.777doc.com/doc-7101035 .html