基于FPGA的交通灯设计说明书.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WORD格式 整理分享 范文范例 参考指导 摘 要 交通灯控制器在城市交通监管中起着极其重要的作用。传统的交通灯控制器基本是通过单片机或者PLC实现的。本文将介绍基于FPGA技术和Quartus||开发平台实现十字路口交通灯控制器的一种方案。利用VHDL硬件描述语言描述各模块程序,并在Quartus||环境下编译、仿真,生成顶层文件后下载在FPGA器件EP2C8Q208C8上进行验证。验证结果表明,设计基本上实现了交通灯控制器所要求的控制过程,包括倒计时显示功能和主、支干道的红、黄、绿灯交替显示功能,表明我的设计思想是正确的。本设计采用的VerilogHDL是一种全方位的硬件描述语言具有极强的硬件描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。 关键词:EDA EPGA Quartus||交通灯 1.设计任务与要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。 (3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 (5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。 2.系统设计总体方案 整体框架思路为:首先将教学实验箱提供的50MHZ时钟信号分频,转换为可利用的1Hz CP信号,同时为了实现绿灯在1s内闪烁一次,再转换出一个2Hz的CP信号提供给需要闪烁的绿灯。然后是设置时间的功能模块,通过开关可以分别设置四个方向的运行时间,并将设置的时间传送到状态转换模块中。在状态转换功能模块中,通过前面传送来的设定通行时间进行倒计时和转换状态,并输出当前方向通行剩余时间和四向使能EN信号。在时间显示功能模块中,接收到前面的设置时间、剩余时间、使能信号,运用前面说明的现实方式的逻辑,计算出等待时间,在该向通行时显示剩余时间,在该向等待时显示等待时间,最终将时间信号输出到数码管显示模块;另外,由于数码管数量的限制,只能一次性显示8个(即四组),那么究竟是显示倒计时还是显示设置时间就需要一个开关信号来区分,于是设置一个输入信号来判别是否进入设置模式,并且只能在设置模式下设置时间。LED信号灯显示功能模块则将状态转换模块输出的EN使能信号和2Hz的CP信号以及当前剩余时间作为输入,根据状态点亮相应的LED信号灯。LED显示功能模块的原理和LED信号灯显示模块类似,也是根据同步状态EN使能信号,通过刷新字符的方式,改变和显示当前通行状态。最后,数码管显示功能模块是结合DE2教学开发板数码管的编码规则将BCD码转换为七段码,在译码后显示出来。 3.各模块电路具体实现 3.1时钟分频模块 module?div_clk(clk_50MHz,clk_1Hz,clk_1KHz,clk_500Hz); input?clk_50MHz; output?clk_1Hz,clk_500Hz,clk_1KHz; reg?clk_1Hz,clk_500Hz,clk_1KHz; reg?[24:0]?cnt1; reg?[24:0]?cnt2; reg?[24:0]?cnt3; always?@(posedge?clk_50MHz) begin?if(cnt1?== ????????begin??cnt1=0; ???????????????clk_1Hz=~clk_1Hz; ?????????end ???????else?cnt1=cnt1+1b1; ?end always?@(posedge?clk_50MHz) begin?if(cnt2?==?24999) ????????begin?cnt2=0; ??????????????clk_1KHz=~clk_1KHz; ????????end ???????else?cnt2=cnt2+1b1; end always?@(posedge?clk_50MHz) begin?if(cnt3?==?49999) ????????begin?cnt3=0;

文档评论(0)

zxiangd + 关注
实名认证
内容提供者

本人从事教育还有多年,在这和大家互相交流学习

1亿VIP精品文档

相关文档