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

上传人:b****5 文档编号:28715241 上传时间:2023-07-19 格式:DOCX 页数:15 大小:522.22KB
下载 相关 举报
《EDA技术及应用》实训报告.docx_第1页
第1页 / 共15页
《EDA技术及应用》实训报告.docx_第2页
第2页 / 共15页
《EDA技术及应用》实训报告.docx_第3页
第3页 / 共15页
《EDA技术及应用》实训报告.docx_第4页
第4页 / 共15页
《EDA技术及应用》实训报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

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

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

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

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

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

学号1151100130

姓名龙舟

指导教师:

梁勇

2013年7月8日

 

实训题目:

万年历

1系统设计

1.1设计要求

1.1.1设计任务

设计一个数字日历电路

1.1.2性能指标要求

⑴用VerilogHDL语言设计一个数字日历。

⑵数字日历能正确显示年、月、日、时、分和秒。

⑶通过开关分别控制对年、月、日或时、分、秒校对及自动切换、,并且

运用按钮对年、月、日或时、分、秒校对。

⑷通过按钮对数码管全部清零。

1.2设计思路及设计框图

1.2.1设计思路

通过EDA课程的学习,可知运用VerilogHDL语言设计一个数字日历括计时器模块(jsq60、jsq24)、年月日模块(nyr2009)、控制模块(conr)、校时选择模块(mux_4)、显示选择模块(mux_16);然后将各个模块连接起来画成原理图再下载到实训仪上,调节开关及按钮来实现数字日历的功能

1.2.2总体设计框图

 

2各个模块程序的设计

(1)设计一个分频器进行20MHz分频得到实训所需的1Hz的频率

 

分析:

这是个20MHZ时钟的分频器,将原来EDA实训仪提供的频率为20MHZ的时钟转换成频率1HZ的时钟,然后输出到有需要的端口,触发模块起作用。

(2)分别设计一个能显示年月日和时分秒的程序

校准年月日和秒分时的原理图如下:

 

分析:

①当k=0时,开关j1,j2,j3校秒时分然后将信号分别送到jsq24模块的jm(校秒)、jf(校分)、js(校时)。

②当k=1时,开关j1,j2,j3校年月日然后将信号分别送到nyr2009模块的jr(校日)、jy(校月)、jn(校年)。

计算年月日的模块如下:

 

分析:

clrn是异步清除输入端,低电平有效;clk是时钟输入端,上升沿有效;jn、jy和jr分别是校年、校月、校日输入端;qn[15..0]、qy[7..0]、qr[7..0]分别是年、月、日的输出端。

计时器模块如下:

 

分析:

cln是异步清除输入端,低电平有效;clk是时钟输入端,上升沿有效;im、if和is分别是校秒、校分、校时输入端;qm[7..0]、qf[7..0]、qs[7..0]分别是年、月、日的输出端;cout是进位;

显示时分秒与年月历的模块如下:

分析:

①当k=0时,把jsq24送来的时分秒的状态信号送到数码管显示。

②当k=1时,把nyr2009送来的年月日的状态信号送到数码管显示。

3调试过程

在这次的实训中我选择了EDA课程中讲解过的万年历的设计,在其基础上添加了时间、日期自动切换一个拓展功能,通过运用VerilogHDL语言对程序进行设计,然后运用QuartusII9.0软件对各程序进行编译,看是否能通过,如有错误可以逐条对语句进行调试,当所有模块编译成功后就下载到EDA工具实验箱进行验证。

4功能测试

4.1测试仪器与设备

QuartusII9.0软件以及eda实训开发箱

4.2性能指标测试

能够正常显示计时以及显示日期及其来回切换和自动切换。

4.3误差分析(某些题目需要)

××××××××××××××××××××

5实训心得体会

通过这两周的EDA实训,不仅更熟练的运用VerilogHDL语言在QuartusII9.0软件上的设计方法与步骤,还在参考资料后添加了一个日期,时间自动跳转模块拓展功能完成了数字日历电路的设计。

在实训过程中,设计切换模块时,不能自动切换,后来在老师的指导下,在控制模块(contr)前面加一个分频器(clkgen)就可以实现8秒自动切换功能。

从一开始接受课程任务,建立设计框图,再到网上查阅相关资料,确定电路图到最终制作成型,每一步都必须真诚付出。

刚开始我是做的并不成功,不能实现切换功能。

在多次检修之后,最终实现了课程设计作业的全部功能。

将各个部分组成起来设计成为万年历功能。

通过这次EDA实训我对数字逻辑电路也更加地了解,有了更直观的了解。

6参考文献

例:

[1]谢自美.电子线路设计·实验·测试(第二版).武汉:

华中科技大学出版社,2000

附录

附录1:

仿真波形图(部分模块)

Clkgen模块波形仿真图:

 

Cnt24模块波形仿真图:

 

Jishuqi模块波形仿真图:

 

Mux_4模块波形仿真图:

 

Mux_16模块波形仿真图:

 

Nry2009模块波形仿真图:

 

附录2:

程序清单

1、contr模块程序

modulecontr(clk,k1,k2,k);

inputclk,k1,k2;

outputregk;

reg[3:

0]qc;

regrc;

always@(posedgeclk)

beginqc=qc+1;

if(qc<8)rc=0;

elserc=1;

case({k1,k2})

0:

k=rc;

1:

k=0;

2:

k=1;

3:

k=rc;

endcase

end

endmodule

2、mux_4模块程序

modulemux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3);

inputk,j1,j2,j3;

outputregjm,jf,js,jr,jy,jn;

always

begin

if(k==0){jm,jf,js}={j1,j2,j3};

else{jr,jy,jn}={j1,j2,j3};

end

endmodule

3、clkgen模块程序

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

4、cnt60模块程序

modulecnt60(clk,cln,j,q,cout);

inputclk,cln,j;

outputreg[7:

0]q;

outputregcout;

always@(posedgeclk^jornegedgecln)

begin

if(~cln)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

if(q=='h59)cout=1;

elsecout=0;end

end

endmodule

5、cnt24模块程序

modulecnt24(clk,q,j,cln,cout);

inputclk,cln,j;

outputreg[7:

0]q;

outputregcout;

always@(posedgeclk^jornegedgecln)

begin

if(~cln)q=0;

elsebegin

if(q=='h23)q=0;

elseq=q+1;

if(q[3:

0]=='ha)begin

q[3:

0]=0;q[7:

4]=q[7:

4]+1;end

if(q=='h23)cout=1;

elsecout=0;end

end

endmodule

6、nyr2009模块程序

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;

reg[7:

0]date;

regclkn1,clkn2,clkn3;

initialbeginclkn1=1;clkn2=1;clkn3=1;end

initialbeginqn='h2000;qy=1;qr=1;end

always@(posedge(clk^jr)ornegedgeclrn)

begin

if(~clrn)qr=1;

elsebegin

if(qr==date)qr=1;

elseqr=qr+1;

if(qr[3:

0]=='ha)begin

qr[3:

0]=0;qr[7:

4]=qr[7:

4]+1;end

if(qr==date)clky=1;

elseclky=0;end

end

always@(posedgeclky^jyornegedgeclrn)

begin

if(~clrn)qy=1;

elsebegin

if(qy=='h12)qy=1;

elseqy=qy+1;

if(qy[3:

0]=='ha)begin

qy[3:

0]=0;qy[7:

4]=qy[7:

4]+1;end

if(qy=='h12)clkn=1;

elseclkn=0;end

end

always

begin

case(qy)

'h01:

date='h31;

'h02:

begin

if((qn/4==0)&(qn/100!

=0)|(qn/400==0))date='h29;

elsedate='h28;end

'h03:

date='h31;

'h04:

date='h30;

'h05:

date='h31;

'h06:

date='h30;

'h07:

date='h31;

'h08:

date='h31;

'h09:

date='h30;

'h10:

date='h31;

'h11:

date='h30;

'h12:

date='h31;

default:

date='h30;

endcase

end

always@(posedge(clkn^jn)ornegedgeclrn)

begin

if(~clrn)qn[3:

0]=0;

elsebeginif(qn[3:

0]==9)qn[3:

0]=0;

elseqn[3:

0]=qn[3:

0]+1;

if(qn[3:

0]==9)clkn1=0;

elseclkn1=1;end

end

always@(posedgeclkn1ornegedgeclrn)

begin

if(~clrn)qn[7:

4]=0;

elsebeginif(qn[7:

4]==9)qn[7:

4]=0;

elseqn[7:

4]=qn[7:

4]+1;

if(qn[7:

4]==9)clkn2=0;

elseclkn2=1;end

end

always@(posedgeclkn2ornegedgeclrn)

begin

if(~clrn)qn[11:

8]=0;

elsebeginif(qn[11:

8]==9)qn[11:

8]=0;

elseqn[11:

8]=qn[11:

8]+1;

if(qn[7:

4]==9)clkn3=0;

elseclkn3=1;end

end

always@(posedgeclkn3ornegedgeclrn)

begin

if(~clrn)qn[15:

12]=2;

elseif(qn[15:

12]==9)qn[15:

12]=0;

elseqn[15:

12]=qn[15:

12]+1;

end

endmodule

7、mux_16模块程序

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:

0]q;

always

begin

if(k==0)begin

q[31:

24]=0;

q[23:

0]={qs,qf,qm};end

elseq={qn,qy,qr};

end

endmodule

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

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

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