eda课程设计交通灯.docx
《eda课程设计交通灯.docx》由会员分享,可在线阅读,更多相关《eda课程设计交通灯.docx(12页珍藏版)》请在冰豆网上搜索。
eda课程设计交通灯
信息科学与技术学院
EDA课程设计报告
课题名称:
基于FPGA的十字路口交通灯控制器
学生姓名:
学号:
专业年级:
班级:
指导教师:
完成时间:
题目:
十字路口交通灯控制器
任务与要求:
1)红、黄、绿灯分别用1bit控制;
2)每一个状态分配一个时间显示(两位十进制数,倒计时);
3)符合实际交通规律;
摘要
本系统采用EDA实验箱设计交通灯控制器,模拟实现了红、绿、黄灯指挥交通的功能。
它直接采用FPGA芯片开发,用VHDL语言编程和PLUSⅡ设计。
交通灯控制器设计,系统的阐述了用FPGA芯片实现数字电路的设计过程,展示了FPGA芯片的强大功能和非凡特性。
本交通灯控制器适用东西和南北方向的车流量大致相同的路口,红灯30S,绿灯25S,黄灯5S,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。
另有一个紧急状态,当特殊情况发生时,两个方向都禁止通行,指示红灯,紧急状态解除后,重新计时并指示时间。
关键词:
交通灯;计数器;数码管;PLUSⅡ;FPGA
目录
1电路功能描述·····································································3
2交通灯控制器实现·····························································3
3软件程序设计·····································································4
4软件仿真··············································································7
5设计过程中的问题及解决办法·······································9
6实验总结和心得体会························································10
7参考文献·············································································10
1电路功能描述
本交通灯控制器适用东西和南北方向的车流量大致相同的路口,红灯30S,绿灯25S,黄灯5S,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。
另有一个紧急状态,当特殊情况发生时,两个方向都禁止通行,指示红灯,紧急状态解除后,重新计时并指示时间。
2交通灯控制器的实现
交通灯控制器是状态机的一个典型应用,除了计数器的状态机外,还用东西、南北方向的不同状态组合(红绿、红黄、绿红、黄红四个状态),如图2.2,两交通灯的运行状态。
但我们可以简单地将其看成两个(东西、南北)减一的计数器,通过监测两个方向的计数值,可以检测红黄绿灯组合的跳变。
图2.3为交通灯的工作流程图。
以下是交通灯的四种可能亮灯状态:
图2.2两交通灯的运行状态
紧急状况
紧急解除
循环
图2.3交通灯的工作流程图
3软件程序设计
led(5)
led(4)
led(3)
led
(2)
led
(1)
led(0)
东西方向
南北方向
红灯(30S)
黄灯(5S)
绿灯(25S)
绿灯(25S)
黄灯
(5S)
红灯(30S)
CPLD输出信号与LED对应关系
------------------交通灯控制器程序----------------
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtrafficIS
PORT(clk:
INSTD_LOGIC;--时钟信号(1Hz)
urgency:
INSTD_LOGIC;--紧急状态控制端
led:
BUFFERSTD_LOGIC_VECTOR(5DOWNTO0);--红黄绿,绿黄红
East_West,South_North:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
END;--东西,南北倒计时数码管(高4位为十位,低4位为个位)
ARCHITECTURErtlOFtrafficIS
BEGIN
PROCESS(clk,urgency)
BEGIN
IFurgency='1'THEN--紧急状态
led<="100001";
East_West<="00000000";
South_North<="00000000";
ELSIF(clk'EVENTANDclk='1')THEN
IF(East_West>"00110000"orSouth_North>"00110000")THEN
East_West<="00101001";--计数错误时纠正到初始转态
South_North<="00100100";
led<="100100";--东西红灯30秒,南北绿灯25秒
ELSIF(East_West="00000101"ANDSouth_North="00000000")THEN
East_West<="00000100";
South_North<="00000100";
led<="100010";--东西红灯余5秒,南北黄灯5秒
ELSIF(East_West="00000000"ANDSouth_North="00000000"ANDled="100010")THEN
East_West<="00100100";
South_North<="00101001";
led<="001001";--东西绿灯25秒,南北红灯30秒
ELSIF(East_West="00000000"ANDSouth_North="00000101")THEN
East_West<="00000100";
South_North<="00000100";
led<="010001";--东西黄灯5秒,南北红灯余5秒
ELSIF(East_West="00000000"ANDSouth_North="00000000"ANDled="010001")THEN
East_West<="00101001";
South_North<="00100100";
led<="100100";--东西红灯30秒,南北绿灯25秒
ELSIF(East_West(3DOWNTO0)=0ANDSouth_North(3DOWNTO0)=0)THEN
East_West<=East_West-7;--BCD码减法转换
South_North<=South_North-7;
ELSIF(East_West(3DOWNTO0)=0ANDSouth_North(3DOWNTO0)=0)THEN
East_West<=East_West-7;--BCD码减法转换
South_North<=South_North-1;
ELSIF(South_North(3DOWNTO0)=0ANDEast_West(3DOWNTO0)=0)THEN
South_North<=South_North-7;--BCD码减法转换
East_West<=East_West-1;
ELSEEast_West<=East_West-1;--不满足上述特殊情况时减一
South_North<=South_North-1;
ENDIF;
ENDIF;
ENDPROCESS;
END;
时钟分频模块
分频模块的作用是为系统提供所需的计时脉冲。
FPGA器件FLEXEPF10K10LC84上时钟源频率为4MHZ,而系统的时钟计时模块需要1HZ的脉冲。
因此需要对4MHZ的时钟信号进行分频,产生1S的方波,作为系统的计时脉冲。
其电路符号如图4.1所示:
图4.1时钟分频模块的电路符号
在模块中,clk采用系统的4MHZ时钟脉冲,clk_1hz为分频器产生的1hz的输出脉冲。
其控制程序如下所示:
Process(clk)
Begin
ifclk'eventandclk='1'then
cnt1<=cnt1+1;
ifcnt1=2000000then
clk1<=notclk1
clk_1hz<=clk1;
cnt1<=0;
endif;
endif;
endprocess;
分频模块的仿真图如4.2所示:
图4.2时钟分频模块仿真图
从图中可以看出该模块完成了分频功能
4软件仿真
本实验仿真应用的是PLUSⅡ软件的内部仿真程序,在仿真过程中高电平置1,有效状态也为高电平1,若红绿黄灯置1时则证明其工作处于亮的状态。
在东西南北方向的数码管显示的数字是由BCD码转换的,00000000则显示是00,00011001显示为19,以此类推。
1)程序编译后的整体仿真图
图4.1波形图整体仿真
图示说明:
此图为该程序波形图整体仿真,通过Edit->EndTime来设定仿真结束时间为65.5S,将clk的时钟周期设置为1S,点击save保存后进行仿真,上图为总的输出波形。
其中已经将交通灯之间的转换显示出来了。
下面通过四副截图作转换的详细介绍。
2)复位键仿真检测图
图4.2复位键检测图
图示说明:
此图为复位键urgency的检测,当urgency置1时则为特殊状态,两个方向都禁止通行,指示红灯,图中LED显示的为100001,即就是东西南北的红灯亮。
数码管的控制端East_West,South_North均显示00000000,即就是数码管显示为0.
3)复位后转为普通状态仿真检测图
图4.3普通仿真图
图示说明:
此图为当紧急状况结束时,也就是urgency置0时转为普通状态的红绿灯显示,图中的LED显示为100100,也就是东西方向红灯,南北方向绿灯,并且能保持为25秒(可由上面的时间轴看出)
4)普通状态中红绿黄灯之间的转换
图4.4红黄转换
图示说明:
此图为东西南北的红绿灯转为红黄灯再转为绿红灯的三种状态之间的转换,可从图中的LED之间的100100和100010以及001001的跳变可知LED的转换,并且可从时间轴上看出时间的跳变。
5)普通状态中红绿黄灯之间的转换
图4.5红绿黄之间转换
图示说明:
此图为东西南北的绿红灯转变为黄红灯在转换为红绿灯的跳变,可从图中的LED之间的001001和010001以及100100的跳变可知LED的转换,并且可从时间轴上看出时间的跳变。
5设计过程中的问题及解决办法
(1)如何使东西南北方向的红绿、红黄、绿红、绿黄四种状态之间进行跳变?
解决方案:
将这四种状态简单的看成两个(东西、南北)减1计数的计数器,通过检测两个方向的计数值来判别红绿灯组合的跳变。
(2)如何准确的显示数码管的剩余时间?
解决方案:
为了能直接将剩余时间显示在数码管中,分别对信号以BCD码的规则进行处理,因此将这两个信号直接送往BCD码译码器电路就可以直接显示相关的数字了。
6实验总结和心得体会
本次实验我们受益良多,在写和更改程序的过程中,我们对VHDL语言有了更深一步的了解,并且在与其他同学探讨的过程中,加深了对十字路口交通灯的状态转换的了解,明白了绿红、黄红、红绿、红黄4个状态之间的循环往复。
更在实践过程中对plus这款软件有了更多的了解,渐渐的熟悉了操作,对今后的学习感觉上起了很大作用。
7参考文献
[1]顾斌.数字电路EDA设计.西安电子科技大学出版社2011.
[2]谭会生.EDA技术基础.湖南大学出版社2004
[3]姚福安.电子电路设计与实践.山东科学技术出版社2005.
[4]潘松.EDA技术实用教程科学出版社2010.