EDA课程设计交通信号灯.docx
- 文档编号:24294691
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:15
- 大小:224.57KB
EDA课程设计交通信号灯.docx
《EDA课程设计交通信号灯.docx》由会员分享,可在线阅读,更多相关《EDA课程设计交通信号灯.docx(15页珍藏版)》请在冰豆网上搜索。
EDA课程设计交通信号灯
EDA技术课程设计报告
交通灯控制器
一、设计功能:
实现高速公路与乡间小路的交叉路口红绿灯的控制
二、具体功能要求:
1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。
2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。
(注:
这段时间定义为20秒时间)
3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。
(注:
这段时间定义为60秒时间)
4、原理框图如下:
5、交通信号灯的4种状态如下表:
A
B
C
D
高速交通灯
绿(60秒)
黄(5秒)
红(20秒)
红(5秒)
小道交通灯
红
红
绿
黄
三、参考设计方案:
状态发生器(两位二进制计数器)
定时时间到检测电路
预置数产生电路
计时器
时间显示数据输出
红黄绿灯输出
控制电路(RYG)
红黄绿灯信号输出
1秒时钟脉冲信号发生器
图2交通信号灯控制器的原理框图
采用VHDL语言输入的方式实现交通信号灯控制器
秒脉冲信号发生器(进程P1和P2)
状态寄存器
(进程P6)
计数器
(进程P3、P4和P5)
CLK
时间显示数据输出
次态发生器
信号灯输出信号
(进程P7)
信号灯输出
图3交通信号灯控制器程序原理框图
该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。
进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。
计数器驱动脉冲如图所示:
四、编写相应源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCONTRALZIS
PORT(CLK:
INSTD_LOGIC;
RA,GA,YA:
OUTSTD_LOGIC;
TIMEAH,TIMEAL:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCONTRALZ;
ARCHITECTUREBHVOFCONTRALZIS
TYPERGIS(GREEN,RED,YELLOW2);
BEGIN
PROCESS(CLK)
VARIABLEA:
STD_LOGIC;
VARIABLETH,TL:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLESTATE:
RG;
BEGIN
IFCLK'EVENTANDCLK='1'
THENCASESTATEIS
WHENGREEN=>IFA='0'
THENTH:
="0101";
TL:
="1001";
A:
='1';
GA<='1';
RA<='0';
YA<='0';
ELSEIF
NOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="1001";
TH:
=TH-1;
ELSETL:
=TL-1;
ENDIF;
ELSE
TH:
="0000";
TL:
="0000";
A:
='0';
STATE:
=RED;
ENDIF;
ENDIF;
WHENRED=>IFA='0'
THENTH:
="0001";
TL:
="1001";
A:
='1';
RA<='1';
YA<='0';
GA<='0';
ELSEIF
NOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="1001";
TH:
=TH-1;
ELSE
TL:
=TL-1;
ENDIF;
ELSETH:
="0000";
TL:
="0000";
A:
='0';
RA<='0';
GA<='0';
STATE:
=YELLOW2;
ENDIF;
ENDIF;
WHENYELLOW2=>IFA='0'
THENTH:
="0000";
TL:
="0101";
A:
='1';
YA<='1';
GA<='0';
RA<='0';
ELSEIFNOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="0101";
TH:
=TH-1;
ELSETL:
=TL-1;
ENDIF;
ELSETH:
="0000";
TL:
="0000";
GA<='0';
RA<='0';
YA<='0';
A:
='0';
STATE:
=RED;
ENDIF;
ENDIF;
ENDCASE;
ENDIF;TIMEAH<=TH;
TIMEAL<=TL;
ENDPROCESS;
ENDBHV;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCONTRALXIS
PORT(CLK:
INSTD_LOGIC;
RB,GB,YB,CHU:
OUTSTD_LOGIC;
TIMEAH,TIMEAL:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCONTRALX;
ARCHITECTUREBHVOFCONTRALXIS
TYPERGYIS(RED,YELLOW1,GREEN,YELLOW2);
BEGINPROCESS(CLK)
VARIABLEA:
STD_LOGIC;
VARIABLETH,TL:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLESTATE:
RGY;
BEGINIFCLK'EVENTANDCLK='1'
THENCASESTATEIS
WHENYELLOW1=>IFA='0'
THENTH:
="0000";
TL:
="0100";
A:
='1';
YB<='1';
GB<='0';
RB<='0';
CHU<='1';
ELSEIFNOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="1001";
TH:
=TH-1;
ELSETL:
=TL-1;
ENDIF;
ELSETH:
="0000";
TL:
="0000";
A:
='0';
STATE:
=GREEN;
ENDIF;
ENDIF;
WHENGREEN=>IFA='0'
THENTH:
="0001";
TL:
="1001";
A:
='1';
GB<='1';
RB<='0';
YB<='0';
CHU<='1';
ELSEIFNOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="1001";
TH:
=TH-1;
ELSETL:
=TL-1;
ENDIF;
ELSETH:
="0000";
TL:
="0000";
A:
='0';
STATE:
=YELLOW2;
ENDIF;
ENDIF;
WHENRED=>IFA='0'
THENTH:
="0101";
TL:
="0100";
A:
='1';
RB<='1';
YB<='0';
CHU<='1';
ELSEIFNOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="1001";
TH:
=TH-1;
ELSETL:
=TL-1;
ENDIF;
ELSETH:
="0000";
TL:
="0000";
A:
='0';
STATE:
=YELLOW1;
ENDIF;
ENDIF;
WHENYELLOW2=>IFA='0'
THENTH:
="0000";
TL:
="0100";
A:
='1';
YB<='1';
GB<='0';
RB<='0';
CHU<='1';
ELSEIFNOT(TH="0000"ANDTL="0001")
THENIFTL="0000"
THENTL:
="1001";
TH:
=TH-1;
ELSETL:
=TL-1;
ENDIF;
ELSETH:
="0000";
TL:
="0000";
A:
='0';
CHU<='0';
STATE:
=RED;
ENDIF;
ENDIF;
ENDCASE;
ENDIF;
TIMEAH<=TH;
TIMEAL<=TL;
ENDPROCESS;
ENDBHV;
五、对源程序进行编译及仿真
1、对程序进行编译,结果如下图:
2、用waveform对程序进行波形仿真,结果如下图:
六、设计思路
在听完课程设计指导课前,我们对交通灯的程序设计思路基本上可以称得上是一片茫然,在听完课后虽然有个大致的思路,但还是不知道具体要怎么实施,于是我们开始去图书馆寻找参考书。
在参考了书上一些已有的交通灯实验设计程序后,我们发现大部分的程序是用模块化设计,就是多进程的状态机设计,程序显得复杂繁琐。
于是我们借着参考书理清思路,上网继续搜索资料、程序,选择了用单进程状态机表示交通灯的四个状态,选择用最简单的赋值法进行时间的赋值。
七、设计及运行中遇到的问题及解决方法
程序编译中,由于一些小细节没有认真,漏掉的结束代码,导致程序错误很多,在经过老师及同学的悉心指导后,经过仔细观察分析,细心检查后,程序得以正常运行。
八、实验心得体会
通过这次课程设计,我们进一步加深了对电子设计自动化的了解。
并进一步熟练了对maxplus2软件的操作。
在编写程序的过程中,遇到了很多问题,使我们发现自己以前学习上存在的不足。
通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。
同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。
做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。
最后参照每个模块把输入和输出引脚设定,运用我们们所学的VHDL语言进行编程。
总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
九、参考文献
《数字电子技术基本教程》阎石主编清华大学出版社
《电子技术基础实验》侯建军主编高等教育出版社
《数字电子技术与设计》高仁璟主编大连理工大学出版社
《VHDL与复杂数字系统设计》金西主编西安电子科技大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 交通 信号灯