fpga数字钟实训报告具有8点报时按键调时功能Word文档下载推荐.docx
《fpga数字钟实训报告具有8点报时按键调时功能Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《fpga数字钟实训报告具有8点报时按键调时功能Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
计数器:
有了“秒”信号,则可以根据60秒为1分,24小时为1天的制,分别设定“时”、“分”、“秒”的计数器,分别为60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。
译码显示:
将“时”“分”“秒”显示出来。
将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。
由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。
另外,计时过程要具有报时功能,当时间到达整点时开始响,蜂鸣器不停地响1分钟后不响。
关键词:
数字钟,振荡,计数,校正,报时
1绪论
数字钟是采用数字电路实现对时、分、秒,数字显示的计时装置,广泛用于个人家庭,车站,码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大地方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、校时自动打铃、时间程序自动控制、定是广播、自动启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用有着非常现实的意义。
伴随着集成电路技术的发展,电子设计自动化(EDA)技术逐渐成为数字电路设计的重要手段。
基于FPGA的EDA技术的发展和应用领域的扩大与深入,使得EDA技术在电子信息,通信,自动控制,计算机等领域的重要性日益突出。
本设计给出了一种基于FPGA的多功能数字钟方法,测试结果表明本设计实现了一个多功能的数字钟功能,具有时、分、秒计时显示功能,以24小时循环计时;
具有校正小时和分钟的功能;
以及清零,整点报时功能。
2课题背景
数字化的钟表给人们带来了极大的方便。
近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。
多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。
利用EDA技术进行电子系统的设计具有以下几个特点:
采用自顶向下的设计方法;
用软件的形式设计硬件;
用软件的方式设计过程中可用相关软件进行仿真;
系统可现场编程,在线升级;
整个系统集成在一个芯片上,体积小,功耗低,可靠性高.因此,EDA技术是现代电子设计的发展趋势.
用硬件描述语言结合FPGA可编程器件可以极大地方便集成电路的设计,使其成为集成电路的发展趋势,也是每一个电子工程师必须掌握的技术,故基于FPGA(现场可编程门阵列)的设计型实验成为高校电类专业学生的必修且重要环节。
2.1设计任务与要求
(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式)
(2)到点报时、闹钟时间固定为8:
00
(3)同时设置按键调时。
2.2设计目的
为了更好的运用掌握FPGA多功能数字钟编程知识,学会自我找到问题、分析问题并解决问题的方法,培养认真学习和工作的作风,锻炼自己的思考能力和团结合作能力。
充分发挥思维创造性,开发功能多样的扩展功能电路并锻炼自己的动手能力。
2.3总体设计方案
(1)方案一用数电制作一个数字钟,通过74L74芯片实现数码管计数功能
用与非门结合,用按键来设置实现闹钟和整点报时的功能。
(2)方案二用fpga来制作一个数字钟,通过编写程序来控制fpga芯片输
出输入来得到数字钟的功能,同时用fpga板来实现该功能。
(3)方案三用单片机来控制数字钟,通过编写程序来实现时钟计时功能,
通过单片机试验箱来实现该功能,最终达到相应的结果。
总结:
方案一用数电的方式做数字钟,用的芯片多同时之制作麻烦,不适合制做数字钟。
方案二制作比较便捷,只需要写程序,制作业是比较方便,也比较实现功能。
方案三用单片机虽然也是编写程序,可是和FPGA相比我个人觉得还是比单片机好做一点。
综合上述我选择FPGA来制作该程序
3程序方案论证
3.1分频方案论证
3.1.1分频模块方案I
定义变量并且设定一个上限值,每次加计数到该上限值时,输出该计数值的最高位
parameterDIV_SIZE=25;
always@(posedgeclock)
counter=counter+1;
assignclkdiv=counter[DIV_SIZE-1];
3.1.2分频模块方案II
定义一个变量,使得counter_1hz==20000000,使得输入1hz信号,让counter_1hz自加
always@(posedgeclk)
Beginif(counter_1hz==20000000)
begincounter_1hz=0;
clk_1hz<
=~clk_1hz;
end
elsecounter_1hz=counter_1hz+1;
if(counter>
=10000)
begincounter<
=0;
clk_1khz<
=~clk_1khz;
elsebegincounter<
=counter+1;
End
3.2计时模块方案论证
3.2.1计时模块方案I
计时分每个信号的高低位进行判断及计时
if(sL==9)beginsL<
if(sH==5)beginsH<
if(mL==9)beginmL<
if(mH==5)beginmH<
if(hL==9)
beginhL<
hH<
=hH+1;
elseif(hL==3&
&
hH==2)
endelsehL<
=hL+1;
endelsemH<
=mH+1;
end
elsemL<
=mL+1;
elsesH<
=sH+1;
elsesL<
=sL+1;
3.2.2计时模块方案II
用信号来判断
if(b==1000)
begin
b=0;
second_l=second_l+1;
if(second_l==10)
beginsecond_l=0;
second_h=second_h+1;
end
if(second_h==6)
beginsecond_h=0;
miniute_l=miniute_l+1;
if(miniute_l==10)
beginminiute_l=0;
miniute_h=miniute_h+1;
if(miniute_h==6)
beginminiute_h=0;
hour_l=hour_l+1;
if(hour_l==10)beginhour_l=0;
hour_h=hour_h+1;
if((hour_l>
=4&
hour_h==2)||(hour_h==3))
hour_h=0;
hour_l=0;
elseb=b+1;
3.3方案总结
分频采用方案2来实现设计。
方案2在思路方面较为通俗易懂,且判断过程简短明了,在最终的显示时出现毛刺干扰现象,其他方案中不便于增加小时和分钟的调节信号,方案最终失败。
方案2比较判断复杂,在最终的数码管显示时可能不怎么稳定。
方案2我们上课时学的也是这个方案用起来也比较熟悉。
综合考虑,使用方案2。
4系统软件设计
软件部分有分频模块,按键防抖动,时钟主体,闹铃模块,动态扫描模块等来实现此方案。
程序流程图3-1
使用此方案首先进行分频得到一个信号,使得信号稳定。
进而促使时钟主体工作。
再通过按键防抖来控制调时和闹钟模块最后用动态扫描来实现软件的所有功能。
4.1程序流程图
图3-1
4.2计时模块
second_l,second_h;
miniute_l,miniute_h;
hour_l,hour_h;
分别表示秒,分,小时的高位和低位L组成十六进制计数器。
以1hz作为一秒,自加计时,当秒加到60后自动向分进位,当分加到60后自动向时进位,当时到24小时候变为00。
4.3闹钟模块
if(hour_h==0&
hour_l==8&
miniute_h==0&
miniute_l==0)//8:
00报时,闹钟模块
beginif(counter_clock==8000)
begincounter_clock=0;
alarm_clock=~alarm_clock;
elsecounter_clock=counter_clock+1;
闹钟模块从CLk中分出8000hz的频率,驱动蜂鸣器。
当时钟到8:
00时,蜂鸣器电平取反,产生报时。
4.4显示模块
//动态扫描模块
always@(posedgeclk_1khz)
begin
case(state)
s0:
beginseg_bit=4'
b0111;
display_tab=miniute_l;
state=s1;
led_test=1;
s1:
b1011;
display_tab=miniute_h;
state=s2;
s2:
b1101;
display_tab=hour_l;
state=s3;
led_test=~clk_1hz;
s3:
b1110;
display_tab=hour_h;
state=s0;
default:
beginled_out=7'
bz;
state=0;
endcase
动态显示扫描,将分的高低位和时的高低位依次显示在4位数码管上。
5系统硬件设计
5.1FPGA的介绍
5.1.1FPGA概述
FPGA是现场可编程门阵列(Field
Programmable
Gate
Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammable
LogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。
CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。
它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。
通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。
使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步。
5.1.2FPGA基本结构
FPGA