交通灯控制系统_第1页
交通灯控制系统_第2页
交通灯控制系统_第3页
交通灯控制系统_第4页
交通灯控制系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

目录TOC\o"1-5"\h\z\o"CurrentDocument"摘要 1\o"CurrentDocument"设计初始条件及任务 2\o"CurrentDocument"设计初始条件 2\o"CurrentDocument"设计要求指标 2\o"CurrentDocument"题目分析及整体构思 3\o"CurrentDocument"硬件电路设计 5\o"CurrentDocument"分频器的设计 5\o"CurrentDocument"控制器的设计 5\o"CurrentDocument"计数器的设计 6\o"CurrentDocument"分位译码电路的设计 6\o"CurrentDocument"数码管驱动的设计——绿灯和红灯驱动 7\o"CurrentDocument"数码管驱动的设计——黄灯驱动 7\o"CurrentDocument"顶层连接及其仿真 8程序设计 9分频器的设计 9\o"CurrentDocument"控制器的设计 10计数器的设计 12分位译码电路的设计 15数码管驱动的设计 17\o"CurrentDocument"交通灯控制系统的仿真 20\o"CurrentDocument"结束语 23\o"CurrentDocument"参考文献 24摘要伴随着社会的发展以及人类生活水平的提高,EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。在现代城市中,随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。单单依靠人力来指挥交通已经不可行了,因此,红绿交通信号灯成为了交管部门管理交通的重要手段。设计交通灯来完成这个需求就显的越加迫切了 .为了确保十字路口的行人和车辆顺利、畅通地通过 ,往往采用电子控制的交通信号来进行指挥。关键词:EDA交通灯电子控制交通灯控制1设计初始条件及任务设计初始条件Quartus4.1以上版本软件;课程设计辅导资料:“数字电路EDA入门”、“VHDL程序实例集”、“EDA技术与VHDL”、“EDA与数字系统设计”等;先修课程:电路、电子设计EDA、电子技术基础等。主要涉及的知识点:门电路、组合逻辑电路、时序逻辑电路等。设计要求指标课程设计时间:1周;课程设计内容:根据指导老师给定的题目,按规定选择其中1套完成;本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(仿真结果),并对实验结果进行分析和总结。具体设计要求包括:复习EDA的相关技术与方法;掌握VHDL或者Verilog语言,并要求能编写程序。Quartus软件的使用:掌握程序编辑、编译、调试、仿真方法。设计相关简单的电路,完成既定的功能。

2题目分析及整体构思设甲车道和乙车道方向的车流量大致相同,因此红、黄、绿灯的时长也相同,考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变,因此将其固定为5秒,而红灯亮的时间等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为40秒即(0<t1<40)。同时用数码管正计时指示当前状态(红、黄、绿)所亮的时间。我们可自行设定,计数值与交通灯的亮灭的关系如图2-1所示:绿灯亮姜灯見绿灯亮姜灯見-O红灯亮 红灯亮绿灯亮黃灯亮2iX(右” —o)2xt.—52x(^—o)图2-1计数值与交通灯的亮灭关系该系统主要由计数模块、控制模块、分频模块、分位模块以及显示电路构成。

其中分频模块主要将系统输入的基准时钟信号转换是 1Hz的激励信号。驱动计数模块和控制模块工作,控制模块根据计数器的计数情况对交通灯的亮灭及持续时间进行控制,并通过分位电路将灯亮时间以倒计时的形式通过数码管显示出来。交通灯控制器系统框图如图2-2所示:

图2-2交通灯控制系统框图硬件电路设计分频器的设计分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。生成的Symbol文件如图3-1和仿真波形如图3-2所示。.?fredevider 1.•i—clkinclkout—•:inst i.图3-1分频器模块控制器的设计控制器的作用是根据计数器的计数值及 七1的输入数据控制发光二极管的亮、灭,以及输出正计时数值给七段数码管的分位译码电路。此外,当检测到特殊情况(HOLD=‘1')发生时,无条件点亮红灯的二极管。本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。这两种方法各有所长,必须根据所用器件的特性进行选择:比如有些 FPGA有丰富的寄存器资源,3-3且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应。生成的实体模块如图和仿真波形如图3-4所示。

3-3=C&litnoluelkc1:UJ1c2叫2£NvjWrlresetgi—r:iZtf图3-3控制器模块计数器的设计计数器1的计数范围为由t1引脚输入。计到t1后,下一个时钟沿恢复到0,开始下一轮计数。仿真波形如图当t1取7时,计数器计数到7后清零。实体模块如图3-5和仿真波形如图3-6。计数器2和计数器3的实体模块如图3-7和图3-8所示。tlh:counter^enableH[5..O]图3-7计数器tlh:counter^enableH[5..O]图3-7计数器2模块图3-8计数器3模块I皿血詁 =.!&lkvublam1(5..0j:tip..O];inst1j图3-5计数器1模块分位译码电路的设计由于控制器输出的正计时数值可能是1位或者2位十进制数,因此在七段数码管的译码电路前要加上分位电路(即将其分成 2个1位的十进制数,如40分成4和0,5分为0和5)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄存器。本电路中分位电路使用组合逻辑电路实现。生成的实体模块如图3-9及仿真波形如图3-10。-FeniueiLJ-FeniueiLJ1-1Numin[5..U]Mum.q3..U]NumB[3..U]inst1nr-Feniiiei2LJ1-Humin[5..U]Mun-iL:[3..U]MumD[3..Li]inst1nr分位译码器1分位译码器分位译码器1图3-9分位译码电路模块数码管驱动的设计——绿灯和红灯驱动要求数码管共阳极连接(共阳极的公共端为低电平时,LED要求数码管共阳极连接(共阳极的公共端为低电平时,LED不亮),在设计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。本模块设计为时序逻辑电路,采用下降沿触发。实体模块如图3-11和仿真波形如图3-12。・』」・・・■■亠:qudong [? Clk WEQQUt河』]i—enable曲tm陆:inst图3-11驱动模块数码管驱动的设计——黄灯驱动由于黄灯固定时间是5秒,因此变化范围是0至5秒,七段数码管只要能显示0-5的数就行了,所以单独用一个数码管驱动。实体模块如图3-13和仿真波形如图3-14。

图3-13黄灯驱动模块3.7顶层连接及其仿真交通灯控制器的顶层文件连接图如图3-15和仿真波形如图3-16。图3-15顶层文件连接图在图3-15中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器2,每个译码器分别接两个驱动电路,然后接输出。左边 5个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5个驱动器接的数码管显示的是乙车道各个灯亮的时间。程序设计分频器的设计libraryieee;useieee.std_logic_1164.all;entityfredevideris 分频器port(clkin:instd_logic;clkout:outstd_logic);end;architecturedevideroffredeviderisconstantN:integer:=499;signalcounter:integerrange0toN;signalClk:std_logic;beginprocess(clkin)beginifrising_edge(clkin)thenifCounter=Nthencounter<=0;clk<=notclk;elsecounter<=counter+1;endif;endif;endprocess;clkout<=clk;end;4.2控制器的设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出正计时数值给七段译码管的分译码电路。libraryieee;useieee.std_logic_1164.all;entitycontrolis 控制器port(clk:instd_logic;c1,c2,c3:outstd_logic; 计数器工作时能信号,为1时计数w1,w2,w3:instd_logic; 计数器指示信号,在计数过程中,相应的指示信号为0,计数结束时为1r1,r2:outstd_logic; 分别为甲乙车道红灯y1,y2:outstd_logic; 分别为甲乙车道黄灯g1,g2:outstd_logic; 分别为甲乙车道绿灯reset:instd_logic); 复位信号,高电平有效endcontrol;architectureaofcontrolistypestate_spaceis(s3,s2,s1,s0); 四种状态signalstate:state_space;beginprocess(clk)beginifreset='1'thenstate<=s0; 复位时状态为S0elseif(clk'eventandclk='1')then 时钟上升沿到来casestateiswhens0=>ifw1='1'thenstate<=s1;endif;whens1=>ifw2='1'thenstate<=s2;endif;whens2=>ifw3='1'thenstate<=s3;endif;whens3=>ifw2='1'thenstate<=s0;endif;endcase;endif;endif;endprocess;c1<='1'whenstate=s0else'0';c2<='1'whenstate=s1orstate=s3else'0';c3<='1'whenstate=s2else'0';r1<='1'whenstate=s1orstate=s0else'0';y1<='1'whenstate=s3else'0';g1<='1'whenstate=s2else'0';r2<='1'whenstate=s2orstate=s3else'0';y2<='1'whenstate=s1else'0';g2<='1'whenstate=s0else'0';enda;计数器的设计绿灯计数器libraryieee;useieee.std_logic_1164.all;entitycounter1isport(clk:instd_logic;enable:instd_logic;t1:inintegerrange0to40; 绿灯可设置亮的时间c1:outstd_logic);endcounter1;architectureaofcounter1isbeginprocess(clk)variablecnt:integerrange0to40;变量cnt定义为常数,取值范围为0到40beginif(clk'eventandclk='1')then 时钟上升沿到来ifenable='1'andcnt<t1then使能信号为1,并且cnt小于t1时cnt:=cnt+1; 加计数elsecnt:=0;endif;ifcnt=t1thenc1<='1'; 乙道开始通行,S0状态elsec1<='0';endif;endif;endprocess;enda;4.3.2红灯计数器libraryieee;useieee.std_logic_1164.all;entitycounter2isport(clk:instd_logic;enable:instd_logic;t1:inintegerrange0to40;c2:outstd_logic);endcounter2;architectureaofcounter2isconstanty:Integer:=5; 黄灯固定时间为5秒signalt2:integerrange0to45; 红灯亮的时间beginprocess(clk)variablecnt:integerrange0to45; 变量cnt定义为常数,取值范围为0到45begint2<=t1+y;if(clk'eventandclk='1')then 时钟上升沿到来ifenable='1'andcnt<t2then 使能信号为1,并且cnt小于t2时cnt:=cnt+1;elsecnt:=0;endif;ifcnt=t2thenc2v=T; 工作在S1或S3状态elsec2<='0';endif;endif;endprocess;enda;4.3.3黄灯计数器libraryieee;useieee.std_logic_1164.all;entitycounter3isport(clk:instd_logic;enable:instd_logic;c3:outstd_logic;m3:outintegerrange0to5);endcounter3;architectureaofcounter3isbeginprocess(clk)variablecnt:integerrange0to5; 变量cnt定义为常数,取值范围为0到5beginif(clk'eventandclk='1')then时钟上升沿到来ifenable='1'andcnt<5then使能信号为1,并且cnt小于5时cnt:=cnt+1; 加计数elsecnt:=0;endif;ifcnt=5thenc3<='1'; 工作在S2状态elsec3<='0';endif;endif;m3<=cnt;endprocess;enda;分位译码电路设计分位译码电路设计1LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFenwei1ISPORT(Numin:INintegerRANGE0TO45;NumA,NumB:OUTIntegerRANGE0to9 绿灯亮的时间,十位和个位数字);END;ARCHITECTUREbehaviorOFFenwei1ISBEGINprocess(Numin)BEGINIFNumin>=40THEN 输入计时数据大于40NumA<=4; 把十位数字送给ANumB<=Numin-40; 把个位数字送给BELSIFNumin>=30THENNumA<=3;NumB<=Numin-30;ELSIFNumin>=20THENNumA<=2;NumB<=Numin-20;ELSIFNumin>=10THENNumA<=1;NumB<=Numin-10;ELSENumA<=0;NumB<=Numin;ENDIF;ENDPROCESS;END;4.4.2分位译码电路的设计2LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFenwei2ISPORT(Numin:INintegerRANGE0TO45;NumC,NumD:OUTIntegerRANGE0to9 红灯亮的时间,十位和个位);END;ARCHITECTUREbehaviorOFFenwei2ISBEGINprocess(Numin)BEGINIFNumin>=40THEN

NumC<=4;NumD<=Numin-40;ELSIFNumin>=30THENNumC<=3;NumD<=Numin-30;ELSIFNumin>=20THENNumC<=2;NumD<=Numin-20;ELSIFNumin>=10THENNumC<=1;NumD<=Numin-10;ELSENumC<=0;NumD<=Numin;ENDIF;ENDPROCESS;END;数码管驱动的设计红绿灯驱动LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYqudongISPORT(clk:inSTD_LOGIC;enable:instd_logic;七段显示器输出data:INintegerRANGE0TO9; 输入数字七段显示器输出segout:outSTD_LOGIC_VECTOR(6downto0)); END;ARCHITECTUREbehaviorOFqudongISBEGINprocess(Clk,data)BEGINIFfalling_edge(Clk)andenable='1'then 下降沿到来和使能信号为1时casedataiswhen0=>segout<="1111110";when1=>segout<="0110000";when2=>segout<="1101101";when3=>segout<="1111001";when4=>segout<="0110011";when5=>segout<="1011011";when6=>segout<="0011111";when7=>segout<="1110000";when8=>segout<="1111111";when9=>segout<="1110011";whenothers=>null;ENDCASE;ENDIF;ENDPROCESS;END;4.5.2黄灯驱动LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYHDqudongIS 黄灯驱动PORT(clk:inSTD_LOGIC;enable:instd_logic;data:INintegerRANGE0TO5; 黄灯变化范围segout:outSTD_LOGIC_VECTOR(6downto0));END;ARCHITECTUREbehaviorOFHDqudongISBEGINprocess(Clk,data)BEGINIFfalling_edge(Clk)andenable='1'thencasedataiswhen0=>segout<="1111110";when1=>segout<="0110000";when2=>segout<="1101101";when3=>segout<="1111001";when4=>segout<="0110011";when5=>segout<="1011011";whenothers=>null;ENDCASE;ENDIF;ENDPROCESS;END;交通灯控制系统的仿真交通灯控制分频器的仿真在QuartusII软件中导入交通灯控制程序,对此程序编译无错误后,建立Vectorwaveformfile文件保存时仿真文件名要与设计文件名一致。仿真结果如下:13.975n5-|-|Pbinlei:Inlpivat-13.9003Starl:Erd:MastpIrncBarE013.975n5-|-|Pbinlei:Inlpivat-13.9003Starl:Erd:MastpIrncBarE0B0Viluflat13.90KEP3Bl.^E3 1&3.Q42245.]6m327.啓z409.6us491.^2z573.44ui&55.尹u197.28u='mnn™rjuioiirjiJiojurjur_]iurjuoinR7LJurjurjuirninrnnirjurjuurjuir「图5-1分频器的仿真波形交通灯控制控制器的仿真仿真结果如下:£MasterTirre0ai: Dp& *|»F匚irtmi: 930psInterval 30ptStart: End:罠1罠1『汕0Valuea□ps11^0elkBD*LETC*£&tB04*2□1B1如Ba虬妙4,23B0—>妙5elE:0ar.誉B1rlEi1Z.on證Ei0fflB1DhLD止B10-L1ly3B1■/12ylB0■Or1JBLiI―. I—I —Ii_ii_i i-1——1L.Li i i—iii11111」 i_l L1 L」 i_l L1Liy iiJ 1JJ1 厂iI IJ l图5-2控制器的仿真波形交通灯控制计数器的仿真仿真波形如图所示:怎A英包嗨辩ft.TelkBienabletlV1cBinlVi3ps<10.02180.02i120.(0ns1C0.0:g-rrTTr^-LnLr^rrn^--LTT-n-HTTTT"J1(_-)CT7SCy3G^I图5-3计数器1的仿真波形交通灯控制分位译码电路的仿真仿真结果如图所示:A0英):lbU5]1]7]U2JL]3]UB02□22X4(Jft400uhGO.0il^30.C心'XF8:4CZ饭5MasteiTimeBai:13.975nsnterval:1824ns5tert:*|4Pointer:Hsrn巳A0英):lbU5]1]7]U2JL]3]UB02□22X4(Jft400uhGO.0il^30.C心'XF8:4CZ饭5MasteiTimeBai:13.975nsnterval:1824ns5tert:*|4Pointer:Hsrn巳|MuninV:iliie13.9E10.0ns£0.0ns50.0ns70.0ns13.?T5nsJ□□.-□□-tfunA图5-4分位译码电路的仿真波形交通灯控制红绿灯驱动电路的仿真仿真结果如图所示:13.975ns图5-5红绿灯驱动的仿真波形交通灯控制黄灯灯驱动电路的仿真仿真结果如图所示:i_-__LrLrLrLrLr_-_-_-L-LrLrLrLr_r_-_-_-LrLrLrLr皑:]n]A;,UiUiUIL20.0ns他.08D.0rui_-__LrLrLrLrLr_-_-_-L-LrLrLrLr_r_-_-_-LrLrLrLr皑:]n]A;,UiUiUIL20.0

温馨提示

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

评论

0/150

提交评论