电子综合设计eda课程设计交通信号灯控制器_第1页
电子综合设计eda课程设计交通信号灯控制器_第2页
电子综合设计eda课程设计交通信号灯控制器_第3页
电子综合设计eda课程设计交通信号灯控制器_第4页
电子综合设计eda课程设计交通信号灯控制器_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告2014-2015学年第2学期 课程设计名称:电子综合设计EDA课程设计院(系):电子信息学院专业:电子信息工程班级:BX1207综合实验时间:2015/7/20-2015/7/24指导教师:钟旭提交时间:2015/7/24上海电机学院课程设计任务书课程名称电子综合设计EDA课程设计课程代码033117P1课程设计课题清单设计时间2015年7月20日——2015年7月24日一、课程设计任务汇总二、对课程设计成果的要求(包括课程设计报告、图纸、图表、实物等软硬件要求)三、课程设计工作进度计划:四、主要参考资料:指导书:参考资料:目录TOC\o"1-3"\h\u41831.题目名称 1281732.内容摘要 161433.设计任务和要求 1311924.系统方案 1313425.设计方法——硬件设计 3303916.设计方法——软件设计 3303137.系统调试 43487使用的主要仪器和仪表 426954调试电路的方法和技巧 41487整体性能测试数据和波形 410080调试中出现的故障、原因及排除方法 531388.设计成果 5133309.设计结论 72449210.收获和体会 71649311.附件(源程序) 819825参考文献 17题目名称交通信号灯控制器内容摘要本次课程设计通过HDL技术设计交通灯控制系统,其设计描述可被不同的工具所支持,可用不同器件来实现。利用VerilogHDL语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的快速正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过QuartusII和ModelSim完成综合、仿真。此程序下载到FPGA芯片后,可应用于实际的交通灯控制系统中。通常的设计方法基于中、小规模集成电路进行,电路元件多、接线复杂、故障率高。随着大规模集成电路的发展、EDA技术的出现,数字电路的设计进入了一个崭新阶段。FPGA是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。本论文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。本论文通过EDA设计,利用VerilogHDL语言模拟仿真交通灯控制电路。说明EDA技术在数字电路设计中的优越性。设计任务和要求我所选择的课题是用VerilogHDL实现交通灯控制器。该课题的具体内容及要求如下:1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外;2、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号;3、主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯;4、主、支干道均有车时,两者交替允许通行,主干道每次放行时间A,支干道每次放行时间A,设立A、B计时显示电路;5、在每次由绿灯亮到红灯亮的转换过程中,要亮黄灯C时间作为过渡,使行驶中的车辆有时间停到禁行线外,设立C计时显示电路。时间A>B>C4.系统方案本交通灯控制系统设计利用VerilogHDL语言进行设计编程,利用QUARTUSII软件将编写好的程序进行编译、仿真,并将调试完成的程序下载到FPGA芯片上,观测电路板上的红绿信号灯以及数码管显示,看是否按设计要求正常工作。系统框图如下图所示:系统框图(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表示支干道最长通车时间到。)设计方法——硬件设计MS4MS3MS2MS1MS4MS3MS2MS1LA1aLA2bLA3cFPGA/CPLDLB1dLB2eLB3fg红黄绿主干道支干道红黄绿设计方法——软件设计本系统采用自顶向下的设计,设计一个顶层文件和三个底层文件。各模块关系如下:八段译码模块(decode4_7)八段译码模块(decode4_7)交通灯控制器(jiaotongdeng)系统工作模块(traffic1)八段译码模块(decode4_7)分频模块(blk1)程序流程图:主支干道交替进行主支干道交替进行主干道通,支干道亮红灯译码模块译码及显示分频器分频clk(blk1)主模块(traffic1)赋初值(rst)主干道绿灯亮,支干道红灯亮扫描(c)01(支路有车)系统调试使用的主要仪器和仪表电脑等。调试电路的方法和技巧通过编写测试程序,根据波形图分析功能是否符合要求来测试电路整体性能测试数据和波形如图所示:调试中出现的故障、原因及排除方法测试程序调试中运行出现错误,其原因是输入信号的延时过大超出允许极限,调小延时即可(使#XXXXXX…变小);测试波形出错,则其原因可能是编译程序有功能或逻辑上的错误,需修改程序。设计成果设计结论实验结果分析:根据波形图c为乡村道路信号,当c=0时,即乡村道路无车,主干道经过绿灯20秒,黄灯5秒,此时若c=1,则变成红灯,倒计时变成16秒,否则,又回到绿灯,倒计时停在1;乡村道路经过红灯25秒,此时若c=1,则变成绿灯,倒计时变成11秒,否则仍为红灯,倒计时停在1秒。如果开始时c=0,经过一段时间后有车来,假设此时主干道通行时间已经超过最短通行时间25秒,则主干道变黄灯,倒计时5秒后变红灯,乡村道路红灯倒计时5秒后变绿灯。假设乡村道路绿灯时,c=0,则不管乡村道路倒计时有没有到1都变黄灯,5秒后变红灯,主干道倒计时5秒后变绿灯。分析实验结果可以看到该系统实现了所有设计要求,运行结果正确。收获和体会EDA课程设计很快就结束了,虽然在之前的学习过程中还存在着没有弄懂的问题,但是通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。在拿到题目后,首先进行了单元模块的设计,将每一个单元模块设计完成后再经行仿真,仿真成功后就可以进行顶层文件的编写了,在顶层文件的编写过程中遇到了一些问题,特别是各模块之间的连接,以及信号的定义,总是有错误。有的时候信号的定义容易出现混淆,在反复的修改过后,顶层文件终于能够编译成功了。在波形仿真的过程中,同样遇到了困难,有的时候会出现仿真时间过长的问题,这个时候应该修改系统时钟的频率。在设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。在今后的工作和学习中,我们不能仅仅把目光停留在课本上,要多理论联系实际。有的时候,理论上是正确的东西放到现实中去,可能由于种种因素的制约,并不能达到实际的效果,还需要我们进行相应的修改才能完成要求。这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对XilinxISE软件的操作。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的Verilog语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程,排错调试,相关仪器设备的使用技能等方面得到较全面的锻炼和提高。11.附件(源程序)moduleshixun(inputclk,inputset,inputrst,inputc,output[2:0]LAMPA,output[2:0]LAMPB,output[7:0]TAH1,output[7:0]TAL0,output[7:0]TBH1,output[7:0]TBL0);wire[3:0]TAH,TAL,TBH,TBL;blk1s_blk1(.clk(clk), .set(set), .CLK1(CLK1));decode4_7s_decode4_7(.decodeout(decodeout), .indec(indec));traffic1s_traffic1( .CLK1(CLK1), .rst(rst), .c(c), .LAMPA(LAMPA), .LAMPB(LAMPB), .TAH1(TAH1), .TAL0(TAL0), .TBH1(TBH1), .TBL0(TBL0)); endmodulemoduleblk1(clk,set,CLK1);inputclk,set;//基频与使能outputCLK1;//分频后的输出regCLK1;reg[23:0]count1,count2;//count1用于记录时钟总数,count2用于记录经过了多少个时钟周期always@(posedgeclk) begin if(set) begin count1=1000000; count1=count1-1; count2=0; CLK1=0; end else begin if(count2<count1) begin count2=count2+1; end else begin CLK1=~CLK1; count2=0; end end endendmodulemoduledecode4_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:decodeout=8'b10011111;4'd2:decodeout=8'b00100101;4'd3:decodeout=8'b00001101;4'd4:decodeout=8'b10011001;4'd5:decodeout=8'b01001001;4'd6:decodeout=8'b01000001;4'd7:decodeout=8'b00011111;4'd8:decodeout=8'b00000001;4'd9:decodeout=8'b00001001;default:decodeout=8'bx;endcaseendendmodulemoduletraffic1(CLK1,rst,c,LAMPA,LAMPB,TAH1,TAL0,TBH1,TBL0);output[7:0]TAH1,TAL0,TBH1,TBL0;//TAH,TAL分别表示主干道倒计时的高位和低位,TBH,TBL表示支干道倒计时的高位和低位output[2:0]LAMPA,LAMPB;//从高位到低位分别表示红,黄,绿inputCLK1,rst,c;reg[7:0]numa,numb,s1,s2;//numa,numb分别表示主干道和支干道的倒计时;s1用来表示主干道最短通车时间是否已到,到了s1=1;s2用来表示支干道最长通车时间是否已到,到了s2=1reg[2:0]LAMPA,LAMPB;wire[3:0]TAH,TAL,TBH,TBL;assign{TBH,TBL}=numb;assign{TAH,TAL}=numa;decode4_7decode0(.indec(TAH),.decodeout(TAH1));decode4_7decode1(.indec(TAL),.decodeout(TAL0));decode4_7decode2(.indec(TBH),.decodeout(TBH1));decode4_7decode3(.indec(TBL),.decodeout(TBL0));always@(posedgeCLK1orposedgerst)//该进程控制主道方向的四种灯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])//逢十时 begin numa[3:0]<=9;numa[7:4]<=numa[7:4]-1; end else if(numa[7:0]&&numa[3:0]) begin numa[3:0]<=numa[3:0]-1; end if(numa==0) begin//主干道变黄灯倒计时变成5秒LAMPA<=2;numa<=8'b00000110;//为了配合时钟设置为6秒endend endif(LAMPA==2)//假如主干道是黄灯beginif(numa[3:0]==0&&numa[7:4])//开始主干道黄灯的倒计时 begin numa[3:0]<=9;numa[7:4]<=numa[7:4]-1; end else if(numa[7:0]&&numa[3:0]) begin numa[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])//开始主干道红灯的倒计时 begin numa[3:0]<=9;numa[7:4]<=numa[7:4]-1; end elseif(numa[7:0]&&numa[3:0]) begin numa[3:0]<=numa[3:0]-1; endif(numa==0)//红灯倒计时到begin//主干道变绿灯,倒计时变成20秒LAMPA<=1;numa<=8'b00100000;endendif(LAMPA==4&&!c&&numa>5)//假如主干道是红灯并且支干道无车并且倒计时时间大于5米秒,使主干道倒计时变成5秒begin//主干道仍是红灯,倒计时变成5秒numa<=8'b00000110;endif(LAMPA==4&&!c&&numa<7)beginif(numa[3:0]==0&&numa[7:4])//开始主干道5秒的倒计时 begin numa[3:0]<=9;numa[7:4]<=numa[7:4]-1; end elseif(numa[7:0]&&numa[3:0]) begin numa[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])//逢十时 begin numb[3:0]<=9;numb[7:4]<=numb[7:4]-1; end else if(numb&&numb[3:0]) begin numb[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])//开始支干道绿灯的倒计时 begin numb[3:0]<=9;numb[7:4]<=numb[7:4]-1; end else if(numb&&numb[3:0]) begin numb[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])//开始支干道黄灯的倒计时 begin numb[3:0]<=9;numb[7:4]<=numb[7:4]-1; end else if(numb&&numb[3:0]) begin numb[3:0]<=numb[3:0]-1; endif(numb==0)//黄灯倒计时时间到begin//支干道变红灯,倒计时变成25秒LAMPB<=4;numb<=8'b00100101;endendendend endmodule测试程序:moduletest; //Inputs regclk; regset; regrst; regc; //Outputs wire[2:0]LAMPA; wire[2:0]LAMPB; wire[7:0]TAH1; wire[7:0]TAL0; wire[7:0]TBH1; wire[7:0]TBL0; //InstantiatetheUnitUnderTest(UUT) shixunuut( .clk(clk), .set(set), .rst(rst), .c(c), .LAMPA(LAMPA), .LAMPB(LAMPB), .TAH1(TAH1), .TAL0(TA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论