实验03交通灯控制器的设计与实现.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文档。上传文档
查看更多
实验03交通灯控制器的设计与实现

数字系统课程设计 题目:实验三 交通灯控制器的设计与实现 指导老师: 潘秀琴 实验三 交通灯控制器的设计与实现实验目的了解交通灯管理的基本工作原理。 熟悉计数器/定时器的工作方式及应用编程。 掌握多位LED显示的方法。 设计一个用于十字路口的交通灯控制器。 基本要求: 和方向各有一组红黄绿灯用于指挥交通红黄绿的持续时间分别为25s5s,20s。 当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,正常工作。 一组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。 设计的交通信号适用于在两条干道汇合点形成的十字交叉路口,路口设计两组红绿灯分别对两个方向上的交通运行状态进行管理。交通灯的闪亮时序如图1所示,当B方向的红灯亮时,A方向对应绿灯亮,,即B方向红灯亮的时间等于A方向绿灯和黄灯亮的时间之和。同理,当A方向的红灯变亮时,B方向的交通灯也遵循此规则。各干道上安装有数码管,以倒计时的形式显示本道各信号灯闪亮的时间。当出现特殊情况时,各方向上均亮红灯,倒计时停止。特殊运行状态结束后,控制器恢复原来的状态,继续运行。 图2. 交通灯系统模块图 3)具体设计思路:(AG,AR,AY分别代表A方向的绿、红、黄灯,BG,BR,BY分别代表B方向的绿、红、黄灯) 如图3所示,交通灯在无紧急情况时,可以将程序分为四个部分: (1)AG=1,BR=1;A数码管显示00~20,B数码管显示00~20; (2)AY=1,BR=1;A数码管显示21~25,B数码管显示01~05; (3)AR=1,BG=1;A数码管显示00~20,B数码管显示00~20; (4)AR=1,BY=1;A数码管显示01~05,B数码管显示21~25. 对于紧急情况,只需在计数模块中添加一个控制功能HOLD,当HOLD=1时,计数功能暂停,同时在LED交通灯控制中也添加该模块,使AR=1,BR=1。当HOLD=0时,计数功能和LED交通灯恢复正常。 四、实验步骤 1.根据实验要求作预习报告。 2.建立工程,设计程序: 1)新建工程; 2)新建verilog HDL文件(注:文件名和模块名称要和工程名保持一致)。 3)调试程序: 3. 配置管脚: 参照实验指导中的管脚图,配置管脚。 4.下载到开发板,观察实验结果,尝试创造自己的实验方案: 5. 完成实验报告。 附:本实验的实验框架:见traffic.v 五、实验要求: 实验报告应包含实验目的、实验原理,分析与设计思路,实验程序,对应变量的管脚配置表,实验结果,实验总结。其中具体要求为: 1)程序实现模块化设计,写出设计思路,认真标注代码注释; 2)达到正确地运行结果; 3)实验中出现的问题进行详细总结。 module jiaotd(clk,ji,R,D,L,cs); input clk,ji; output R,L,D,cs; reg tick; reg [1:0]n; reg [50:0]i; reg [10:0]j; reg[2:0]R; reg[2:0]L; reg[7:0]D; reg[6:0]a; reg[6:0]cs; reg[2:0]as; reg[4:0]ag; reg[2:0]bs; reg[4:0]bg; reg [10:0]m; always @(posedge clk) 在clk频率下运行 begin if(ji) begin tick=tick;end else begin i=i+1; if(i==9999999) //对clk信号分频 begin tick=~tick; i=0; end end end always@(posedge tick) //在所分频率下运行 begin //当红绿黄灯循环交替一次所用时间为50s,设置变量a控制循环; if(a==0) a=50 ; else a=a-1; end always@(posedge clk) //在clk频率下运行; begin //L表示B方向的红绿黄灯,用D1、2、3信号灯输出表示;R表示A方向的绿黄红灯,用D6、7、8信号灯输出表示; if (ji) //选用R23开关给出紧急信号, begin L=3b100;R=3b100; // 当波动R23按钮时,A.B方向都亮起红灯; end else //在非紧急情况下 begin if (a=20) //在前20s的时间里 begin L=3b001;R=3b100; end //A方向亮绿灯,B方向亮红灯; else if (a=25a20) //在21s—25s

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档