EDA实训.docx

上传人:b****6 文档编号:8121194 上传时间:2023-01-28 格式:DOCX 页数:13 大小:592.97KB
下载 相关 举报
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

《EDA实训.docx》由会员分享,可在线阅读,更多相关《EDA实训.docx(13页珍藏版)》请在冰豆网上搜索。

EDA实训.docx

EDA实训

XXXXXXX学院

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

学号XXXXXXX

姓名XXX

指导教师:

XXXXXX

2011年4月29日

 

EDA实训报告格式:

实训题目:

1.系统设计

1.1设计要求

1.1.1设计任务

通过veilog语言编程,设计一个符合题目要求的交通灯模型,并能下载到EDA实训仪实现相应的功能。

1.1.2技术要求

本次实训技术要求如下:

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

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

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

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

1.2方案比较

方案一:

此方案需要设计分频器clkgen模块和控制contr模块各一块,灯的模块只设计一个模块,没有将黄灯和红绿灯分开。

此方案需要定义一个12位的reg型变量来控制红黄绿三色LED灯,其中实训的技术要求需要黄灯实现倒计时外还要闪烁,加上闪的功能,此模块在编程上比较不容易设计。

方案二:

此方案同样需要设计分频器clkgen模块和控制contr模块各一块,跟方案一的区别是:

灯的模块分了两个子模块,一个子模块专门用来控制红、绿灯的,即为rglight模块,这个子模块通过定义一个8位的reg型变量来控制红、绿LED灯;另外一个子模块通过定义一个4位的reg型变量来控制黄灯,即为ylight模块。

此方案将黄灯和红绿灯分开设计,方便实现黄灯的闪烁功能。

本次实训我所采取的是方案二。

1.3方案论证

1.3.1总体思路

本次实训所要实现的是交通灯的控制系统的设计,通过分析实训技术要求,得出完成实训需要设计的包括三个部分。

其一,分频器的设计即clkgen模块。

这个模块是把EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1秒脉冲。

其二,控制模块即contr模块。

这个模块主要是实现一个99秒倒计时功能,所以设计成一个十进制减法计数器来实现道路东西和南北通行和禁止的倒计时时间。

其三,灯的控制模块部分,分两个子模块实现,rglight模块是红绿灯控制模块,ylight模块是黄灯控制模块,这两个模块都是靠读取contr模块的时间来实现相应的控制功能的。

当contr模块的倒计时减到0时,则数码管输出倒计时的初始化时间,交通灯进入另外一种状态。

我们可以通过改变rglight模块中的初始化时间来调节红绿灯的倒计时来完善各个时间断的交通情况。

1.3.2设计方案

原理图

2.各个模块程序的设计

1)分频器模块:

分频器实现的是将高频脉冲信号转换成低频的脉冲信号,用于触发控制器、计数器和扫描显示电路。

该分频器实现的是二千万分频脉冲信号的产生。

 

a.设计模块截图

b.设计程序

moduleclkgen(clk,cout);

inputclk;

reg[24:

0]q;

outputregcout;

always@(posedgeclk)

begin

if(q==20000000-1)q=0;

elseq=q+1;

if(q==20000000-1)cout=1;

elsecout=0;

end

endmodule

2)黄绿灯的控制模块

a.设计模块截图

b.程序部分

modulerglight(clk,clrn,yzflag,flag,LED,t1,t2,q1,q2);

inputclk,clrn;

input[7:

0]q1,q2;

outputregyzflag;

outputreg[1:

0]flag;

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;yzflag=0;z=0;end

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)yzflag=1;

else

begin

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

else

begin

yzflag=0;

rtime=rtime1;gtime=gtime1;

end

end

end

always@(posedgeyzflagornegedgeclrn)

begin

if(~clrn)

begin

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

end

else

begin

z=z+1;

case(z)

0:

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

1:

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

2:

begint1=gtime;t2=rtime;LED='b10011001;flag=2;end

3:

begint1=ytime;t2=ytime;LED='b10001000;flag=1;end

default:

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

endcase

end

end

endmodule

 

3)黄灯模块

a.设计模块截图

b.程序部分

moduleylight(flag,clk,clrn,q1,q2,LED_h);

input[7:

0]q1,q2;

inputclk,clrn;

input[1:

0]flag;

outputreg[3:

0]LED_h;

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)

LED_h='b0000;

else

begin

if(flag==0)//用flag来标记黄灯处于那种工作方式

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(flag==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

4)控制模块

a.设计模块截图

b.程序部分

modulecontr(tiaoshi,en,clk,yzflag,t1,t2,q1,q2);

inputclk,yzflag,en,tiaoshi;

input[7:

0]t1,t2;

outputreg[7:

0]q1,q2;

always@(posedgeclk^tiaoshiorposedgeyzflagorposedgeen)

begin

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

else

begin

if(yzflag)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.制作与调试过程

1)首先,在设计之前应该根据要求想好交通灯的整个设计流程图,交通灯分红绿黄,且黄灯还要实现闪烁,这是需要注意的。

2)对各个小模块的程序进行编写和调试

3)各个小模块的程序基本调试完毕之后,接着就要从整个交通灯系统的角度去对一些细节部分进行修改得以完善

4.结论

本次实训我采取的是方案二的设计。

因为方案一在实现黄灯闪这个功能上比较困难,而方案二用两个子模块来实现,一个子模块控制红绿灯,定义一个8位的reg的变量来控制8个LED灯;一个子模块专门控制黄灯,定义一个4位的reg的变量来控制4个LED灯,就比较容易实现了。

5.实训心得体会

通过这次EDA实训,我学会了如何设计一个交通灯控制电路并且提前成功验收。

其中,实训过程中让我对EDA软件QuartusⅡ有了更好的了解,不仅提高了我的编程能力,同时还让我对交通灯控制系统也进一步认识并加深了学习。

实训当中,我遇到许多问题,首先是在方案上的选择,通过跟同学们的讨论研究,我本来要设计一个三个模块的交通灯电路,但由于在设计灯模块上编程出不得,所以才换了另外一个方案,就是本实训所提的第二方案。

这个方案在灯的模块上分出了两个模块,方便了黄灯闪烁的设计,虽然在连线上比较麻烦,但是最终成功调试出来。

然后就是在准备验收时候出现了一个小问题,我在定义case变量时候忽略了定义为reg型的,导致在第一天下午要提前验收却验收不了。

最后我通过检查整个工程的内容,找出并改正成功验收了。

实训完成了,在此感谢老师的指导和提前帮忙验收。

这次实训很好地完成,期待下一个实训的到来!

6.参考文献

【1】江国强教授,《EDA技术与应用》(第三版);电子工业出版社

【2】江国强教授,《新编数字逻辑电路》;北京邮电大学出版社

【3】陈炳权,曾庆辉,《EDA技术实用教程》;浙江大学出版社。

附录:

仿真波形图(部分模块)

程序清单

 

c.黄绿灯波形仿真

c黄灯模块波形仿真

 

控制模块仿真波形

分频器

moduleclkgen(clk,cout);

inputclk;

reg[24:

0]q;

outputregcout;

always@(posedgeclk)

begin

if(q==20000000-1)q=0;

elseq=q+1;

if(q==20000000-1)cout=1;

elsecout=0;

end

endmodule

5)黄绿灯的控制模块

modulerglight(clk,clrn,yzflag,flag,LED,t1,t2,q1,q2);

inputclk,clrn;

input[7:

0]q1,q2;

outputregyzflag;

outputreg[1:

0]flag;

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;yzflag=0;z=0;end

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)yzflag=1;

else

begin

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

else

begin

yzflag=0;

rtime=rtime1;gtime=gtime1;

end

end

end

always@(posedgeyzflagornegedgeclrn)

begin

if(~clrn)

begin

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

end

else

begin

z=z+1;

case(z)

0:

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

1:

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

2:

begint1=gtime;t2=rtime;LED='b10011001;flag=2;end

3:

begint1=ytime;t2=ytime;LED='b10001000;flag=1;end

default:

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

endcase

end

end

endmodule

6)黄灯模块

moduleylight(flag,clk,clrn,q1,q2,LED_h);

input[7:

0]q1,q2;

inputclk,clrn;

input[1:

0]flag;

outputreg[3:

0]LED_h;

always@(posedgeclkornegedgeclrn)

begin

if(~clrn)

LED_h='b0000;

else

begin

if(flag==0)//用flag来标记黄灯处于那种工作方式

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(flag==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

7)控制模块

modulecontr(tiaoshi,en,clk,yzflag,t1,t2,q1,q2);

inputclk,yzflag,en,tiaoshi;

input[7:

0]t1,t2;

outputreg[7:

0]q1,q2;

always@(posedgeclk^tiaoshiorposedgeyzflagorposedgeen)

begin

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

else

begin

if(yzflag)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-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1