欢迎来到天天文库
浏览记录
ID:40597167
大小:266.00 KB
页数:16页
时间:2019-08-04
《交通灯EDA课程设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、目录第一章设计原理1第二章设计流程2第三章程序设计说明33.1程序设计流程图33.2分频模块33.3特殊功能及清零模块43.4交通灯运行模块43.5扫描显示模块6第四章仿真及调试84.1调试步骤8第五章总程序设计9参考文献15注释:请用Quartus7.0仿真15摘 要:VerilogHDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。他的设计描述可被不同的工具所支持,可用不同器件来实现。本设计选用了目前应用较为广泛的VerilogHDL硬件描述语言,实现对路口交通灯系统的控制器的硬件电路描述。此程序通过下载到FPGA芯片后,可应用于实际
2、的交通灯控制系统中。关键字:VerilogHDL交通灯FPGA芯片第一章设计原理Veriloghdl提供了简单实用的状态机语句,在设计时把它和实验箱结合起来控制扫描显示交通灯的运行情况。其原理框图如图1:图1通过外部时钟控制整个交通灯的运行,先将外部时钟经过分频电路变为周期1HZ的时钟,以这个时钟来控制各个路口灯的亮灭及时间显示。即和计数器结合起来,每一秒钟计数器计一次数并传送给扫描模块显示输出。当计数器达到设定的最大值便清零,相应的灯的状态便改变,如此反复。至于复位和特殊功能的实现皆是通过单独的时钟翻转来控制,本设计中采用置数的方法来实现。当需
3、要的时候直接将对应的时钟置为高电平即可,再置为低电平时从一开始的状态显示。15第二章设计流程当控制开关打开后,主干路和支干路的灯暂时不显示,等待初始化信号。待信号来临后,两路灯均开始显示。其中,主干路红灯和支干路绿灯先亮,待主干路红灯显示35秒后,绿灯开始显示,20s后黄灯显示,黄灯显示5s后红灯再一次点亮,如此循环。支干路绿灯亮了30s后黄灯点亮,5s后红灯点亮,红灯显示25s后绿灯再一次点亮,如此循环。其流程图如下图2所示:图215第三章程序设计说明3.1程序设计流程图流程图如图3:图33.2分频模块通过提供一个60hz的外部时钟wclk,经
4、过分频得到一个1hz的时钟clk。其程序如下:always@(posedgewclk)begin15if(enn)beginclk=0;endelsebeginif(dout==29)beginclk=~clk;dout<=0;endelsedout<=dout+1;endend通过计数器计数,当计数器从零计到29时clk翻转,即clk每0.5秒翻转一次,产生一个周期为1秒的时钟。3.3特殊功能及清零模块通过外部赋予高电平将交通灯清零或者实现特殊功能,其程序如下:always@(posedgeclk)beginif(rest)beginstate
5、a<=a;atra<=0;JT1<=3'b000;endelseif(tclk)beginstatea<=a;JT1<=3'b001;endend当清零信号rest来临时交通灯全部灭掉,当特殊功能信号为高电平时交通灯黄灯亮,其余全灭。3.4交通灯运行模块15利用分频得到的1hz时钟clk来控制交通灯的运行,当复位和特殊功能信号均为低电平时,通过en给系统复初值,而后en变为低电平。此时,当检测到clk上升时钟沿时,交通灯通过状态机的选择实现各个路口红、黄、绿灯的点亮以及计时。always@(posedgeclk)beginif(rest)begi
6、nstateb<=d;btra<=0;JT2<=3'b000;endelseif(tclk)beginstateb<=d;JT2<=3'b001;endelseif(en)beginbtra<=8'b00101001;stateb<=d;endelsecase(stateb)d:if(btra==0)beginbtra<=8'b00000100;stateb<=e;JT2<=3'b010;endelsebeginJT2<=3'b100;if(btra[3:0]==0)beginbtra[3:0]<=4'b1001;btra[7:4]<=btra[
7、7:4]-1;endelsebeginbtra[3:0]<=btra[3:0]-1;endende:if(btra==0)beginbtra<=8'b00100100;15stateb<=f;JT2<=3'b001;endelsebeginJT2<=3'b010;if(btra[3:0]==0)beginbtra[3:0]<=4'b1001;btra[7:4]<=btra[7:4]-1;endelsebeginbtra[3:0]<=btra[3:0]-1;endendf:if(btra==0)beginbtra<=8'b00101001;stat
8、eb<=d;JT2<=3'b100;endelsebeginJT2<=3'b001;if(btra[3:0]==0)beginbtra[
此文档下载收益归作者所有