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

下载本文档

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

文档简介

1、目录前 言 41 设计任务42 题目分析与整体构思42.1交通灯控制器应具备的功能 42.2 实现方案43 硬件电路设计 53.1 分频器的设计 53.2控制器的设计63.3 计数器的设计73.4分位译码电路的设计 173.5分位译码电路的设计 273.6数码管驱动的设计 - 绿灯和红灯驱动83.7数码管驱动的设计 - 黄灯驱动83.8顶层连接文件及仿真94 程序设计104.1 分频器的设计101 - PAGE 19 - HYPERLINK l _TOC_250005 4.2控制器的设计114.3 计数器的设计13 HYPERLINK l _TOC_250004 4.3.1绿灯计数器的设计13

2、 HYPERLINK l _TOC_250003 4.3.2红灯计数器的设计144.3.3黄灯计数器的设计154.4 分位译码电路的设计 1 164.5分位译码电路的设计 2 174.6数码管驱动的设计184.6.1红绿灯数码管驱动的设计18 HYPERLINK l _TOC_250002 4.6.2黄灯数码管驱动的设计195 硬件测试 196 引脚锁定 20 HYPERLINK l _TOC_250001 7 心得体会 21 HYPERLINK l _TOC_250000 8 参考文献 23前言伴随着社会的发展以及人类生活水平的提高,汽车的数量在 D 的 DEA 技术的发展和应用领域的扩大与

3、深入,EDA 技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对DEA 的不断的增加 ,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。交通管理器工作流程图:1、设计任务设计一个十字路口的交通灯控制系统,用实验平台上的LED 发光二极管显示车辆通过的方向(甲车道和乙车道各一组),用数码管显示该方向的亮灯时间。要求

4、:交通灯按正常状态依次点亮红、黄、绿灯,交警可以根据路口车流量的情况分别设置红、绿、黄灯持续点亮的时间。在红、绿灯点亮时,能够显示其点亮持续的时间。2、题目分析与整体构思交通灯控制器应具备的功能设甲车道 和乙车道 方向的车流量大致相同,因此红、黄、绿灯的时长也相同,考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变,因此将其固定为 5 秒,而红灯亮的时间 等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为 40 秒即( 0t140)。同时用数码管正计时指示当前状态(红、黄、绿)所亮的时间。实现方案从题目

5、中计数值与交通灯的亮灭的关系如图(1)所示:图( 1)交通灯控制器系统框图如图 2 所示:图(2)3、硬件电路设计分频器的设计分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。 生成的 Symbol 文件如图 3 和仿真波形如图 4 所示。图 (3)图(4)控制器的设计控制器的作用是根据计数器的计数值及t1 的输入数据控制发光二极管的亮、灭, 以及输出正计时数值给七段数码管的分位译码电路。本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应;生成的实体模块如图 5 和仿真波形如图 6所示。

6、图(5)计数器的设计图(6)计数器 1 的计数范围为由 t1 引脚输入。计到 t1 后,下一个时钟沿恢复到 0,开始下一轮计数。仿真波形如图当 t1 取 7 时,计数器计数到 7 后清零。实体模块如图 7 和仿真波形如图 8。计数器 2 和计数器 3 的实体模块如图 9 和图 10 所示。图(7)图( 9)图(10)图(8)分位译码电路的设计 -1由于控制器输出的 正计时数值可能是 1 位或者 2 位十进制数,因此在七段数码管的译码电路前要加上分位电路(即将其分成2 个 1 位的十进制数,如 40 分成 4 和 0,5 分为 0 和 5)。与控制器一样,分位电路同样可以由时钟驱动,也可以设计成

7、纯组合逻辑电路。控制器中,引入了寄存器。本电路中分位电路使用组合逻辑电路实现。生成的实体模块如图 11 及仿真波形如图 12。图(11)图( 12)分位译码电路的设计2分位译码电路 2 和分位译码电路 1 的功能是一样的 ,为了区别两个不同的引脚NumC3.0 和 NumD3.0 因此再设计一个电路,只是引脚名的名称不同,如图13。图( 13)3.6 数码管驱动的设计绿灯和红灯驱动要求数码管共阳极连接(共阳极的公共端为低电平时,LED不亮),在设计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。本模块设计为时序逻辑电路,采用下降沿触发。实体模块如图14 和仿真波形如图 15。图

8、( 14)图( 15)数码管驱动的设计黄灯驱动由于黄灯固定时间是 5 秒,因此变化范围是 0 至 5 秒,七段数码管只要能显示 0-5 的数就行了,所以单独用一个数码管驱动。 实体模块如图 16和仿真波形如图 17。图(16)图( 17)顶层连接及其仿真交通灯控制器的顶层文件连接图如图18 和仿真波形如图 19。图( 18)图(19)对图 18 和 19 的解释:在图 18 中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器 2,每个译码器分别接两个驱动电路,然后接输出。左边5 个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5 个驱动器接的数码管显示的是乙车道各个灯亮的时间。在

9、 19 图中可以看出甲、乙车道绿灯亮的时间加上黄灯亮的时间等于甲车道红灯灭的时间。同时我们可以看出该系统满足我们所需的要求。4、程序设计分频器的设计library ieee; useieee.std_logic_1164.all;entity fredevider is分频器port(clkin:in std_logic; clkout:out std_logic);end;architecture devider of fredevider is constantN:integer:=499;signal counter:integer range 0 to N;signal Clk:std

10、_logic; begin process(clkin)beginif rising_edge(clkin)then if Counter=N thencounter=0; clk=not clk; elsecounter=counter+1; end if;end if; end process; clkout=clk; end;控制器的设计控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出正计时数值给七段译码管的分译码电路。library ieee;useieee.std_logic_1164.all;entity control is控制器port (clk:in std_

11、logic;c1,c2,c3:outstd_logic; 计数器工作时能信号,为 1 时计数w1,w2,w3:in std_logic;计数器指示信号,在计数过程中,相应的指示信号为 0,计数结束时为 1r1,r2:out std_logic;分别为甲乙车道红灯y1,y2:out std_logic;分别为甲乙车道黄灯g1,g2:out std_logic;分别为甲乙车道绿灯reset:in std_logic);复位信号,高电平有效end control ; architecturea of control istype state_spaceis (s3,s2,s1,s0);四种状态beg

12、insignal state: state_space;process(clk) beginif reset=1 thenstateif w1=1 then stateif w2=1 thenstateif 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=s3else 0; c3=1when state=s2 else 0;r1=1when state=s1 or state=s0

13、else 0; y1=1when state =s3else0;g1=1when state =s2 else 0;end a ;计数器的设计绿灯计数器library ieee;r2=1when state=s2 or state=s3else 0; y2=1when state =s1 else 0; g2=1when state =s0 else 0;useieee.std_logic_1164.all; entity counter1 isport (clk:in std_logic; enable:in std_logic;t1:in integerrange0 to 40 ;绿灯可设

14、置亮的时间c1:out std_logic); end counter1 ;architecture a of counter1 is beginprocess(clk)variable cnt : integer range 0 to 40 ; 变量 cnt 定义为常数,取值范围为 0到 40beginif (clkevent and clk=1) then时钟上升沿到来if enable=1andcntt1 then 使能信号为 1,并且 cnt 小于 t1 时cnt:=cnt+1;加计数elsecnt:=0;end if ;if cnt=t1 thenc1=1; 乙道开始通行, S0 状

15、态elsec1=0;end if ; end if ;end process;end a;红灯计数器library ieee; useieee.std_logic_1164.all; entity counter2 isport (clk:in std_logic; enable:in std_logic;t1:in integerrange0 to 40 ; c2:out std_logic);end counter2 ;architecture a of counter2 isconstanty:Integer:=5; 黄灯固定时间为 5 秒signal t2 : integerrange

16、 0 to 45;红灯亮的时间beginprocess(clk)variable cnt : integer range0 to 45 ; 变量 cnt 定义为常数,取值范围为 0到 45begint2=t1+y;if (clkevent and clk=1) then时钟上升沿到来if enable=1andcntt2 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;黄灯

17、计数器library ieee; useieee.std_logic_1164.all; entity counter3 isport (clk:in std_logic; enable:in std_logic; c3:out std_logic;m3:out integer range0 to 5 ); end counter3;architecture a of counter3 isbeginprocess(clk)variable cnt : integer range 0 to 5 ; 变量 cnt 定义为常数,取值范围为 0到 5beginif (clkevent and clk

18、=1) then时钟上升沿到来if enable=1andcnt5 then 使能信号为 1,并且 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; 把十位数字送给 A NumB=30 THENNumA=3;NumB=20 THEN NumA=2;NumB=10 THEN NumA=1;NumB=Numin-10;ELSENumA=0;NumB=40 THEN NumC=4;NumD=30

19、THEN NumC=3;NumD=20 THEN NumC=2;NumD=10 THEN NumC=1;NumD=Numin-10;ELSENumC=0;NumDsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutsegoutnull;END CASE;END IF;END PROCESS;END;黄灯驱动LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HDqudong IS黄灯驱动PORT(clk:in STD_LOGIC; enable:in std_logic;data:IN inte

20、ger RANGE 0 TO 5;黄灯变化范围segout:out STD_LOGIC_VECTOR(6 downto 0); END;ARCHITECTURE behavior OF HDqudong ISBEGINprocess(Clk,data) BEGINIF falling_edge(Clk) and enable=1 then casedataiswhen 0=segoutsegoutsegoutsegoutsegoutsegoutnull;END CASE;END IF;END PROCESS;END;5硬件测试把顶层文件连接图进行编译仿真后就可以进行硬件测试了,我们所用的仿真实验箱是 GW48系列 SOPC/EDA实验开发系统(杭州康芯电子有限公司现代 DSP实验开发系统)。在实验箱中因为有 1HZ的频率并且自带译码器, 所以在下载时用的顶层文件连接图就把分频器和译码器驱动电路给去掉了,如图( 20),在实验过程中由于数码管不够,图中 5 个数码管显示的是一个车道的绿、红、黄灯时间。6、引脚锁定图(20)在下载之前,要进行引脚的锁定,我们用的是模式5,各个端口的引脚锁定如图 21。20 - PAGE 24 -图( 21)在确定引脚锁定正确后再编译一次,然后下载到实验箱中。首先对绿 灯时间 t1 进行置数

温馨提示

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

评论

0/150

提交评论