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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务