《交通灯控制系统解析.doc》由会员分享,可在线阅读,更多相关《交通灯控制系统解析.doc(28页珍藏版)》请在三一办公上搜索。
1、目录 摘要11 设计初始条件及任务21.1 设计初始条件21.2 设计任务22 应用工具介绍32.1 Verilog语言介绍32.2 Max+plus软件介绍33 题目分析及方案确定44 系统硬件设计64.1 分频器的设计64.2控制器的设计64.3 计数器的设计74.4分位译码电路的设计84.5数码管驱动的设计红灯和绿灯的驱动84.6数码管驱动的设计黄灯的驱动94.7顶层连接图95 系统软件设计106 仿真与结果分析18结束语25参考文献26附录 本科生课程设计成绩评定表27摘 要当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段信号灯的出现,使交通得以有效管制,对于疏导
2、交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。伴随着社会的发展以及人类生活水平的提高,EDA 技术的发展和应用领域的扩大与深入,EDA 技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突
3、出。在现代城市中,随着技术市场与人才市场对DEA 的不断的增加,交通的问题日益突出,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。单单依靠人力来指挥交通已经不可行了, 因此,红绿交通信号灯成为了交管部门管理交通的重要手段。设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。关键词:EDA 交通灯 电子控制1 设计初始条件及任务1.1设计初始条件1) 计算机、Max+plus、EDA实验箱2) Quartus软件;3) 课程设计辅导资料:“数字电路EDA入门”、“VHDL程序实例集”、“EDA技术与VH
4、DL”、“EDA与数字系统设计”等;4) 先修课程:电路、电子设计EDA、电子技术基础等。 5) 门电路、组合逻辑电路、时序逻辑电路等。1.2 设计要求指标实现南北和东西方向的交通控制,利用控制键对通行时间进行控制,可更改方向与通行时间的调整。分别显示东西、南北方向的红、黄、绿指示灯,并且显示通行与等待时间。提高部分:设置交通管制开关,选择规定方向的绿灯,其他方向为红灯,不显示通行与等待时间。2应用工具介绍2.1 Verilog语言介绍Verilog HDL是目前应用最为广泛的硬件描述语言可以用来进行各种层 的逻辑设计,可以进行数字系统的逻辑综合,仿真验证和时序分析等。适合算法级,寄存器级,逻
5、辑和版图级等各个层次的设计和描述。Verilog HDL进行设计最大的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路Verilog HDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICs和FPGA的设计之用。Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。2.2 Max+plus软件介绍 Max+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是
6、 世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的 设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。3题目分析及方案确定设甲车道和乙车道方向的车流量大致相同,因此红、黄、绿灯的时长也相同,考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变, 因此将其固定为5秒,而红灯亮的时间等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为
7、40 秒即(040)。同时用数码管正计时指示当前状态(红、黄、绿)所亮的时间。我们可自行设定,计数值与交通灯的亮灭的关系如图2-1所示:图3-1计数值与交通灯的亮灭关系该系统主要由计数模块、控制模块、分频模块、分位模块以及显示电路构成。其中分频模块主要将系统输入的基准时钟信号转换是1Hz的激励信号。驱动计数模块和控制模块工作,控制模块根据计数器的计数情况对交通灯的亮灭及持续时间进行控制,并通过分位电路将灯亮时间以倒计时的形式通过数码管显示出来。交通灯控制器系统框图如图3-2所示:图3-2 交通灯控制系统框图 4 硬件电路设计4.1分频器的设计分频器实现的是将高频时钟信号转换成低频的时钟信号,用
8、于触发控制器和计数器。控制模块的输入是由555产生的10HZ脉冲,输出是经过分频之后的1HZ 脉冲。成的Symbol文件如图4-1所示。图4-1分频器模块 4.2控制器的设计控制器的作用是根据计数器的计数值及的输入数据控制发光二极管的亮、灭,以及输出正计时数值给七段数码管的分位译码电路。此外,当检测到特殊情况(HOLD=1)发生时,无条件点亮红灯的二极管。本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。这两种方法各有所长,必须根据所用器件的特性进行选择:比如有些FPGA有丰富的寄存器资源,而且可用
9、与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应。生成的实体模块如图4-2所示。图4-2 控制器模块4.3计数器的设计计数器1的计数范围为由引脚输入。计到后,下一个时钟沿恢复到0,开始下一轮计数。仿真波形如图当取7时,计数器计数到7后清零。实体模块如图4-5所示。计数器2、3实体模块如图4-6、4-7所示。 图3-5 计数器1模块 图3-6 计数器2模块 图3-7计数器3模块 4.4分位译码电路的设计由于控制器输出的正计时数值可能是1位或者2位十进制数,因此
10、在七段数码管的译码电路前要加上分位电路(即将其分成2个1位的十进制数,如40分成4和0,5分为0和5)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄存器。本电路中分位电路使用组合逻辑电路实现。生成的实体模块如图4-8所示。 分位译码器1 分位译码器2图4-8分位译码电路模块4.5数码管驱动的设计绿灯和红灯驱动要求数码管共阳极连接(共阳极的公共端为低电平时,LED不亮),在计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。本模块设计为时序逻辑电路,采用下降沿触发。实体模块如图4-9所示。图4-9 驱动模块4.6 数码管驱动的设计黄灯驱动
11、由于黄灯固定时间是5 秒,因此变化范围是0 至5 秒,七段数码管只要能显示0-5 的数就行了,所以单独用一个数码管驱动。实体模块如图4-10所示。图4-10 黄灯驱动模块4.7 顶层连接图交通灯控制器的顶层文件连接图如图4-11所示。图4-11 顶层文件连接图在图4-11中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器2,每个译码器分别接两个驱动电路,然后接输出。左边5个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5个驱动器接的数码管显示的是乙车道各个灯亮的时间。5程序设计 5.1分频器设计library ieee;use ieee.std_logic_1164.all;en
12、tity fredevider is -分频器port(clkin:in std_logic;clkout:out std_logic);end;architecture devider of fredevider isconsta nt N:integer:=499;signa l counter:integer range 0 to N;signa l Clk:std_logic;beginprocess(clkin)beginif rising_ed ge(clkin)thenif Counter=N thencounter=0;clk=not clk;elsecounter=count
13、er+1;end if;end if;end process;clkout=clk;end;5.2 控制器的设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出正计时数值给七段译码管的分译码电路。library ieee;use ieee.std_logic_1164.all;entity control is -控制器port (clk :in std_logic;c1,c2,c3:out std_logic; -计数器工作时能信号,为1 时计数w1,w2,w3:in std_logic; -计数器指示信号,在计数过程中,相应的指示信号为0,计数结束时为1r1,r2 :out
14、 std_logic; -分别为甲乙车道红灯y1,y2 :out std_logic; -分别为甲乙车道黄灯g1,g2 :out std_logic; -分别为甲乙车道绿灯reset :in std_logic); -复位信号,高电平有效end control ;architecture a of control istype state_space is (s3,s2,s1,s0) ; -四种状态signa l state : state_space ;beginprocess (clk)beginif reset=1 thenstateif w1=1 thenstateif w2=1 th
15、enstateif w3=1 thenstateif w2=1 thenstate=s0;end if ;end case;end if;end if;end process;c1=1when state =s0 else 0;c2=1when state =s1 or state =s3 else 0;c3=1when state =s2 else 0;r1=1when state =s1 or state =s0 else 0;y1=1when state =s3else 0;g1=1when state =s2 else 0;r2=1when state =s2 or state =s3
16、 else 0;y2=1when state =s1 else 0;g2=1when state =s0 else 0;end a ;5.3计数器的设计5.3.1 绿灯计数器library ieee;use ieee.std_logic_1164.all;entity counter1 isport (clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40 ; -绿灯可设置亮的时间c1 :out std_logic);end counter1 ;architecture a of counter1 isbeginp
17、rocess (clk)variable cnt : integer range 0 to 40 ; -变量cnt 定义为常数,取值范围为0到40beginif (clkevent and clk=1) then -时钟上升沿到来if enable=1a nd cntt1 then -使能信号为1,并且cnt 小于t1 时cnt:=cnt+1; -加计数elsecnt:=0;end if ;if cnt=t1 thenc1=1; -乙道开始通行,S0 状态elsec1=0;end if ;end if ;end process;end a ;5.3.2 红灯计数器library ieee;us
18、e ieee.std_logic_1164.all;entity counter2 isport (clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40 ;c2 :out std_logic);end counter2 ;architecture a of counter2 isconsta nt y:Integer:=5; -黄灯固定时间为5 秒signa l t2 : integer range 0 to 45; -红灯亮的时间beginprocess (clk)variable cnt : integer
19、range 0 to 45 ; -变量cnt 定义为常数,取值范围为0到45begint2=t1+y;if (clkevent and clk=1) then -时钟上升沿到来if enable=1a nd cntt2 then -使能信号为1,并且cnt 小于t2 时cnt:=cnt+1;elsecnt:=0;end if ;if cnt=t2 thenc2=1; -工作在S1 或S3 状态elsec2=0;end if ;end if ;end process;end a;5.3.3 黄灯计数器library ieee;use ieee.std_logic_1164.all;entity
20、counter3 isport (clk :in std_logic;enable :in std_logic;c3 :out std_logic;m3 :out integer range 0 to 5 );end counter3;architecture a of counter3 isbeginprocess (clk)variable cnt : integer range 0 to 5 ; -变量cnt 定义为常数,取值范围为0到5beginif (clkevent and clk=1) then -时钟上升沿到来if enable=1a nd cnt5 then -使能信号为1,
21、并且cnt 小于5 时cnt:=cnt+1; -加计数elsecnt:=0;end if ;if cnt=5 thenc3=1; -工作在S2 状态elsec3=0;end if ;end if ;m3=40 THEN -输入计时数据大于40NumA=4; -把十位数字送给ANumB=30 THENNumA=3;NumB=20 THENNumA=2;NumB=10 THENNumA=1;NumB=Numin-10;ELSENumA=0;NumB=40 THENNumC=4;NumD=30 THENNumC=3;NumD=20 THENNumC=2;NumD=10 THENNumC=1;NumD
22、=Numin-10;ELSENumC=0;NumDsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutnull;END CASE;END IF;END PROCESS;END;5.5.2 黄灯驱动LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HDqudong IS -黄灯驱动PORTclk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 5; -黄灯变化范围segout: out STD_LOGIC_VE
23、CTOR(6 downto 0);END;ARCHITECTURE behavior OF HDqudong ISBEGINprocess(Clk,data)BEGINIF falling_edge(Clk) and enable=1 thencase data iswhen 0=segoutsegoutsegoutsegoutsegoutsegoutnull;END CASE;END IF;END PROCESS;END;6仿真与结果分析 6.1分频器仿真在QuartusII软件中导入交通灯控制程序,对此程序编译无错误后,建立Vector waveform file 文件保存时仿真文件名要与
24、设计文件名一致。仿真结果如下图6-1所示:图6-1 分频器的仿真波形6.2 交通灯控制控制器的仿真仿真结果如下图6-2所示:图6-2 控制器的仿真波形6.3 交通灯控制计数器的仿真仿真波形如图6-3所示:图6-3 计数器1的仿真波形6.4 交通灯控制分位译码电路的仿真仿真结果如图6-4所示:图6-4 分位译码电路的仿真波形6.5 交通灯控制红绿灯驱动电路的仿真仿真结果如图6-5所示:图6-5 红绿灯驱动的仿真波形6.6 交通灯控制黄灯灯驱动电路的仿真仿真结果如图6-6所示:图6-6 黄灯驱动的仿真波形6.7 交通灯控制系统的仿真仿真结果如图6-7所示:在6-7图中可以看出甲、乙车道绿灯亮的时间
25、加上黄灯亮的时间等于甲车道红灯灭的时间。同时我们可以看出该系统满足我们所需的要求。图6-7 系统总体仿真波形结束语通过这次能力拓展训练,我进一步加深了对EDA(电子设计自动化)的了解。并进一步熟练了对QuartusII软件的操作。在这次训练的过程中,虽然遇到了很多在之前的学习过程中还存在着没有弄懂的问题,但是通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。并且加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。本设计采用VHDL 硬件描述语言文本输入方式,这是我以前没有接触过的。通过翻阅书籍和查找资料,我了解的一些关于这方面
26、的知识。我感觉这其中程序调试、试验软件、硬件熟悉最重要。在编完各模块程序之后,编译查错最初有三十几个错误,有输入错误、语法错误。一遍一遍的变异查错,直到没有错误。必须注意工程名和实体名一致,不然一般会出错。在没有错误之后可以进行波型仿真。若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出的输入错误。并且,在本次课程设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。在今后的工作和学习中,我们不能仅仅把目光停留在课本上,要多理论联系实际。有的时候,理论上是正确的东西放到现实中去,可能由于种种因素的制约,并不能达到实际的效果,还需要我们进
27、行相应的修改才能完成要求。这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。 参考文献1康华光.电子技术基础.北京: 高等教育出版社,2001.2 潘松,黄继业. EDA技术实用教程.科学出版社,2006.3 唐亚军.电子设计自动化EDA技术.化学工业出版社,2002.4 朱正伟. EDA技术及应用. 清华大学出版社,2004.5 蒋璇,臧蠢华. 数字系统设计与PLD应用(第二版).电子工业出版社,2005.附录 本科生课程设计成绩评定表姓 名 汪三林性 别 女专业、班级 自动化1101班课程设计题目: 温度控制系统设计课程设计答辩或质疑记录:成绩评定依据:序号评定项目评分成绩1选题合理、目的明确(10分)2设计方案正确,具有可行性、创新性(20分)3设计结果(例如:硬件成果、软件程序)(25分)4态度认真、学习刻苦、遵守纪律(15分)5设计报告的规范化、参考文献充分(不少于5篇)(10分)6答辩(20分)总分最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日