欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    交通灯控制器的设计(10页).doc

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

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

    交通灯控制器的设计(10页).doc

    -EDA实验报告一、课程设计题目及要求题目: 十字路口交通灯具体要求: 设计一个十字路口的交通灯控制器,能显示十字路口东西、南北两个方向红、黄、绿灯的指示状态。用两组红、黄、 绿三种颜色的灯分别作为东西、南北两个方向 红、黄、绿等。变化规律为:东西绿灯亮,南北红灯亮东西黄灯亮,南北红灯亮东西红灯亮,南北绿灯亮东西红灯亮,南北黄灯亮东西绿灯亮,南北红灯亮······,这样循环下去。南北方向每次通行时间为45秒,东西方向每次通行时间为45秒,要求两条交叉道路上的车辆交替运行,时间可设置修改。绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。并要求所有交通灯的状态变化在时钟脉冲上升沿处。二、实验编程环境QuartusII 8.0 三、课程设计的详细设计方案(一)、总体设计方案的描述1.1、根据交通灯系统设计要求,可以用一个有限状态机来实现这个交通灯控制器。首先根据功能要求,明确两组交通灯的状态,这两组交通灯总共共有四种状态,我们用ST0,ST1,ST2,ST3 来表示: St0表示东西路绿灯亮,南北路红灯亮; St1表示东西路黄灯亮,南北路红灯亮; St2表示东西路红灯亮,南北路绿灯亮; St3表示东西路红灯亮,南北路黄灯亮;1.2、根据上述四种状态描述列出的状态转换表 表9-1 交通灯控制器状态转换表当前状态下一状态转换条件St0St1主路绿灯亮了40秒St1St2主路黄灯亮了5 秒St2St3主路绿灯亮了 40秒St3St0支路黄灯亮了5秒1.3、根据状态转换表得到交通灯控制器的状态转移图如图所示。 St0St3St1St2 交通灯控制器的状态转移图(二)各个模块设计2.1、控制器模块控制器模块示意图其中,clk为时钟信号,时钟上升沿有效。hold为紧急制动信号,低电平有效。ared,agreen,ayellow分别表示东西方向的红灯,黄灯,绿灯显示信号,高电平有效。bred,bgreen,byellow分别表示南北方向的红灯,黄灯,绿灯显示信号,高电平有效。用于控制红绿黄灯的亮暗情况。2.2、45秒倒计时计数器模块 CLKENCRQL3.0QH3.0OCm45inst245秒倒计时计数器模块示意图 其中,CLK为时钟信号,时钟上升沿有效。EN为使能端,高电平有效。CR为紧急制动信号低电平有效。QL3.0是计数低位。QH3.0是计数高位。用于45秒的倒计时计数。2.3、7位译码器模块7位译码器模块示意图其中dat3.0为要译码的信号。a,b,c,d,e,f,g为译码后的信号。用于将45秒倒计时计数的信号译码成数码管可以识别的信号。2.4、50MHZ分频器模块50MHZ分频器模块示意图其中clk为50MHZ时钟信号,时钟上升沿有效。输出clk_out为1HZ时钟信号,时钟上升沿有效。用于将50MHZ的时钟信号转变成1HZ的时钟信号。(三)结构图设计(四)仿真电路时序仿真图从图中可看到首先进入st0状态,此时东西路绿灯亮,南北路红灯亮;计数器计数到40秒时,交通灯控制器进入st1状态,此时东西路黄灯亮,南北路红灯亮;在st1状态计数器又开始计数,计数器计数到5秒后,交通灯控制器状态进入st2,此时东西路红灯亮,南北路绿灯亮;在st2状态计数器又开始计数,计数器计数到40秒后,交通灯控制器状进入st3状态,此时东西路红灯亮,南北路绿灯亮;在st3状态计数器又开始计数,计数器计数到5秒后,交通灯控制器状态进入st0状态,此时东西路绿灯亮,南北路红灯亮,如些循环反复,完成十字交通路口的红绿灯控制。A0-G0,A1-G1分别为45到0的译码。(五)分配引脚为了对此工程进行硬件测试,应将编译成功后的程序下载到目标芯片上,并指定输入输出信号的管脚,以便添加激励信号和测试输出信号。 在下载编译成功的文件之前,需要制定器件的管脚,选择Assignments|Pins命令,在随后出现的下拉列表框中选择对应端口信号名的器件引脚号,如下图:四、设计总结和心得通过此次EDA设计,我系统性的学习了课本上相关的知识,对课堂上的知识更加了解。通过认真研究课本,使我对EDA程序设计有了一定思路;通过实验课的学习,在程序的设计,程序的调试方面都学到了很多东西,在这几天时间里,实验室的氛围对我们的影响很大,大家一起努力,这也是我们能完成课设的动力。其中在编程中也出现了很多的问题,但通过老师和同学的帮助下,把问题一一解决。其实只要我们自己认真看书,仔细分析,仔细调试,就一定会发下错误,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习EDA更是如此,程序只有经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。五、源代码控制器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control is port(clk,hold:in std_logic; ared,agreen,ayellow,bred,bgreen,byellow:out std_logic);end control;architecture behavior of control is type state_type is (s0,s1,s2,s3,s4); signal current_state,next_state : state_type; signal counter : std_logic_vector(6 downto 0); beginsynch : processbegin wait until clk'event and clk ='1' if hold='0' then counter<=counter; else if counter<89 then counter<=counter+1; else counter<=(others=>'0'); end if; end if; end process; processbegin wait until clk'event and clk='1' current_state<=next_state;end process;state_trans:process(current_state)begin case current_state iswhen s0=> if hold='0' then next_state<=s4; else if counter<39 then next_state<=s0; else next_state<=s1; end if; end if;when s1=> if hold='0' then next_state<=s4; else if counter<44 then next_state<=s1; else next_state<=s2; end if; end if;when s2=> if hold='0' then next_state<=s4; else if counter<84 then next_state<=s2; else next_state<=s3; end if; end if;when s3=> if hold='0' then next_state<=s4; else if counter<89 then next_state<=s3; else next_state<=s0; end if; end if;when s4=> if hold='0' then next_state<=s4; else if counter<39 then next_state<=s0; elsif counter<44 then next_state<=s1; elsif counter<84 then next_state<=s2; elsif counter<89 then next_state<=s3; end if; end if; end case;end process;output:process(current_state)begincase current_state iswhen s0 => ared<='0' agreen<='1' ayellow<='0' bred<='1' bgreen<='0' byellow<='0'when s1 => ared<='0' agreen<='0' ayellow<='1' bred<='1' bgreen<='0' byellow<='0'when s2 => ared<='1' agreen<='0' ayellow<='0' bred<='0' bgreen<='1' byellow<='0'when s3 => ared<='1' agreen<='0' ayellow<='0' bred<='0' bgreen<='0' byellow<='1'when s4 => ared<='1' agreen<='0' ayellow<='0' bred<='1' bgreen<='0' byellow<='0'end case;end process;end behavior;45秒倒计时计数器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m45 isport( CLK :in std_logic; EN :in std_logic; CR :in std_logic; QL,QH :out std_logic_vector(3 downto 0); OC :out std_logic );end m45;architecture behav of m45 is signal couL,couH:std_logic_vector(3 downto 0);begin process(CR,CLK,EN) begin if CR='0' thencouL<="0000"couH<="0000"elsif clk'event and clk='1' thenif EN='1' thenif(couL=0 and couH=0)thencouL<="0100"couH<="0100"elsif couL=0 thencouL<="1001"couH<=couH-1;else couL<=couL-1;end if;end if;end if;end process;process(couL,couH)beginif(couL=0 and couH=0) thenOC<='1'elseOC<='0'end if;end process;QL<=couL;QH<=couH;end behav;7位译码器模块:library ieee;use ieee.std_logic_1164.all;entity seg7 isport(dat : in std_logic_vector(3 downto 0);a,b,c,d,e,f,g : out std_logic);end seg7;architecture arc of seg7 issignal tmp :std_logic_vector(6 downto 0);beginprocess(dat)begincase dat iswhen"0000"=>tmp<="0000001"when"0001"=>tmp<="1001111"when"0010"=>tmp<="0010010"when"0011"=>tmp<="0000110"when"0100"=>tmp<="1001100"when"0101"=>tmp<="0100100"when"0110"=>tmp<="0100000"when"0111"=>tmp<="0001111"when"1000"=>tmp<="0000000"when"1001"=>tmp<="0000100"when"1010"=>tmp<="0001000"when"1011"=>tmp<="1100000"when"1100"=>tmp<="0110001"when"1101"=>tmp<="1000010"when"1110"=>tmp<="0110000"when"1111"=>tmp<="0111000"when others=>null;end case;end process;a<=tmp(6);b<=tmp(5);c<=tmp(4);d<=tmp(3);e<=tmp(2);f<=tmp(1);g<=tmp(0);end arc;50MHZ分频器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity devide isport(clk :in std_logic;clk_out :out std_logic);end devide;architecture arc_devide of devide isbeginprocess(clk)variable count:integer range 0 to 49999999;beginif clk'event and clk='1' thenif(count=49999999)thencount:=0;clk_out<='1'elsecount:=count+1;clk_out<='0'end if;end if;end process;end architecture arc_devide;-第 - 9 - 页-

    注意事项

    本文(交通灯控制器的设计(10页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开