桂林电子科技大学EDA实训交通灯控制电路的设计.docx

上传人:b****6 文档编号:11884473 上传时间:2023-06-03 格式:DOCX 页数:13 大小:21.28KB
下载 相关 举报
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第1页
第1页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第2页
第2页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第3页
第3页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第4页
第4页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第5页
第5页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第6页
第6页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第7页
第7页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第8页
第8页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第9页
第9页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第10页
第10页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第11页
第11页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第12页
第12页 / 共13页
桂林电子科技大学EDA实训交通灯控制电路的设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

桂林电子科技大学EDA实训交通灯控制电路的设计.docx

《桂林电子科技大学EDA实训交通灯控制电路的设计.docx》由会员分享,可在线阅读,更多相关《桂林电子科技大学EDA实训交通灯控制电路的设计.docx(13页珍藏版)》请在冰点文库上搜索。

桂林电子科技大学EDA实训交通灯控制电路的设计.docx

桂林电子科技大学EDA实训交通灯控制电路的设计

桂林电子科技大学信息科技学院

《EDA技术及应用》实训报告

学号06

姓名陈力

指导教师:

李德明

2014年4月29日

交通灯控制电路的设计

1系统设计

1.1设计要求

1.1.1设计任务

用EDA实训仪上的4只八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。

1.1.2性能指标要求

能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。

交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。

红、绿、黄灯显示的次序应符合实际交通道路控制的要求。

1.2设计思路及设计框图

fpq是分频器,将EDA实训仪主板提供的20MHz的主频经分频后,得到电路所需的1Hz(1秒)时钟。

Rgwork和ywork是减法计数器,产生道路东西和南北通行和禁止的倒计时时间。

Counter是控制电路,控制整个系统的工作。

控制器接收倒计时的结果,当倒计时归0时,改变电路的控制模式,输出倒计时的初始时间和交通灯亮灭控制信号。

6输入或非门和2输入与非门组成了简易密码锁的功能(通过拨码开关实现)。

分频器交通灯控制电路数码管及LED灯

2各个模块程序的设计

2.1分频器模块的设计

分频器模块截图:

分频器模块程序设计:

modulefpq(clk,newclk);

inputclk;

outputregnewclk;

reg[24:

0]counter;

always@(posedgeclk)

begin

counter=counter+1;

if(counter>=)counter=0;

if(counter<=)newclk='b1;

elseif(counter>)newclk='b0;

end

endmodule

2.2红绿灯模块设计

红绿灯模块截图:

红绿灯模块程序设计:

modulergwork(clk,clrn,ydbj,gzfs,LED,t1,t2,q1,q2);

inputclk,clrn;

input[7:

0]q1,q2;

outputregydbj;

outputreg[1:

0]gzfs;

outputreg[7:

0]LED;

outputreg[7:

0]t1,t2;

reg[7:

0]rtime,gtime,ytime,rtime1='h20,gtime1='h16;

reg[1:

0]z;

initialbeginrtime='h20;gtime='h16;ytime='h03;ydbj=0;z=0;end

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)ydbj=1;

else

begin

if(q1==0||q2==0)ydbj=1;

else

begin

ydbj=0;

rtime=rtime1;gtime=gtime1;

end

end

end

always@(posedgeydbjornegedgeclrn)

begin

if(~clrn)

begin

t1=rtime;t2=gtime;LED='b01100110;gzfs=2;z=0;

end

else

begin

z=z+1;

case(z)

0:

begint1=rtime;t2=gtime;LED='b01100110;gzfs=2;end

1:

begint1=ytime;t2=ytime;LED='b00100010;gzfs=0;end

2:

begint1=gtime;t2=rtime;LED='b;gzfs=2;end

3:

begint1=ytime;t2=ytime;LED='b;gzfs=1;end

default:

begint1=rtime;t2=gtime;LED='b01100110;gzfs=2;end

endcase

end

end

endmodule

2.3黄灯模块设计

黄灯模块截图:

黄灯模块程序设计:

moduleywork(gzfs,clk,clrn,q1,q2,LED_h);

input[7:

0]q1,q2;

inputclk,clrn;

input[1:

0]gzfs;

outputreg[3:

0]LED_h;

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)

LED_h='b0000;

else

begin

if(gzfs==0)

begin

if(q1=='h03&&q2=='h03)LED_h='b1010;

if(q1=='h02&&q2=='h02)LED_h='b0000;

if(q1=='h01&&q2=='h01)LED_h='b1010;

if(q1=='h00&&q2=='h00)LED_h='b0000;

end

if(gzfs==1)

begin

if(q1=='h03&&q2=='h03)LED_h='b0101;

if(q1=='h02&&q2=='h02)LED_h='b0000;

if(q1=='h01&&q2=='h01)LED_h='b0101;

if(q1=='h00&&q2=='h00)LED_h='b0000;

end

end

end

endmodule

2.4控制模块的设计

控制模块截图:

控制模块程序设计:

modulecountor(ts,en,clk,ybj,t1,t2,q1,q2);

inputclk,ybj,en,ts;

input[7:

0]t1,t2;

outputreg[7:

0]q1,q2;

always@(posedgeclk^tsorposedgeybjorposedgeen)

begin

if(en)beginq1=q1;q2=q2;end

else

begin

if(ybj)beginq1=t1;q2=t2;end

else

begin

if(q1==0)q1='h99;

elsebeginq1=q1-1;end

if(q1[3:

0]>='ha)q1[3:

0]=9;

if(q2==0)q2='h99;

elsebeginq2=q2-1;end

if(q2[3:

0]>='ha)q2[3:

0]=9;

end

end

end

endmodule

3调试过程

用QuartusⅡ软件对程序编译成功后下载到EDA试验箱。

LED开始亮,四个数码管显示3s倒计时,即黄灯开始进入闪烁状态,然后开始实现东西方绿灯,南北方红灯状态。

绿灯倒计时结束以后黄灯再次闪烁,随后进入南北方绿灯,东西方红灯状态。

并不断自动进行转换。

当S15拨到上方时,实现交通灯暂停(使能端作用)。

当K8按键按下时,交通灯自动恢复到初始化状态。

当将S3,S2,S1,S0拨为1010并按下K7按键能实现减计数调时。

4功能测试

4.1测试仪器与设备

EDA实训箱、计算机一台、QuartusⅡ软件

4.2性能指标测试

基本实现要求,初始化南北方向为红灯,东西方向为绿灯,倒计时20s,东西方向开始黄灯闪烁3秒,同时南北方向还为红灯,3秒后东西方向变为红灯,南北方向变为绿灯。

倒计时的同时数码管交替显示不同亮灯的倒计时时间。

实现4位数码管显示。

拨码开关S15实现暂停功能,S3到S0四个拨码开关实现简易密码锁功能(当拨“1010”时,可以实现调时功能,密码错误时则无法实现调时功能)。

两个按键K8,K7分别实现复位与调时功能(调时功能在密码正确情况下实现)。

5实训心得体会

这次实验使我更进一步地熟悉了VHDL硬件描述语言的设计思想,同时通过对程序的调试也使自己对VHDL语言的语法,结构和基本语句有了更深刻的了解。

在设计较复杂数字电路系统时最好采用分层设计的方法,分为各个功能模块,逐个进行仿真,最后通过顶层文件调用各个底层文件完成设计,程序也便于修改如程序要增加一些功能也只需加入相应的模块即可。

在设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。

在今后的工作和学习中,我们不能仅仅把目光停留在课本上,要多理论联系实际。

有的时候,理论上是正确的东西放到现实中去,可能由于种种因素的制约,并不能达到实际的效果,还需要我们进行相应的修改才能完成要求。

这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。

6参考文献

【1】江国强.《新编数字逻辑电路》北京邮电大学出版社2006年12月

【2】江国强.《EDA技术与应用》电子工业出版社2010年4月

【3】王金明、冷自强.《EDA技术与Verilog设计》科学出版社2008年8月

【4】谢自美.《电子线路设计·实验·测试(第二版)》武汉华中科技大学出版社2000

【5】谭会生、张昌凡《EDA技术与应用---VerilogHDL版》西安电子科技大学出版社

附录

附录1:

仿真波形图(部分模块)

分频器模块波形仿真:

红绿灯模块波形仿真:

 

黄灯模块波形仿真:

控制模块波形仿真:

附录2:

程序清单

分频器模块程序设计:

modulefpq(clk,newclk);

inputclk;

outputregnewclk;

reg[24:

0]counter;

always@(posedgeclk)

begin

counter=counter+1;

if(counter>=)counter=0;

if(counter<=)newclk='b1;

elseif(counter>)newclk='b0;

end

endmodule

红绿灯模块程序设计:

modulergwork(clk,clrn,ydbj,gzfs,LED,t1,t2,q1,q2);

inputclk,clrn;

input[7:

0]q1,q2;

outputregydbj;

outputreg[1:

0]gzfs;

outputreg[7:

0]LED;

outputreg[7:

0]t1,t2;

reg[7:

0]rtime,gtime,ytime,rtime1='h20,gtime1='h16;

reg[1:

0]z;

initialbeginrtime='h20;gtime='h16;ytime='h03;ydbj=0;z=0;end

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)ydbj=1;

else

begin

if(q1==0||q2==0)ydbj=1;

else

begin

ydbj=0;

rtime=rtime1;gtime=gtime1;

end

end

end

always@(posedgeydbjornegedgeclrn)

begin

if(~clrn)

begin

t1=rtime;t2=gtime;LED='b01100110;gzfs=2;z=0;

end

else

begin

z=z+1;

case(z)

0:

begint1=rtime;t2=gtime;LED='b01100110;gzfs=2;end

1:

begint1=ytime;t2=ytime;LED='b00100010;gzfs=0;end

2:

begint1=gtime;t2=rtime;LED='b;gzfs=2;end

3:

begint1=ytime;t2=ytime;LED='b;gzfs=1;end

default:

begint1=rtime;t2=gtime;LED='b01100110;gzfs=2;end

endcase

end

end

endmodule

黄灯模块程序设计:

moduleywork(gzfs,clk,clrn,q1,q2,LED_h);

input[7:

0]q1,q2;

inputclk,clrn;

input[1:

0]gzfs;

outputreg[3:

0]LED_h;

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)

LED_h='b0000;

else

begin

if(gzfs==0)

begin

if(q1=='h03&&q2=='h03)LED_h='b1010;

if(q1=='h02&&q2=='h02)LED_h='b0000;

if(q1=='h01&&q2=='h01)LED_h='b1010;

if(q1=='h00&&q2=='h00)LED_h='b0000;

end

if(gzfs==1)

begin

if(q1=='h03&&q2=='h03)LED_h='b0101;

if(q1=='h02&&q2=='h02)LED_h='b0000;

if(q1=='h01&&q2=='h01)LED_h='b0101;

if(q1=='h00&&q2=='h00)LED_h='b0000;

end

end

end

endmodule

控制模块程序设计:

modulecountor(ts,en,clk,ybj,t1,t2,q1,q2);

inputclk,ybj,en,ts;

input[7:

0]t1,t2;

outputreg[7:

0]q1,q2;

always@(posedgeclk^tsorposedgeybjorposedgeen)

begin

if(en)beginq1=q1;q2=q2;end

else

begin

if(ybj)beginq1=t1;q2=t2;end

else

begin

if(q1==0)q1='h99;

elsebeginq1=q1-1;end

if(q1[3:

0]>='ha)q1[3:

0]=9;

if(q2==0)q2='h99;

elsebeginq2=q2-1;end

if(q2[3:

0]>='ha)q2[3:

0]=9;

end

end

end

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2