EDA交通灯课程设计_第1页
EDA交通灯课程设计_第2页
EDA交通灯课程设计_第3页
EDA交通灯课程设计_第4页
EDA交通灯课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、 EDA技术实用教程 课题名称: EDA课程设计 学 院: 大数据与信息工程学院 专 业: 通信工程 姓 名: 刘杰 熊涛 学 号: 1208060454 1208060468 年 级: 通信121 任课教师: 班兴建 2015 年 5 月 27 日前言 伴随着社会的发展以及人类生活水平的提高,汽车的数量在D的DEA 技术的发展和应用领域的扩大与深入,EDA 技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对DEA 的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行

2、人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。交通管理器工作流程图:1、设计任务 设计一个十字路口的交通灯控制系统,用实验平台上的LED 发光二极管显示车辆通过的方向(甲车道和乙车道各一组),用数码管显示该方向的亮灯时间。要求:交通灯按正常状态依次点亮红、黄、绿灯,交警可以根据路口车流量的情况分别设置红、绿、黄灯持续点亮的时间。在红、绿灯点亮时,能够显示其点亮持续的时间。2、题目分析与整体构思2.1 交通灯控制器应具备的功能 设甲车道和乙车道方向的车流量大致相同,因此红、黄

3、、绿灯的时长也相同,考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变, 因此将其固定为5 秒,而红灯亮的时间等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为40 秒即(0<t1<40)。同时用数码管正计时指示当前状态(红、黄、绿)所亮的时间。2.2 实现方案2.2.1 从题目中计数值与交通灯的亮灭的关系如图(1)所示:图一2.2.2 交通灯控制器系统框图如图2 所示:3、硬件电路设计3.1 分频器的设计 分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。该分频器实

4、现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。生成的Symbol 文件如图3 和仿真波形如图4 所示。 图三图四3.2 控制器的设计 控制器的作用是根据计数器的计数值及t1 的输入数据控制发光二极管的亮、灭,以及输出正计时数值给七段数码管的分位译码电路。本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应;生成的实体模块如图5 和仿真波形如图6所示。图五图六3.3 计数器的设计 计数器1 的计数范围为由t1 引脚输入。计到t1 后,下一个时钟沿恢复到0,开始下一轮计数。仿真波形如图当t1 取7 时,计数器计数到7 后清零。实体模块如图7 和仿真波形如图8。计数器2 和

5、计数器3 的实体模块如图9 和图10 所示。图7图9图10图83.4 分位译码电路的设计-1 由于控制器输出的正计时数值可能是1 位或者2 位十进制数,因此在七段数码管的译码电路前要加上分位电路(即将其分成2 个1 位的十进制数,如40 分成4 和0,5分为0 和5)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。控制器中,引入了寄存器。本电路中分位电路使用组合逻辑电路实现。生成的实体模块如图11 及仿真波形如图12。图11图123.5 分位译码电路的设计2分位译码电路2 和分位译码电路1 的功能是一样的,为了区别两个不同的引脚图( 8)图(11)图(12)NumC3.

6、0和NumD3.0因此再设计一个电路,只是引脚名的名称不同,如图13。3.6 数码管驱动的设计绿灯和红灯驱动 要求数码管共阳极连接(共阳极的公共端为低电平时,LED 不亮),在设计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。本模块设计为时序逻辑电路,采用下降沿触发。实体模块如图14 和仿真波形如图15。图14图153.7 数码管驱动的设计黄灯驱动 由于黄灯固定时间是5 秒,因此变化范围是0 至5 秒,七段数码管只要能显示0-5 的数就行了,所以单独用一个数码管驱动。实体模块如图16和仿真波形如图17。图16图173.8 顶层连接及其仿真交通灯控制器的顶层文件连接图如图18

7、和仿真波形如图19。图18图19 对图18 和19 的解释:在图18 中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器2,每个译码器分别接两个驱动电路,然后接输出。左边5 个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5 个驱动器接的数码管显示的是乙车道各个灯亮的时间。在19 图中可以看出甲、乙车道绿灯亮的时间加上黄灯亮的时间等于甲车道红灯灭的时间。同时我们可以看出该系统满足我们所需的要求。4、程序设计4.1 分频器的设计library ieee;use ieee.std_logic_1164.all;entity fredevider is -分频器port(clkin:i

8、n std_logic;clkout:out std_logic);end;architecture devider of fredevider isconsta nt N:integer:=499;signa l counter:integer range 0 to N;图( 1signa l Clk:std_logic;beginprocess(clkin)beginif rising_ed ge(clkin)thenif Counter=N thencounter<=0;clk<=not clk;elsecounter<=counter+1;end if;end if;

9、end process;clkout<=clk;end;4.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 std_logic; -分

10、别为甲乙车道红灯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' thenstate<=s0; -复位时状态为S0else if (clk&

11、#39;event and clk='1') then -时钟上升沿到来case state iswhen s0=>if w1='1' thenstate<=s1;end if ;when s1=>if w2='1' thenstate<=s2;end if ;when s2=>if w3='1' thenstate<=s3;end if ;when s3=>if w2='1' thenstate<=s0;end if ;end case;end if;end if;

12、end process;c1<='1'when state =s0 else '0'c2<='1'when state =s1 or state =s3 else '0'c3<='1'when state =s2 else '0'r1<='1'when state =s1 or state =s0 else '0'y1<='1'when state =s3else '0'g1<='1'

13、when state =s2 else '0'r2<='1'when state =s2 or state =s3 else '0'y2<='1'when state =s1 else '0'g2<='1'when state =s0 else '0'end a ;4.3 计数器的设计4.3.1 绿灯计数器library ieee;use ieee.std_logic_1164.all;entity counter1 isport (clk :in std_logi

14、c;enable :in std_logic;t1 :in integer range 0 to 40 ; -绿灯可设置亮的时间c1 :out std_logic);end counter1 ;architecture a of counter1 isbeginprocess (clk)variable cnt : integer range 0 to 40 ; -变量cnt 定义为常数,取值范围为0到40beginif (clk'event and clk='1') then -时钟上升沿到来if enable='1'a nd cnt<t1 th

15、en -使能信号为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 ;4.3.2 红灯计数器library ieee;use ieee.std_logic_1164.all;entity counter2 isport (clk :in std_logic;enable :in std_logic;t1 :in integer range 0 t

16、o 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 range 0 to 45 ; -变量cnt 定义为常数,取值范围为0到45begint2<=t1+y;if (clk'event and clk='1') then -时钟上升沿到来if ena

17、ble='1'a nd cnt<t2 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;4.3.3黄灯计数器library ieee;use ieee.std_logic_1164.all;entity counter3 isport (clk :in std_logic;enable :in std_logic

18、;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 (clk'event and clk='1') then -时钟上升沿到来if enable='1'a nd cnt<5 then -使能信号为1,并且cnt 小于5 时cnt:=cnt+1; -加计

19、数elsecnt:=0;end if ;if cnt=5 thenc3<='1' -工作在S2 状态elsec3<='0'end if ;end if ;m3<=cnt;end process;end a ;4.4 分位译码电路设计-1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Fenwei1 ISPORT(Numin:IN integer RANGE 0 TO 45;NumA,NumB:OUT Integer RANGE 0 to 9 -绿灯亮的时间,十位和个位数字);END;ARCHITE

20、CTURE behavior OF Fenwei1 ISBEGINprocess(Numin)BEGINIF Numin>=40 THEN -输入计时数据大于40NumA<=4; -把十位数字送给ANumB<=Numin-40; -把个位数字送给BELSIF Numin>=30 THENNumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THENNumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THENNumA<=1;NumB<=Numin-10;ELSENumA<

21、;=0;NumB<=Numin;END IF;END PROCESS;END;4.5 分位译码电路的设计2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Fenwei2 ISPORT(Numin:IN integer RANGE 0 TO 45;NumC,NumD:OUT Integer RANGE 0 to 9 -红灯亮的时间,十位和个位);END;ARCHITECTURE behavior OF Fenwei2 ISBEGINprocess(Numin)BEGINIF Numin>=40 THENNumC<=4;NumD&l

22、t;=Numin-40;ELSIF Numin>=30 THENNumC<=3;NumD<=Numin-30;ELSIF Numin>=20 THENNumC<=2;NumD<=Numin-20;ELSIF Numin>=10 THENNumC<=1;NumD<=Numin-10;ELSENumC<=0;NumD<=Numin;END IF;END PROCESS;END;4.6 数码管驱动的设计4.6.1 红绿灯驱动LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY qudong I

23、SPORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 9; -输入数字segout: out STD_LOGIC_VECTOR(6 downto 0); -七段显示器输出END;ARCHITECTURE behavior OF qudong ISBEGINprocess(Clk,data)BEGINIF falling_edge(Clk) and enable='1' then -下降沿到来和使能信号为1 时case data iswhen 0=>segout<="11

24、11110"when 1=>segout<="0110000"when 2=>segout<="1101101"when 3=>segout<="1111001"when 4=>segout<="0110011"when 5=>segout<="1011011"when 6=>segout<="0011111"when 7=>segout<="1110000"wh

25、en 8=>segout<="1111111"when 9=>segout<="1110011"when others =>null;END CASE;END IF;END PROCESS;END;4.6.2 黄灯驱动LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HDqudong IS -黄灯驱动PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 5; -黄灯变化范围segout: out

26、 STD_LOGIC_VECTOR(6 downto 0);END;ARCHITECTURE behavior OF HDqudong ISBEGINprocess(Clk,data)BEGINIF falling_edge(Clk) and enable='1' thencase data iswhen 0=>segout<="1111110"when 1=>segout<="0110000"when 2=>segout<="1101101"when 3=>segout<="1111001"when 4=>segout<="0110011"when 5=>segout<="1011011"when others =>null;END CASE;END IF;END PROCESS;END;5硬件测试 把顶层文件连接图进行编译仿真后就

温馨提示

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

评论

0/150

提交评论