您好,欢迎来到年旅网。
搜索
您的当前位置:首页EDA课程设计-交通信号灯

EDA课程设计-交通信号灯

来源:年旅网
文档可能无法思考全面,请浏览后下载!

EDA技术课程设计报告

交通灯控制器

一、设计功能:

实现高速公路与乡间小路的交叉路口红绿灯的控制

二、具体功能要求:

1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。 2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的延迟时间。

(注:这段时间定义为20秒时间)

3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定时间内保持高速公路绿灯。 (注:这段时间定义为60秒时间)

1 / 17

文档可能无法思考全面,请浏览后下载!

4、原理框图如下:

2 / 17

文档可能无法思考全面,请浏览后下载!

5、交通信号灯的4种状态如下表: A B C D 高速交通灯 绿(60秒) 黄(5秒) 红(20秒) 红(5秒) 小道交通灯 红 红 绿 黄

三、参考设计方案:

3 / 17

文档可能无法思考全面,请浏览后下载!

定时时间到检测电路

状态发生器预置数产 时间显示数据输出 (两位二进生电路 计时器

制计数器)

红黄绿灯输出 红黄绿灯信号输出

1秒时钟脉冲信控制电路(RYG)

号发生器

图2 交通信号灯控制器的原理框图

采用VHDL语言输入的方式实现交通信号灯控制器

CLK 秒脉冲信号计数器 状态寄存器 时间显示数据输出 发生器(进(进程P3、(进程P6) 程P1和P2) P4和P5) 次态发生器 信号灯输出信号 (进程P7) 信号灯输出 图3 交通信号灯控制器程序原理框图

该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

计数器驱动脉冲如图所示:

4 / 17

文档可能无法思考全面,请浏览后下载!

四、编写相应源程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; USE IEEE.STD_LOGIC_UNSIGNED. ALL; ENTITY CONTRALZ IS PORT(CLK:IN STD_LOGIC; RA,GA,YA:OUT STD_LOGIC; TIMEAH,TIMEAL:OUT DOWNTO 0)); END CONTRALZ;

ARCHITECTURE BHV OF CONTRALZ IS

5 / 17

STD_LOGIC_VECTOR(3

文档可能无法思考全面,请浏览后下载!

TYPE RG IS (GREEN,RED,YELLOW2); BEGIN

PROCESS(CLK)

VARIABLE A:STD_LOGIC;

VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE STATE:RG; BEGIN

IF CLK'EVENT AND CLK='1' THEN CASE STATE IS WHEN GREEN=>IF A='0' THEN TH:=\"0101\"; TL:=\"1001\"; A:='1'; GA<='1'; RA<='0'; YA<='0'; ELSE IF

NOT(TH=\"0000\"AND TL=\"0001\") THEN IF TL=\"0000\" THEN TL:=\"1001\"; TH:=TH-1; ELSE TL:=TL-1;

6 / 17

文档可能无法思考全面,请浏览后下载!

END IF; ELSE

TH:=\"0000\"; TL:=\"0000\"; A:='0'; STATE:=RED; END IF; END IF;

WHEN RED=>IF A='0' THEN TH:=\"0001\"; TL:=\"1001\"; A:='1'; RA<='1'; YA<='0'; GA<='0'; ELSE IF

NOT(TH=\"0000\"AND TL=\"0001\") THEN IF TL=\"0000\" THEN TL:=\"1001\"; TH:=TH-1; ELSE TL:=TL-1;

7 / 17

文档可能无法思考全面,请浏览后下载!

END IF;

ELSE TH:=\"0000\"; TL:=\"0000\"; A:='0'; RA<='0'; GA<='0';

STATE:=YELLOW2; END IF; END IF;

WHEN YELLOW2=>IF A='0' THEN TH:=\"0000\"; TL:=\"0101\"; A:='1'; YA<='1'; GA<='0'; RA<='0';

ELSE IF NOT(TH=\"0000\"AND TL=\"0001\") THEN IF TL=\"0000\" THEN TL:=\"0101\"; TH:=TH-1; ELSE TL:=TL-1; END IF;

8 / 17

文档可能无法思考全面,请浏览后下载!

ELSE TH:=\"0000\"; TL:=\"0000\"; GA<='0';

RA<='0'; YA<='0'; A:='0'; STATE:=RED; END IF; END IF; END CASE;

END IF; TIMEAH<=TH; TIMEAL<=TL; END PROCESS; END BHV;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CONTRALX IS

9 / 17

文档可能无法思考全面,请浏览后下载!

PORT(CLK:IN STD_LOGIC; RB,GB,YB,CHU:OUT STD_LOGIC; TIMEAH,TIMEAL:OUT DOWNTO 0)); END CONTRALX;

ARCHITECTURE BHV OF CONTRALX IS

TYPE RGY IS(RED,YELLOW1,GREEN,YELLOW2); BEGIN PROCESS(CLK) VARIABLE A:STD_LOGIC;

VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE STATE:RGY;

BEGIN IF CLK'EVENT AND CLK='1' THEN CASE STATE IS WHEN YELLOW1=>IF A='0' THEN TH:=\"0000\"; TL:=\"0100\"; A:='1'; YB<='1'; GB<='0'; RB<='0'; CHU<='1';

ELSE IF NOT(TH=\"0000\"AND TL=\"0001\")

10 / 17

STD_LOGIC_VECTOR(3

文档可能无法思考全面,请浏览后下载!

THEN IF TL=\"0000\" THEN TL:=\"1001\"; TH:=TH-1; ELSE TL:=TL-1; END IF; ELSE TH:=\"0000\"; TL:=\"0000\"; A:='0';

STATE:=GREEN; END IF; END IF;

WHEN GREEN=>IF A='0' THEN TH:=\"0001\"; TL:=\"1001\"; A:='1'; GB<='1'; RB<='0'; YB<='0'; CHU<='1';

ELSE IF NOT(TH=\"0000\"AND TL=\"0001\") THEN IF TL=\"0000\" THEN TL:=\"1001\";

11 / 17

文档可能无法思考全面,请浏览后下载!

TH:=TH-1; ELSE TL:=TL-1; END IF;

ELSE TH:=\"0000\"; TL:=\"0000\"; A:='0';

STATE:=YELLOW2; END IF; END IF;

WHEN RED=>IF A='0' THEN TH:=\"0101\"; TL:=\"0100\"; A:='1'; RB<='1'; YB<='0'; CHU<='1';

ELSE IF NOT(TH=\"0000\"AND TL=\"0001\") THEN IF TL=\"0000\" THEN TL:=\"1001\"; TH:=TH-1; ELSE TL:=TL-1; END IF;

12 / 17

文档可能无法思考全面,请浏览后下载!

ELSE TH:=\"0000\"; TL:=\"0000\"; A:='0';

STATE:=YELLOW1; END IF; END IF;

WHEN YELLOW2=>IF A='0' THEN TH:=\"0000\"; TL:=\"0100\"; A:='1'; YB<='1'; GB<='0'; RB<='0'; CHU<='1';

ELSE IF NOT(TH=\"0000\"AND TL=\"0001\") THEN IF TL=\"0000\" THEN TL:=\"1001\"; TH:=TH-1; ELSE TL:=TL-1; END IF; ELSE TH:=\"0000\"; TL:=\"0000\";

13 / 17

文档可能无法思考全面,请浏览后下载!

A:='0'; CHU<='0'; STATE:=RED; END IF; END IF; END CASE; END IF; TIMEAH<=TH; TIMEAL<=TL; END PROCESS; END BHV;

五、对源程序进行编译及仿真

1、对程序进行编译,结果如下图:

2、用waveform对程序进行波形仿真,结果如下图:

14 / 17

文档可能无法思考全面,请浏览后下载!

15 / 17

文档可能无法思考全面,请浏览后下载!

六、设计思路

在听完课程设计指导课前,我们对交通灯的程序设计思路基本上可以称得上

是一片茫然,在听完课后虽然有个大致的思路,但还是不知道具体要怎么实施,于是我们开始去图书馆寻找参考书。在参考了书上一些已有的交通灯实验设计程序后,我们发现大部分的程序是用模块化设计,就是多进程的状态机设计,程序显得复杂繁琐。于是我们借着参考书理清思路,上网继续搜索资料、程序,选择了用单进程状态机表示交通灯的四个状态,选择用最简单的赋值法进行时间的赋值。

七、设计及运行中遇到的问题及解决方法

程序编译中,由于一些小细节没有认真,漏掉的结束代码,导致程序错误很多,在经过老师及同学的悉心指导后,经过仔细观察分析,细心检查后,程序得以正常运行。

八、实验心得体会

通过这次课程设计,我们进一步加深了对电子设计自动化的了解。并进一步熟练了对maxplus2软件的操作。在编写程序的过程中,遇到了很多问题,使我们发现自己以前学习上存在的不足。通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

16 / 17

文档可能无法思考全面,请浏览后下载!

九、参考文献

《数字电子技术基本教程》 阎 石主编 清华大学出版社 《电子技术基础实验》 侯建军主编 高等教育出版社

《数字电子技术与设计》 高仁璟主编 大连理工大学出版社

《VHDL与复杂数字系统设计》 金西 主编 西安电子科技大学出版社

17 / 17

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务