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

下载本文档

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

文档简介

1、EDA课程设计报告 基于VHDL的交通灯设计班 级: 姓 名 : 学 号 : 指导教师姓名: 学 院 : 引言:伴随着社会的发展以及人类生活水平的提高,汽车的数量在不断增加,交通事业得以蓬勃发展,而随之引起的安全问题已经不容忽视。EDA技术的发展和应用领域也在不断的扩大与深入,机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域的重要性日益突出。为了确保十字路口的行人和车辆顺利,畅通的通过,往往采用电子控制的交通信号来进行指挥。利用EDA技术设计交通灯来完成这个需求就显的更加迫切,同样也是非常的实用和合理。一、系统分析与总体方案1.1系统分析 通过分析可以知道,所要设计的十字路口

2、交通灯控制电路要能够使南北方向有左转、直行各三个灯(红、黄、绿),东西方向有左转、直行各三个灯(红、黄、绿),三个灯能够按顺序依次亮灭。而且要求绿灯亮转黄灯亮然后其他时间为红灯,红灯亮可以直接转绿灯(三种灯的循环顺序如图2.1所示)。还要求三种灯的点亮时间能够以倒计时的形式显示出来。可以用VHDL语言合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。绿灯黄灯红灯黄灯红灯图1.1三种灯的循环顺序1.2 设计思路1 时间脉冲可以直接赋予得到。2 10s、5s、40s、30s定时信号用倒计时,计时起始信号由控制流程电路给出,每当计满所需时间,即向控制电路输出“时间到”的信号,并使计数

3、器清零,由控制电路启、闭三色信号灯。3 主控电路是核心,这是一个时序电路,其输入信号为东西、南北方向:10s、5s、40s、30s定时信号,其输出状态控制相应的三色灯。4 三种灯转换状态表:时间|S105405105305东西左转绿黄红红红红红红东西直行红红绿黄红红红红南北左转红红红红绿黄红红南北直行红红红红红红绿黄1.3 设计方案 根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图2.2所示:CLK交通灯控制及计时模块扫描显示模块LED显示图2.2 系统的框图2 电路设计2.1控制器电路设计流程控制器的作用

4、是根据计数器的计数值控制各方向上发光二极管的亮、灭,当计时时间到达,状态控制器就响应,自动跳转到下一个状态。此外,当检测到特殊情况(urgen =1)发生时,无条件点亮红灯的二极管(急救灯按下urgen ='1',则东西南北都亮红灯,在这种状态下原来的状态必须保持,即东西南北方向定时时间保持不变。急救灯未按下或者按下后恢复,则继续计时(计时通过计数器count),同时恢复东西南北原来灯的状态)。具体实物模块如图3.1所示:图3.1控制器模块程序实现如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNS

5、IGNED.ALL;ENTITY ledcontrol ISPORT(reset,clk,urgen: INSTD_LOGIC;state: OUTSTD_LOGIC_VECTOR(2 DOWNTO 0);sub,set1,set2,set3,set4: OUTSTD_LOGIC);END ledcontrol;ARCHITECTURE a OF ledcontrol ISSIGNAL count : STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL subtemp: STD_LOGIC;BEGINsub<=subtemp AND (NOT clk) ;-将电平型信

6、号变为脉冲型,即高电平时输出一个脉冲statelabel:PROCESS (reset,clk)BEGINIF reset='1' THEN-系统复位 count<="0000000"state<="000"set2<='1'set4<='1'ELSIF clk'event AND clk='1' THEN IF urgen='0' THEN count<=count+1;subtemp<='1'ELSE subte

7、mp<='0'END IF;-经过脉冲电平变换后,使得正常状态时,正常减计数,紧急状态下停止计数IF count=0 then state<="000"set1<='1'set2<='1'set3<='1'set4<='1' ELSIF count=10 then state<="001"set1<='1'ELSIF count=15 THEN state<="010"set1<=

8、'1'set2<='1'ELSIF count=55 THEN state<="011"set2<='1'ELSIF count=60 THEN state<="100"set2<='1'set3<='1'elsif count=70 THEN state<="101"set3<='1'elsif count=75 THEN state<="110"set3<=

9、'1'set4<='1'elsif count=105 THEN state<="111"set4<='1'ELSIF count=110 THEN count<="0000000" ELSE set1<='0' set2<='0'set3<='0'set4<='0'END IF;END IF; - 控制流程END PROCESS statelabel;END a;2.2输出显示电路设计根据状态控

10、制器所控制的状态和计数器的计时时间,选择当前状态下的显示器,使显示器输出当前状态下的数码管亮、灭指令,其中数码管的显示采用动态扫描显示。具体实物模块如图:图3.2译码显示电路模块程序实现如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ledshow ISPORT(clk,urgen: IN STD_LOGIC;state: IN STD_LOGIC_VECTOR(2 DOWNTO 0);sub,set1,set2,set3,set4: IN STD_LOGIC;eg1,ey1,

11、er1,edg2,edy2,edr2,ng1,ny1,nr1,ndg2,ndy2,ndr2: OUTSTD_LOGIC;led1,led2: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END ledshow;ARCHITECTURE a OF ledshow ISSIGNAL count1,count2,count3,count4 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL setstate1,setstate2,setstate3,setstate4 : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL etg1,

12、ety1,etr1,edirr1,edirg1,ediry1,norg2,nory2,norr2,nordirg2,nordiry2,nordirr2 : STD_LOGIC; BEGINled1<="00000000" WHEN urgen='1' AND clk='0' ELSE -显示东西向行和停count1 WHEN state="000" ELSEcount1 WHEN state="001" ELSE count2 WHEN state="010" ELSEcoun

13、t2 WHEN state="011" ELSEcount2;led2<="00000000" WHEN urgen='1' AND clk='0' ELSEcount3 WHEN state="000" ELSEcount3 WHEN state="001" ELSE count3 WHEN state="010" ELSEcount3 WHEN state="011" ELSEcount3 WHEN state="100&q

14、uot; ELSEcount3 WHEN state="101" ELSEcount4 WHEN state="110" ELSEcount4;etg1<='1' WHEN state="000" AND urgen='0' ELSE '0'ety1<='1' WHEN state="001" AND urgen='0' ELSE '0'etr1<='1' WHEN state=&quo

15、t;010" or urgen='1' OR state="011" OR state="100" OR state="101" OR state="110" OR state="111" ELSE '0'edirg1<='1' WHEN state="010" and urgen='0' ELSE '0'ediry1<='1' WHEN state=&quo

16、t;011" and urgen='0' ELSE '0'edirr1<='1' WHEN state="000" OR urgen='1' OR state="001" OR state="100" OR state="101" OR state="110" OR state="111" ELSE '0'norg2<='1' WHEN state="

17、;100" AND urgen='0' ELSE '0'nory2<='1' WHEN state="101" and urgen='0' ELSE '0'norr2<='1' WHEN state="000" OR state="001" OR state="010" OR state="011" OR state="110" OR state="

18、111" OR urgen='1' ELSE '0'nordirg2<='1' WHEN state="110" AND urgen='0' ELSE '0'nordiry2<='1' WHEN state="111" and urgen='0' ELSE '0'nordirr2<='1' WHEN state="000" OR state="001&qu

19、ot; OR state="010" OR state="011" OR state="100" OR urgen='1' OR state="101" ELSE '0'setstate1<= "00010000" WHEN state="000" ELSE"00000101" WHEN state="001" ELSE"10010101" ;setstate2<= &qu

20、ot;00010101" WHEN state="000" ELSE-"00000101" WHEN state="001" ELSE"01000000" WHEN state="010" ELSE"00000101" WHEN state="011" ELSE"01010000" ;setstate3<= "01100000" WHEN state="000" ELSE"

21、;00010000" WHEN state="100" ELSE"00000101" WHEN state="101" ELSE"00110101" ;setstate4<= "01110101" WHEN state="000" ELSE"00110000" WHEN state="110" ELSE"00000101" ;label4: -南北直行PROCESS (sub)BEGINIF sub&

22、#39;event AND sub='1' THENIF set4='1' THEN count4<=setstate4;elsif count4(3 downto 0)="0000" then count4<=count4-7; ELSE count4<=count4-1; END IF;ndy2<=nordiry2;ndg2<=nordirg2;ndr2<=nordirr2;END IF;END PROCESS label4;label3: -南北左行PROCESS (sub)BEGINIF sub&#

23、39;event AND sub='1' THENIF set3='1' THEN count3<=setstate3;elsif count3(3 downto 0)="0000" then count3<=count3-7;ELSE count3<=count3-1; END IF;ng1<=norg2;ny1<=nory2;nr1<=norr2;END IF;END PROCESS label3;label2: -东西直行PROCESS (sub)BEGINIF sub'event AND s

24、ub='1' THENIF set2='1' THEN count2<=setstate2;elsif count2(3 downto 0)="0000" then count2<=count2-7; ELSE count2<=count2-1; END IF;edg2<=edirg1;edy2<=ediry1;edr2<=edirr1;END IF;END PROCESS label2;label1: -东西左行PROCESS (sub)BEGINIF sub'event AND sub='

25、;1' THENIF set1='1' THEN count1<=setstate1; elsif count1(3 downto 0)="0000" then count1<=count1-7;ELSE count1<=count1-1; END IF;eg1<=etg1;er1<=etr1;ey1<=ety1;END IF;END PROCESS label1;END a;3.程序仿真与分析3.1 仿真结果利用Quartus II软件对本程序进行编译,生成了可以进行仿真定时分析以及下载到可编程器件的相关文件。仿

26、真结果如图5.1所示:图5.1 仿真结果3.2 仿真结果分析通过设定clk值以及reset和urgen的初值,就可以得到如上所示的仿真波形图。由仿真波形图可以看出波形是由reset初值信号触发而显示出各个状态的。Urgen高电平信号输入时,所有交通灯都变为红灯状态。由仿真波形图还可以清楚的看出各时间段每个交通灯的状态。要得到正确的仿真波形图就不许设定合适的时间信号clk值。如果clk值设置的太小则交通灯状态变化得太快无法分辨,如果clk值设置得太大则交通灯状态转换缓慢,效果不明显。其次,要设定reset初值,如果没有设定reset初值就不可能触发而得到仿真图。最后,就是要设置一Urgen高电平信号来检测紧急情况下的交通灯的状态。4 心得体会通过此次课程设计,使我对EDA程序设计有了进一步的学习,进一步的认识;在

温馨提示

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

评论

0/150

提交评论