您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 基于FPGA交通灯设计
河南科技学院新科学院数字系统课程设计报告书课题名称基于FPGA的交通灯设计院系新科学院姓名学号夏文平、2013280218专业班级通信工程、通信132指导教师刘艳昌、雷进辉设计时间2014-2015学年第2学期12、13周2015年6月5日摘要.........................................................................................................1关键词.....................................................................................................1Ⅰ课程设计目的...................................................................................1Ⅱ设计任务及要求...............................................................................1Ⅲ系统设计总体方案............................................................................2Ⅳ各模块具体实现...............................................................................2㈠分频模块.....................................................................................2㈡倒计时模块.................................................................................3㈢转码模块.....................................................................................5㈣交通控制模块..............................................................................6Ⅴ系统仿真及硬件下载......................................................................10Ⅵ遇到的问题及分析..........................................................................12Ⅶ结论与心得.....................................................................................12参考文献...............................................................................................131摘要交通灯信号控制器通常要实现自动控制和手动控制其红绿灯的变化,基于FPGA设计的交通灯信号控制器电路简单、可靠性好。本设计可控制2个路口的红、黄、绿三盏灯.让其按特定的规律进行变化。利用QuartusⅡ对设计结果进行仿真,发现系统工作性能良好。据此设计而成的硬件电路,也实现了控制要求。关键词:交通灯自动控制手动控制Ⅰ课程设计目的。巩固加深所学电子技术课程的基本知识,提高综合运用所学知识的能力。同时培养学生选用参考书、查阅手册、图表和文献资料的能力,提高解决实际问题的能力。并且,在设计方案分析比较、设计计算、电路安装等缓解掌握使用电路的设计方法。然后提高学生的动手能力,掌握仪器设备的正确使用方法。最后了解与课题有关的电路以及元器件的工程技术规范,能按课程设计任务数的要求编写设计说明书,可以正确反映设计和实验成果,能正确绘制电路图等。Ⅱ设计任务及要求。设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次的通行时间都设为25秒。要求黄灯先亮5秒,才能变换运行车道并且黄灯亮时另一干道的红灯按1Hz的频率闪烁。要求通行时间及黄灯亮的时间均可在60秒内任意设定。2要求交通灯控制电路可以手动控制立即进入特殊运行状态,即两条道上红灯全亮,时钟停止计时。当特殊运行状态结束后,系统复原,继续正常运行。Ⅲ系统设计总体方案。由设计要求可得如下交通控制器的状态转换表:甲车道乙车道时间绿灯红灯6S黄灯红灯5S红灯绿灯11S红灯(闪烁)黄灯5SⅣ各模块具体实现。㈠分频模块。如图为分频模块。模块功能:3实现分频功能,输入50MHz的时钟信号,对上升沿进行计数,每50M个脉冲的上升沿输出一次高电平脉冲信号,从而实现分频。模块程序如下:moduleone_second_clk(reset,clk,cout);inputreset,clk;integercount;outputregcout;always@(posedgeclk)if(reset)begincount=0;cout=0;endelseif(count==50000000-1)begincount=0;cout=1;endelsebegincount=count+1;cout=0;endendmodulemoduletimer_NS(clk,reset,set,ld,en,state,q_NS,done_NS);inputclk,reset,set,ld,en;input[3:0]state;output[7:0]q_NS;outputdone_NS;reg[7:0]q_NS;parameterred_NS=8'd10,green_NS=8'd5,yellow_NS=8'h04;parameterst0=4'b0001,st1=4'b0010,st2=4'b0100,st3=4'b1000;assigndone_NS=~(|q_NS)&&en;always@(posedgeclk)if(reset)q_NS=green_NS;elseif(ld)case(state)st0:q_NS=yellow_NS;st1:q_NS=red_NS;st2:q_NS=8'h00;st3:q_NS=green_NS;default:q_NS=8'h00;endcaseelseif(en&&~set)beginq_NS=q_NS-1;endendmodule㈡倒计时模块。4由于是东西南北两条道路,固有两个倒计时器。模块功能:在相应状态下实现倒序计数。程序如下:moduletimer_EW(clk,reset,set,ld,en,state,q_EW,done_EW);inputclk,reset,set,ld,en;input[3:0]state;output[7:0]q_EW;outputdone_EW;reg[7:0]q_EW;parameterred_EW=8'd10,green_EW=8'd5,yellow_EW=8'h04;parameterst0=4'b0001,st1=4'b0010,st2=4'b0100,st3=4'b1000;assigndone_EW=~(|q_EW)&&en;always@(posedgeclk)if(reset)q_EW=red_EW;elseif(ld)case(state)st0:q_EW=8'h00;st1:q_EW=green_EW;st2:q_EW=yellow_EW;5st3:q_EW=red_EW;default:q_EW=8'h00;endcaseelseif(en&&~set)beginq_EW=q_EW-1;endendmodule㈢转码模块。模块功能:将计数器输出的的二进制数转换为bcd码表示的十进制数。转码程序如下:modulebin_to_bcd(data,units,tens,hundreds);input[7:0]data;output[3:0]units,tens,hundreds;reg[3:0]units_r,tens_r,hundreds_r;reg[7:0]dat_r;reg[11:0]temp;integeri;assignunits=units_r;assigntens=tens_r;assignhundreds=hundreds_r;always@(data)6begindat_r=data;temp=0;for(i=0;i7;i=i+1)begintemp={temp[10:0],dat_r[7]};if(temp[3:0]4'd4)temp[3:0]=temp[3:0]+4'd3;if(temp[7:4]4'd4)temp[7:4]=temp[7:4]+4'd3;if(temp[11:8]4'd4)temp[11:8]=temp[11:8]+4'd3;dat_r=dat_r1;{hundreds_r,tens_r,units_r}={temp[10:0],data[0]};endendendmodule㈣交通控制模块。模块功能:把以上五个模块连接起来形成一个完整的电路,从而实现交通灯控制功能。交通控制模块程序如下:module7traffic_control(clk,clk_1hz,reset,set,done_NS,done_EW,red1,yellow1,green1,red2,yellow2,green2,sload_NS,sload_EW,state_cnt);inputclk,clk_1hz,reset,set;inputdone_NS,done_EW;outputred1,yellow1,green1,red2,yellow2,green2;outputsload_NS,sload_EW;output[3:0]state_cnt;parameters0=4'b0001,s1=4'b0010,s2=4'b0100,s3=4'b1000;reg[3:0]current_state,next_state;regred1,yellow1,green1,red2,yellow2,green2;regsload_NS,sload_EW;assignstate_cnt=current_state;always@(posedgeclkorposedgereset)beginif(reset)current_state=s0;elsecurrent_state=next_state;endalways@(current_stateordone_NSordone_EW)begin:fsmtrcase(current_state)s0:beginif(done_NS)next_state=s1;elsenext_state=s0;ends1:beginif(done_NS)next_state=s2;elsenext_state=s1;ends2:beginif(done_EW)next_state=s3;elsenext_state=s2;ends3:beginif(done_EW)next_state=s0;elsenext_state=s3;enddefault:next_state=s0;endcaseendalways@(*)begin8if(set)begingreen1=1'b0;yellow1=1'b0;red1=1'b1;green2=1'b0;yellow2=1'b0;red2=1'b1;endelsebegincase(current_
本文标题:基于FPGA交通灯设计
链接地址:https://www.777doc.com/doc-7347179 .html