简易交通灯控制器设计.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简易交通灯控制器设计

实验四 简易交通灯控制器设计 一、实验目的 了解状态机的典型结构及编写方法。 二、实验要求 使用状态机设计一个交通灯控制器,该控制器用于控制十字路口的信号灯和倒计时显示器。在东西和南北两个方向上均有一组红、黄、绿灯和倒计时显示器,假设各灯交替点亮的时间为:红灯45秒,绿灯40秒,黄灯5秒,同时用数码管指示当前状态的剩余时间。另外设置一个禁止通行控制输入信号端,当该信号为低电平时,两个方向都禁止通行,红灯点亮,计时器不显示时间。完成设计输入、编译、仿真、硬件测试等过程。 三、实验原理与方案 根据实验要求,两个方向灯的点亮状态共有红绿、红黄、绿红、黄红四种组合,如下表: 状态 东西方向 南北方向 点亮时间(秒) 红 黄 绿 绿 黄 红 S1 1 0 0 1 0 0 40 S2 1 0 0 0 1 0 5 S3 0 0 1 0 0 1 40 S4 0 1 0 0 0 1 5 S0 1 0 0 0 0 1 从表中可以看出,交通灯的有效状态共有4种,某一状态的定时时间到,则转向下一个状态。在采用状态机设计时可以考虑定义一个状态设置,取值范围为S1、S2、S3、S4,另外对应禁止通行的特殊状态还可以设置一个状态S0。为了实现各状态的定时,设置两个计数器EW、SN,分别用于对东西、南北方向的各状态定时。 四、实验内容、步骤与结果 1、项目设计: 1)启动QuartusII,完成项目设置,顶层文件名JTD 2)打开VHDL编辑器将输入程序代码,保存 程序:LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY JTD IS PORT(CLK,S2,S1:IN STD_LOGIC; A_GREEN,A_YELLOW,A_RED:OUT STD_LOGIC; B_GREEN,B_YELLOW,B_RED:OUT STD_LOGIC); END ENTITY JTD; ARCHITECTURE RTL OF JTD IS TYPE STATE IS(AGREEN,AYELLOW,BGREEN,BYELLOW); BEGIN PROCESS(CLK,S2,S1) VARIABLE CURRENT_STATE:STATE;VARIABLE TIMER:INTEGER; VARIABLE JTD:STD_LOGIC_VECTOR(5 DOWNTO 0); VARIABLE FLAG:STD_LOGIC; BEGIN IF(S2=1)THEN CURRENT_STATE:=AGREEN;TIMER:=50;FLAG:=0; ELSIF(S1=1)THEN CURRENT_STATE:=CURRENT_STATE;TIMER:=TIMER;FLAG:=1; JTD:=001001; ELSIF(CLKEVENT AND CLK=1)THEN FLAG:=0; TIMER:=TIMER-1; CASE CURRENT_STATE IS WHEN AGREEN= IF(TIMER=0)THEN CURRENT_STATE:=AYELLOW;TIMER:=5; END IF; WHEN AYELLOW= IF(TIMER=0)THEN CURRENT_STATE:=AGREEN;TIMER:=45; END IF; WHEN BGREEN= IF(TIMER=0)THEN CURRENT_STATE:=BYELLOW;TIMER:=5; END IF; WHEN BYELLOW= IF(TIMER=0)THEN CURRENT_STATE:=BGREEN;TIMER:=45; END IF; END CASE; END IF; IF(FLAG=0)THEN CASE CURRENT_STATE IS WHEN AGREEN=JTD:=100001; WHEN AYELLOW=JTD:=010001; WHEN BGREEN=JTD:=001100; WHEN BYELLOW=JTD:=001010; END CASE; END IF; A_GREEN=JTD(5);A_YELLOW=JTD(4);

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档