交通灯控制程序.docx
《交通灯控制程序.docx》由会员分享,可在线阅读,更多相关《交通灯控制程序.docx(21页珍藏版)》请在冰豆网上搜索。
交通灯控制程序
概要设计说明书
1引言
1.1编写目的
创建一个可供日常交通灯使用的程序,目标读者为交通灯控制人员。
1.2背景
说明:
a.交通路口复杂交通信号灯的设计
b.任务提出者,开发者:
陈磊
用户:
交通指挥系统
设计环境:
使用VerilogHDL语言进行设计
使用Quartus2编程环境进行开发。
。
1.3定义
ORDER选择信号
ROAD亮灯控制信号
EN55秒延时使能信号
LIN55秒延时终止信号
EN2525秒延时使能信号
LIN2525秒延时终止信号
RST系统复位信号
CLK系统时钟信号
1.4参考资料
VerilogHDL数字系统设计与应用
2总体设计
2.1需求规定
输入项目:
CLK系统时钟信号
RST系统复位信号
输出项目:
ROAD亮灯控制信号,ROAD=00,红灯亮;ROAD=01,黄灯亮;ROAD=10,绿灯亮;ROAD=11,黄灯亮。
处理要求:
根据ORDER的不同值,使相应的灯发亮。
2.2运行环境
运行环境:
。
QuartusII9.0
2.3基本设计概念和处理流程
2.4结构
ORDER选择某一灯的选择变量
ROAD控制某一灯亮的控制变量
2.5功能器求与程序的关系
本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:
程序1
程序2
功能需求1
√
功能需求2
√
√
功能需求3
√
功能需求4
√
√
2.6人工处理过程
人工输入ORDER的值,根据ORDER的不同值,相应的灯变亮
2.7尚未问决的问题
创建一个稳定的时钟源
3接口设计
3.1用户接口
light(red,amber,green,0,order)
ORDER为控制变量,由它决定让哪一盏灯发亮。
ROAD=100,则红灯亮;
ROAD=010,则绿灯亮;
ROAD=001,则黄灯亮;
3.2外部接口
CLK外部时钟源信号
RST计时程序使能信号
ROAD控制哪一盏灯发亮的信号
3.3内部接口
根据ORDER的不同取值,在下面这段程序中,
case(order)
0:
begin
road='b100;
en25<=1;en5<=0;
if(lin25==1)order<=1;
end
1:
begin
road='b010;
en25<=0;en5<=1;
if(lin5==1)order<=2;
end
2:
begin
road='b001;
en25<=1;en5<=0;
if(lin25==1)order<=3;
end
3:
begin
road='b010;
en25<=0;en5<=1;
if(lin5==1)order<=0;
end
endcase
4运行设计
4.1运行模块组合
ORDER=0时,ROAD=100,调用模块TIMER25,红灯亮
ORDER=1时,ROAD=010,调用模块TIMER5,黄灯亮
ORDER=2时,ROAD=001,调用模块TIMER25,绿灯亮
ORDER=3时,ROAD=010,调用模块TIMER5,黄灯亮
4.2运行控制
ORDER=0时,ROAD=100,调用模块TIMER25,红灯亮
ORDER=1时,ROAD=010,调用模块TIMER5,黄灯亮
ORDER=2时,ROAD=001,调用模块TIMER25,绿灯亮
ORDER=3时,ROAD=010,调用模块TIMER5,黄灯亮
4.3运行时间
运行模块将始终占用CPU
5系统数据结构设计
5.1逻辑结构设计要点
ORDER选择变量用于选择让哪一盏灯亮
ROAD=100,则红灯亮;
ROAD=010,则绿灯亮;
ROAD=001,则黄灯亮;
5.2物理结构设计要点
ORDER2位寄存器变量每次存取要存取全部2位
ROAD3位寄存器变量,每次存取要存取全部3位
5.3数据结构与程序的关系
ORDER2位寄存器变量每次存取要存取全部2位
ROAD3位寄存器变量,每次存取要存取全部3位
6系统出错处理设计
6.1出错信息
1.系统开始运行时RST!
=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
6.2补救措施
故障1:
使RST初始时为0,过一段时间后再将RST置1。
故障2:
寻找一个工作稳定的时钟源作为系统的时钟源。
6.3系统维护设计
1.系统开始运行时RST!
=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
设计需求说明书
需求分析说明书的编写提示
2任务概述
2.1目标
该项目开发的意图是为了设计一个可供日常指挥交通使用的交通灯程序,应用目标是用来控制各种交通灯的运行,可以作用在各种类型的交通灯上。
该项目的代码主要是我根据书上已有的一部分资料,再加上自己在网上搜索得到的一些代码,将两者综合以后写出来的|
2.2用户的特点
该项目的应用对象—交通灯的主要特点如下:
1.任意时刻只能有一只灯(红、黄或绿灯)亮。
2.任意时刻必须有一只灯亮,不能三盏灯全是灭的。
3.任一只灯亮了一定时限后必须熄灭,不能一直亮着。
操作人员特点:
交通灯一般都是根据程序自动运行的,因此,无操作人员。
维护人员特点:
在机房维护交通灯控制程序的人员一般都是学习过编程控制原理的,因此,他们可以看懂程序如何控制交通灯运行的。
本课题预期使用频度:
此交通灯控制程序属于24小时全天候运行类型的。
2.3假定和约束
预期开发期限:
10周。
经费限制:
不需要经费。
3.2对性能的规定
3.2.1精度
根据变量ORDER的值,即可使相应的灯变亮,不会出现差错。
3.2.2时间特性要求
说明对于该项目的时间特性要求,如对:
a.响应时间:
根据设定的ORDER的值,立即跳转到相应状态。
b.更新处理时间:
必须等待TIMER5或TIMER25延时结束以后,才能进行更新
c.数据的转换和传送时间:
ORDER设定好以后,立即进行转换,无延迟。
d.解题时间:
立即转换,没有延迟。
3.2.3灵活性
a.操作方式上的变化:
没有影响
b.运行环境的变化:
没有影响
c.同其他系统的接口的变化:
没有影响
d.精度和有效时限的变化:
没有影响
e.计划的变化或改进:
没有影响
3.3输人输出要求
输入项:
ORDER:
2位寄存器型变量,取值范围从00到11。
CLK:
时钟源信号
RST:
延时程序使能信号
输出项:
ROAD:
3位寄存器型变量,取值为100、010或001
3.4数据管理能力要求
需要管理的文卷个数为三个,一个是交通灯控制程序,一个是25秒程序,另一个是5秒延时程序,两个文卷的大小均在300k以内。
3.5故障处理要求
1.系统开始运行时RST!
=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
3.6其他专门要求
要有一个稳定的时钟源,这样才能保证某一灯亮后,等待5秒或25秒以后,按照程序的设定,使下一盏灯变亮。
4运行环境规定
4.1设备
a.处理器型号为8086,内存容量100MB
b.外存容量100MB、联机方式、存储格式为二进制文件、设备的型号为ACEX1K;
c.输入及输出设备的型号为ACEX1K,联机方式;
d.数据通信设备的型号为ACEX1K,数量1只;
e.无功能键;
4.2支持软件
支持软件:
QuartusII9.0
4.3接口
串口通信协议。
4.4控制
根据ORDER的值不同,使不同的灯发亮,所以控制信号即为ORDER。
ORDER的值由计算机自动进行变换。
详细设计说明书
详细设计说明书
2所设计系统的结构
3模块1(标识符)设计说明
3.1模块描述
根据ORDER的不同值选择让不同的灯发亮,如果ORDER=00,则红灯亮;如果ORDER=01,则黄灯亮;如果ORDER=10,则绿灯亮;如果ORDER=11,则黄灯亮。
程序常驻内存,不可重入,是顺序处理。
3.2功能
该系统功能如下:
1.系统启动,各项复位
2.红灯亮,延时25秒
3.黄灯亮,延时5秒
4.绿灯亮,延时25秒
5.黄灯亮,延时5秒
6.返回2继续运行
3.3性能
程序设计好以后,在运行期间,未发生出错的情况。
3.4输人项
CLK系统时钟信号
RST系统复位信号
3.5输出项
ROAD亮灯控制信号,ROAD=00,红灯亮;ROAD=01,黄灯亮;ROAD=10,绿灯亮;ROAD=11,黄灯亮。
3.6算法
本程序使用一个CASE(ORDER)多重选择结构,根据ORDER的不同值,ROAD被赋给不同的值,具体设置如下所示:
ORDER=00红灯亮
ORDER=01黄灯亮
ORDER=10绿灯亮
ORDER=11黄灯亮
3.7流程逻辑
3.8接口
3.9存储分配
CONTROLLER模块:
60%的存储空间
TIMER5模块:
20%的存储空间
TIMER25模块:
20%的存储空间
3.10注释设计
ORDER选择信号
ROAD亮灯控制信号
EN55秒延时使能信号
LIN55秒延时终止信号
EN2525秒延时使能信号
LIN2525秒延时终止信号
RST系统复位信号
CLK系统时钟信号
3.11限制条件
必须要有一个稳定的时钟源,否则可能导致程序运行不正常。
3.12测试计划
在QuartusII9.0中运行该程序,因为程序中ORDER的值是按00,01,10,11的顺序赋值的,而且是循环赋值(即每次都按这个顺序赋一遍值),所以观察是否是按红灯,黄灯,绿灯,黄灯的顺序亮灯,若是,则程序运行正常,否则就不正常。
3.13尚未解决的问题
必须配备一个稳定的时钟源。
4模块2(标识符)设计说明
TIMER5模块:
用来完成延时5秒的功能。
TIMER25模块:
用来完成延时25秒的功能。
CONTROLLER模块:
用来控制交通灯的运行。
项目设计总结报告(GB8567——88)
2实际开发结果
2.1产品
该项目中共有3个程序:
TIMER5延时5秒程序
TIMER25延时25秒程序
CONTROLLER交通灯控制程序
各程序之间的关系如下图所示:
2.2主要功能和性能
该系统功能如下:
1.系统启动,各项复位
2.红灯亮,延时25秒
3.黄灯亮,延时5秒
4.绿灯亮,延时25秒
5.黄灯亮,延时5秒
6.返回2继续运行
该系统基本达到了原先的开发目的。
2.3基本流程
基本关系如下图:
流程图如下:
2.4进度
进度基本与预期一致,开发期间曾经遇到一些困难,我又上网搜了一些资料,最后终于赶上了进度。
2.5费用
工时:
48个学时
计算机使用时间:
32个学时
最终费用没有超过预期。
3开发工作评价
3.1对产品质量的评价
错误发生率:
使用中未曾发生出过出错现象,这也可能与使用时间过短有关,错误发生率为零。
3.3对技术方法的评价
本例中使用的是结构描述模块,这比使用行为描述模块要好得多。
我们只要写好模块的定义,使用时只需写出这个模块的名字,再配上需要的参数即可。
如果使用行为描述模块,我们使用一次就得把整个模块写一遍,再使用一次就得再把整个模块写一遍,这比结构描述模块的使用要浪费很多的时间和精力。
3.4出错原因的分析
1.系统开始运行时RST!
=0,即系统没有复位,即开始运行,此时会导致出错。
2.系统时钟工作不正常,各个时钟上升沿的间隔不相等,在此情况下延时程序会工作不正常,使延时时间延长或缩短。
4经验与教训
要先做系统整体上的规划,等概要设计、详细设计做完了以后再开始编程,此时程序的框架已经构建好了,我们只需要把该框架翻译成VerilogHDL代码即可。
不要一上来就开始编程,此时我们是想到哪里就写到哪里,大脑中没有一个系统的规划,根本不可能写出一段合格的代码来。
.