您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > EDA交通灯课程设计
-1-目录前言………………………………………………………………………41设计任务…………………………………………………………………42题目分析与整体构思…………………………………………………42.1交通灯控制器应具备的功能……………………………………………………42.2实现方案……………………………………………………………………………43硬件电路设计……………………………………………………………………53.1分频器的设计……………………………………………………………………53.2控制器的设计……………………………………………………………………63.3计数器的设计……………………………………………………………………73.4分位译码电路的设计1…………………………………………………………73.5分位译码电路的设计2…………………………………………………………73.6数码管驱动的设计--绿灯和红灯驱动…………………………………………83.7数码管驱动的设计--黄灯驱动…………………………………………………83.8顶层连接文件及仿真……………………………………………………………94程序设计…………………………………………………………………………104.1分频器的设计……………………………………………………………………10-2-4.2控制器的设计……………………………………………………………………114.3计数器的设计……………………………………………………………………134.3.1绿灯计数器的设计……………………………………………………………134.3.2红灯计数器的设计……………………………………………………………144.3.3黄灯计数器的设计……………………………………………………………154.4分位译码电路的设计1…………………………………………………………164.5分位译码电路的设计2…………………………………………………………174.6数码管驱动的设计………………………………………………………………184.6.1红绿灯数码管驱动的设计……………………………………………………184.6.2黄灯数码管驱动的设计………………………………………………………195硬件测试…………………………………………………………………………196引脚锁定…………………………………………………………………………207心得体会…………………………………………………………………………218参考文献…………………………………………………………………………23-3-前言伴随着社会的发展以及人类生活水平的提高,汽车的数量在D的DEA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。交通管理器工作流程图:-4-1、设计任务设计一个十字路口的交通灯控制系统,用实验平台上的LED发光二极管显示车辆通过的方向(甲车道和乙车道各一组),用数码管显示该方向的亮灯时间。要求:交通灯按正常状态依次点亮红、黄、绿灯,交警可以根据路口车流量的情况分别设置红、绿、黄灯持续点亮的时间。在红、绿灯点亮时,能够显示其点亮持续的时间。2、题目分析与整体构思2.1交通灯控制器应具备的功能设甲车道和乙车道方向的车流量大致相同,因此红、黄、绿灯的时长也相同,考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变,因此将其固定为5秒,而红灯亮的时间等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为40秒即(0t140)。同时用数码管正计时指示当前状态(红、黄、绿)所亮的时间。2.2实现方案2.2.1从题目中计数值与交通灯的亮灭的关系如图(1)所示:2.2.2交通灯控制器系统框图如图2所示:图(1)图(1)-5-3、硬件电路设计3.1分频器的设计分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。生成的Symbol文件如图3和仿真波形如图4所示。图(2)图(3)图(4)-6-3.2控制器的设计控制器的作用是根据计数器的计数值及t1的输入数据控制发光二极管的亮、灭,以及输出正计时数值给七段数码管的分位译码电路。本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应;生成的实体模块如图5和仿真波形如图6所示。3.3计数器的设计计数器1的计数范围为由t1引脚输入。计到t1后,下一个时钟沿恢复到0,开始下一轮计数。仿真波形如图当t1取7时,计数器计数到7后清零。实体模块如图7和仿真波形如图8。计数器2和计数器3的实体模块如图9和图10所示。图(5)图(6)图(7)图(9)图(10)-7-3.4分位译码电路的设计--1由于控制器输出的正计时数值可能是1位或者2位十进制数,因此在七段数码管的译码电路前要加上分位电路(即将其分成2个1位的十进制数,如40分成4和0,5分为0和5)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄存器。本电路中分位电路使用组合逻辑电路实现。生成的实体模块如图11及仿真波形如图12。3.5分位译码电路的设计—2分位译码电路2和分位译码电路1的功能是一样的,为了区别两个不同的引脚图(8)图(11)图(12)-8-NumC[3..0]和NumD[3..0]因此再设计一个电路,只是引脚名的名称不同,如图13。3.6数码管驱动的设计——绿灯和红灯驱动要求数码管共阳极连接(共阳极的公共端为低电平时,LED不亮),在设计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。本模块设计为时序逻辑电路,采用下降沿触发。实体模块如图14和仿真波形如图15。3.7数码管驱动的设计——黄灯驱动由于黄灯固定时间是5秒,因此变化范围是0至5秒,七段数码管只要能显示0-5的数就行了,所以单独用一个数码管驱动。实体模块如图16和仿真波形如图17。图(13)图(14)图(15)-9-3.8顶层连接及其仿真交通灯控制器的顶层文件连接图如图18和仿真波形如图19。图(18)图(16)图(17)-10-对图18和19的解释:在图18中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器2,每个译码器分别接两个驱动电路,然后接输出。左边5个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5个驱动器接的数码管显示的是乙车道各个灯亮的时间。在19图中可以看出甲、乙车道绿灯亮的时间加上黄灯亮的时间等于甲车道红灯灭的时间。同时我们可以看出该系统满足我们所需的要求。4、程序设计4.1分频器的设计libraryieee;useieee.std_logic_1164.all;entityfredevideris----------分频器port(clkin:instd_logic;clkout:outstd_logic);end;architecturedevideroffredeviderisconstantN:integer:=499;signalcounter:integerrange0toN;图(19)-11-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);-----四种状态-12-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';-13-r2='1'whenstate=s2orstate=s3else'0';y2='1'whenstate=s1else'0';g2='1'whenstate=s0else'0';enda;4.3计数器的设计4.3.1绿灯计数器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'andcntt1then-----使能信号为1,并且cnt小于t1时cnt:=cnt+1;------加计数elsecnt:=0;endif;ifcnt=t1thenc1='1';---------乙道开始通行,S0状态elsec1='0';endif;endif;endprocess;enda;-14-4.3.2红灯计数器libraryieee;useieee.std_logic_1164.all;entitycounter2isport(clk:instd_logic;enable
本文标题:EDA交通灯课程设计
链接地址:https://www.777doc.com/doc-219515 .html