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

下载本文档

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

文档简介

1、 交通灯控制系统设计报告(基于VHDL语言与EDA)班级:学号:姓名:王亦玮摘 要此设计用数电实验箱来实现交通灯控制系统,模拟实现了红、绿和黄灯指挥交通的功能。它直接采用FPGA芯片开发,用VHDL语言编程和QUARTUS 8.0设计。本交通灯控制器适用东西方向和南北方向的两路基本相同车流情况的路口,红灯45秒,绿灯40秒,黄灯5秒,同时用数码管分别指示东西南北两个方向当前状态(红、黄、绿灯)的剩余时间。另有一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯,且数码管停止计时开始闪烁。紧急状态解除后,重新计时并指示时间。关键词:交通灯控制器,EDA,FPGA,QuartusII目录1

2、设计要求2 设计过程2.1总体设计慨要2.2 交通灯原理分析3 模块设计及仿真3.1 顶层文件的设计3.2 状态控制模块(jtd ctrl)3.3倒计时模块(jtd time)的设计3.4数码管显示模块(jtd xs)的设计3.5信号灯显示模块(jtd light)的设计3.6引脚锁定4编程下载 1设计要求设东西方向和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯且数码管停止计时并闪烁。紧急状态解除后,重新计时并指示时间。2 设

3、计过程2.1总体设计慨要根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显示,信号灯显示模块(jtd ctrl,jtd time,jtd xs,jtd light)。jtd ctrl实现逻辑和时序控制,外部两路脉冲振荡器的频率选为1 kHz和1 Hz的信号,1khz信号用于显示模块的扫描,1 Hz信号用做倒计时模块的计数脉冲。M为紧急状态和自动运行状态的控制端。总体框图:2.2 交通灯原理分析当M = “1”时,进入紧急状态,S输出为B,即南北、东西向均为红灯亮。且数码管停止计时并闪烁。(数码管在当时时间与X“FF”之间来回切换)当M = “0”时,交通即开始正常工作。M

4、=“0”时,经过40秒, S由B变为B,再经过5秒,S变为B,再经过40秒,S变为B,再经过5秒,S变为B如此循环下去。当M=“1”跳变到M=“0”时,数码管继续计时,恢复正常工作状态。南北、东西方向的红绿灯按表一表二变化。表一 交通灯状态转换表东西(A)方向红灯红灯绿灯黄灯45秒40秒5秒南北(B)方向绿灯黄灯红灯红灯40秒5秒45秒表二 交通灯状态转换表MS备注1长时间亮红灯0状态1:持续40秒,转到状态2状态2:持续5秒,转到状态3状态3:持续40秒,转到状态4状态4:持续5秒,转到状态1注:S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。1表示亮,0表示灭。3

5、模块设计及仿真3.1 顶层文件的设计图2 顶层原理图 顶层原理图设计可以依据系统框图进行,由反馈控制,倒计时,数码管显示,信号灯显示模块(jtd ctrl,jtd time,jtd xs,jtd light)五部分组成。其顶层原理图如图2所示。顶层文件的仿真波形图如图3所示:图3 顶层文件的仿真波形3.2 状态控制模块(jtd ctrl)状态控制模块根据倒计时模块(jtd time)的输出信号和1hz的时钟信号,产生系统的状态机,控制其他部分的协调工作。该模块的源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC

6、_UNSIGNED.ALL;ENTITY JTD_CTROL IS PORT ( CLK :IN STD_LOGIC; AT,BT : IN STD_LOGIC_VECTOR(7 DOWNTO 0); S: OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END JTD_CTROL;ARCHITECTURE JTD OF JTD_CTROL ISSIGNAL Q :STD_LOGIC_VECTOR (1 DOWNTO 0);BEGIN PROCESS(CLK,AT,BT)BEGINIF CLKEVENT AND CLK =1 THEN IF(AT =X01)OR (BT =

7、X01) THEN Q=Q+1; 通过AT,BT的反馈信号控制倒计时模块和信号显示jtd_light模块的工作 ELSE Q=Q;END IF;END IF;END PROCESS;S=Q;END JTD;状态控制模块的仿真波形图如图4所示:图 4 状态控制模块的仿真波形图 3.3倒计时模块(jtd time)的设计倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计时时间。倒计时模块源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_TIME

8、 IS PORT( CLK : IN STD_LOGIC; M : IN STD_LOGIC; S :IN STD_LOGIC_VECTOR(1 DOWNTO 0); AT,BT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END JTD_TIME;ARCHITECTURE JTD_1 OF JTD_TIME ISSIGNAL ATI : STD_LOGIC_VECTOR(7 DOWNTO 0):=X01;SIGNAL BTI : STD_LOGIC_VECTOR(7 DOWNTO 0):=X01;SIGNAL ART,AGT,AYT : STD_LOGIC_VECTO

9、R(7 DOWNTO 0);SIGNAL BRT,BGT,BYT : STD_LOGIC_VECTOR(7 DOWNTO 0);shared variable bf:std_logic:=0;BEGIN 设定各个红绿黄的工作时间ART=X45;AGT=X40;AYT=X05;BRT=X45;BGT=X40;BYT=X05;process begin wait until clkevent and clk=1; if M=1then AT=ATI;BT=BTI; elsif (M=0 and bf=0) thenAT=;BT=; bf:=not bf; elsif (M=0 and bf=1)

10、thenAT=ATI;BT=BTI; bf:=not bf;end if;end process; PROCESS (CLK,M,S)BEGIN IF M = 1 THEN ATI=ATI; BTIATI=ART; BTIBTIATI=AGT; BTIATI=AYT; END CASE;END IF;IF ATI/=X01 THEN A方向(东西方向)倒计时 IF ATI(3 DOWNTO 0)= 0000 THEN ATI(3 DOWNTO 0)=1001; ATI(7 DOWNTO 4)=ATI(7 DOWNTO 4)-1;ELSE ATI(3 DOWNTO 0)=ATI(3 DOWNTO

11、 0)-1; ATI(7 DOWNTO 4)=ATI(7 DOWNTO 4);END IF;END IF;IF BTI/=X01 THEN B方向(南北方向)倒计时 IF BTI(3 DOWNTO 0)=0000 THEN BTI(3 DOWNTO 0)=1001; BTI(7 DOWNTO 4)=BTI(7 DOWNTO 4)-1;ELSE BTI(3 DOWNTO 0)=BTI(3 DOWNTO 0)-1; BTI(7 DOWNTO 4)=BTI(7 DOWNTO 4);END IF;END IF;END IF;END IF;END PROCESS;-AT=ATI;-BT=BTI;END

12、JTD_1;倒计时模块的仿真波形图如图5所示为:图5 倒计时模块的仿真波形图 3.4数码管显示模块(jtd xs)的设计显示模块用来显示倒计时时间。采用动态扫描显示,通过分位程序,控制四个数码管的显示时间。数码管显示模块的源文件程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_XS ISPORT ( CLK1K :IN STD_LOGIC; AT,BT :IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED1,LED2,LED3,LED4:OUT S

13、TD_LOGIC_VECTOR(3 DOWNTO 0);END JTD_XS;ARCHITECTURE JTD_3 OF JTD_XS IS SIGNAL OU1,OU2,OU3,OU4:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SL:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS(CLK1K)BEGIN IF CLK1KEVENT AND CLK1K =1 THEN IF SL=11 THEN SL=00; 扫描LED显示管ELSE SLOU1OU2OU3OU4=AT(7 DOWNTO 4);END CASE;END PR

14、OCESS;LED1=OU1;LED2=OU2;LED3=OU3;LED4=OU4;END JTD_3;数码管显示模块的仿真波形图如图6所示:图6 数码管显示模块的仿真波形图3.5信号灯显示模块(jtd light)的设计通过控制模块的输出的状态控制信号,控制六个信号灯的亮灭。信号灯显示模块的源文件程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_LIGHT ISPORT (M :IN STD_LOGIC; S : IN STD_LOGIC_VECTOR(1 DOWNT

15、O 0); ABL :OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END JTD_LIGHT;ARCHITECTURE JTD_2 OF JTD_LIGHT ISSIGNAL LT: STD_LOGIC_VECTOR (5 DOWNTO 0);BEGIN PROCESS (S,M)BEGIN IF M =1 THEN LTLTLTLTLT=;END CASE;END IF;END PROCESS;ABL=LT;END JTD_2;信号灯显示模块的仿真波形图如图7所示:图7 信号灯显示模块的仿真波形图3.6管脚锁定4程序下载引脚锁定如上图所示。下载后,结果显示正确,六个信号灯依次为东西方向的红绿黄和南北方向的红绿黄。两个方向上的数码管显示的时间完全吻合。开关9为紧急状态控制端,打开开关9时,两路信号灯都为红灯,时间在当时时间与十六进制时间“FF”之间来回切换,关闭开关9,恢复原状态,继续计时。结果证实调试成功!5心得体会 通过学习,完成了设计任务:用VHDL设计交通灯控制

温馨提示

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

评论

0/150

提交评论