您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 交通灯设计-verilog
数电课程设计题目交通灯设计学生姓名:专业:电子信息工程指导教师:完成日期:2016-6-302摘要VerilogHDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。它的设计描述可被不同的工具所支持,可用不同器件来实现。利用VerilogHDL语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Quartus5.0完成综合、仿真。此程序通过下载到FPGA芯片后,可应用于实际的交通灯控制系统中。关键词:VerilogHDL;硬件描述语言;状态;FPGAAbstractAsacommonlanguageforthedescriptionofhardware,VerilogHDLiswidelyappliedincircuitdesigning.Thedesigndescriptioncanbesupporttedbydifferenttoolsandimplementedbydifferentdevices.Inthispaper,theprocessofdesigningtrafficlightcontrollersystembytheVerilogHDLtopdowndesignmethodispresented,whichhasmadetheroadtrafficworkwell,thedesignofthissystemhasshownthereadability,portabilityandeasilyunderstandingofVerilogHDLasaharddescriptionlanguageCircuitsynthesisandsimulationareperformedbyQuartus5.0.TheprogramcanbeusedinthetrulytrafficlightcontrollersystembydownloadingtotheFPGAchipKeywords:VerilogHDL;hardwaredescriptionlanguage;state;FPGA3目录一、概述.................................................4二、任务功能.............................................5三.系统设计.............................................51.工作原理..........................................52.系统设计方案......................................6四、程序设计.............................................71.verilog源程序.....................................72.设备选择...........................................113.引脚..............................................12五、仿真.................................................121.仿真波形...........................................122.硬件验证...........................................12六、结束语...............................................13七、参考文献.............................................144一:概述HDL(HardwareDescriptionLanguage,硬件描述语言)是一种描述硬件所做工作的语言。目前,电子系统向集成化、大规模和高速度等方向发展,以硬件描述语言和逻辑综合为基础的自顶向下的电路设计方法在业界得到迅猛发展,HDL在这种形势下显示出了巨大的优势,展望将来HDL在硬件设计领域的地位将与C和C++在软件设计领域地位一样,在大规模数字系统的设计中,它将逐步取代传统的逻辑状态表和逻辑电路图等硬件描述方法而成为主要的硬件描述工具。VerilogHDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另一种是VHDL。现在它们都已成为IEEE标准。两者各有特点,但VerilogHDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。Quartus简介:QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。二、任务功能5交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。基本要求:(1)设计一个交通红绿灯。要求分主干道和支干道,每条道上安装红(主:red1,支:red2)绿(主:green1,支:green2)黄(主:yellow1,支:yellow2)三种颜色灯,由四种状态自动循环构成;(2)在交通灯处在不同的状态时,设计一个计时器以倒计时方式显示计时,主干道上绿灯亮30S,支干道上绿灯亮20S。每个干道上,在绿灯转为红灯时,要求黄灯先亮5S。在完成基本要求的基础上,可进一步增加功能、提高性能,如绿灯亮的时间可调。三、系统设计1.工作原理:城市十字交叉路口红绿灯控制系统主要负责控制主干道走向和从干道走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:S0:当主干道走向的绿灯亮时,从干道走向的红灯亮,并保持30sS1:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5sS2:当主干道走向的红灯亮时,从干道走向的绿灯亮,并保持20sS3:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s在S3结束后又回到(1)状态,并周期重复进行。状态图如下:62.系统设计方案:根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图所示:四、程序设计CLK时钟分频模块交通灯控制及计时模块显示模块LED显示数码管位码数码管段码S0S1S3S230秒5秒20秒5秒71.verilog源程序:moduletraffic(en,clk,rst,num1,num2,light1,light2,out1,out2,out3,out4,in1,in2);inputen,clk,rst,in1,in2;//en为使能端。in1,in2控制绿灯和红灯亮时间output[7:0]num1,num2;output[2:0]light1,light2;output[6:0]out1,out2,out3,out4;//输出四个数码管reg[6:0]out1,out2,out3,out4;regtim1,tim2;reg[1:0]state1,state2;reg[2:0]light1,light2;reg[7:0]num1,num2;reg[7:0]red1,red2,green1,green2,yellow1,yellow2;parameters0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;//四个循环状态reg[25:0]count;regdiv;always@(en)if(en)begin//设置计数初值if(!in1)begingreen1=8'b00110000;red2=8'b00110000;end//30H,即30秒elsebegingreen1=8'b01100000;red2=8'b01100000;end//60sif(!in2)beginred1=8'b00100000;green2=8'b00100000;end//20selsebeginred1=8'b01000000;green2=8'b01000000;end//40syellow1=8'b00000101;yellow2=8'b00000101;//05sendalways@(posedgeclk)//分频if(count==25000000)begindiv=1;count=count+1;endelseif(count==50000000)begindiv=0;count=0;endelsecount=count+1;always@(posedgediv)beginif(rst)//复位情况控制beginlight1=3'b001;num1=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//开始控制begin//主干道交通灯点亮控制tim1=1;case(state1)//状态机8s0:beginnum1=green1;light1=3'b001;state1=s1;ends1:beginnum1=yellow1;light1=3'b010;state1=s2;ends2:beginnum1=red1;light1=3'b100;state1=s3;ends3:beginnum1=yellow1;light1=3'b010;state1=s0;enddefault:light1=3'b100;endcaseendelsebegin//倒数计时if(num10)if(num1[3:0]==0)beginnum1[3:0]=4'b1001;num1[7:4]=num1[7:4]-1;//十位减1endelsenum1[3:0]=num1[3:0]-1;//个位减1if(num1==1)tim1=0;endendelsebeginlight1=3'b010;num1=2'b00;tim1=0;endendalways@(posedgediv)//从干道beginif(rst)//复位情况控制beginlight2=3'b100;num2=red2;endelseif(en)beginif(!tim2)begintim2=1;case(state1)s0:beginnum2=red2;light2=3'b100;state2=s1;ends1:beginnum2=yellow1;light2=3'b010;state2=s2;end9s2:beginnum2=green2
本文标题:交通灯设计-verilog
链接地址:https://www.777doc.com/doc-2645984 .html