交通灯设计.docx
《交通灯设计.docx》由会员分享,可在线阅读,更多相关《交通灯设计.docx(12页珍藏版)》请在冰点文库上搜索。
交通灯设计
河南理工大学万方科技学院
EDA课程设计报告
题目:
自助式交通灯
院系:
信息科学与工程系
班级:
电子信息工程1202
学号:
121608060207
姓名:
白会鹏
第1章概述………………………………………………
第2章整体设计说明……………………………………
2.1设计要求………………………………………
2.2整体框图………………………………………
2.3设计说明………………………………………
第3章模块介绍…………………………………
3.1分频器………………………………………
3.2计数器模块………………………………………
3.3顶层模块………………………………………
第4章引脚锁定及程序下载调试………………………
设计心得体会…………………………………………
第一章概述
EDA(ElectronicDesignAutomation)是立足于计算机工作平台而开发出来的一整套先进的电子设计自动化工具。
EDA工具是融合了应用电子技术、计算机技术和智能化技术的最新成果,主要能辅助进行三方面的设计工作:
集成电路(IC)设计、电子电路设计以及印刷电路板(PCB)设计。
EDA(ElectronicDesignAutomation)技术作为现代电子设计技术的核心,已经成为电子系统设计的重要手段。
在硬件实现方面,EDA技术融合了大规模集成电路制造技术、IC版图设计技术、ASIC测试和封装技术、FPGA/CPLD编程下载技术等;在工程实现方面融合了计算机辅助技术(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)、计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;现在电学方面,如电路基础理论、数字信号处理技术、数字系统建模、、优化设计技术等。
EDA技术融合多学科于一体,又渗透与各学科之中,打破了软件与硬件间的壁垒,是计算机的软件技术与硬件实现、设计效率和产品性能合二为一,代表了现在电子设计技术和应用技术的发展方向。
在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试等项功能,直至实现既定性能的电子线路功能。
基于FPGA(FieldProgrammableGateArray)的设计方法具有设计灵活、易于修改、设计周期短的优点。
本次课程设计控制电路的设计采用基于VHDL语言和FPGA的方法来实现所要求的功能。
交通灯的逻辑结构主要由译码器、分频器、十进制计数器,同时有一个启动信号和一位复位信号,以便交通灯能够随意的调整。
在整个交通灯设计过程中,要得到一个精确的计时脉冲,以便记下交通灯红黄绿三灯亮的时间,且这些时间以十进制输出,进行转化,分离出来个位,与十位,分别用两个数码管显示出来,然后进行计数,便于与显示译码器连接。
根据规定交通灯的电路特点,用层次设计概念,利用VHDL语言描述,将设
计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试仿真下载,完成设计。
第2章整体设计说明
2.1设计要求
步行街道自助式交通灯控制器的设计,系统设计的要求:
(1)正常情况下保证主干道的畅通。
(2)当步行街上的行人要通过主干道时,通过设置的按钮来发出请求。
(3)当有人按下此按钮时,主干道变为黄灯,设置计数器计时时间为X秒。
(4)X秒过后,主干道变为红灯,计数器继续计时(计时时间为Y秒),在Y秒内若有人再次按按钮,计数器不重新计时。
(5)步行街道绿灯闪烁时间为Y1秒,(Y-Y1)秒后主干道变为绿灯,车辆通行。
且要保证车辆通行一定时间(Z)秒。
在此时间内,行人按按钮无效。
Z秒过后,若有人再按下按钮,又出现(3)中的状态。
(6)计数器的计时时间长短X、Y、Z可以任意设定。
2.2整体框图
功能描述:
设南北方向为主干道,设东西方向为步行街,绿灯时间为3秒
,当主干道为黄灯,步行街为绿灯;当主干道为红灯,步行街为绿灯;当主干道
为绿灯,步行街为红灯;当绿灯的时候,可以让人、车通过。
(后面的时间随意设定)
状态S1:
南北主干道为黄灯时,东西步行街道为绿灯,时间为X秒;(3S)
状态S2:
南北主干道为红灯时,东西步行街道为绿灯,时间为Y秒;(15S)
状态S3:
南北主干道为绿灯时,东西步行街道为红灯,时间为Z秒;(25S)
然后如此循环。
1具体电路分析如下表:
方向
南北方向
东西方向
灯
红灯亮
绿灯亮
黄灯亮
红灯亮
绿灯亮
黄灯亮
S1状态
0
0
1
0
1
0
S2状态
1
0
0
0
1
0
S3状态
0
1
0
1
0
0
状态机状态列表
2系统框图转化如下:
状态机状态转化图
2.3设计说明
。
该实验中,将设计任务分成5个子模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来形成顶层文件联试。
分频器:
用来产生1HZ计时脉冲。
由于时钟输入为10KHZ的脉冲,而系统时钟计时模块需要1KZ的脉冲。
计时模块:
用来设定路口计时器的初值,并为扫描显示译码模块提供倒计时时间。
10进制计数器:
用来分别对应秒的十位,各位进行计数。
时间扫描模块:
完成对相应数码管显示秒表相应位的控制。
显示译码器:
完成对显示的控制。
第3章模块介绍
3.1分频器
在交通灯倒计时方面,需要用到分频器,系统的时钟输入为10KHZ的脉冲,而系统时钟计时模块需要1HZ的脉冲。
分频模块主要为系统提供所需的时钟计时脉冲。
该模块将10KHZ的脉冲信号进行分频,产生1S的方波(占空比为50%),作为系统时钟计时信号。
计时模块用来设定路口计时器的初值,并为扫描显示译码模块提供倒计时时间。
该模块的程序如下:
//**********10分频**********//
modulefenpin(clock,clk,rst);outputclock;
inputclk,rst;
regclock;
reg[2:
0]num;
always@(posedgeclkornegedgerst)
begin
if(!
rst)//低电平有效
begin
num<=0;
clock<=0;
end
elseif(num[2])
begin
clock<=!
clock;
num<=0;
end
elsebegin
clock<=clock;
num<=num+1;
end
end
endmodule
3.2控制模块设计
控制模块根据外部输入信号,产生系统的状态机,控制其他部分协调工作。
当进入自动工作方式时,一共有3种状态,S1,S2,S3,并在该模块调用分频器模块。
该模块的程序如下:
moduletraffic_FSM(out,L_time1,L_time2,clock,clk,rst);
output[5:
0]out;//灯的输出状态:
out[2:
0]代表南北方向的红黄绿灯;//out[5:
3]代表东西方向的红黄绿灯;
outputclock;//分频后的时钟信号
output[3:
0]L_time1;//亮灯时间的个位
output[7:
4]L_time2;//亮灯时间的十位
inputclk,rst;
reg[2:
0]num;
reg[7:
0]L_time;//中间变量亮灯时间
wireclock;
reg[5:
0]out;//6个LED灯表示两个方向上的红绿蓝3灯
reg[3:
0]C_state;//当前状态
parameter[3:
0]S1=4'b0001,//用独热码表示状态变量;
S2=4'b0010,
S3=4'b0100,
S4=4'b1000;
fenpingh(clock,clk,rst);//分频模块调用
always@(posedgeclockornegedgerst)
begin
if(!
rst)
L_time<=8'd3;
elsebegin
L_time<=L_time-1;//倒计时记时;
case(C_state)//判断状态,并进行时间复位;
S1:
beginif(L_time==0)L_time<=8'd3;end
S2:
beginif(L_time==0)L_time<=8'd15;end
S3:
beginif(L_time==0)L_time<=8'd25;end
endcase
end
end
always@(posedgeclockornegedgerst)
begin
if(!
rst)
beginC_state<=S1;end
elsebegin
case(C_state)//判断状态转移,并输出结果;
S1:
begin
if(L_time==0)
begin
C_state<=S2;
out<=8'b00100010;
end
elsebegin
C_state<=S1;
out<=8'b00001010;//状态S1,主干道为黄,步行街为绿
end
end
S2:
begin
if(L_time==0)
begin
C_state<=S3;
out<=8'b00010100;
end
elsebegin
C_state<=S2;
out<=8'b00100010;//状态S2主干道为黄,步行街为绿
end
end
S3:
begin
if(L_time==0)
begin
C_state<=S1;
out<=8'b00001010;
end
elsebegin
C_state<=S3;
out<=8'b00010100;//状态S3,主干道为黄,步行街为绿
end
end
default:
out<=8'b00001010;
endcase
end
end
assignL_time1=L_time%10;
assignL_time2=L_time/10;
endmodule
整体的原理图:
第4章引脚锁定及程序下载调试
在次章中,在上面运行成功的基础上,进行引脚分配,然后将编译形成的位电流(.sof)直接下载到芯片中,用以验证设计的正确性。
选择模式5状态下,确保实验箱已接通电源,另一端设备与PC机的USB口相连。
程序效果图
实验心得体会
虽然实训仅仅进行了一个星期就匆匆的结束了,但在这一个星期中收获还是很多的。
实训的目的是要把学过的东西拿出来用这一个星期的实训中不仅用了而且对于quartus2软件的使用也更加的得心应手,这次实训提高了我们的动手能力、理论联系实际的能力、发现问题分析问题解决问题的能力。
实训只要你认真做了都是对自己能力一次很大的提高。
实训的第一天我们组四个人就开始对步行街交通灯的各部分源程序进行调试,由于刚开始对于quartus2软件用的不是很熟练,所以在第一天几乎上没有啥大的进展,一直都在改程序中的错误。
在不停的重复的编译、改错。
拿着资料书检查出错的地方,一边又一遍的校对分析其中的错误。
在检查错误的过程中发现其实学好英语也是很重要的。
同时也感叹要是这软件是中国人做的我们还用的着这么麻烦的看英语吗!
在试训中我们遇到了很多的问题。
为了解决这些问题我和他们三个都在的想办法通过各种渠道寻找解决问题的方法。
上网查资料、问同学、图书馆查资料、问老师、自己想办法,其实最有效的方法还是自己去想那样学到的东西才会更加的深刻记得时间也是最长的,他人的帮助当然是很好的,但只是暂时的要想真正的学到东西还是要靠自己去想办法。
不能一有问题就希望要他人帮忙,一定自己先好好想想实在解决不了的再去问老师找同学。
由于在一开始的时候对quartus2软件的不熟悉耽误了很多的时间,在接下来的几天里遇到了不少的问题。
刚开始的时候是源程序中的错误一直在那改,好不容易几个模块中的错误都一个个排除了,但当把他们放到一起时问题就又出现了。
于是又开始了检查修改,可是弄了好长时间也没有弄明白,最后找了一个在实验室的同学说是顶层文件有问题。
于是晚上又找了些关于顶层文件资料还有课本上的例子。
中间有些问题,我们四个讨论了很长时间也没有个结果,最后还是放弃了原来的计划。
又找了一个相对简单些的,由于前面对这些步骤已经有了很熟练的掌握,所以这次很快就完成了程序编译、仿真、下载到最后的调试可谓是一气呵成。
“纸上谈来终觉浅,绝知此事要躬行。
”在这短暂的一周实训中深深的感觉到了自己要学的东西实在是太多了,自己知道的是多么的有限,由于自身专业知识的欠缺导致了这次实训不是进行的很顺利,通过这次实训暴露了我们自身的诸多的不足之处,我们会引以为鉴,在以后的生活中更应该努力的学习。
最后,在这实训的一周中对于帮助过我们的同学表示深深的感谢。
还有在这次实训中对张老师的耐心指导和不懈的支持与鼓励,再次向张老师致意诚挚的谢意和崇高的敬意。