1、HDL项目设计 课程设计报告 题 目 交通灯控制电路设计 专业、学号 授课班号 学生姓名 指导教师 完成时间 2012/9/3 摘 要本次课程设计通过 HDL 技术设计交通灯控制系统,其设计描述可被不同的工具所支持,可用不同器件来实现。同学们在理论学习的基础上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。利用 Verilog HDL 语言自顶向下的设计方法设计交通灯控制系统 ,使其实现道
2、路交通的快速正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过 Quartus II 和ModelSim 完成综合、仿真。此程序下载到FPGA 芯片后,可应用于实际的交通灯控制系统中。 通常的设计方法基于中、小规模集成电路进行 , 电路元件多、接线复杂、故障率高。随着大规模集成电路的发展、 EDA 技术的出现 , 数字电路的设计进入了一个崭新阶段 。 首先是利用 ModelSim 编写程序,再将程序输入 Quartus II进行进一步的仿真,问题最大之处就是编写的是否正确,是否能出现分析中的仿真。本论文介绍了用 Verilog HDL 语言设计交通灯控制器的方法
3、, 并在 Quartus II系统对 FPGA 芯片进行编译下载 , 由于生成的是集成化的数字电路 ,没有传统设计中的接线问题 , 所以故障率低 、 可靠性高 , 而且体积非常小 。 根据提示更改程序,查找资料及其询问得到更改。使得仿真图与分析图一致,达到理想状态,进行实验箱连接。【关键词】 Verilog HDL 硬件描述语言 交通灯控制器ABSTRACTThis course is designed by HDL design of traffic light control system, its design description can be supported by differ
4、ent tools, implemented by different devices. Students based on theory study, by completing one involving sequential logic, combinational logic, an output, practical, fun little system design, so that the students can not only to the classroom theoretical knowledge and practical application of combin
5、ed, but also to the analysis, solve practical digital circuit problem further understanding, for the future can be independent of certain digital application system design work and lay a foundation.Using Verilog language HDL top-down design method to design the traffic light control system, make its
6、 make traffic fast running, prominent as a hardware description language good readability, portability and easy to understand and other advantages, and through Quartus II and ModelSim completed a comprehensive, simulation. This program is downloaded to FPGA chip, can be applied to the practical traf
7、fic lights control system. The usual design method based on the medium, small scale integrated circuit, circuit element, complex wiring, high failure rate. With the development of large-scale integrated circuits, the appearance of EDA technology, digital circuit design has entered a new stage. The f
8、irst is the use of ModelSim programming, the program input Quartus II for further simulation, the biggest question is written is correct, whether can appear in the analysis of simulation.This paper introduces the use of Verilog language HDL design of traffic lights controller method, and in the Quar
9、tus II system on FPGA chip compiler download, due to the generation of integrated digital circuit, without the traditional design of the wiring problems, so low failure rate, high reliability, and the volume is very small. According to suggest to change the program, to find information and asked to
10、get change. The simulation and analysis of consensus, reached the ideal state, experiment box connection.【 Key words 】 Verilog Hardware Description Language hardware description language traffic light controller 系统设计一、交通灯控制电路设计目标要求:(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿交通信号灯,通过电路对十字路口的两组交通灯的状态实现自动循环控制;(2)实现
11、东西车道和南北车道上的车辆交替运行,每次通行时间为20秒;(3)要求黄灯亮3秒后,红灯才能转为绿灯,黄灯亮时要每秒闪亮一次;(4)东西车道和南北车道每次通行的时间不同且可调;(选作)二、方案的对比分析与确定: 方案一:要将南北方向的红灯的计时设为17,黄灯为3,两者之和为东西方向的绿灯亮的时间相同; 红 17s 黄3s东西方向: 绿20s南北方向: 方案二:红绿时间相同,均为20秒,在红灯的最后3秒加入黄灯闪烁。相比之下,后者的程序较简单,不用过多注意时间的变化。倒数20秒的最后3秒总有一方的黄灯要闪烁,并且两方交替进行。 红17s 红黄3s东西方向: 绿20s南北方向:分析:红灯在黄灯闪烁3
12、秒后才转变成绿灯,起先的思路是红灯亮17秒之后有黄灯闪烁3秒后转成绿灯,为了是程序较简单,在设计时改成了红灯亮了20秒,且最后3秒黄灯也闪烁,之后黄灯不亮,红灯转绿灯。即采用这思路实现设计要求。三、电路方框图及说明:交通灯控制器的系统框图如图1.1所示 数码显 示管 数码显 示管 东西方向 EW 南北方向NS G Y R G Y R 系统控制电路 20s分频器 图1.1交通灯控制器系统框图工作原理如下: 图中设南北方向的红、黄、绿灯分别为NSR、NSY、NSG东西方向的红、黄、绿灯分别为EWK、EWY、EWG。东西为红至17秒时,南北为绿17秒;东西为黄3秒时,南北仍为绿;东西为绿20秒时,南
13、北为先红17秒时黄灯闪3秒,红灯也还继续发亮。南北、东西方向红、黄、绿时间分别为20秒、3秒、20秒,一次循环40秒。四、 电路设计:将设计要求按找条件,分成多个模块,分别对齐进行程序编写。1、倒计时模块:always(posedge clk1 or negedge reset) /clk1用于倒计时begin if(!reset) count=0; else begin N=N+1; if(count=0) begin count=20;ge=count%10;shi=count/10; if(flash=0) begin red1=1;green1=0;red2=0;green2=1;fl
14、ash=1; end else begin red1=0;green1=1;red2=1;green2=0;flash=0; end end else if(N=0) begin count=count-1; ge=count%10;shi=count/10; end/黄灯闪烁程序 if(count0) yellow1=yellow1; if(count0) yellow2 Tcl Scripts,选中刚才编辑的Script 文件:Setup,并点击Run。4、编译:按主工具栏上的编译按钮即开始编译,QuartusII 下面的Message 窗口会显示一些编译信息。5、仿真:建立波形仿真文件。
15、FileNew,选择other files 页面。在波形图的右处空白处点击鼠标右键,选择Insert Node or Bus,插入管脚。在弹出的对话框中,选择Node Finder(如图5.11 所示)。在Node Finder中,先点击list,出现要仿真的管脚,然后点击,将所有管脚选到右框内,点击ok。以下是该程序仿真图: 二、出现的现象及问题: 程序中的一个单词不同则会出现分析无法通过,显示出错误;又是编译正常,可是却无法连接到实验装置,导致无试验结果;有时也可能文件中缺少sof类型文件,最终也没有结果;在QuartusII 软件上进行仿真时,发现不能得到预期的效果,分析得知由于分频过大
16、的原因,软件仿真得不到预期结果。三、解决方案: 在输入程序时只能多多谨慎,检查用词是否一致,begin是否有对应的end,module是否有endmodule,这样可减少错误的发生。无法连接到实验装置可能有多方面,一:插头没有正确插入;二:装置本身就是有问题的,应换实验装置;三:电脑中没有与实验装置一致的下载装置接头。实验室应该多多加强设备的完整,定时检查器备的运行是否正常,更改完善设备,保证实验中减少不必要的检查器件正常的过程;四:省去时钟信号的分频操作,但是在硬件验证过程中加入分频操作,可以解决。对于Verilog 语言的编程方面,特别在对变量给予初值时,完全不同于C 语言编程,我们在对许
17、多变量进行了初值设置,此后编译每每都不通过,在认真思考后,查阅了课本,发现在HDL 编程中,不能对变量初值。我们恍然大悟,在以后的编程中我们牢记住了这一点。心得体会通过本实验再一次的体验到了细心对一个编程者的重要性,和程序的规范性对于程序的重要性,这些平时我们忽略的问题,其实有时候关乎着我们编程的成功率;再者,在verilog语言中,我们必须注意其与C语言的异同,比如格式和变量定义,还有模块的调用,和时钟信号的应用。在刚开始的倒计时时,感想就是假使用JAVA或C语言可能会较容易。还有对verilog HDL设计语言还比较陌生,但它是一门很好的硬件描述语言,可以直白的描述实际的电路,实际的系统模
18、型,易懂而且易于实现,我觉得在以后多加练习,可以对以后的学习和工作带来莫大的帮助。这次刚开学就分配的实验课程设计就是对我们的一次考核,也可以说是一次考验,在平时做题目比较简单,这次课程设计综合考核了我们对上一学期的学习结果。课程设计培养了学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。然而从理论到实践,我在做课程设计的几天里,使我对有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的实际操作才能更好地学习它,但是学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在本上所没有学到过的知识。通过这
19、次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知解得不够深刻,掌握得不够牢固,在边编学程序的过程中我几乎是重新复习课本上的知识,但这还是没能让我完成这次课程设计,通过询问同学、到网上查询资料慢慢的完善这次做业才勉强完成。对这次实验总的评价就是自己知道了Quartus II 和ModelSim的好处,虽然有些地方还是不方便,也没有真正的理解清楚,但是它们
20、的基本使用还是掌握了。在本次设计中,或多或少有课一些进步,唯一遗憾的是没有请教老师,把不会的好好弄清楚。同时也深深体会了团队精神的重要,队友之间的相互帮助和鼓励在工作中是十分重要的。参考文献1、 Verilog HDL数字设计教程作者:贺敬凯 西安电子科技大学出版社出版日期:2010年4月2、 FPGA 设计及应用(第二版)作者: 褚振勇 齐亮 田红心 高楷娟 西安电子科技大学出版社 出版日期: 2006年12月3、 基于CPLD/FPGA 的数字通信系统建模与设计作者: 段吉海 黄智伟电子工业出版社 出版日期:2004年8月附 录设计程序:module traffic_light(clk,c
21、lk1,clk2,reset,red1,yellow1,green1,red2,yellow2,green2,duan,wei,N);input reset,clk;output red1=0,yellow1=0,green1=0,red2=0,yellow2=0,green2=0,duan,wei,clk1,clk2,N;reg 4:0 count=0;reg 3:0 num;reg 5:0 shi,ge;reg M,N,flash;reg red1,yellow1,green1,red2,yellow2,green2;reg 7:0 duan;reg 3:0 wei;reg clk1,cl
22、k2;reg 24:0 count_clk1;reg 13:0 count_clk2; always(posedge clk) begin if(count_clk112500000) count_clk1=count_clk1+1; else begin count_clk1=0; clk1=clk1; endendalways(posedge clk) if(count_clk212500) count_clk2=count_clk2+1; else begin count_clk2=0; clk2=clk2; endalways(posedge clk1 or negedge reset
23、) /clk1用于倒计时begin if(!reset) count=0; else begin N=N+1; if(count=0) begin count=20;ge=count%10;shi=count/10; if(flash=0)/闪烁程序 begin red1=1;green1=0;red2=0;green2=1;flash=1; end else begin red1=0;green1=1;red2=1;green2=0;flash=0; end end else if(N=0) /计数 begin count=count-1; ge=count%10;shi=count/10;
24、 end if(count0) yellow1=yellow1; if(count0) yellow2=yellow2; end endalways(posedge clk2)begin if(!reset) wei=4b0000; else if(M=1b1) M=1b0; else M=M+1b1; case(M) 1b0:begin wei=4b0111;num=shi;end 1b1:begin wei=4b1011;num=ge;end default:wei=4b0000; endcaseendalways (num) begincase(num) 0: duan=8b1100_0000; 1: duan=8b1111_1001; 2: duan=8b1010_0100; 3: duan=8b1011_0000; 4: duan=8b1001_1001; 5: duan=8b1001_0010; 6: duan=8b1000_0010; 7: duan=8b1111_1000; 8: duan=8b1000_0000; 9: duan=8b1001_0000; default:duan=8b1000_0000; endcaseendendmodule实验图:引脚配置:15- -
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100