- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交通信号灯的控制与实现
数字系统设计
实验报告
实验4:交通信号灯的控制与实现
专业班级:计算机科学与技术
学号: 0936008 姓名:冯帆
学号: 0936036 姓名:张琪
实验地点: 理工楼703 实验时间:2011年5月6日
(具体报告格式参考如下)
实验4:交通信号灯的控制与实现
一、实验目的了解交通灯管理的基本工作原理。
熟悉计数器/定时器的工作方式及应用编程。
掌握多位LED显示的方法。 PC机
2. 数字系统设计实验开发板
三、实验步骤:
1.根据实验要求作预习报告。
2.建立工程,设计程序:
1)新建工程;
2)新建verilog HDL文件(注:文件名和模块名称要和工程名保持一致)。
3)调试程序:
3. 配置管脚:
参照实验指导中的管脚图,配置管脚。
4.下载到开发板,观察实验结果,尝试创造自己的实验方案:
四、结构图(或详细程序):
1)时序分析:
本实验所设计的交通信号适用于在两条干道汇合点形成的十字交叉路口,路口设计两组红绿灯分别对两个方向上的交通运行状态进行管理。交通灯的闪亮时序如图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交通灯恢复正常。
详细程序如下:
module traffic(clk,hold,dg,ds,la,lb);
input clk;
input hold;
output [0:2] la,lb;
output [0:7] dg,ds;
reg [0:2] la,lb;
reg [0:7] dg,ds;
reg conj,disj;
integer coni,disi;
reg [0:6]set,a,ag,ad,bg,bd;
/*------------------分频模块------------------*/
//1Hz的分频信号
always @(posedge clk)
begin
if(hold)
begin coni=coni;end
else
begin
if (coni9999999)
begin
conj=~conj;
coni=0;
end
else
coni=coni+1;
end
end
//控制显示的分频信号
always @(posedge clk)
begin
if(disi9999)
begin
disj=~disj;
disi=0;
end
else
disi=disi+1;
end
/*----------------------计时模块-------------------------------*/
always@(posedge conj)
begin
if(a=50)
a=0;
else
a=a+1;
end
/*-------------------------交通灯显示控制------------------------------------*/
always@(posedge clk)
begin
if(hold)
begin la=3b100;lb=3b100;end
else
begin
if(a=20)
begin la=3b001;lb=3b100;end
else if(a=25 a20)
begin la=3b010;lb=3b100;end
else if(a25 a45)
begin la=3b100;lb=3b001;end
else if(a
文档评论(0)