【《基于FPGA的一种交通灯控制器设计》7100字(论文)】_第1页
【《基于FPGA的一种交通灯控制器设计》7100字(论文)】_第2页
【《基于FPGA的一种交通灯控制器设计》7100字(论文)】_第3页
【《基于FPGA的一种交通灯控制器设计》7100字(论文)】_第4页
【《基于FPGA的一种交通灯控制器设计》7100字(论文)】_第5页
已阅读5页,还剩21页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于FPGA的一种交通灯控制器设计摘要:由于当代世界城市化和智能化进程的不断加快,改善城市交通迫在眉睫.FPGA(现场可编程门阵列)是专用集成电路(ASIC)中的一种半定制电路,FPGA打破了顺序执行的模式,可以更快处理任务,具有很好的运算能力.当电子线路有少量的重新设计,更能显示FPGA的优势.本论文采用VerilogHDL语言,借助QuartusII软件这个设计平台,此设计通过自上而下的模块化设计方法,然后通过编译、仿真,对交通控制系统进行功能仿真需要用到Modelsim软件;仿真结果可以说明设计的交通灯控制器是否满足要求,之后下载至FPGA芯片,由此验证了设计的可行性,本设计相较于其他交通灯设计开发周期短、稳定性好、易维护,能够使交通达到比较流通的效果.关键词:EDA;FPGA;交通灯控制器目录TOC\o"1-2"\h\u135461引言 assigndate_ew_0=ew_time/10;//将东西方向瞬时时间数据的十位取出22assigndata_ew_1=ew_time%10;//将东西方向瞬时时间数据的个位取出23assigndata_sn_0=sn_time/10;//将南北方向瞬时时间数据的十位取出24assigndata_sn_1=sn_time%10;//将南北方向瞬时时间数据的个位取出25//这部分为计数1ms26always@(posedgesys_clkornegedgesys_rst_n)begin27if(!sys_rst_n)28cnt_1ms<=15'b0;29elseif(cnt_1ms<WIDTH-1'b1)30cnt_1ms<=cnt_1ms+1'b1;31else32cnt_1ms<=15'b0;33end34//用来驱动转换数码管亮起来的4个状态,也是计数器35always@(posedgesys_clkornegedgesys_rst_n)begin36if(!sys_rst_n)37cnt_state<=2'd0;38elseif(cnt_1ms==WIDTH-1'b1)39cnt_state<=cnt_state+1'b1;40else41cnt_state<=cnt_state;42end43//首先东西方向数码管的十位、个位依次显示.其次南北方向数码管的十位,个位依次显示44always@(posedgesys_clkornegedgesys_rst_n)begin45if(!sys_rst_n)begin46sel<=4'b1111;47num<=4'b0;48end49elseif(en)begin50case(cnt_state)513'd0:begin52sel<=4'b1110;//控制东西方向数码管的十位53num<=data_ew_0;54end553'd1:begin56sel<=4'b1101;//控制东西方向数码管的个位57num<=data_ew_1;58end593'd2:begin60sel<=4'b1011;//控制南北方向数码管的十位61num<=data_sn_0;62end633'd3:begin64sel<=4'b0111;//控制南北方向数码管的个位65num<=data_sn_1;66end67default:begin68sel<=4'b1111;69num<=4'b0;70end71endcase72end73elsebegin74sel<=4'b1111;75num<=4'b0;76end77end78//与数码管瞬时数值对应的段选信号79always@(posedgesys_clkornegedgesys_rst_n)begin80if(!sys_rst_n)81seg_led<=8'b0;82elsebegin83case(num)844'd0:seg_led<=8'b1100_0000;854'd1:seg_led<=8'b1111_1001;864'd2:seg_led<=8'b1010_0100;874'd3:seg_led<=8'b1011_0000;884'd4:seg_led<=8'b1001_1001;904'd5:seg_led<=8'b1001_0010;914'd6:seg_led<=8'b1000_0010;924'd7:seg_led<=8'b1111_1000;934'd8:seg_led<=8'b1000_0000;944'd9:seg_led<=8'b1001_0000;95default:seg_led<=8'b1100_0000;96endcase97end98end99endmodule行至第33行,设计了一个计数器,它的计数周期为1ms.在第14了2位计数器cnt_state,它的目的为了产生位选控制信号.计数器累加1次的条件是时间经过1ms.0,1,2,3这几个十进0行到第70cnt_statenum寄存器是sel寄存器赋值来驱动数码管不同的位选得到.在第83到第94行代码,信号seg_led可根据num的值产生相应的段选信号控制.sn_time数值为21以及ew_time数值为24sel段选信号seg_led与num.4.4led灯控制模块的代码1moduleled(2inputsys_clk,//系统时钟3inputsys_rst_n,//系统复位4input[1:0]state,//交通灯的状态5outputreg[5:0]led//红黄绿LED灯发光使能6);7//parameterdefine8parameterTWINKLE_CNT=20_000_000;//黄灯的闪烁次数9//regdefine10reg[24:0]cnt;//计数器,可使黄灯产生闪烁效果11//让黄灯产生闪烁效果的计数器,且计时为0.2s12always@(posedgesys_clkornegedgesys_rst_n)begin13if(!sys_rst_n)14cnt<=25'b0;15elseif(cnt<TWINKLE_CNT-1'b1)16cnt<=cnt+1'b1;17else18cnt<=25'b0;19end20//在四个交通灯的状态中,使与之对于应的led灯发光21always@(posedgesys_clkornegedgesys_rst_n)begin22if(!sys_rst_n)23led<=6'b100100;24elsebegin25case(state)262'b00:led<=6'b100010;//东西方向led寄存器从高到低依次驱动27//南北这个方向红绿黄灯282'b01:begin29if(cnt==TWINKLE_CNT-1'b1)//黄灯的亮灭状况在计数够0.2秒时转换一次30//闪烁或者亮灭的效果31led[0]<=~led[0];32else33led[0]<=led[0];34end352'b10:led<=6'b010100;362'b11:begin37led[5:4]<=2'b00;38led[2:0]<=3'b100;39if(cnt==TWINKLE_CNT-1'b1)40led[3]<=~led[3];41else42led[3]<=led[3];43end44default:led<=6'b100100;45endcase46end47end48endmodule在代码的第20行至第43行,led灯是否发光取决于所处的状态值state.LED输出的高3位led[5:3南北方向红、黄、绿灯三个LED灯分别由3位led[2:0]由高到低依次动.11行至代码第19计数器,周期为0.2s,即每0.2s切换一次黄灯的亮灭状态,这样就可以达到日常生活中的闪烁.led图1.7所示state的值为01和11,led寄存器的值在不断地变更.图1.7led4.5仿真文件代码1timescale1ns/1ns2moduletb_top_traffic;3regsys_clk;//系统时钟4regsys_rst_n;//系统复位5wire[3:0]sel;//数码管位选信号6wire[7:0]seg_led;//数码管段选信号7wire[5:0]led;//led灯的控制信号8initialbegin9sys_clk<=1'b0;10sys_rst_n<=1'b0;11#20sys_rst_n<=1'b1;12end13always#10sys_clk=~sys_clk;//产生时钟,其频率为50Mhz14//顶层模块的调用15top_trafficu_top_traffic(16.sys_clk(sys_clk),17.sys_rst_n(sys_rst_n),18.sel(sel),19.seg_led(seg_led),20);5下载验证首先我们打开交通灯实验,在实验所在的路径下打开名为top_traffic/par的文件夹,在找到“top_traffic.qsf”并将其点开.图1.8即为打开后的结果.图1.8交通信号灯工程将交通信号灯模块与扩展口一一对应相连.验证交通灯实验的功能通过下载程序来验证.打开工程后,点击“Tool”然后点击“Programmer”图标,这样下载页面就打开了,然后点击“AddFile”选择top_traffic/par/output_files目录下的“top_traffic.sof”点击“HardwareSetup”,“USB-Blaster[USB-0]”为咱们选择的硬件连接“Start”,这样就可得到编译下载后的sof:图1.9程序下载完成界面如下图1.10所示:图1.10实验仿真结果当设计文件加载到目标器件后,交通灯模块的红、绿、黄LED发光管会模拟实际中的交通信号灯的变化.此时,数码管上显示通行的时间.即刚开始运作时,南北方向为绿灯,并且有27秒是发光的,接着黄灯发光三秒,在此期间,东西方向的红灯一直发光;然后南北方向转换为亮30秒红灯,东西方向绿灯发光27秒,然后黄灯闪烁三秒,若达到这样循环亮灯的效果,则实验成功.图1.11实验结果与现象6实验结论本论文基于EDA技术,运用VerilogHDL语言,并且利用自上而下的模块化设计方法,四个模块各司其职,顶层模块完成了拼接三个模块,而且交通灯外设与led灯和数码管的信号传送通过顶层模块完成,信号灯的状态转换由此模块控制.数码管模块可显示接收的东西与南北方向的实时时间,led灯控制模块可控制不同方向的灯发光,将状态信号连接到led,之后通过程序编写、仿真、编译、下载验证,最终得到预期的效果.实验结果为,刚开始,南北方向为绿灯,并且亮27秒,接着亮三秒黄灯,在这30秒时间内,东西方向一直为红灯;然后南北方向变为红灯亮30秒,东西方向亮27秒绿灯,然后亮3秒黄灯,一直这样循环亮灯.本论文采用EDA技术,基于FPGA和VerilogHDL语言设计一种交通灯控制器,可使城市道路得到很好的利用,可以在一定程度上解决城市交通的拥堵和其他问题.参考文献[1]王宏斌,王媛斌.基于FPGA的交叉路口交通灯控制器设计[J].自动化与仪器仪表,2015.06:115~116.[2]金春花.基于FPGA的交通灯控制器的设计与实现[J]闽西职业技术学院学报,2015,17(03):113~117.[3]黄明霞,许泽恩.基于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论