eda技术课程设计。
设计题目简易的交通灯系统控制设计。
班级测控08-1
学号08034010105
姓名林玉玲。
指导老师张静。
设计时间:__2010.12.13——2010.12.17___
摘要。当前,大量的信号灯电路正向着数字化、小功率、多样化、方便人、车、路三者关系的协调, 多值化方向发展随着社会经济的发展,城市交通问题越来越引起人们的关注。随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素,因此,有许多设计工作者为改善城市交通环境设计了许多方案,而大多数都为交通指挥灯,本电路也正是基于前人设计的基础上进行改进的。
全部有数字电路组成,比较以前的方案更为精确。
本文主要通过用vhdl语言编程实现简易的交通灯控制系统设计,通过程序的内循环来决定交通灯的红黄绿灯亮起的时间和顺序和整个交通灯的循环,初始状态为主干道的绿灯亮,支干道的红灯亮。并通过3个使能端来实现突发情况的控制。
设计时采用分模块进行设计,模块分别有输入模块,计时模块,状态机模块,分频模块和显示模块。在进行各个模块的设计时,用vhdl语言分别设计,最后用进程中的敏感信号将各个模块联系起来,以达到实现系统整体功能的目的。在整个系统设计中,最关键的是状态机模块。
由于实验室提供的硬件系统中所用的芯片为cpld(复杂可编程逻辑器件)的max700s系列的epm7128slc84-15,此系列芯片中所包含的资源很有限,所以用组合逻辑电路来实现是不太现实的。基于此,设计采用了有限状态机的设计方法。这个设计的系统处理功能可以分为6个状态,各个状态分别为:
st0,st1,st2,st3,st4,st5。通过对每一个状态的设计,既能达到既节省资源,又能实现功能的目的。
关键词:vhdl语言、cpld、有限状态机。
目录。摘要。
1 概述。2 课程设计任务及要求。
2.1 设计任务。
2.2 设计要求
3 理论设计。
3.1 方案论证。
3.2 系统设计。
3.2.1 结构框图。
3.2.2 系统原理及工作原理。
3.3 单元模块设计
3.3.1 单元模块工作原理。
3.3.2 单元模块的关键**。
4 系统设计。
4.1 软件设计。
4.2 编程过程。
4.3 编程结果。
5 **调试。
5.1 **调试过程。
5.2 故障分析。
6 结论。7 使用仪器设备清单。
8 收获、体会和建议。
9 参考文献。
1 概述。随着社会经济的发展,城市交通问题越来越受到人们的关注。现代城市交通控制系统包括城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统。
如何采用合适的控制方法,缓解主干道与匝道、城区同周边地区的交通拥堵状况,已成为交通运输管理和城市规划部门亟待解决的主要问题。其中,交通信号灯控制系统是协调人、车、路三者关系的关键,已成为交通控制系统的关键模块之一。
2 课程设计任务及要求。
2.1 设计任务。
1) 南北干道绿灯和东西干道的绿灯不能同时亮;如果同时亮,则应自动立即关闭信号灯系统,并立即发出报警信号(如led灯)。
2) 系统的初始状态是两个干道的红灯全亮。
3) 系统工作后,首先东西干道红灯亮并维持20s,数码管的显示起始时间为19s,然后依次递减至0。前17s南北干道绿灯亮,后3s黄灯亮,期间数码管不显示。
4) 然后,南北干道红灯亮并维持25s,数码管的显示起始时间为24s,然后依次递减至0。前20s东西干道绿灯亮,后5s黄灯亮,期间数码管不显示。
5) 允许在紧急状态下,比如十字路口恶**通事故时,两方向均为红灯,车辆禁止通行。当紧急状态解除后,重新计时并指示时间。
6) 系统的南北干道和东西干道亮红灯的时间可由用户根据路况自设。比如在白天某一时段,南北干道的路段较繁忙,对应的通行时间较长。
7) 如系统出现故障,不能正常显示,则黄灯全部闪烁以提醒车辆注意。
附加功能:8) 南北干道和东西干道增加左转、右转的方向指示灯。
2.2设计要求。
在所提供的硬件设备中实现交通灯的基本功能。设计过程中,写出个模块的设计方法和程序片段,画出系统的方框图。
3 理论设计。
3.1 方案论证。
cpld是一种可编程逻辑器件,通过用vhdl硬件描述语言编程来实现电路功能是可行的。交通灯的设计涉及到状态的转换,因此可以先列出设计时所需的状态,并画出状态转移图,就可明确系统的工作方式。然后用vhdl语言编程设计有限状态机,状态机设计好后,就开始着手设计其他模块的功能。
将设计好的各模块用进程语句联系起来,就可实现系统整体功能。因为进程语句中的信号可以看做是各个模块间的通信线,所以,这样的设计方案是可以实现的。而且,这样设计思路清晰,条理清楚。
3.2 系统设计。
3.2.1 结构框图。
3.2.2 系统原理与工作原理。
系统原理:用epm7128slc84-15芯片做主要器件,通过设计有限状态机和增加外围控制输入与输出实现系统的整体功能。
工作原理:系统时钟工作而还未有任何输入动作时,有限状态机处于等待状态。当有输入动作时,系统开始工作,即有限状态机开始发生跳变。
首先,南北干道的绿灯亮起,东西干道的红灯亮起,time_data信号开始自加,并同时数码管开始20进制的倒计时显示,当时钟源达到第16个上升沿的时候,南北干道的黄灯亮起,东西干道的红灯依然亮,time_data信号继续自加,当达到第19个上升沿时,南北干道红灯亮,东西干道绿灯亮,同时数码管开始25进制的倒计时显示,接着time_data信号继续随着时钟源自加,当达到第39个上升沿时,南北干道的红灯依然亮起,东西干道的黄灯亮起,time_data信号继续随着时钟源自加,当达到第44个时钟源时,南北干道亮起左转灯,东西干道亮起红灯,并开始10进制的倒计时显示,当达到第54个上升沿时,南北干道亮起红灯,东西干道亮起左转信号并开始10进制的倒计时显示,然后time_data信号继续自加,当达到第65个上升沿时,状态回到初始状态,time_data信号归0。这样就完成所有状态的转换和循环。以此来实现简易的交通灯设计。
还有3个使能端来控制,当res置高电平时(即系统清0),南北东西干道都亮红灯,time_data信号归0,状态回到st0,当guz置高电平时(即系统出现故障),time_data信号归0,状态回到st0,南北东西干道都亮黄灯,并且黄灯闪烁,这里只需将时钟源赋值给黄灯即可完成,当jxgz置高电平时(即出现机械故障时),time_data信号归0,状态回到st0,南北东西干道都亮绿灯,并且同时亮起警告灯。
3.3 单元模块设计。
3.3.1 单元模块的工作原理。
(1)系统输入模块:3个使能端来控制,当res置高电平时(即系统清0),南北东西干道都亮红灯,当guz置高电平时(即系统出现故障),南北东西干道都亮黄灯,并且黄灯闪烁,这里只需将时钟源赋值给黄灯即可完成,当jxgz置高电平时(即出现机械故障时),南北东西干道都亮绿灯,并且同时亮起警告灯。
因为这是交通灯程序,所以需要精确显示时间,所以这里加入了分频信号的输入,即预先设定的250hz。
(2)计时模块:即任意进制的计数器,不过是通过状态机的转换来判断进制。
(3)显示模块:也是普通的显示模块,不过值得注意的是,这里我在当时钟源上升到第44个上升沿的时候,加入了左转信号,即数码管显示<0000111>。
(4)分频模块:也是普通的分频模块,不过这里是250hz的分频信号,所以使用时要注意选择正确的时钟源。
(5)有限状态机:一开始状态机是处于初始状态的(即南北干道绿灯,东西红灯)。状态转换如上面所说,通过time_data和时钟源的自加来判断进入的状态。
状态转换图如下:
(6)输出模块:st0状态输出南北干道绿灯,东西干道红灯,并且数码管显示20进制的倒计时,st1状态输出南北干道黄灯,东西干道红灯,并且数码管显示5秒的倒计时,st2状态输出南北干道红灯,东西干道绿灯,并且数码管显示25进制的倒计时,st3状态输出南北干道红灯,东西干道黄灯,并且数码管显示5秒的倒计时,st4状态输出南北干道左转灯,东西干道红灯,并且数码管显示10进制的倒计时,st5状态输出南北干道红灯,东西干道左转灯,并且数码管显示10进制的倒计时。当res置高电平时(即系统清0),南北东西干道都亮红灯,当guz置高电平时(即系统出现故障),南北东西干道都亮黄灯,并且黄灯闪烁,这里只需将时钟源赋值给黄灯即可完成,当jxgz置高电平时(即出现机械故障时),南北东西干道都亮绿灯,并且同时亮起警告灯。
(1)系统输入模块**。
port (clk1,clk2,reset,guz,jxgz:in std_logic;
sel:out std_logic_vector(2 downto 0);
sg:out std_logic_vector(6 downto 0);
g1,r1,g2,r2,y1,y2,led:out std_logic );
end jtd11;
计时模块和显示模块就不独立写出来了。
(5)有限状态机**:
com1:process (time_data)
begincase time_data is
when 0 to 16=> next_state<=st0;
when 17 to 19 =>next_state<=st1;
when 20 to 39 =>next_state<=st2
when 40 to 44 =>next_state<=st3;
when 45 to 54 =>next_state<=st4;
when 55 to 65 =>next_state<=st5;
end case;
if time_data<=16 then d2<="0001";d1<="1001";
elsif time_data<=19 then d2<="0000";d1<="0000";
elsif time_data<=39 then d2<="0010";d1<="0100";
elsif time_data<=44 then d2<="0000";d1<="0000";
elsif time_data<=54 then d2<="0000";d1<="1001";
elsif time_data<=65 then d2<="0001";d1<="0000";
end if;
end process;
(6)输出模块**:
com2:process (current_state)
EDA课程设计报告
eda 课程设计报告。时间 2014年12月21日 学院自动化。专业班级自1204 姓名。学号。指导教师王丽君老师 成绩。2014年 12月。目录。卷烟机烟支漏气跟踪自检装置设计 1 一 设计背景及设计目的 3 1.1设计背景 3 1.2设计目的 3 二 设计原理 3 三 设计步骤 5 3.1模块分...
EDA课程设计报告
设计一个出租车自动计费器,计费包括起步价 行车里程计费 等待时间计费三部分,用四位数码管显示金额,最大值为999.9元,最小计价单元为 0.1元,行程 3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元。用两位数码管显示总里程,最大为99公里。...
EDA课程设计报告
课程名称eda技术。设计项目多功能数字钟。系 部 班级姓名学号 指导老师日期2010 06 09 电子系电子仪器仪表与维修仪表z082王叁少安老师。1 数字钟的设计要求。多功能数字钟具有计时功能和时钟的校时基本功能。计时功能采用24小时计时,显示时,分,秒。采用时校时,对于分钟和秒模块采用60进制实...