多功能电子钟设计报告.docx

上传人:b****6 文档编号:15961259 上传时间:2023-07-09 格式:DOCX 页数:59 大小:381.74KB
下载 相关 举报
多功能电子钟设计报告.docx_第1页
第1页 / 共59页
多功能电子钟设计报告.docx_第2页
第2页 / 共59页
多功能电子钟设计报告.docx_第3页
第3页 / 共59页
多功能电子钟设计报告.docx_第4页
第4页 / 共59页
多功能电子钟设计报告.docx_第5页
第5页 / 共59页
多功能电子钟设计报告.docx_第6页
第6页 / 共59页
多功能电子钟设计报告.docx_第7页
第7页 / 共59页
多功能电子钟设计报告.docx_第8页
第8页 / 共59页
多功能电子钟设计报告.docx_第9页
第9页 / 共59页
多功能电子钟设计报告.docx_第10页
第10页 / 共59页
多功能电子钟设计报告.docx_第11页
第11页 / 共59页
多功能电子钟设计报告.docx_第12页
第12页 / 共59页
多功能电子钟设计报告.docx_第13页
第13页 / 共59页
多功能电子钟设计报告.docx_第14页
第14页 / 共59页
多功能电子钟设计报告.docx_第15页
第15页 / 共59页
多功能电子钟设计报告.docx_第16页
第16页 / 共59页
多功能电子钟设计报告.docx_第17页
第17页 / 共59页
多功能电子钟设计报告.docx_第18页
第18页 / 共59页
多功能电子钟设计报告.docx_第19页
第19页 / 共59页
多功能电子钟设计报告.docx_第20页
第20页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

多功能电子钟设计报告.docx

《多功能电子钟设计报告.docx》由会员分享,可在线阅读,更多相关《多功能电子钟设计报告.docx(59页珍藏版)》请在冰点文库上搜索。

多功能电子钟设计报告.docx

多功能电子钟设计报告

电子技术综合训练

设计报告

 

题目:

多功能电子钟设计

 

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

     

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

     

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:

日期:

年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:

日期:

年月日

导师签名:

日期:

年月日

注意事项

1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:

引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:

理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:

任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。

图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:

按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

摘要

通过CPLD/FPGA可编程逻辑器件实现多功能电子钟。

电子钟的主要功能有计时功能、校正功能、整点报时功能及定时闹叫功能。

针对功能要求利用硬件描述语言设计程序,通过Quartus软件进行仿真分析,将程序下载到电路中,观察数码管可知实现其逻辑功能。

利用可编程逻辑器件可简化电路,实现功能的多样性。

关键字:

多功能电子钟硬件描述语言可编程逻辑器件

 

1设计任务和要求………………………………………………………………4

1.1设计任务……………………………………………………………4

1.2设计要求……………………………………………………………4

2系统设计………………………………………………………………………5

2.1系统要求……………………………………………………………5

2.2方案设计……………………………………………………………6

2.3系统工作原理………………………………………………………6

3电子钟功能模块及仿真..........................................7

3.1分频模块及其仿真……………………………………………………7

3.2计时模块及其仿真……………………………………………………9

3.3定时模块及其仿真……………………………………………………11

3.4按键消抖模块及其仿真………………………………………………14

3.5译码显示模块及其仿真………………………………………………15

3.6例化模块………………………………………………………………18

4元件的选择……………………………………………………………………44

5电路安装、调试与测试……………………………………………………….45

5.1电路安装…………………………………………………………….45

5.2电路调试…………………………………………………………….46

5.3系统功能及性能测试……………………………………………….46

5.3.1测试方法设计………………………………………………….46

5.3.2测试结果及分析……………………………………………….47

6结论…………………………………………………………………………….48

7参考文献……………………………………………………………………….48

8总结、体会和建议…………………………………………………………….49

附录:

电路原理图……………………………………………………………..50

元器件清单……………………………………………………………….53

1设计任务及要求

1.1设计任务

设计任务是进行设计的基础,根据对设计任务的分析和理解进行设计电路及相应元器件的选择,从而进行电路仿真和调试。

所以对设计任务的理解和分析是进行设计的关键。

本设计的设计任务为:

利用CPLD/FPGA设计一个多功能电子钟。

数字电子钟是一种用数字显示秒、分、时的计时装置,由于十足集成电路技术的发展,使数字钟走时准确、多功能化且性能稳定等优点。

利用CPLD/FPGA设计一个可实现计时、校时、整点报时、定时闹叫多功能的电子钟,需要分两步走。

首先,通过VerilogHDL硬件描述语言进行代码的编写,利用Quartus进行编译和仿真。

其次,根据设计任务和要求选择器件进行电路的焊接。

1.2设计要求

设计要求是完成设计指标的导航,只有很好的分析和了解设计的要求,才可以完成相应的设计。

设计要求:

利用实验室EDA实验箱上的CPLD/FPGA、LED显示器、扬声器、拨码开关等资源,设计一个多功能电子钟,要求具有以下功能:

1、数字形式显示月、日、时、分、秒,在分和秒之间显示“:

”,并按1次/秒的速度闪烁;

2、日以24小时为一个记时周期;

3、有校正功能,能够在任何时刻对电子钟进行方便的校正;

4、有定时闹叫功能,能够按照任意预先设置的时间闹叫,驱动小型扬声器工作,并要求在闹叫状态能够手动消除闹叫;

5、整点时刻通过扬声器给出提示;

6、采用CPLD/FPGA可编程逻辑器件实现;

针对设计要求可做简单分析:

所设计的多功能电子钟需要实现计时、整点报时、定时闹叫和校正功能。

计时需要有相应的计时器实现,整点报时需要相应的报时电路和小功率扬声器,定时闹叫需要通过编写的VerilogHDL程序实现定时和在时间到时驱动小功率扬声器报时,校正电路需要有拨码开关和其他电路实现。

对设计要求的理解:

2系统设计

2.1系统要求

通过FPGA/CPLD实现多功能电子钟的设计。

电子钟要实现计时、校时、定时闹叫等功能。

通过对设计要求的每条的详细分析可得出如下结果:

1、要实现显示月、日、时、分、秒,需要十个LED数码管;要在分和秒之间显示“:

”,可以利用两个发光二极管,也可以选择含有“:

”的LED数码管;要按1次/秒的速度闪烁,则需要1Hz的输入脉冲控制,所以需要通过晶振产生方波,经过分频产生1Hz的方波。

2、要实现24小时为一个计时周期,则需要一个24进制计时器控制其计数。

3、要实现校正功能,则需要一个校正电路(含校正开关)和相应的校正程序。

4、要实现定时闹叫功能,则需要一个时钟脉冲来控制,使其在设定的时刻报时。

外接一个小型扬声器,在设定时刻闹叫,并通过开关消除闹叫,同时也需要相应的程序控制。

5、通过分频电路实现整点报时所需时钟信号,需设计相应的程序段使其在59分,59秒时报时。

6、根性要求设计VerilogHDL程序,并在Quartus软件上进行编译和仿真,从而根据资源的需求选择CPLD/FPGA可编程逻辑器件。

要实现系统要求,需要VerilogHDL程序和Quartus软件的支持。

下面对其进行简单介绍:

(1)利用VerilogHDL硬件描述语言实现功能程序。

VerilogHDL是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和模拟等多个阶段。

通过应用VerilogHDL对多功能电子钟的设计,可实现系统的设计要求。

VerilogHDL硬件描述语是一种实用性很强的编程语言,可以实现软件程序和硬件程序的结合,即将所编写的程序在仿真通过后利用下载器下载到电路板上,通过程序控制器件的工作。

模块是Verilog的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。

一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;设计的数据流行为使用连续赋值语句进行描述;时序行为使用过程结构描述。

一个模块可以在另一个模块中使用。

(2)Quartus是Alterat提供的FPGA/CPLD开发集成环境,支持VerilogHDL的设计流程。

其包括模块化的编辑器,也可以利用第三方的综合工具,具有仿真功能。

Quartus的设计流程为:

设计输入,综合或编译,适配器件,仿真,下载。

通过Quartus可实现对程序的仿真和下载,从而实现系统的要求。

2.2方案设计

根据系统要求,将设计程序分为计时模块、整点报时模块、定时闹叫模块、校正模块四大模块,通过模块的例化实现所有功能。

所对应的硬件连接可分为集成芯片、复位电路、校正电路、晶振电路、响铃电路、译码显示电路几个模块。

对可编程逻辑器件的选择是实现硬件电路的基础。

根据要求本设计可选择芯片EPM7023或者芯片EP2C5T144C8。

但通过查阅资料可知EPM7023只有44个引脚,可能会导致资源不足,即引脚不够用,驱动能力不足,所以选择altera公司的cycloneⅡ系列的EP2C5T144C8芯片。

下面对芯片做简要介绍:

⑴拥有丰富的UserIO(用户IO引脚),即144个IO接口可供使用。

开发板通过2.54mm标准排针,引出了所有的用户IO引脚。

芯片引脚分为四组(Bank),每组(每个Bank)的IO引脚供电是独立的,因此可以采用不同的电平标准。

⑵内部需要三个电压:

5V、3.3V、1.2V,其中3.3V给IO接口供电,1.2V给内核供电。

⑶含有2个PLL。

PLL的作用是产生各种频率的时钟,在FPGA中拥有重要的地位。

2.3系统工作原理

通过晶振产生一个时钟脉冲,成为主时钟。

在通过分频电路输出所需要的时钟脉冲,即1Hz的计时脉冲。

计时时,当秒计数器计到59时,向分计时器进1;当分钟计数器计到59,秒计数器计到59时,向小时计时器进1;当小时计时器计到23,分钟计数器计到59,秒计数器计到59时,向日期计时器进1;当日期计时器计到29,小时计时器计到23,分钟计数器计到59,秒计数器计到59时,向月份计数器进1。

将所计时间通过LED数码管显示出来。

定时闹叫时,设置闹铃的分钟和小时,设置的时候由转换按键控制调整分钟及调整小时之间的切换,每按一次调整键,所调整的计数器加1,分钟计数器计满60就清0,小时计时器计满24就清0。

当到所定时间时,驱动小功率扬声器工作,发出响铃声。

整点报时的工作原理为当秒计数器为0,分计时器为0时,驱动小功率扬声器发出报时声。

校时为修正日期、月份、小时和分钟的时间以及秒钟的精确调整清零。

由转换按键控制调整分钟和调整小时之间的切换,每按一下调整键所调整的计数器加1,分钟计数器满60清零,小时计数器满24清零;秒种的精确调整清零具体为在正常计时的情况下,长时间按住转换按键,即可使秒钟清零,进行精确调时。

秒表工作原理为进行手动计时,按一下计数按键为计时,再按一次计数按键为停止计时,保存计数数值,依此类推;按一次清零键为计数清零,停止计数。

3.电子钟功能模块及仿真

3.1分频模块

分频模块的程序:

`timescale1ns/100ps

modulecount32(

asyn_clr_n,//input,异步清零信号

syn_clr,//input,同步清零信号

clk,//input,全局时钟信号

en,//input,计数使能信号,计数器的门控开关,计数器关闭后,保持数值不变。

counter//output,计数器计数值

);

/********************************************

参数声明

********************************************/

parameterU_DLY=1;//Unitdelay

inputasyn_clr_n;//0-clearcounter;

inputsyn_clr;//1-clearcounter;

inputclk;

inputen;//1-enable;0-disable.

output[31:

0]counter;

reg[15:

0]cnt_high;//计数器高16位

reg[15:

0]cnt_low;//计数器低16位

regcnt_low_max;//cnt_low达到最大值的标志

assigncounter={cnt_high,cnt_low};//32位计数器由2个16位计数器拼接而成。

//分段计数:

低16位计数器

always@(posedgeclkornegedgeasyn_clr_n)

if(asyn_clr_n==1'b0)//异步清零

cnt_low<=16'h0000;//删除时序逻辑中异步复位的单位延时

elseif(syn_clr==1'b1)//同步清零

cnt_low<=#U_DLY16'h0000;

elseif(en==1'b1)//计数器使能

cnt_low<=#U_DLYcnt_low+16'h0001;

else;//保持

//低16位计数器的进位标志

always@(posedgeclkornegedgeasyn_clr_n)

if(asyn_clr_n==1'b0)//异步清零,清除进位

cnt_low_max<=1'b0;//删除时序逻辑中异步复位的单位延时。

elseif(syn_clr==1'b1)//同步清零,清除进位

cnt_low_max<=#U_DLY1'b0;

elseif(en==1'b1&&cnt_low==16'hfffe)//计数器使能,且低16位计满则产生进位。

//因为从进位产生到cnt_high进程读到此进位需要一个时钟周期,所以计数器只计到16'hfffe

cnt_low_max<=#U_DLY1'b1;

else//否则无进位产生

cnt_low_max<=#U_DLY1'b0;

//分段计数:

高16位计数器

always@(posedgeclkornegedgeasyn_clr_n)

if(asyn_clr_n==1'b0)//异步清零

cnt_high<=16'h0000;//删除时序逻辑中异步复位的单位延时

elseif(syn_clr==1'b1)//同步清零

cnt_high<=#U_DLY16'h0000;

elseif(en==1'b1&&cnt_low_max==1'b1)//计数器使能,且低16位计数器已计满

cnt_high<=#U_DLYcnt_high+16'h0001;

else;//保持

endmodule

仿真波形图:

3.2计时模块

计数模块仿真程序:

`timescale1ns/100ps

modulecounter(

/*******************************************/

//输入PORT说明

/*******************************************/

inputwireclk,//输入时钟

inputwirerst_n,//输入复位

inputwirecounter_clk_pul,//计数时钟脉冲

inputwireset_add,//设定进位

inputwirecin,//设定进位

/*******************************************/

//输出PORT说明

/*******************************************/

outputwirecout,//满进位

outputwire[3:

0]gewei,//输出个位

outputwire[3:

0]shiwei//输出十位

);

parameter[6:

0]MAX_NUM=6'd59;

reg[6:

0]current_num;

always@(posedgeclkornegedgerst_n)begin

if(rst_n==1'b0)begin

current_num[6:

0]<=7'h00;

end

elseif(set_add==1'b1&&cin==1'b1&&counter_clk_pul==1'b1)begin

current_num[6:

0]<=current_num[6:

0]+7'h03;

end

elseif(set_add==1'b1&&cin==1'b1)begin

current_num[6:

0]<=current_num[6:

0]+7'h02;

end

elseif((set_add==1'b1||cin==1'b1)&&counter_clk_pul==1'b1)begin

current_num[6:

0]<=current_num[6:

0]+7'h02;

end

elseif((set_add==1'b1||cin==1'b1))begin

current_num[6:

0]<=current_num[6:

0]+7'h01;

end

elseif(counter_clk_pul==1'b1)begin

current_num[6:

0]<=current_num[6:

0]+7'h01;

end

elseif(current_num>MAX_NUM)begin

current_num[6:

0]<=current_num[6:

0]-MAX_NUM-1;

end

else;

end

assigncout=(current_num>MAX_NUM);//只取一个时钟脉冲长度

assigngewei[3:

0]=current_num[6:

0]%10;

assignshiwei[3:

0]=(current_num[6:

0]/10)%10;

endmodule

仿真波形图:

3.3按键消抖模块

按键消抖模块程序:

`timescale1ns/100ps//表示时延单位为1ns,时延精度为100ps

moduledelay_filter_glitch_high(

inputwirerst_n,//input,异步清零信号

inputwireclk,//input,全局时钟信号

inputwireen_cnt,//input,计数使能信号,可决定计数频率

inputwiresignal_in_n,//input,输入信号

outputregsignal_out_n//output,处理后的信号

);

/*******************************************///参数声明

/********************************************/

parameterU_DLY=1;//Unitdelay

parameterCNT_WIDTH=5'b11111;//计数位宽

parameterCNT_TH=5'b11111;//计数门限,可决定延时时长

/********************************************/

//内部信号申明

/********************************************/

reg[CNT_WIDTH-1:

0]cnt;//计数器

regsignal_in_n_1dly;

regsignal_in_n_2dly;

regsignal_in_n_3dly;

wiresignal_in_edge;//指示输入信号的上升/下降沿

/********************************************

行为描述

********************************************/

//异步信号的同步处理

always@(posedgeclkornegedgerst_n)

begin

if(rst_n==1'b0)begin

signal_in_n_1dly<=#U_DLY1'b1;

signal_in_n_2dly<=#U_DLY1'b1;

signal_in_n_3dly<=#U_DLY1'b1;

end

elsebegin

signal_in_n_1dly<=#U_DLYsignal_in_n;

signal_in_n_2dly<=#U_DLYsignal_in_n_1dly;

si

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2