EDA交通灯课程设计实验报告汇.doc

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

EDA交通灯课程设计 实验报告 学院:通信与信息工程学院 专业:电子信息工程 班级:0120902 目 录 交通灯控制系统的设计 1 1.设计要求 1 1.1 实现基本要求及扩展 1 1.2 附加要求 1 2 设计思路 1 3 状态机变化图 2 3.1 状态机变化图 2 4 设计步骤及程序 3 4.1 主体程序代码 3 4.2 分频程序代码 5 4.3 计数器程序代码 6 4.4 二选一数据选择器程序代码 7 when others= seg=b;dig 8 end case; 8 end process; 8 end; 8 4.5 控制系统电路图 8 5 硬件实现及调试结果 8 5.1 硬件测试结构示意 8 5.2 软件仿真结果 9 6. 心得体会 9 交通灯控制系统的设计 1.设计要求 1.1 实现基本要求及扩展 1.能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态,用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯; 每次通行时间为15S, 2.能实现正常的倒计时功能,用两组数码管作为东西、南北向的倒计时显示。其中,黄灯:3S。 3.当出现一方出现红灯,另一方出现绿灯时,出现红灯的之路左转弯灯亮。 4.能实现特殊状态的功能。按下Sw0键后,能实现以下特殊功能: (1) 四个数码管的显示都为0, (2)东西、南北路口均显示红灯状态; 5.用VHDL语言设计上述功能的交通灯控制器,并用含有四个状态的状态机; 1.2 附加要求 1.时钟输入:clkin=1KHz; 2.采用分频器分成:1Hz,然后提供给系统。 2 设计思路 交通灯控制器的电路控制原理框图如图1所示,主要包括分频器模块、计数器模块、主控制器模块和二选一数据选择器模块。计数器模块以秒为单位倒计时,当计数值依次加一,直至“1111”,再进行下次的计数循环。分频器模块将1000HZ的频率转化为1HZ。数据选择器模块完成数码管个位和十位的seg选择,从而完成两位数字的显示。核心部分是主控制模块。具体控制情况见表1。 图1 电路控制原理框图 状态 干道1 干道2 时间/s 红灯与左转灯亮 绿灯亮 12 红灯亮 黄灯亮 3 绿灯亮 红灯与左转灯亮 12 黄灯亮 红灯亮 3 表1 交通灯控制表 3 状态机变化图 3.1 状态机变化图 根据交通灯的流程图,可以得到如图2所示的控制状态转换图。从图2的状态转换可以看出,交通灯电路应该能够具有以下几个功能:计数功能、状态控制功能(实现交通信号灯的状态控制和计时器控制)、译码功能及二选一数据选择器(实现4位数码管的显示功能)。对于实现上述功能的交通信号灯控制器电路,需要设计以下各个电路单元。 图2控制状态转换图 4 设计步骤及程序 4.1 主体程序代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity zhu is port(QI:in std_logic_vector(3 downto 0); clk,reset:in std_logic; segshi,segge:out std_logic_vector(7 downto 0); led:out std_logic_vector(7 downto 0)); end; architecture zhuti of zhu is signal state,led1:std_logic_vector(7 downto 0); signal seg1:std_logic_vector(7 downto 0); begin shiwei:process(clk,QI,reset) variable seg2:std_logic_vector(7 downto 0); begin if reset=0 then seg2: else if QI=0000 then seg2:end if; if QI=0011 then seg2:end if; end if; segshi=seg2; end process; gewei:process(clk,QI,reset) begin if reset=0 then seg1 else if (QI=0010 or QI=1100 or QI=1111) then seg1end if;--0 if (QI=0001 or QI=1011

文档评论(0)

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

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

1亿VIP精品文档

相关文档