《基于cpld下的交通信号灯设计.doc》由会员分享,可在线阅读,更多相关《基于cpld下的交通信号灯设计.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、南京大学金陵学院 毕业论文(设计)南京大学金陵学院毕 业 论 文(设 计)姓名:赵春鹏学 号:2010020400052系 部:电子信息科学与工程系专 业:通信工程题 目:基于CPLD下的交通信号灯设计指导老师孙海洋讲师/硕士提交日期2014年5月10号 摘 要本次设计是实现基于CPLD下的交通信号灯的控制电路,它将有效地解决在人流量和车流量的时间分配问题,提供高效地有条不紊的服务,通过交通灯的显示和智能化控制功能,可以让人们井然有序的参与到交通活动中来。在夜间车流量相对较少的情况下,采用黄灯闪烁预警,是行车减速慢行即可,让其尽快通过,因为不必要的等待会造成时间上的浪费。 Verilog作为一
2、种硬件描述语言,被广泛的应用于电路设计中,可通过不同的器件来实现。利用Verilog语言编程的设计方法设计交通灯控制系统,用其来实现道路交通有条不紊地运行,突出了Verilog语言的良好的可读性、可移植性和易理解等优势,并通过Quartus II完成综合和仿真演示。此程序通过下载到CPLD芯片后,便可用户与实际的交通系统控制。关键词:交通灯 ;CPLD ;Verilog语言 ;夜间情况 ;Quartus II Traffic lights under CPLD based designsABSTRACT This design is to realize the traffic lights
3、control circuit based on CPLD under, it will effectively solve the traffic and time distribution of traffic problems, and to provide the services efficiently in an orderly way, through traffic lights display and function of intelligent control, can let the people involved in the transportation activ
4、ities orderly. Under the condition of relatively few cars at night, use yellow lights flashing warning, is driving slow down, let it pass, as soon as possible because unnecessary waiting will cause the waste of time. Verilog as a kind of hardware description language, as a kind of widely used in the
5、 circuit design, can be done by different devices. Use Verilog language programming design method of design of traffic light control system, and use it to realize the road traffic run methodically, highlighted the Verilog language good readability, portability and easy to understand, such as advanta
6、ge, and through the Quartus II complete comprehensive demonstration and simulation. After this program download to CPLD chip, can the user and the actual traffic control system.Keywords:The traffic light ; CPLD ;Verilog language ;The night ;Quartus IIi 目 录摘要iABSTRACTii第一章 绪 论11.1 课题研究的目的与意义11.2 交通信号
7、灯国内外研究现状21.3 本设计研究的目的及主要内容21.4 交通信号灯主要实现的功能2第二章 设计基础32.1 Verilog语言32.2 QuartusII软件32.3 CPLD介绍42.4 EPM240/570开发板4第三章 设计内容83.1 系统设计要求83.2 系统设计思路83.2.1分频模块83.2.2 数码管模块103.2.3 其他模块11第四章 测试与结果144.1 实物144.2 交通灯测试144.3 夜间情况测试154.4 总结与展望16结束语18致谢19参考文献20附录I:源代码21附录II:原理图27ii第一章 绪 论1.1 课题研究的目的与意义现今经济迅猛发展,人们的
8、生产生活水平不断地提高,越来越多生产生活依靠着交通运输,人们对交通的需求也在不断地提高。而我们可以看到现在我们的城市交通拥堵,有些地方交通控制方案设计不合理,造成了时间浪费和金钱浪费。 将来随着城市化进程的不断推进,交通问题将日益严重,更多的供需矛盾将浮出水面,如果交通建设与控制的发展跟不上经济发展的脚步,必将会为未来的现代化建设平添阻碍。交通部门现在亟须解决交通活动中各个参与者之间的关系,让它们之间协调也是交通部门努力的目标,所以交通建设要紧随社会前进的步伐,往多元化,高智能化,人性化的方向发展1。在我们的十字路口也是某个地段的人口和车流量的密集区域,同时是交通事故容易发生的地段,而如今我们
9、的交通有条不紊,这里交通信号灯控制系统起了关键作用,是它提供了有效地交通控制机制。交通信号灯控制系统在疏导人和车流量时意义重大,可有效避免很多没必要的交通事故,保证国民的生命财产安全,使得社会稳定和谐地发展下去。现如今解决交通问题中的特殊情况和突发状况也是交通建设中的重点和难点,因为交通活动中的突发性和不可预见性,使得这一问题难以解决。当今我国经济平稳发展了许多岁月,越来越多的交通工具普及到寻常百姓家中,从一开始的自行车,到摩托车,再到出租车,公交,私家车,甚至现今出现的地铁,轻轨.无一不显示出现出强劲的交通发展势头。从而就要求我们对交通的管控能力要飞速发展,因此我们国家越来越重视将高科技应用
10、于交通领域,从而实现交通的智能化和人性化。1.2 交通信号灯国内外研究现状 当前,我们经常看到在我们的十字路口有交通信号灯来管控我们的时间,有些交通灯上面还会装有摄像监控装置,交通信号灯以红黄绿区别,再加上时间控制即我们常见的交通信号灯控制。目前设计交通灯的方案有很多,有应用PLC设计实现交通信号灯控制器方法;有应用单片机实现对交通灯控制系统的设计;有应用CPLD实现对交通信号灯设计的方法;也有应用FPGA实现设计的。很多情况下我们都可以看到不合理的交通信号控制系统会造成很多时间上的浪费,和道路资源的浪费,反而造成了道路通行能力的降低,对人们的生活造成不便,而对于一般情况下的安全行车,一些简单
11、的交通信号灯控制器还能发挥作用,但是在实际情况下我们可以看到有些地方的交通信号灯控制器还存在以下缺点:1两干道的放行时间和禁止通行时间是一致的,在十字路口,经常一个车道车辆较多,放行时间应该长些;而另一车道车辆较少,放行时间应该短些。2在夜间情况,车流量很少的时候,应该予以黄灯闪烁示警,但是无需用红绿灯指示车辆等待,造成不必要的时间浪费。1.3 本设计研究的目的及主要内容 本设计采用EPM240/570开发板来完成,该开发板可以作为CPLD全功能开发板来使用,对于本次实验来说其功能是毋庸置疑的。板载6个独立按键,可做按键控制,数字逻辑基础实验等;板载8位LED发光二极管,做数字逻辑基础流水,显
12、示等实验;板载8位数码管,做动态或静态数码管显示实验,频率计,秒表等;板载4位拨码开关,可做开关控制等实验.该开发板功能全面,利用Quartus II编写好的Verilog语言可直接下载到该板件上,具有操作性好,功能全面和经济实惠的优点。1.4 交通信号灯主要实现的功能(1)设计在一个城市中车流量,人流量相对较少的十字路口的交通信号灯控制器,每条干道各一个红绿灯。(2)红绿灯控制的时间分别用数码管的高两位跟低两位显示,而灯用前三个跟后三个LED发光二极管显示。(3)两条干道根据车流量的多少,分别设置绿灯放行时间,以提高道路通行的效率。(4)在夜间人流量和车流量相对较少的情况下,采用黄灯闪烁预警
13、的方式,提醒驾驶人员注意,让其减速慢行即可。 第二章 设计基础2.1 Verilog语言 Verilog语言最开始是于1983年由Gateway Design Automation 公司开发的模拟器产品的硬件建模语言,当时只是作为专用语言来使用。后来因为他们的产品的逐步推广,Verilog语言便以他们的模拟仿真器为媒介开始传播开来,直到后来作为一种方便而实用的语言逐渐为众多设计者所接纳2。1990年,再一次增加语言普及性活动中被推向公众领域3。同时它也是从C语言发展过来的,语法结构上继承和借鉴了C语言的语言结构。后来经过OVI的推广,使其形成了IEEE的标准4。这一努力最终成功,称为IEEE
14、Std 13641995。 Verilog语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制,所有这些都使用同一种建模语言5。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行6。除此之外Verilog语言还明确的定义了语法结构中的模拟和仿真语义。2.2 QuartusII软件 Quartus II 是Altera公司推出的的综合性质的开发软件,其中支持VHDL、原理图、AHDL(Altera Hardware Description Languag
15、e)以及VerilogHDL等多种设计的输入形式,而其内部又嵌有自带的综合器以及仿真器,能够完成从设计之初的到完整的硬件配置CPLD设计流程,可以说完全能够胜任我们本次的设计要求7。 Quartus II设计流程一般如图2.0所示,其中主要包括:设计输入,逻辑综合,布线布局,时许分析,仿真以及编程和配置几个环节。 图2.0:设计流程图2.3 CPLD介绍 由PAL和GAL发展过来的复杂的可编程逻辑器件,它的规模大而结构复杂,属于大规模的集成电路。用户可以根据自身的需要构造其逻辑功能,借助开发软件平台,用原理图和硬件描述语言,可生成目标文件,再下载到目标芯片中,从而实现设计8。 20世纪70年代
16、,PLD问世,这是最早的可编程的逻辑器件,但是由于过于简单的结构,所以他们只能在较小的数字电路中发挥作用9。20世纪80年代中,为了适应发展的需求,CPLD-复杂的可编程逻辑器件问世,如今它以深入计算机,电视,医疗,通讯设备,航空航天等领域中,给人们的生产生活带来了极大的便利10。2.4 EPM240/570开发板 EPM240/570学习板是一块FPGA/CPLD新手级学习板,该学习板简单易用,很适合入门不久的学生,在实验过程中我们可以充分利用主板上的硬件资源。 EPM240/570的主芯片使用的是Altera公司的MAX II系列中的,其中宏单元就有192个,逻辑单元共240个,资源相对比
17、较多,FLASH储存空间有八千比特。这代芯片和上一代MAX产品相比,其成本缩减至原来的一半,而功耗却只有原来的十分之一,在保持上一代MAX系列固有的单芯片、瞬态启动、易用性和非易失性优势的同时MAX II系列器件容量翻了两番,而性能却是上一代MAXCPLD的两倍多,使通信、消费类、计算机产品和工业的设计者们可以采用MAX II系列器件代替不够灵活而又价格昂贵的小型ASIC和ASSP。 图2.1和2.2分别表示了学习板接口资源的分布情况;图2.3是8个LED灯的原理图。 图2.1:学习板顶层接口资源分布 图2.2:学习板底层借口资源分布 图2.3:LED灯原理图 第三章 设计内容 3.1 系统设
18、计要求本次设计是在夜间人和车流量相对较少的十字路口情况下的设计,正常情况下两条干道的控制如下:其中A干道亮绿灯,另外B干道则是红灯,由于演示的需要,我们把这个时间设置在15秒,然后两个干道都亮黄灯,这个时间为5秒,然后A干道红灯,B干道这是绿灯。(其中红灯为禁止,绿灯则是通行,黄灯为等待,设计中选取了1,2,3和6,7,8号分别为A,B干道的交通信号灯,依次为红黄绿,红黄绿)。夜间人和车流量较少时,则黄灯示警,机动车不用等待,减速慢行即可,从而节约了时间。如图3.1所示 图3.1:十字路口图3.2 系统设计思路3.2.1分频模块 首先把由50MHZ的晶体振荡器产生的现场可进行逻辑编程CPLD的
19、系统时钟输入到分频模块之中,而后产生1KHZ信号再把它变为1HZ的时钟脉冲作为灯控制模块(黄灯的闪烁),数码管扫描模块的时钟信号。最后把数码管扫描模块输送到数码管译码模块,从而得以显示时间。图3.1是本次设计模块图,图3.2则是分频模块。 图3.1:设计模块图 图3.2:分频模块 分频器仿真图如图3.3所示:clk是由晶体振荡器产生的信号,先转化为beep这一中间频率,再将beep转化为我们需要的频率f。 图3.3:分频器仿真图由仿真图可知分频器能实现分频功能。3.2.2 数码管模块 本次设计采用LED数码管显示,在我们所应用的EPM240/570板件上共有8个可供显示的数码管,我选取了其中高
20、两位和低两位来显示A,B干道的时间,如图3.4是设计的数码管扫描模块,为了节省资源,我用分频模块中的1HZ作为扫描模块的扫描频率。 图3.4:数码管扫描模块数码管分七段来显示:我们分别标记为a,b,c,d,e,f,g.根据数字的结构我们只要点亮其中几段就可以显示,如显示“1”我们则需要点亮b,c。如果显示“8”则需全部点亮。 图3.5:数码管七段显示 图3.6:数码管示意图及其输入输出真值表数码管扫描如图3.8所示:其中a0,a1,b0,b1分别为4,1,5,2表示14秒和25秒。 图3.8:数码管扫描仿真图3.9:我们选取其中的数码管显示“0”的时候,那就要求a,b,c,d,e,f,g为00
21、00001换算成二进制数即“64”。 图3.9:数码管显示仿真3.2.3 其他模块下图显示了灯控制模块的频率:此时AB干道黄灯闪烁。 图3.10:灯控制模块仿真图3.11和3.12显示了AB干道之间交通信号灯状态转化:因为我们数码管最多显示的时间就是15秒,当main1为0时,main0则需要从0到9依次变化,当main为1时,main0则需要从0到5变化即可。图3.11:交通灯显示1 图3.12:交通灯显示2图3.13显示了本次设计总的仿真:我们可以看到总的仿真变化,包括夜间特殊情况,灯的转化关系。图3.13:总的仿真图 第四章 测试与结果4.1 实物 图4.1是本次设计的EPM240/57
22、0开发板: 图4.1:开发板实物图4.2 交通灯测试 图4.2是本次设计的交通灯测试图,如图所示1号灯亮(此为A干道的红灯)以及8号灯亮(此为B干道的绿灯),此时交通信号灯显示还有6秒。 图4.2:交通灯测试图4.3 夜间情况测试图4.3和图4.4共同表示了在夜间情况下黄灯闪烁预警的情况,此时数码管都显示15秒。图4.3表示黄灯灭,4.4表示黄灯亮。 图4.3:黄灯灭的情况图4.4黄灯亮的情况4.4 总结与展望 本次设计主要是针对于人流量车流量较少的情况下,优点是:在夜间情况下,可以大量节省时间。而缺点也很明显在应对车流量较多的复杂地段该交通灯控制器则会显得功能不足,显得比较呆板,不够智能化。
23、在复杂的十字路口,我们应该设计出更符合要求的交通信号灯控制器,另外附加上更多的特殊功能:比如在遇到紧急状态时,我们可以让红灯全部点亮达到禁止通行的目的;在其中一条干道车流量发生明显变化时,我们可以让交通灯调整出更合理的红绿灯控制时间;当道路有特殊原因时,比如与火车铁轨交界处,我们可以设计出预警加禁止机制的交通灯控制器.还有很多很多值得我们去探讨去深思,我们会在以后的学习中不断地去完善,然而交通信号灯控制系统的发展绝不会就此止步,未来将会有越来越多的高度智能化的交通信号灯控制器去改变我们的生活,去保障我们的生命财产安全。 结束语通过紧张的实验,我完成了本次的设计任务。通过本次课程设计的学习,我深
24、深地体会到设计课的重要性和目的性。为了完成项目,我在请教导师的同时也在网络上找相关资料,不断地扩充自己的知识面,是很多看似艰难的问题都得以解决。熟悉了Verilog硬件描述语言的编写,对软件设计流程有了更深刻的理解,掌握了Quartus的使用,比如利用该软件对编写好的程序的运行调试,仿真。我们将平时所学到的知识和实际有效地结合起来,从而提升自己实际解决问题的逻辑思维能力和动手能力,在面对不同问题时候,特别是突发状况下的应对能力,为今后的学习和实践打下了良好的基础。本次设计的意义就在于,通过设计交通灯的智能化控制系统,可以让我们了解并掌握基于CPLD下的交通信号灯设计方法和思想,巩固了我们平时书
25、本上学到的知识并将它与实际加以结合,提高了我们综合解决问题的能力,提高了我们再实际生活中处理问题的独立工作能力,可谓受益匪浅。 致谢在孙海洋老师的悉心指导和热情帮助下,自己经过不断地努力和探索以及向同学们请教,我最终完成了本次的毕业设计。从课题伊始到论文的最终写成,孙老师一直用他严谨的治学态度指导着我,教育着我。孙老师为人和善,教学有方,在向我们灌输知识的同时,也给我们设计上的帮助,提高了我们的专业知识和动手能力。同时经常督促我们加紧完成本次的毕业设计,并为我们指点迷津,排忧解难,从而开阔了我们的思路,使得毕业设计能够在期限完成。在此,谨向导师表示崇高的敬意和衷心的感谢! 其次感谢学院的其他老
26、师,特别是实验室老师,在平时休息天的时候,只要我们有需要,实验室都向我们开放,也正是实验室老师们对器材的细心呵护,才能让我们尽情地演示自己的成果,而在论文即将完成之际,我的心情紧张而激动,期间多少良师益友提供过帮助,实在不胜感激,在此我向你们道一声感谢!最后感谢所有当场参与我答辩的老师们,希望到时能够聆听你们的教诲和批评,你们的金玉良言都将是我未来极大的财富。最后,再次向所有关心我、帮助我、支持我的人们表示最深的谢意! 参考文献1 周蔚吾 道路交通信号灯控制设置技术手册 2 王义军.数字电子技术基础.北京:中国电力出版社,20073 贾更新.电子技术基础实验、设计与仿真.郑州:郑州大学出版社,
27、2006 4 陈大钦.电子技术基础实验电子电路实验设计仿真.华中理工大学电子学 教研室,2001 5 王金明、杨吉斌.数字系统设计与Verilog HDL.北京:电子工业出版社,2002年第1版6 康华光.电子技术基础.北京:高等教育出版社 7 满永奎,韩安荣,吴成东.通用变频器及其应用M.北京:机械工业出版社,1995.8 沈涛 ,李传志 , Xilinx FPGA/CPLD设计初级教程9 梁淼 , 刘会军 数字系统电子自动化设计教程:CPLD原理与应用10周润景,苏良碧 基于Quartus 2的FPGA/CPLD数字系统设计实例附录I:源代码module clk_div_f(clk,f,b
28、eep);input clk;output reg f;output reg beep;reg 14:0cnt;always (posedge clk) if(cnt=25000) begin cnt=1; beep=!beep; end else cnt500) begin cnt1=1; f=!f; end else cnt1=cnt1+1;endmodule module control(clk,en,night,cnt,led_main,led_ci,main1,main0,ci1,ci0);input clk;input en,night;output reg 2:0cnt;outp
29、ut reg2:0led_main;output reg2:0led_ci;output 3:0 main1,main0,ci1,ci0;parameter idle=4d1, main_green=4d2, main_yellow=4d3, ci_green=4d4, ci_yellow=4d5;reg 3:0a0,a1,b1,b0;reg 3:0state;initial state=idle;always (posedge clk) if(night) begin state=main_yellow; a1=1; a0=5; end else case (state) idle: beg
30、in state=main_green; a1=1; a0=0; end main_green:begin if(a1=0 & a0=0) begin state=main_yellow; a1=0; a0=5; end else begin if(a0=0) begin a0=9; a1=a1-1; end else begin a0=a0-1; end end end main_yellow:begin if(a1=0 & a0=0) begin state=ci_green; a1=1; a0=5; end else begin if(a0=0) begin a0=9; a1=a1-1;
31、 end else begin a0=a0-1; end end end ci_green:begin if(a1=0 & a0=0) begin a1=0; a0=5; state=ci_yellow; end else begin if(a0=0) begin a0=9; a1=a1-1; end else begin a0=a0-1; end end end ci_yellow: if(a1=0 & a0=0 ) begin a1=1; a0=0; state=main_green; end else begin if(a0=0) begin a0=9; a1=a1-1; end els
32、e begin a0=a0-1; end end default:state=idle; endcase assign main1=a1;assign main0=a0;assign ci1=a1;assign ci0=a0; always (*) if (state=idle) cnt=0; else if(state=main_green) cnt=1; else if(state=main_yellow) cnt=2; else if(state=ci_green) cnt=3; else cnt=4;always (*) if (state=idle) led_main=3b011;
33、else if(state=main_green) led_main=3b101; else if(state=main_yellow) led_main=3b110; else if(state=ci_yellow) led_main=3b110; else led_main=3b011;always (*) if (state=idle) /hong lv huang led_ci=3b011; else if(state=ci_green) led_ci=3b101; else if(state=ci_yellow) led_ci=3b110; else if(state=main_ye
34、llow) led_ci=3b110; else led_ci=3b011;endmodule module light_control1( cnt, night,light,f,led_main,led_ci,beep,main_green,main_yellow,main_red,zhi_green,zhi_yellow,zhi_red);input 2:0cnt;input night;input light;input f;input 2:0led_main,led_ci;output beep;output main_green,main_yellow,main_red,zhi_gr
35、een,zhi_yellow,zhi_red;wire en;assign en=(cnt=2 | cnt=4)& night=1 ?1:0;assign main_green=led_main1;assign main_red=led_main2;assign main_yellow=(en=1 )?light:led_main0;assign zhi_green=led_ci1;assign zhi_red=led_ci2;assign zhi_yellow=(en=1 )?light:led_ci0;endmodule module scan(clk,a0,a1,b0,b1,hex,a);input clk;input 3:0a1,a0,b1,b0;output reg 3: