EDA课程设计交通灯控制器.docx
- 文档编号:29249168
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:17
- 大小:512.02KB
EDA课程设计交通灯控制器.docx
《EDA课程设计交通灯控制器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计交通灯控制器.docx(17页珍藏版)》请在冰豆网上搜索。
EDA课程设计交通灯控制器
序号
综合成绩
优秀()良好()
中等()及格()
不及格()
教师(签名)
批改日期
《EDA技术》课程设计报告
课题:
交通灯控制器
院系自动化学院
专业电气工程及其自动化
班级学号
姓名
指导教师
起止日期2015年12月14日-12月25号
2015年12月
前言
伴随着社会的发展以及人类生活水平的提高,汽车的数量在D的DEA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。
随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。
因此,做好基于EDA技术平台的交叉口信号控制设计是缓解交通阻塞、提高城市道路交叉口车辆通行效率的有效方法。
交通信号控制的目的是为城市道路交叉口(或交通网络)提供安全可靠和有效的交通流,通常最为常用的原则是车辆在交叉口的通过量最大或车辆在交叉口的延误最小。
以下就是运用数字电子设计出的交通灯:
其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。
一﹑设计任务
设计一个十字路口的交通信号灯控制器,控制A、B两条交叉道路上的车辆通行,具体要求如下:
(1)每条道路设一组信号灯,每组信号灯由红、黄、绿3盏灯组成,绿灯表示允许通行红灯表示禁止通行,黄灯表示该车道上已过停车线的车辆继续通行,未过停车线的车辆停止通行。
(2)设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是30s、3s和30s。
(3) 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。
当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。
二、题目分析与整体构思
假设交通灯信号控制器用于主干道与支道的交叉路口,两个路口都配有传感器以检测有无车辆通行,应优先保证主干道的通畅,即当支道无车时,总处于“主干道绿灯,支道红灯”状态。
当支道、主道都有车时,则轮流切换通行。
当只有支道有车辆要穿行主干道时,才切向“主干道红灯,支道绿灯”,但一旦支道无车辆时,交通灯又立即回到“主干道绿灯,支道红灯”状态。
若主干道始终无车而支干道始终有车时,则保持“主干道绿灯,支道红灯”。
但此时同样:
一旦支道无车辆时,交通灯又立即回到“主干道绿灯,支道红灯”。
此外,主干道和支道每次通行时间为30s,而在两个状态交换过程出现的“主黄、支红”和“主红、支黄”状态,持续时间都为3s。
根据控制要求,可把交通灯控制系统分解为处理器(包含定时器及译码器)和控制器两大部分。
三﹑硬件电路设计
3.1原理图设计
⑴、交通灯部分电路
⑵、555多谐振荡器 产生1Hz时钟
石英晶体振荡器具有体积小、重量轻、可靠性高、频率稳定度高等优点,被应用于家用电器和通信设备中。
因其具有极高的频率稳定性,故主要用在要求频率十分稳定的振荡电路中作谐振元件。
用石英晶体振荡器作为脉冲产生器,能够使数字时钟达到很高的精度。
同时成本也相对较高。
这里是采用的是有555芯片组成的多谐振荡器来作为频率脉冲产生器,其输出的脉冲频率为1Hz。
555芯片组成的多谐振荡器要输出符合要求的频率脉冲,其对电阻和电容的精度要求较高。
不太容易输出严格符合要求的频率脉冲。
由公式得:
T≈0.7(R2 + 2R1)C2
f = 1/ T≈1.44/(R2 + 2R1)C2 计算得:
C2 = 1000uF;R2 = 440Ω; R1 = 500Ω
⑶、数码显示部分电路
⑷、ZLG7290 I2C接口键盘及LED驱动器
1.I2C串行接口提供键盘中断信号方便与处理器接口 ;
2.可驱动8位共阴数码管或64只独立LED和64个按键;
3 .控扫描位数可控任一数码管闪烁;
4 .提供数据译码和循环、移位、段寻址等控制;
5 .8个功能键,可检测任一键的连击次数;
6.无需外接元件即直接驱LED可扩展驱动电流和驱动电压 ;
7 .提供工业级器件;
3.2PCB图设计
⑴交通灯PCB图
⑵数码管PCB图
3.3控制器设计
控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。
此外,当检测到特殊情况(HOLD=‘1’)发生时,无条件点亮红灯的二极管。
本控制器可以有两种设计方法,一种是利用时钟烟的下降沿读取前级计数器的计数值,然后作出反应;另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。
这两种方法各有所长,必须根据所用器件的特性进行选择:
比如有些FPGA有丰富的寄存器资源,而且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。
⑴、分位译码器设计--1
因为控制器输出的到计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如25分为2和5,7分为0和7)。
与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。
控制器中,引入了寄存器。
为了让读者开拓眼界,分位电路就用组合逻辑电路实现。
⑵、下图为交通灯控制器的顶层文件连接图
四、程序设计
4.1主程序设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYJTDKZIS
PORT(CLK,SM,SB:
INBIT;
MR,MY,MG,BR,BY,BG:
OUTBIT);
ENDJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
SIGNALSTATE:
STATE_TYPE;
BEGIN
CNT:
PROCESS(CLK)--定时器cnt进程
VARIABLES:
INTEGERRANGE0TO29;--变量S为秒定时器
VARIABLECLR,EN:
BIT;--clr低电平清零端,en高电平计数使能端
BEGIN
IF(CLK'EVENTANDCLK='1')THEN--若clk上升沿到
IFCLR='0'THENS:
=0;--同步清零
ELSIFEN='0'THENS:
=S;--由en=’0’停止计数
ELSES:
=S+1;
ENDIF;
CASESTATEIS
WHENA=>MR<='0';MY<='0';MG<='1';--A状态:
主干道绿灯亮
BR<='1';BY<='0';BG<='0';--A状态:
支道红灯亮
IF(SBANDSM)='1'THEN--若两个道都有车
IFS=29THEN--若又采到“29s标志位”信号
STATE<=B;CLR:
='0';EN:
='0';--则为B状态、且清零、停止计数
ELSE--否则
STATE<=A;CLR:
='1';EN:
='1';--继续A状态计数
ENDIF;
ELSIF(SBAND(NOTSM))='1'THEN--若只有支道有车
STATE<=B;CLR:
='0';EN:
='0';--则为B状态、且清零、停止计数
ELSE--否则
STATE<=A;CLR:
='1';EN:
='1';--继续A状态计数
ENDIF;
WHENB=>MR<='0';MY<='1';MG<='0';--B状态:
主黄
BR<='1';BY<='0';BG<='0';--B状态:
支红
IFS=3THEN--若采到3s标志位信号
STATE<=C;CLR:
='0';EN:
='0';--则为C状态、且清零、停止计数
ELSE--否则
STATE<=B;CLR:
='1';EN:
='1';--继续B状态计数
ENDIF;
WHENC=>MR<='1';MY<='0';MG<='0';--C状态:
主红
BR<='0';BY<='0';BG<='1';--C状态:
支绿
IF(SMANDSB)='1'THEN--若两个道都有车
IFS=29THEN--若有采到“29s标志位”信号
STATE<=D;CLR:
='0';EN:
='0';--则为D状态、且清零、停止计数
ELSE--否则
STATE<=C;CLR:
='1';EN:
='1';--继续C状态计数
ENDIF;
ELSIFSB='0'THEN--若支道无车
STATE<=D;CLR:
='0';EN:
='0';--则为D状态、且清零、停止计数
ELSE--否则
STATE<=C;CLR:
='1';EN:
='1';--继续C状态计数
ENDIF;
WHEND=>MR<='1';MY<='0';MG<='0';--D状态:
主红
BR<='0';BY<='1';BG<='0';--D状态:
支黄
IFS=3THEN--若又采到“3s标志位”信号
STATE<=A;CLR:
='0';EN:
='0';--则为A状态、且清零计数、停止计数
ELSE--否则
STATE<=D;CLR:
='1';EN:
='1';--继续D状态计数
ENDIF;
ENDCASE;
ENDIF;
ENDPROCESSCNT;
ENDART;
五、实验结果
5.1程序仿真图
六﹑心得体会
短短两个星期的EDA课程设计很块就结束了,虽然在之前的学习过程中还存在着没有弄懂的问题,但是通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。
EDA设计我感觉程序调试最重要,试验软件、硬件熟悉其次。
我在编完各模块程序之后,编译查错最初有十几个错误,有输入错误、语法错误。
一遍一遍的变异查错,直到没有错误。
必须注意工程名和实体名一致,不然一般会出错。
在没有错误之后可以进行波型仿真。
若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出的输入错误。
都通过可以进行管脚配对,把程序烧入芯片,在实物机上看结果,从显示中得出还需改正的地方,再去改程序。
必须注意没改一次都要编译,重新输入。
在设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。
在今后的工作和学习中,我们不能仅仅把目光停留在课本上,要多理论联系实际。
有的时候,理论上是正确的东西放到现实中去,可能由于种种因素的制约,并不能达到实际的效果,还需要我们进行相应的修改才能完成要求。
这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。
七、附录
1、顶层设计代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ENTITY JiaoTongDeng is
port(clr,clk,i,j,k:
in std_logic;
rm,ym,gm,rf,yf,gf:
out std_logic;
recount:
out std_logic;
NEXT_S:
out std_logic);
end entity JiaoTongDeng;
architecture JTD of JiaoTongDeng is
component fenpingqi
port(CLR,CLK:
in std_logic;
q:
buffer std_logic);
end component;
component kongzhi
port(clk,i,j,k:
in std_logic;
rm,ym,gm,rf,yf,gf:
out std_logic);
end component;
component count_down
port(clk,reset, ena_1Hz, recount:
in std_logic;
load:
in std_logic_vector(7 downto 0);
seg7:
out std_logic_vector(15 downto 0);
next_state:
out std_logic);
end component;
signal Q, signal recount_1,signal next_state_1:
std_logic;
begin
u1:
fenpingqi port map(CLR=>clr,CLK=>clk,q=>Q);
u2:
kongzhi port
map(i=>i,j=>j,k=>k,clk=>Q,rm=>rm,ym=>ym,gm=>gm1,rf=>rf,
yf=>yf,gf=>gf);
u3:
count_down
port map(RE,CLK,ena_1Hz_1,recount_1,load,S,next_state_1);
NEXT_S<=next_state_1;
end architecture JTD;
2、交通灯控制器代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity kongzhi is
port (clk,i,j,k:
in std_logic;
rm,ym,gm,rf,yf,gf:
out std_logic);
end kongzhi;
architecture arc of
kongzhi
is
type state_type is (a,b,c,d);
signal state:
state_type;
signal x:
std_logic_vector(2 downto 0);
Begin
x<=i&j&k;
cnt:
process (clk)
variable s:
integer range 0 to 49;
variable g:
integer range 0 to 49;
variable nclr,en:
bit;
Begin
if x<="001"then g:
=29;
elsif x<="010"then g:
=39;
elsif x<="100"then g:
=49;
else g:
=0;
end if;
if (clk'event and clk='1') then
if nclr='0' then s:
=0;
elsif en='0' then s:
=s;
else s:
=s+1;
end if;
case state is
when a=>rm<='0';ym<='0';gm<='1';
rf<='1';yf<='0';gf<='0';
if s=g then
state <=b;nclr:
='0';en:
='0';
Else
state<=a;nclr:
='1';en:
='1';
end if;
when b=>rm<='0';ym<='1';gm<='0';
rf<='1';yf<='0';gf<='0';
if s=3 then
state <=c;nclr:
='0';en:
='0';
Else
state<=b;nclr:
='1';en:
='1';
end if;
when c=>rm<='1';ym<='0';gm<='0';
rf<='0';yf<='0';gf<='1';
if s=g then
state <=d;nclr:
='0';en:
='0';
Else
state<=c;nclr:
='1';en:
='1';
end if;
when d=>rm<='1';ym<='0';gm<='0';
rf<='0';yf<='1';gf<='0';
if s=3 then
state <=a;nclr:
='0';en:
='0';
Else
state<=d;nclr:
='1';en:
='1';
end if;
end case;
end if;
end process cnt;
end arc;
3、分位译码电路设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFenweiIS
PORT
(Numin:
INintegerRANGE0TO45;
NumA,NumB:
OUTIntegerRANGE0to9
);
END;
ARCHITECTUREbehaviorOFFenweiIS
BEGIN
process(Numin)
BEGIN
IFNumin>=40THEN
NumA<=4;
NumB<=Numin-40;
ELSIFNumin>=30THEN
NumA<=3;
NumB<=Numin-30;
ELSIFNumin>=20THEN
NumA<=2;
NumB<=Numin-20;
ELSIFNumin>=10THEN
NumA<=1;
NumB<=Numin-10;
ELSE
NumA<=0;
NumB<=Numin;
ENDIF;
ENDPROCESS;
END;
八﹑参考文献
[1]潘松,黄继业.2006.EDA技术使用教程.北京:
科学出版社.
[2]黄任;2005;VHDL入门.解惑.经典实例.经验总结.北京:
北京航空航天大学出版社.
[3]徐志军,徐光辉.2002.CPLD/FPGA的开发与应用.北京:
电子工业出版社.
[4]褚振勇.FPGA设计与应用.西安:
西安电子科技大学出版社.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA课程设计 交通灯控制器 EDA 课程设计 交通灯 控制器