EDA课程设计报告数字秒表设计.docx
- 文档编号:3541070
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:11
- 大小:140.76KB
EDA课程设计报告数字秒表设计.docx
《EDA课程设计报告数字秒表设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告数字秒表设计.docx(11页珍藏版)》请在冰豆网上搜索。
EDA课程设计报告数字秒表设计
EDA课程设计报告
一.设计任务
1.1基本功能:
a.精度达到0.1秒。
b.有一个开始和暂停计时按键、一个加减计时按键、一个复位按键。
1.2其它功能:
有倒计时功能
1.3其他要求:
a.系统时钟采用12MHz有源晶振;
b.主芯片采用CPLD器件,型号为ALTERA的EPM7064SL-44;
c.采用数码管显示。
二.设计方案
2.1实现方法:
a.先根据所要实现的基本要求和基本功能,用protel2004软件画出其原理图;
b.画出PCB版(老师代做),设计程序并进行仿真,成功后将PCB板做出;
c.将所需器件购买齐全,即可进行焊接测试,注意由于焊接难度较大,焊接时一定要仔细认真;
d.将设计好的EDA程序,进行编译仿真测试,成功后,下载到芯片上即可,观察是否为其所要求的功能,并进行调试,达到要求为止。
2.2电路原理图
电路原理如图
(一)所示:
图
(一)
2.3所需器件
a.ALTERA的EPM7064SL-44CPLD芯片一个
b.有源晶振一个
c.插针一排
d.四位数码管一个
e.四腿插槽一个
f.C8550三极管四个
g.按键三个
h.220欧电阻10个
i.1k电阻四个7个
j.导线两根
2.4工作原理
将晶振分频,产生时钟信号,每次0.05秒,则每隔0.1秒产生时钟进位,将产生的信号通过数码管进行译码显示,进行动态扫描。
根据几个按键按下与否判断是否暂停,倒计时,秒表显示。
整个电路有芯片程序控制,外围按键间接控制,数码显示,下载链接部分组成。
三.设计程序
3.1系统组成框图
系统组成框图如图
(二)所示:
3.2程序流程图
程序流程图如图(三)所示:
N
N
图(三)
3.3设计程序及主要部分说明
设计程序如附
(一)所示:
3.4管脚分配
管脚分配如表
(一)所示:
表
(一)
3.5部分仿真图形
部分仿真图如图(四)所示:
图(四)
四.总结及心得
1.总结
通过这次课程设计让我对EDA这门课有了更深刻的了解,对电路板的焊接有了一定的经验。
但是在制作的过程中困难重重现总结如下:
1.电路板部分管脚较为密集复杂,比较难以准确焊接,由于细心不够,我组曾经将芯片座的两根导线误短路,造成下载不成功,后经万用表仔细排查,找出原因,最终问题得以解决;
2.在程序编写时,先要在心中规划一个大概流程,然后编写,经过与其他同学多次合作修改最终编译而成,在如何编写程序方面收获颇多;
2.心得体会
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。
学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
这次EDA课程设计,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。
特别是当程序编写调试成功时,心里特别的开心。
但在编写时,有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。
在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在同学的帮助下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
最后,对给过我帮助的所有同学再次表示忠心的感谢!
附
(一):
设计程序及主要部分说明:
modulemiao_clock(clk,key,dig,seg);//模块名miao—clock
inputclk;//输入时钟
input[2:
0]key;//输入按键
output[3:
0]dig;//数码管选择输出引脚
output[7:
0]seg;//数码管段输出引脚
reg[7:
0]seg_r;//定义数码管输出寄存器
reg[3:
0]dig_r;//定义数码管选择输出寄存器
reg[3:
0]disp_dat;//定义显示数据寄存器
reg[17:
0]count;//定义计数寄存器
reg[11:
0]hour;//定义现在时刻寄存器
regsec,keyen1,keyen2;//定义标志位
reg[2:
0]dout1,dout2,dout3;//寄存器
wire[2:
0]key_done;//按键消抖输出
assigndig=dig_r;//输出数码管选择
assignseg=seg_r;//输出数码管译码结果
//秒信号产生部分
always@(posedgeclk)//定义clock上升沿触发
begin
count=count+1'b1;
if(count==18'd600000)//0.05S到了吗?
begin
count=18'd0;//计数器清零
sec=~sec;//置位秒标志
end
end
//按键消抖处理部分
assignkey_done=(dout1|dout2|dout3);//按键消抖输出
always@(posedgecount[10])
begin
dout1<=key;
dout2<=dout1;
dout3<=dout2;
end
always@(negedgekey_done[1])
begin
keyen1=~keyen1;//将琴键开关转换为乒乓开关
end
always@(negedgekey_done[2])
begin
keyen2=~keyen2;//将琴键开关转换为乒乓开关
end
//数码管动态扫描显示部分
always@(posedgeclk)//count[14:
13]大约1ms改变一次
begin
case(count[14:
13])//选择扫描显示数据
2'd0:
disp_dat=hour[3:
0];//0.1秒显示位
2'd1:
disp_dat=4'ha;//-
2'd2:
disp_dat=hour[7:
4];//秒个位显示位
2'd3:
disp_dat=hour[11:
8];//秒十位显示位
endcase
case(count[14:
13])//选择数码管显示位
2'd0:
dig_r=8'b1110;//选择第一个数码管显示
2'd1:
dig_r=8'b1101;//选择第二个数码管显示
2'd2:
dig_r=8'b1011;//选择第三个数码管显示
2'd3:
dig_r=8'b0111;//选择第四个数码管显示
endcase
end
always@(posedgeclk)
begin
case(disp_dat)
4'h0:
seg_r=8'hc0;//显示0
4'h1:
seg_r=8'hf9;//显示1
4'h2:
seg_r=8'ha4;//显示2
4'h3:
seg_r=8'hb0;//显示3
4'h4:
seg_r=8'h99;//显示4
4'h5:
seg_r=8'h92;//显示5
4'h6:
seg_r=8'h82;//显示6
4'h7:
seg_r=8'hf8;//显示7
4'h8:
seg_r=8'h80;//显示8
4'h9:
seg_r=8'h90;//显示9
4'ha:
seg_r=8'hbf;//显示-
default:
seg_r=8'hff;//不显示
endcase
//if((count[17:
15]==3'd1)&sec)
//seg_r=8'hff;
end
//计时处理部分
always@(negedgesecornegedgekey_done[0])//计时处理
begin
if(!
key_done[0])//是清零键吗?
begin
hour=12'h000;//是,则清零
end
elseif(!
keyen1)
begin
if(!
keyen2)
begin
hour[3:
0]=hour[3:
0]+1'b1;//0.1秒加一
if(hour[3:
0]==4'ha)
begin
hour[3:
0]=4'hf;
hour[7:
4]=hour[7:
4]+1'b1;//秒的个位加一
if(hour[7:
4]==4'ha)
begin
hour[7:
4]=4'hf;
hour[11:
8]=hour[11:
8]+1'b1;//秒的十位加一
if(hour[11:
8]==4'ha)
begin
hour[11:
0]=12'hfff;
end
end
end
end
else
begin
hour[3:
0]=hour[3:
0]-1'b1;//0.1秒减一
if(hour[3:
0]==4'hf)
begin
hour[3:
0]=4'h9;
hour[7:
4]=hour[7:
4]-1'b1;//秒的个位加一
if(hour[7:
4]==4'hf)
begin
hour[7:
4]=4'h9;
hour[11:
8]=hour[11:
8]-1'b1;//秒十位加一
if(hour[11:
8]==4'hf)
begin
hour[11:
0]=12'h999;
end
end
end
end
end
end
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 报告 数字 秒表 设计