《EDA技术与应用》实训报告Word文档格式.docx
《《EDA技术与应用》实训报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《《EDA技术与应用》实训报告Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
2.1.1各个模块程序的设计
1:
分频器
20万分频
2千万分频
modulegen(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
modulegen_mb(clk,cout);
begin
if(q==200000-1)q=0;
if(q==200000-1)cout=1;
2:
六十进制计数器模块
modulecnt60(clk,clrn,j,q,cout);
inputclk,clrn,j;
outputreg[7:
always@(posedgeclk^jornegedgeclrn)
if(~clrn)q=0;
elsebegin
if(q=='
h59)q=0;
elseq=q+1;
if(q[3:
0]=='
ha)begin
q[3:
0]=0;
q[7:
4]=q[7:
4]+1;
end
h59)cout=1;
elsecout=0;
endmodule
3:
二十四进制计数器模块
modulecnt24(clk,clrn,j,q,cout);
h23)q=0;
h23)cout=1;
4:
100进制计数器模块
modulecnt100(clk,clrn,j,q,cout);
reg[7:
0]flay;
always@(j)
if(j)flay=0;
elseflay=1;
always@(posedgeclkornegedgeclrn)
elseif(flay==0)begin
if(q==99)q=0;
hff)begin
if(q==99)cout=1;
5:
年月日模块
modulenyr2009(clrn,clk,jn,jy,jr,qn,qy,qr);
inputclrn,clk,jn,jy,jr;
output[15:
0]qn;
output[7:
0]qy,qr;
reg[15:
0]qn;
reg[7:
0]qy,qr;
regclkn,clky;
0]date;
regclkn1,clkn2,clkn3;
initialbeginclkn1=1;
clkn2=1;
clkn3=1;
initialbeginqn='
h2000;
qy=1;
qr=1;
end
always@(posedge(clk^jr)ornegedgeclrn)
if(~clrn)qr=1;
elsebegin
if(qr==date)qr=1;
elseqr=qr+1;
if(qr[3:
ha)begin
qr[3:
qr[7:
4]=qr[7:
if(qr==date)clky=1;
elseclky=0;
end
always@(posedgeclky^jyornegedgeclrn)
if(~clrn)qy=1;
if(qy=='
h12)qy=1;
elseqy=qy+1;
if(qy[3:
qy[3:
qy[7:
4]=qy[7:
h12)clkn=1;
elseclkn=0;
always
case(qy)
'
h01:
date='
h31;
h02:
if((qn%4==0)&
(qn%100!
=0)|(qn%400==0))date='
h29;
elsedate='
h28;
h03:
h04:
h30;
h05:
h06:
h07:
h08:
h09:
h10:
h11:
h12:
default:
date='
endcase
always@(posedge(clkn^jn)ornegedgeclrn)
if(~clrn)qn[3:
elsebeginif(qn[3:
0]==9)qn[3:
elseqn[3:
0]=qn[3:
0]+1;
if(qn[3:
0]==9)clkn1=0;
elseclkn1=1;
always@(posedgeclkn1ornegedgeclrn)
if(~clrn)qn[7:
4]=0;
elsebeginif(qn[7:
4]==9)qn[7:
elseqn[7:
4]=qn[7:
if(qn[7:
4]==9)clkn2=0;
elseclkn2=1;
always@(posedgeclkn2ornegedgeclrn)
if(~clrn)qn[11:
8]=0;
elsebeginif(qn[11:
8]==9)qn[11:
elseqn[11:
8]=qn[11:
8]+1;
if(qn[11:
8]==9)clkn3=0;
elseclkn3=1;
always@(posedgeclkn3ornegedgeclrn)
if(~clrn)qn[15:
12]=2;
elseif(qn[15:
12]==9)qn[15:
12]=0;
elseqn[15:
12]=qn[15:
12]+1;
6:
信号k控制模块
modulecontr(clk,k1,k2,k);
inputclk,k1,k2;
outputregk;
reg[3:
0]qc;
regrc;
beginqc=qc+1;
if(qc<
8)rc=0;
elserc=1;
case({k1,k2})
0:
k=rc;
1:
k=0;
2:
k=1;
3:
endmodule
7:
校时选择模块
modulemux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3,);
inputj1,j2,j3;
inputk;
outputregjm,jf,js,jr,jy,jn;
always
if(k==0){jm,jf,js}={j1,j2,j3};
else{jr,jy,jn}={j1,j2,j3};
8:
24小时计数器
modulecnt24(clrn,clk,q,j,cont);
inputclrn,clk,j;
outputreg[7:
outputregcont;
ha)beginq[3:
q[7:
h23)cont=1;
elsecont=0;
9:
.显示器选择器
modulemux_16(k,qm,qf,qs,qr,qy,qn,q);
inputk;
input[7:
0]qm,qf,qs,qr,qy;
input[15:
0]qn;
outputreg[31:
begin
if(k==0)begin
q[31:
24]=0;
q[23:
0]={qs,qf,qm};
elseq={qn,qy,qr};
Endmodule
10:
闹钟模块
naozhong(qs,qf,led,zt);
inputzt;
input[7:
0]qs,qf;
outputled;
regled;
if(qs=='
h06&
&
qf=='
h01)
led=1;
else
led=0;
if(zt==1)led=0;
3.制作与调试过程
在实验中参考上课中学的万年历,在原有的基础上添加了一个闹钟功能,用LED代替实际的闹钟,在设置的时间内闪烁1分钟,又添加姨暂停按键,实现闹钟关闭功能,由于能力有限,没能加上其他功能的创新,是此次实训设计的缺憾,在调试过程中也比较顺利,在经过一段时间的调试后,基本就能实现功能,而主要时间用在了对原来的程序理解上。
4.实训心得体会
通过这次实训,使我对EDA有了很多的了解,同时对EDA试验箱内部的工作原理有了更深一步的理解,学习了硬件引脚绑定过程,以及绑定的一些基本常识,并动手完成了绑定,这样不仅拓宽我们的知识面,增强动手能力和实践能力,同时还培养我们的分析和解决实际问题的能力。
由于刚刚学习了EDA,自己做的功能又比较简单,所以在实训过程中基本没遇到什么太大的困难,但是,同样也提高了自己的动手动脑能力,进一步加深了对EDA编程的理解,熟练了一下软件编程和硬件的结合,对以后熟练使用EDA有很大的好处,毕竟是自己动手开始做了东西,而不是一味的参照老师的上课内容,虽然比较简单。
这次实训给自己的带来的东西真的很多,提高了以后自己动手去练习EDA的兴趣。
5.参考文献
【1】江国强.EDA技术与应用(第三版).电子工业出版社,2011年7月
【2】谢自美.电子线路设计·
实验·
测试(第二版).武汉:
华中科技大学出版社,2000
附录:
仿真波形图(部分模块)
附录2:
程序清单
modulemux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3);
inputk,j1,j2,j3;
if(k==0){jm,jf,js}={j1,j2,j3};
modulecnt60(clrn,clk,q,j,cont);
h59)cont=1;
if(k==0)begin
modulenaozhong(qs,qf,led,zt);