毕业设计(论文)基于vhdl的交通灯控制器的设计与实现.doc

毕业设计(论文)基于vhdl的交通灯控制器的设计与实现.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
毕业设计(论文)基于vhdl的交通灯控制器的设计与实现

华中科技大学 基于xilinx FPGA的VHDL交通灯控制器的设计 --基于Spartan3E开发板 专业: 电子信息工程 任务设计要求   由系统设计原理图,我以清楚将系统模块:分频模块,时间设置模块,状态转换模块,时间计算模块,,模块。 分频模块 时间模块 main_gh,main_gl,main_lh,main_ll,branch_gh,branch_gl,branch_lh,branch_ll(下划线后面的字母分别取green,left,high,low首字母).需要置数时首先选择对主干道还是支干道时间置数设置一,当高时设置支干道时间,为低时设置主干道时间。,通过s_set_button,l_set_button时间具体方法参见代码。为了方便,引入一个add_or_decent,低电平时button可以增计数,高电平时按下可以减计数。 状态转换模块 state、s_or_l为00、01、10、11来代表。每当一个状态的计数器为00时,state、s_or_l发生改变,以实现状态间的转换,进而控制交通灯的变化。 4)时间计算模块 了左转红灯时间不仅仅是另一干道的直行时间,而是直行时间和左转时间之和5)LCD显示模块 模块 branch_green,branch_red的不同值,来控制主干道,支干道红绿左转灯的亮灭。 其中 1表示亮,0表示灭。如表3-1 所示。 由上表可得到: main_green = NOT(state) AND NOT(s_or_l) AND (NOT((flash AND clk))); main_left = NOT(state) AND s_or_l AND (NOT((flash AND clk))); main_red = state; branch_green = state AND NOT(s_or_l) AND (NOT((flash AND clk))); branch_left = state AND s_or_l AND (NOT((flash AND clk))); branch_red = NOT(state); 2.输入输出设计 设计,具体输入输出如下: : 开关:main_or_branch EN: 使能信号 run_or_set: 设置运行模式还是时间设置模式 add_or_decent: 置数模式:增加或者减少 按键:s_set_button l_set_button: 左转时间设置按钮 时钟:clk 输出: LED灯:main_green,main_red,main_left branch_left,branch_green,branch_red 状态转换图 S1状态:主干道左转、支干道红灯 S2状态:支干道绿灯、主干道红灯 S3状态:支干道左转、主干道红灯 三.各模块代码以及仿真波形 分频模块代码 因为1HZ波形太长,不易仿真,故仿真波形采用100HZ的 输入clk :50MHZ 输出clk1:100HZ 时间设置模块部分代码 以上是直行时间设置代码。左转设置类似,在此不再复制 仿真 设置 输入 :clk main_or_branch 设置为0 add_or_decent 设置为0 s_set_button 设置为周期为1周期的信号 l_set_button 设置为低电平 波形如下 时间计算模块代码 波形仿真 输入输出与预期相符合。 状态转换模块 波形仿真 分别给主干道,支干道个颜色灯持续时间赋值,再给定,当前亮灯的剩余时间,然后又进行仿真,结果符合预期 LED模块代码 波形仿真 分别给予输入不同周期的高低点评,相互叠加的结果符合预期。 LCD模块代码 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LCD is port( clk : in STD_LOGIC; rst_n : in STD_LOGIC; counter_play1h, counter_play1l : in STD_LOGIC_VECTOR(3 downto 0); counter_play2h, counter_play2l : in STD_LOGIC_VECTOR(3 downto 0); --de

您可能关注的文档

文档评论(0)

海纳百川 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档