欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于FPGA的交通灯控制器设计1.doc

    • 资源ID:4144860       资源大小:447KB        全文页数:26页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于FPGA的交通灯控制器设计1.doc

    综合课程设计报告 基于FPGA的交通灯控制器设计学 院 :通信与电子学院 专业班级 :电子科学与技术班 姓 名 : 学 号 : 指导老师 : 摘 要近年来,随着科技的飞速发展,FPGA的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,FPGA往往作为一个核心部件来使用,正在不断的应用到实际生活中,并且根据具体硬件结构软硬件结合,加以完善。 交通灯控制器在城市交通监管中起着极其重要的作用。传统的交通灯控制器基本是通过单片机或者PLC实现。本文介绍基于FPGA技术和Quartus II开发平台实现十字路口交通灯控制器的的一种方案,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。利用VHDL硬件描述语言描述各模块程序,并在Quartus II环下进行编译、仿真,生成顶层文件后下载在FPGA器件FLEX EPF10K10LC84上进行验证。验证结果表明,设计基本实现了交通灯控制器所要求的控制过程,包括倒计时时间显示功能、特殊状态控制功能和主、支干道的红、黄、绿灯交替显示功能,表明本文所述的的设计方案正确。 本文结合交通灯控制器的设计过程,简单介绍了硬件描述语言VHDL的结构模型和设计流程、 VHDL设计的优点及该语言在数字系统设计中的美好前景和重要地位。关键词:FPGA,交通灯控制器,Quartus,Verilog HDL  目 录摘要1 FPGA/CPLD概述12 系统分析与总体方案32.1系统分析32.2 设计的总体方案33 硬件电路设计43.1分频器设计43.2 状态控制电路设计43.3计数器设计53.4译码显示电路设计54 ROBEI软件程序设计64.1扫描显示模块64.2状态转换模块74.3总体设计114.4测试文件125 程序仿真与分析125.1 仿真结果125.2 仿真结果分析146 心得体会16参考文献17附录181 FPGA/CPLD概述随着世界范围内城市化和机动化进程的加快,城市交通越来越成为一个全球化的问题。城市交通基础设施供给滞后于高速机动化增长需求,道路堵塞日趋加重,交通事故频繁,环境污染加剧等问题普遍存在。目前,全国大中城市普遍存在着道路拥挤、车辆堵塞、交通秩序混乱的现象,交通事故频发,这给人民的生命财产安全带来了极大的损失。如何解决城市交通问题已成为全社会关注的焦点和大众的迫切呼声。探究城市交通发展中存在问题的原因,无论是从宏观上还是从微观上分析,其根本原因在于城市交通系统的管理机制不适应。城市交通控制系(UTC ,Urban Traffic Control System)是现代城市智能交通系统(IDJ ,Intelligent transport system)的组成之一,主要用于城市道路交通的控制与管理。城市平交路口实现交通信号控制是城市交通管理现代化的基本标志之一,是提高交通管理效能的重要技术手段。路口信号控制器是控制交叉路口交通信号的设备,它是交通信号控制的重要组成部分。各种交通控制方案,最终都要由路口信号控制器来实现。为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。伴随着社会的发展以及人类生活水平的提高,汽车的数量在不断增加,EDA技术的发展和应用领域也在不断的扩大与深入,机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域的重要性日益突出。利用EDA技术设计交通灯来完成这个需求就显的更加迫切,同样也是非常的实用和合理。FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,他们是在PAL,GAL等逻辑器件的基础上发展起来的。同以往的PAL,GAL相比较FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD上就是一个子系统部件。这种芯片收到世界范围内电子工程设计人员的广泛关注和普遍欢迎。比较典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他们开发较早,占用了较大的PLD市场。FPGA/CPLD芯片都是特殊的ASIC芯片,除了具有ASIC的特点外,还具有以下几个优点:随着VLSI(超大集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管,FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已达上百万门,它所实现的功能也越来越强,同时也可以实现系统集成,即片上系统SOC。FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担芯片风险和费用,设计人员只需在自己的实验室就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以,FPGA/CPLD的资金投入就少,减少了潜在的花费。用户可以反复的编程,擦除,使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。FPGA/CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入,编译,优化,仿真,直至最后芯片的制作。当电路有少量的改动,更能显示FPGA/CPLD的优势。在线可编程技术(ISP)使得使用FPGA/CPLD的产品可以做到远程升级。 2课程设计总体方案2.1系统分析 通过分析可以知道,所要设计的十字路口交通灯控制电路要能够使南北、东西各四个灯(红、黄、绿),三个灯能够按顺序依次亮灭。而且要求绿灯亮转红灯亮之前要先转黄灯亮5秒,还要求三种灯的点亮时间能够以倒计时的形式显示出来。可以用verilog HDL语言合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。使用基于FPGA的方法具有周期短、使用灵活、易于修改等明显的优点。而且,随着FPGA器件,设计语言和电子设计自动化工具的发展和改进,越来越多的电子系统采用FPGA来设计。未来使用FPGA器件设计的产品将出现在各个领域。因此此次的交通灯控制器将基于FPGA的设计方案来实现所需要的功能。 2.2 设计的总体方案 根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图3.1所示:CLK时钟分频模块交通灯控制及计时模块扫描显示模块LED显示数码管位码数码管段码图2.2 系统的框图3 硬件电路设计3.1分频器设计 分频器实现的是将高频时钟信号转换成低频时钟信号,用于触发控制器、计数器和扫描显示电路。具体实物模块如图:图3.1 分频器模块3.2 状态控制电路设计状态控制器的作用是根据计数器的计数值控制各方向上发光二极管的亮、灭,当计时时间到达,状态控制器就响应,自动跳转到下一个状态。此外,当检测到特殊情况(EMI =1)发生时,无条件点亮红灯的二极管(急救灯按下EMI='1',则东西南北都亮红灯,在这种状态下原来的状态必须保持,即东西南北方向定时时间保持不变。急救灯未按下或者按下后恢复,则继续计时(计时通过计数器ct),同时恢复东西南北原来灯的状态)。具体实物模块如图:图3.2控制电路模块3.3计数器设计这里需要的计数器的计数范围为0-80。计到80后,下一个时钟沿回复到0,开始下一轮计数。此外,当检测到特殊情况(EMI =1)发生是,计数器暂停计数,而系统复位信号RESET则使计数器异步清零。图3.3计数器模块3.4译码显示电路设计根据状态控制器所控制的状态和计数器的计时时间,选择当前状态下的显示器,使显示器输出当前状态下的数码管亮、灭指令,其中数码管的显示采用动态扫描显示。具体实物模块如图:图3.4译码显示电路模块4 robei软件程序设计4.1扫描显示模块: /*扫描显示*/parameter _0 = 7'b1000000,_1 = 7'b1111001,_2 = 7'b0100100,_3 = 7'b0110000,_4 = 7'b0011001,_5 = 7'b0010010,_6 = 7'b0000010,_7 = 7'b1111000,_8 = 7'b0000000,_9 = 7'b0011000;reg 6:0rTen_SMG_Data;initial beginrTen_SMG_Data = 7'b0000000;endalways ( posedge clk or negedge nrst )if( !nrst )beginrTen_SMG_Data <= 7'b1111111;endelsecase( ten_data )4'd0 : rTen_SMG_Data <= _0;4'd1 : rTen_SMG_Data <= _1;4'd2 : rTen_SMG_Data <= _2;4'd3 : rTen_SMG_Data <= _3;4'd4 : rTen_SMG_Data <= _4;4'd5 : rTen_SMG_Data <= _5;4'd6 : rTen_SMG_Data <= _6;4'd7 : rTen_SMG_Data <= _7;4'd8 : rTen_SMG_Data <= _8;4'd9 : rTen_SMG_Data <= _9;endcase/*/reg 6:0rOne_SMG_Data;initial beginrOne_SMG_Data = 7'b0000000;endalways ( posedge clk or negedge nrst )if( !nrst )beginrOne_SMG_Data <= 7'b1111111;endelsecase( one_data )4'd0 : rOne_SMG_Data <= _0;4'd1 : rOne_SMG_Data <= _1;4'd2 : rOne_SMG_Data <= _2;4'd3 : rOne_SMG_Data <= _3;4'd4 : rOne_SMG_Data <= _4;4'd5 : rOne_SMG_Data <= _5;4'd6 : rOne_SMG_Data <= _6;4'd7 : rOne_SMG_Data <= _7;4'd8 : rOne_SMG_Data <= _8;4'd9 : rOne_SMG_Data <= _9;endcase/*/assign ten_smg_data = rTen_SMG_Data;assign one_smg_data = rOne_SMG_Data;/*/4.2状态转换模块:/*状态转换*/parameter state_0 = 2'b00,state_1 = 2'b01,state_2 = 2'b10,state_3 = 2'b11;reg 1:0CS;reg 1:0flag;reg 3:0count_H , count_L;reg 3:0count_H1 , count_L1;reg ECS;reg2:0light_zhu; /light_zhu0 ?light_zhu1 ?light_zhu2 ?reg2:0light_zhi; /light_zhi0 ?light_zhi1 ?light_zhi2 ?initial beginCS = 2'b00;flag = 2'b00;ECS = 1;count_H = 4'b0000;count_L = 4'b0000;count_H1 = 4'b0000;count_L1 = 4'b0000;light_zhu = 3'b000;light_zhi = 3'b000;endalways ( posedge clk_1Hz or negedge nrst )if(!ECS)beginECS <= 1;endelsebeginif( !nrst )beginCS <= state_0;flag <= 2'b00;state_0_init;endelsecase( CS )state_0: if( flag = 2'b00 ) /状态0, 35sbeginif( !count_H && ( count_L = 4'b0110 ) ) /5sbeginflag <= 2'b01;CS <= state_1;state_1_init; /state_1endelse if( !count_L )begincount_L <= 4'b1001;count_H <= count_H-1;endelsebegincount_L <= count_L-1;endif( !count_L1 )begincount_L1 <= 4'b1001;count_H1 <= count_H1-1;endelsebegincount_L1 <= count_L1-1;endendstate_1: if( flag = 2'b01 ) /状态1,5sbeginif( !count_L )beginflag <= 2'b10;CS <= state_2;state_2_init; /状态2endelsebegincount_L <= count_L-1;count_L1<=count_L;ECS = 0;endendstate_2: if( flag = 2'b10 ) /状态2,25sbeginif( !count_H && ( count_L = 4'b0110 ) ) /5sbeginflag <= 2'b11;CS <= state_3;state_3_init; /state_3endelse if( !count_L )begincount_L <= 4'b1001;count_H <= count_H-1;endelsebegincount_L <= count_L-1;endif( !count_L1 )begincount_L1 <= 4'b1001;count_H1 <= count_H1-1;endelsebegincount_L1 <= count_L1-1;endendstate_3: if( flag = 2'b11 ) /状态3,5sbeginif( !count_L )beginflag <= 2'b00;CS <= state_0;state_0_init; /状态0endelsebegincount_L <= count_L-1;count_L1 <= count_L;ECS = 0;endenddefault: beginflag <=2'b00;CS <= state_0;endendcaseend/*/task state_0_init;begin/主干道绿灯45秒只干道count_H <= 4'b0100; /高位为4count_L <= 4'b0101; /低位为5count_H1 <= 4'b0101; /高位5count_L1 <= 4'b0000; /低位0light_zhu <= 3'b100; /light_zhu0:0 , light_zhu1:0 , light_zhu2:1light_zhi <= 3'b001; /light_zhi0:0 , light_zhi1:0 , light_zhi2:1endendtask/*/*/task state_1_init;begin/黄灯5秒count_H <= 4'b0000; /高位为0count_L <= 4'b0101; /低位为5count_H1 <= 4'b0000;count_L1 <= 4'b0101;light_zhu <= 3'b010;light_zhi <= 3'b001;endendtask/*/task state_2_init;begin/主干道红灯25秒count_H <= 4'b0010; /高位为2count_L <= 4'b0101; /低位为5count_H1<= 4'b0010; /高位为3count_L1 <= 4'b0000; /低位为0light_zhu <= 3'b001;light_zhi <= 3'b100;endendtask/*/task state_3_init;begin/5秒黄灯count_H <= 4'b0000; /高位为0count_L <= 4'b0101; /地位为5count_H1 <= 4'b0000;count_L1 <= 4'b0101;light_zhu <= 3'b001;light_zhi <= 3'b010;endendtask/*/assign one_data = count_L;assign ten_data = count_H;assign one_data1 = count_L1;assign ten_data1 = count_H1;assign led_zhu = light_zhu;assign led_zhi = light_zhi;/*/ 4.3总体设计:4.4测试文件:reg clk_signal;initial beginclk_signal=0;clk=0;nrst=0;#1nrst=1;#500 $finish;endalways begin#1 clk_signal=clk_signal;clk=clk_signal;end5 程序仿真与分析5.1 仿真结果利用robei软件对本程序进行编译,生成了可以进行仿真定时分析以及下载到可编程器件的相关文件。仿真结果如下图所示:总体:主干道:支干道:5.2 仿真结果分析通过写测试文件设置仿真时间,就可以得到如上所示的仿真波形图。由仿真波形图可以看出波形是由clk信号触发而显示出各个状态的。nrst低电平信号输入时,所有交通灯都变为红灯状态。由仿真波形图还可以清楚的看出各时间段每个交通灯的状态。要得到正确的仿真波形图就不许设定合适的时间信号clk值。如果clk值设置的太小则交通灯状态变化得太快无法分辨,如果clk值设置得太大则交通灯状态转换缓慢,效果不明显。其次,要设定clk高低电平的时间,如果没有设定clk脉宽就不可能触发而得到仿真图。最后,就是要设置nrst高电平信号。心得体会首先在这里,要感谢詹华群老师的授课和小强同学的指导,感谢学院开设基于FPGA的交通灯控制器设计这门课程设计,给了我们一次充分锻炼,将理论知识付诸实践的机会。刚开始对FPGA都不怎么熟悉对robei软件也不怎么熟悉,还以为这次交通灯控制器的设计是跟我们做的EDA用QuartusII做的交通灯实验差不多,但经过一番了解还是发现有许多不同,只能说是相互关联。大学三年,我们学习了很多工程技术的知识,做过一些专业实训和实验,但却经常性的忽视在这些课程中的课程设计这个关键环节,认为它们只不过是走过场,抄抄代码,写写报告就够了。其实不然,课程设计本身就是一次做项目的经历,它要求你严格按照项目规程操作,在时间和进度上,都要有项目意通过这段时间老师对本次课程设计的讲解和自己对robei的熟悉和学习,发现了自己EDA上的很多不足,发现了很多知识上的漏洞。同时也看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。这次课程设计让我学到了很多,不仅是巩固了先前学的quartus的使用,而且也学会了新的robei软件的使用,通过两个软件的对比更进一步加强了对FPGA工作原理的理解、提升的自己对verilog的编程能力。还有一点是我们做任何事情都无法缺少的,那就是细心认真、耐心调试。很多知名的程序在正式发布之前都会有、等测试版本,为的就是在反复的试验中发现那些程序员无法发现的小BUG。此次设计我们就深深地体会到了,由于编程的时候没有做到足够的细心,导致一串代码弄混了。但是密密麻麻的英文字母混在一起,我始终没有发现。最终在调试的时候,就出现了问题。只知道出现了问题,就是不知道到问题的根源在哪里,好长时间都没有找出问题的所在。这也让我真正的明白了,科学的严谨性,它不允许出半点去对待差错,否则后果会是比较麻烦的。 通过分析将交通灯控制系统分为四个模块:分频模块、计时模块、控制模块和显示译码模块。信号灯在计数器的计数信号的控制下各个工作状态之间的转换非常明确,所以可利用状态机来对控制模块进行设计。计数器采用倒计时的方式,由于使用7段数码显示器来模拟时间显示,所以需要将计时模块的输出信号转化为数码显示器的驱动信号,中间涉及到十进制和二进制之间的转换。 在设计中采用Verilog HDL语言设计交通灯控制系统, 借助其功能强大的语言结构, 简明的代码描述复杂控制逻辑设计, 与工艺无关特性, 在提高工作效率的同时达到求解目的, 并可以通过Verilog HDL 语言的综合工具进行相应硬件电路生成, 具有传统逻辑设计方法所无法比拟的优越性。  在设计过程中,觉得最难的部分是波形仿真部分,虽然程序编译通过但仿真却比较难实现正确的波形,不是计数器无法正常计数,就是控制输出无法进入到下一个状态,每次出现问题就必须返回重新修改程序。实践证明,在编写一个较复杂的程序时,一开始一定要先把各个模块分析透彻,弄清楚各个功能及实现它们的逻辑算法,做到心中有数后在开始下笔写编写程序。 从理论到实践都使我学到了很多东西,它不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。参考文献1康华光 主编,电子技术基础-数字部分,高等教育出版社,1998。2谭会生等 主编,EDA技术及应用,西安电子科技大学出版社,20013彭介华,电子技术课程设计指导高等教育出版社.20004雷伏容 主编,VHDL电路设计,清华大学出版社,20065潘松等 主编,EDA技术实用教程,科学出版社,20066. 潘松 主编,EDA技术与verilog HDL,清华大学出版社,20107. 冯涛等主编,可编程逻辑器件开发技术:MAX+plus入门与提高,人民邮电出版社,2012 8.杨捷,蒋炜华,马临超.基于VHDL语言的交通灯控制器设计河南机电高等专科学校学报, 2008, 16(3): 102-105. 9.文畅. 基于FPGA/CPLD和VHDL语言的交通灯控制系统设计J. 电脑知识与术, 10.张淑骅. 基于FPGA的交通灯的VHDL设计J. 电力与能源, 2007(19): 478-479. 8张红润. FPGA/CPLD应用设计M. 北京: 北京航空航天大学出版社, 2009.11.吴慎将, 李党娟. 智能交通灯控制器的设计J. 中国科技核心期刊,  2010, 29(11): 51-53. 12.邱磊, 肖兵. 基于VHDL语言的立通灯控制器设计J. 福建电脑: 2004(12): 76-77. 附录4.1扫描显示模块: /*扫描显示*/parameter _0 = 7'b1000000,_1 = 7'b1111001,_2 = 7'b0100100,_3 = 7'b0110000,_4 = 7'b0011001,_5 = 7'b0010010,_6 = 7'b0000010,_7 = 7'b1111000,_8 = 7'b0000000,_9 = 7'b0011000;reg 6:0rTen_SMG_Data;initial beginrTen_SMG_Data = 7'b0000000;endalways ( posedge clk or negedge nrst )if( !nrst )beginrTen_SMG_Data <= 7'b1111111;endelsecase( ten_data )4'd0 : rTen_SMG_Data <= _0;4'd1 : rTen_SMG_Data <= _1;4'd2 : rTen_SMG_Data <= _2;4'd3 : rTen_SMG_Data <= _3;4'd4 : rTen_SMG_Data <= _4;4'd5 : rTen_SMG_Data <= _5;4'd6 : rTen_SMG_Data <= _6;4'd7 : rTen_SMG_Data <= _7;4'd8 : rTen_SMG_Data <= _8;4'd9 : rTen_SMG_Data <= _9;endcase/*/reg 6:0rOne_SMG_Data;initial beginrOne_SMG_Data = 7'b0000000;endalways ( posedge clk or negedge nrst )if( !nrst )beginrOne_SMG_Data <= 7'b1111111;endelsecase( one_data )4'd0 : rOne_SMG_Data <= _0;4'd1 : rOne_SMG_Data <= _1;4'd2 : rOne_SMG_Data <= _2;4'd3 : rOne_SMG_Data <= _3;4'd4 : rOne_SMG_Data <= _4;4'd5 : rOne_SMG_Data <= _5;4'd6 : rOne_SMG_Data <= _6;4'd7 : rOne_SMG_Data <= _7;4'd8 : rOne_SMG_Data <= _8;4'd9 : rOne_SMG_Data <= _9;endcase/*/assign ten_smg_data = rTen_SMG_Data;assign one_smg_data = rOne_SMG_Data;/*/4.2状态转换模块:/*状态转换*/parameter state_0 = 2'b00,state_1 = 2'b01,state_2 = 2'b10,state_3 = 2'b11;reg 1:0CS;reg 1:0flag;reg 3:0count_H , count_L;reg 3:0count_H1 , count_L1;reg ECS;reg2:0light_zhu; /light_zhu0 ?light_zhu1 ?light_zhu2 ?reg2:0light_zhi; /light_zhi0 ?light_zhi1 ?light_zhi2 ?initial beginCS = 2'b00;flag = 2'b00;ECS = 1;count_H = 4'b0000;count_L = 4'b0000;count_H1 = 4'b0000;count_L1 = 4'b0000;light_zhu = 3'b000;light_zhi = 3'b000;endalways ( posedge clk_1Hz or negedge nrst )if(!ECS)beginECS <= 1;endelsebeginif( !nrst )beginCS <= state_0;flag <= 2'b00;state_0_init;endelsecase( CS )state_0: if( flag = 2'b00 ) /状态0, 35sbeginif( !count_H && ( count_L = 4'b0110 ) ) /5sbeginflag <= 2'b01;CS <= state_1;state_1_init; /state_1endelse if( !count_L )begincount_L <= 4'b1001;count_H <= count_H-1;endelsebegincount_L <= count_L-1;endif( !count_L1 )begincount_L1 <= 4'b1001;count_H1 <= count_H1-1;endelsebegincount_L1 <= count_L1-1;endendstate_1: if( flag = 2'b01 ) /状态1,5sbeginif( !count_L )beginflag <= 2'b10;CS <= state_2;state_2_init; /状态2endelsebegincount_L <= count_L-1;count_L1<=count_L;ECS = 0;endendstate_2: if( flag = 2'b10 ) /状态2,25sbeginif( !count_H && ( count_L = 4'b0110 ) ) /5sbeginflag <= 2'b11;CS <= state_3;state_3_init; /state_3endelse if( !count_L )begincount_L <= 4'b1001;count_H <= count_H-1;endelsebegincount_L <= count_L-1;endif( !count_L1 )begincount_L1 <= 4'b1001;count_H1 <= count_H1-1;endelsebegincount_L1 <= count_L1-1;endendstate_3: if( flag = 2'b11 ) /状态3,5sbeginif( !count_L )beginflag <= 2'b00;CS <= state_0;state_0_init; /状态0endelsebegincount_L <= count_L-1;count_L1 <= count_L;ECS = 0;endenddefault: beginflag <=2'b00;CS <= state_0;endendcaseend/*/task state_0_init;begin/主干道绿灯45秒只干道count_H <= 4'b0100; /高位为4count_L <= 4'b0101; /低位为5count_H1 <= 4'b0101; /高位5count_L1 <= 4'b0000; /低位0light_zhu <= 3'b100; /light_zhu0:0 , light_zhu1:0 , light_zhu2:1light_zhi <= 3'b001; /light_zhi0:0 , light_zhi1:0 , light_zhi2:1endendtask/*

    注意事项

    本文(基于FPGA的交通灯控制器设计1.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开