交通灯控制系统设计报告.docx
- 文档编号:113324
- 上传时间:2022-10-03
- 格式:DOCX
- 页数:15
- 大小:172.67KB
交通灯控制系统设计报告.docx
《交通灯控制系统设计报告.docx》由会员分享,可在线阅读,更多相关《交通灯控制系统设计报告.docx(15页珍藏版)》请在冰豆网上搜索。
交通灯控制系统设计报告
(基于VHDL语言与EDA)
班级:
021151
学号:
02115036
姓名:
王亦玮
摘要
此设计用数电实验箱来实现交通灯控制系统,模拟实现了红、绿和黄灯指挥交通的功能。
它直接采用FPGA芯片开发,用VHDL语言编程和QUARTUSⅡ8.0设计。
本交通灯控制器适用东西方向和南北方向的两路基本相同车流情况的路口,红灯45秒,绿灯40秒,黄灯5秒,同时用数码管分别指示东西南北两个方向当前状态(红、黄、绿灯)的剩余时间。
另有一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯,且数码管停止计时开始闪烁。
紧急状态解除后,重新计时并指示时间。
关键词:
交通灯控制器,EDA,FPGA,QuartusII
目录
1设计要求
2设计过程
2.1总体设计慨要
2.2交通灯原理分析
3模块设计及仿真
3.1顶层文件的设计
3.2状态控制模块(jtdctrl)
3.3倒计时模块(jtdtime)的设计
3.4数码管显示模块(jtdxs)的设计
3.5信号灯显示模块(jtdlight)的设计
3.6引脚锁定
4编程下载
1设计要求
设东西方向和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。
另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯且数码管停止计时并闪烁。
紧急状态解除后,重新计时并指示时间。
2设计过程
2.1总体设计慨要
根据交通灯控制器的功能与要求,将其总体电路分为状态控制,倒计时,数码管显示,信号灯显示模块(jtdctrl,jtdtime,jtdxs,jtdlight)。
jtdctrl实现逻辑和时序控制,外部两路脉冲振荡器的频率选为1kHz和1Hz的信号,1khz信号用于显示模块的扫描,1Hz信号用做倒计时模块的计数脉冲。
M为紧急状态和自动运行状态的控制端。
总体框图:
2.2交通灯原理分析
当M=“1”时,进入紧急状态,S输出为B"100100",即南北、东西向均为红灯亮。
且数码管停止计时并闪烁。
(数码管在当时时间与X“FF”之间来回切换)
当M=“0”时,交通即开始正常工作。
M=“0”时,经过40秒,S由B"100010"变为B"100001",再经过5秒,S变为B"010100",再经过40秒,S变为B"001100",再经过5秒,S变为B"100010"……如此循环下去。
当M=“1”跳变到M=“0”时,数码管继续计时,恢复正常工作状态。
南北、东西方向的红绿灯按表一表二变化。
表一交通灯状态转换表
东西(A)方向
红灯
红灯
绿灯
黄灯
45秒
40秒
5秒
南北(B)方向
绿灯
黄灯
红灯
红灯
40秒
5秒
45秒
表二交通灯状态转换表
M
S
备注
1
100100
长时间亮红灯
0
状态1:
100010
持续40秒,转到状态2
状态2:
100001
持续5秒,转到状态3
状态3:
010100
持续40秒,转到状态4
状态4:
001100
持续5秒,转到状态1
注:
S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。
‘1’表示亮,‘0’表示灭。
3模块设计及仿真
3.1顶层文件的设计
图2顶层原理图
顶层原理图设计可以依据系统框图进行,由反馈控制,倒计时,数码管显示,信号灯显示模块(jtdctrl,jtdtime,jtdxs,jtdlight)五部分组成。
其顶层原理图如图2所示。
顶层文件的仿真波形图如图3所示:
图3顶层文件的仿真波形
·3.2状态控制模块(jtdctrl)
状态控制模块根据倒计时模块(jtdtime)的输出信号和1hz的时钟信号,产生系统的状态机,控制其他部分的协调工作。
该模块的源文件程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_CTROLIS
PORT(CLK:
INSTD_LOGIC;
AT,BT:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S:
OUTSTD_LOGIC_VECTOR(1DOWNTO0));
ENDJTD_CTROL;
ARCHITECTUREJTDOFJTD_CTROLIS
SIGNALQ:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PROCESS(CLK,AT,BT)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IF(AT=X"01")OR(BT=X"01")THENQ<=Q+1;——通过AT,BT的反馈信号控制倒计时模块和信号显示jtd_light模块的工作
ELSEQ<=Q;
ENDIF;
ENDIF;
ENDPROCESS;
S<=Q;
ENDJTD;
状态控制模块的仿真波形图如图4所示:
图4状态控制模块的仿真波形图
3.3倒计时模块(jtdtime)的设计
倒计时模块用来设定A和B两个方向计时器的初值,并为数码管显示模块提供倒计时时间。
倒计时模块源文件程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_TIMEIS
PORT(CLK:
INSTD_LOGIC;
M:
INSTD_LOGIC;
S:
INSTD_LOGIC_VECTOR(1DOWNTO0);
AT,BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDJTD_TIME;
ARCHITECTUREJTD_1OFJTD_TIMEIS
SIGNALATI:
STD_LOGIC_VECTOR(7DOWNTO0):
=X"01";
SIGNALBTI:
STD_LOGIC_VECTOR(7DOWNTO0):
=X"01";
SIGNALART,AGT,AYT:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALBRT,BGT,BYT:
STD_LOGIC_VECTOR(7DOWNTO0);
sharedvariablebf:
std_logic:
='0';
BEGIN——设定各个红绿黄的工作时间
ART<=X"45";
AGT<=X"40";
AYT<=X"05";
BRT<=X"45";
BGT<=X"40";
BYT<=X"05";
process
begin
waituntilclk'eventandclk='1';
ifM='1'then
AT<=ATI;
BT<=BTI;
elsif(M='0'andbf='0')then
AT<="11111111";
BT<="11111111";
bf:
=notbf;
elsif(M='0'andbf='1')then
AT<=ATI;
BT<=BTI;
bf:
=notbf;
endif;
endprocess;
PROCESS(CLK,M,S)
BEGIN
IFM='1'THEN
ATI<=ATI;BTI<=BTI;
ELSE
IFCLK'EVENTANDCLK='1'THEN
IF(ATI=X"01")OR(BTI=X"01")THEN
CASESIS——通过S的变化控制各个状态,给倒计时显示灯赋值
WHEN"00"=>ATI<=ART;BTI<=BGT;
WHEN"01"=>BTI<=BYT;
WHEN"10"=>ATI<=AGT;BTI<=BRT;
WHEN"11"=>ATI<=AYT;
ENDCASE;
ENDIF;
IFATI/=X"01"THEN——A方向(东西方向)倒计时
IFATI(3DOWNTO0)="0000"THEN
ATI(3DOWNTO0)<="1001";
ATI(7DOWNTO4)<=ATI(7DOWNTO4)-1;
ELSEATI(3DOWNTO0)<=ATI(3DOWNTO0)-1;
ATI(7DOWNTO4)<=ATI(7DOWNTO4);
ENDIF;
ENDIF;
IFBTI/=X"01"THEN——B方向(南北方向)倒计时
IFBTI(3DOWNTO0)="0000"THEN
BTI(3DOWNTO0)<="1001";
BTI(7DOWNTO4)<=BTI(7DOWNTO4)-1;
ELSEBTI(3DOWNTO0)<=BTI(3DOWNTO0)-1;
BTI(7DOWNTO4)<=BTI(7DOWNTO4);
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
--AT<=ATI;
--BT<=BTI;
ENDJTD_1;
倒计时模块的仿真波形图如图5所示为:
图5倒计时模块的仿真波形图
3.4数码管显示模块(jtdxs)的设计
显示模块用来显示倒计时时间。
采用动态扫描显示,通过分位程序,控制四个数码管的显示时间。
数码管显示模块的源文件程序为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTD_XSIS
PORT(CLK1K:
INSTD_LOGIC;
AT,BT:
INSTD_LOGIC_VECTOR(7DOWNTO0);
LED1,LED2,LED3,LED4:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDJTD_XS;
ARCHITECTUREJTD_3OFJTD_XSIS
SIGNALOU1,OU2,OU3,OU4:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALSL:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PROCESS(CLK1K)
BEGIN
IFCLK1K'EVENTANDCLK1K='1'THEN
IFSL="11"THENSL<="00";——扫描LED显示管
ELS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 控制系统 设计 报告