EDA技术与应用实训报告.docx
- 文档编号:9214872
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:13
- 大小:39.23KB
EDA技术与应用实训报告.docx
《EDA技术与应用实训报告.docx》由会员分享,可在线阅读,更多相关《EDA技术与应用实训报告.docx(13页珍藏版)》请在冰豆网上搜索。
EDA技术与应用实训报告
XX电子科技大学信息科技学院
《EDA技术及应用》实训报告
学号1252100301
姓名
指导覃琴
20XX4月29日
实训题目:
数字日历电路
1系统设计
1.1设计要求
1.1.1设计任务
〔1用VerilogHDL语言设计出能够在EDA实训仪的I/O设备和PLD芯片实现的数字日历。
〔2数字日历能够显示年、月、日、时、分和秒。
〔3用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日〔如20140101,然后在另一时间段内显示时、分、秒〔如010101099,两个时间段能自动倒换。
〔4数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时。
〔5体现创新部分
1.1.2性能指标要求
1数字电路能够在一定的时间内显示切换的功能,并且能手动校准年月日和时分秒
2具有复位和进位的功能
3能起到提示的作用,如闹钟或亮彩灯等。
1.2设计思路及设计框图
1.2.1设计思路
如图1.2.2所示
1EDA实训箱上的功能有限,可以用到的有8支数码管和12个lED灯。
年、月、日和时、分、秒可以通过数码管显示,年月日和时分秒的切换可以通过拨动开关控制,校正可以通过按键实现。
2输入的秒脉冲由DEA实训仪上的20MHZ晶振经过分频得到,秒脉冲经过60分频后产生1分钟脉冲信号,在经过60分频后产生1小时的脉冲信号,最后进行24分频,得到1天的脉冲送24进制的cout输出。
在将两个60分频和一个24分频的输出送到送到数码管的译码器输入端,得到24小时的计时显示结果。
由此得到数字日历的计时器模块。
1.2.2设计框图
coutcout
秒脉冲
图1.2.2数字钟的原理框图
2各个模块程序的设计
2.1图11HZ秒脉冲的分频模块元件符号
2.1输入的秒脉冲由EDA实训仪上的20MHZ晶振经过分频得到,设计一个输出频率为1HZ的秒脉冲。
图1是1HZ秒脉冲的分频模块元件符号
图11HZ秒脉冲的分频模块元件符号
2.2图2是cnt24与cnt60模块设计的元件符号
图2cnt24与cnt60模块的元件符号
2.3图3是计时器设计原理图
clk秒时钟输入端,clrn清除输入端,低电平有效;jm、jf、js分别是校秒、校分和校时的输入端,下降沿有效;qm[7..0]、qf[7..0]和qs[7..0]分别是秒、分、和时的输出端;cout是"天"脉冲输出端。
2.4数字日历电路的设计
数字电路原理图包括包括计时器模块〔jsq、年月日模块〔nyr2014、控制模块〔cour、校时选择模块〔xs_6、显示选择模块〔mux_16和流水灯〔LED提示模块。
图4是数字日历设计的原理图。
图4是数字日历设计的原理图
2.5控制模块的设计
图5是控制模块的元件符号
图5控制模块的元件符号
clk是1s时钟输入端;k1和k2是控制输入端,k是控制输出端。
k1k2=00或11时是自动显示模块,控制数码器用8s钟时间显示年月日8s显示时分秒,k1k2=01时仅控制显示时分秒,同时用j1、j2、j3校秒、校分和校时,k1k2=10时,仅显示年、月、日,同时用j1、j2、j3校年、校月和校日。
2.6校时选择模块的设计
校时选择模块的元件符号如图6所示。
k是控制输入端,k=0是,控制将校时按钮j1、j2和j3的信号分别分别送到计时器模块的jm、jf、js,k=1时校时按钮j1、j2、j3的信号分别送到年月日模块的jr、jy、jn。
图6校时选择模块的元件符号
2.7显示选择模块
图7是显示选择模块的元件符号。
k是控制输入端,K=0时,控制将计时器模块送来的qm[7..0]、qf[7..0]、和qs[7..0]状态信号送到数码管显示。
k=1时将年月日送来的qr[7..0]、qy[7..0]、qn[7..0]状态信号送到数码管显示。
图7显示选择模块的元件符号
2.8流水灯提示模块的设计
图8是流水灯提示模块的元件符号。
clk是一秒钟输入端,K是控制输入端,qy[7..0]〔月、qr[7..0]〔日是状态信号送到数码管显示。
qo[11..0]是输出的流水灯
图8流水灯提示模块的元件符号
3调试过程
当数字日历得所有模块编译成功后我首次下载到实训箱上时,它并不能实现进位的功能,经调整。
数字日历的各基本功能通实现后,在其基础上新增了彩灯控制模块。
经过逐条编写和更正。
程序最终通过编译并能顺利下载到实训箱上进行验证。
4功能测试
4.1测试仪器与设备
EDA实训箱
4.2性能指标测试
当所设定的生日到时流水灯能顺利的实现该提示功能,不过自动显示模块还是没能很准确的进行累加,该功能的延时时间超出了设计的时间。
5实训心得体会
从陌生到熟悉,我基本上的摸清了QuartusII9.0的用法。
并逐渐掌握了verilogHDL语言的规则。
并能编写简单的程序。
经过查找资料和各个老师的耐心指导。
我完成了数字日历电路的设计。
不仅添加了创新部分,还在EDA实训仪上成功实现了它的彩灯旋转功能。
并用一个拨动开关来控制灯的亮灭。
记得刚开始拿到实训课题时,我那一脸的茫然,不知从哪儿入手。
来回跑了图书馆好几趟,最后跟着舍友起步。
从编写代码开始,经编译后逐个查找错误并纠正。
几番波折,最终完成了数字日历的设计和添加了创新功能。
通过此次EDA实训我熟练的掌握了QuartusII9.0软件,并能通过波形仿真更加透彻的掌握了程序与该设计。
从编程到生成元器件再到波形仿真和成功下载,给我的最大体会是一步一个脚印,付出总会有回报的。
6参考文献
[1]EDA技术与应用江国强
[2]EDA技术与verilog设计王金明冷自强
附录
附录1:
仿真波形图〔部分模块
cnt24模块仿真波形图
nyr模块仿真波形图
附录2:
程序清单
2.1分频器模块
modules_1
inputclk;
reg[24:
0]q;
outputregcout;
always
begin
ifq=0;//1s
elseq=q+1;
ifcout=1;//0.5s
elsecout=0;
end
Endmodule
2.2cnt24计数器源程序
modulecnt24
inputclk,clrn,j;//j校时输入端,
outputreg[7:
0]q;
outputregcout;
always
begin
if<~clrn>q=0;//低电平有效
elsebegin
ifq=0;
elseq=q+1;
if 0]=='ha>begin q[3: 0]=0;q[7: 4]=q[7: 4]+1;end if elsecout=0;end end endmodule 2.3cnt60计数器源程序 modulecnt60 inputclk,clrn,j; outputreg[7: 0]q; outputregcout; always begin if<~clrn>q=0; elsebegin if elseq=q+1; if 0]=='ha>begin q[3: 0]=0;q[7: 4]=q[7: 4]+1;end if elsecout=0;end end endmodule 2.4年月日模块 modulenyr2014 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=2;clkn3=1;end initialbeginqn='h2000;qy=1;qr=1;end always begin if<~clrn>qr=1; elsebegin if elseqr=qr+1; if 0]=='ha>begin qr[3: 0]=0;qr[7: 4]=qr[7: 4]+1;end if elseclky=0;end end always begin if<~clrn>qy=1; elsebegin if elseqy=qy+1; if 0]=='ha>begin qy[3: 0]=0;qy[7: 4]=qy[7: 4]+1;end if elseclkn=0;end end always begin case 'h01: date='h31; 'h02: begin if< =0>| 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 begin if<~clrn>qn[3: 0]=0; elsebeginif 0]==9>qn[3: 0]=0; elseqn[3: 0]=qn[3: 0]+1; if 0]==9>clkn1=0; elseclkn1=1;end end always begin if<~clrn>qn[7: 4]=0; elsebeginif 4]==9>qn[7: 4]=0; elseqn[7: 4]=qn[7: 4]+1; if 4]==9>clkn2=0; elseclkn2=1;end end always begin if<~clrn>qn[11: 8]=0; elsebeginif 8]==9>qn[11: 8]=0; elseqn[11: 8]=qn[11: 8]+1; if 4]==9>clkn3=0; elseclkn3=1;end end always begin if<~clrn>qn[15: 12]=2; elseif 12]==9>qn[15: 12]=0; elseqn[15: 12]=qn[15: 12]+1; end Endmodule 2.5校时选择模块 modulexs_6 inputk,j1,j2,j3; outputregjm,jf,js,jr,jy,jn; always Begin if else{jr,jy,jn}={j1,j2,j3};//k=1时校时按钮j1、j2、j3的信号分别送到年月日模块的jr、jy、jn end Endmodule 2.6显示选择模块的设计 modulemux_16 inputk;//k是控制输入端,k=1时将年月日送来的qr、qy、qn状态信号送到数码管显示 input[7: 0]qm,qf,qs,qr,qy; input[15: 0]qn; outputreg[31: 0]q; always begin if q[31: 24]=0; q[23: 0]={qs,qf,qm};end elseq={qn,qy,qr}; end endmodule 2.7控制模块源程序 modulecontr inputclk,k1,k2; outputregk;//k是控制输出端 reg[3: 0]qc; regrc; always begin qc=qc+1; if elserc=1; case<{k1,k2}> 0: k=rc;//k1k2=00或11时是自动显示模块,控制数码器用8s钟时间显示年月日8s显示时分秒 1: k=0;//k1k2=01时仅控制显示时分秒,同时用j1、j2、j3校秒、校分和校时 2: k=1;//k1k2=10时,仅显示年、月、日,同时用j1、j2、j3校年、校月和校日 3: k=rc;//11 endcaseend endmodule //在控制模块中使用了一个16分频电路,输出rc时16s的方波,即8s为高电平、8s为低电平用于万年历的自动倒换模式。 2.8生日彩灯模块 moduleczbf inputclk,k; input[7: 0]qy,qr; outputreg[11: 0]q,qo; regs,qs,clkn; reg[24: 0]qq; reg[6: 0]qss; initialq=5; always beginif if end always begin if elsebeginqs=q[0];q=q>>1;q[11]=qs;end end always begin qss=qss+1; if end always beginif elseqo=0; end endmodule //当数码管上的月日与某生日相同时,流水灯相继左右旋转。 此时可通用拨动开关K控制流水灯的亮灭。cout=1;
q=0;
cout=1;
beginqs=q[11];q=q<<1;q[0]=qs;end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 应用 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)