




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上苏州科技学院EDA电子综合设计院 系: 电子与信息工程 专 业: 电子信息工程 班 级: 学 号: 姓 名: 专心-专注-专业第一部分:设计说明1、设计任务设计一款数字电子时钟,具体要求如下:1:输入条件:50MHz时钟,2个输入按键;2:功能实现:具有显示时、分、秒功能;采用LED数码管显示;具有闹钟与对时功能,对时精确到分,闹钟设置与对时采用按键作为输入信号。3:采用altera公司的quartusII软件进行编程与仿真,设计语言可以选择VerilogHDL或VHDL。2、目的与意义训练综合运用学过的数字电子技术、数字系统设计技术(HDL硬件设计)和计算机编程及电
2、路相关基本知识,培养独立设计比较复杂数字系统设计能力。通过综合设计,力争掌握使用EDA工具设计数字系统电路的基本方法,包括原理方案的确定、详细设计中的编程与仿真等一系列过程,为以后进行工程实践问题的研究打下设计基础。时钟,自从它发明的那天起,就成为人类的朋友,但随着社会的进步,科技的的发展,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋 友焕发青春呢?这就要求人们不断设计出新型时钟。现代社会,守时已不仅关系到一个人的职业生涯,还成了衡量一个人道德的标准。时钟为人们提供了科学利用时间规律的依据,然而,普通的机械钟表与半机械钟表对于忙碌的生活显然早已不太适应,设计一款
3、高精度数字时钟势在必行。本课题将通过对目前市场上的数字电子钟的研究,利用EDA技术设计一款高精度数字式电子钟,使人们可以得到精确时间显示,帮助人们合理安排时间,方便人们的生活。第二部分 原理方案设计1、多功能数字钟的设计设计一个多功能数字时钟,具有时分、秒计数显示、闹钟功能。能够利用按键实现对闹钟时间的设定并在当前显示时间到时后能够进行闹钟提示。能够利用按键实现“较时”、“较分”功能,随时对数码管的显示进行校正和校对。数字中系统主要由系统时钟,三个功能按键(mode,turn,change),FPGA,数码管和蜂鸣器部分组成。 2、设计原理框图数码管Clk分频模块计时模块闹钟模块显示模块控制模
4、块蜂鸣器图2.2 第三部分 详细设计过程3.1、关于模式信号mode选择各个功能显示的构思:考虑到使用mode按键产生0、1信号在正常时间显示、调节时间功能、调节闹钟功能和跑表功能这四个功能之间的转换。所以mode信号的作用主要体现在控制模块(1)和显示模块中,虽然计时模块中也用到mode信号,但是它只是turn信号将秒信号清零的辅助作用,保证只有在m=0(即普通时钟显示)下turn信号清零功能才起作用,在校时功能下只能是分、小时的切换和跑表下的暂停功能。a、 在控制模块下的作用:在控制模块下,其实mode和turn信号的作用更像2-4译码器的功能,将change数字上加信号按不同的mode和
5、turn分成四个信号,分别是count1(时间显示下的分信号)、counta(时间显示下的小时信号)、count2(闹铃显示下的分信号)、countb(闹铃显示下的小时信号)。b、 在显示模块下的作用:同在控制模块下的作用。只是将turn信号选出的小时和分钟在同一个mode下一起送至数码管显示。3.2、关于时间调整和闹铃时间调整中数字上加的原理: 对于这个问题,我们要考虑两种情况,首先是时间调整的情况:因为在时间调整下,数字的上加不仅受到change信号的作用(即人工调时),还受本身在1Hz信号下计时而随时发生的累加。而闹铃时间调整不存在这种情况,因为闹铃下的时间数字发生上加只可能人工调节(c
6、hange信号作用下)的结果。a、 时间调整下的上加:由于在控制模块(2)下又设置了快加的功能,所以有三部分信号对上加起作用,一是快加下的numXclk,表示以原始时钟的速率上加,二是慢加下的change具体到各模块、各位的count1或counta,三是秒信号记到9向分信号的进位。b、 闹铃时间调整下的上加:该部分原理同上,只是少了低位记到9向高位的进位。所以只有两部分组成,一是快加下的numXclk,表示以原始时钟的速率上加,二是慢加下的change具体到各模块、各位的count2或countb。3.3分频模块3.3.1模块功能输入一个频率为50MHz的CLK,利用计数器分出1KHz的q1
7、KHz,500Hz的q500Hz,2Hz的q2Hz和1Hz的q1Hz。3.3.2模块设计思想对系统的时钟50MHZ进行分频,设置不同长度的计数值,当系统时钟clk有变化时计数器开始计数,当计数到某个值时输出一个信号,计数值不同输出信号的周期也就不同,从而实现了对系统时钟进行不同的分频,产生不同频率的信号。3.3.3模块设计流程图如下 图3.1分频流程由于FPGA内部提供的时钟信号频率大约为50MHz,在这需要将它转化成1Hz的标准时钟信号供数字钟的计时显示;在此我采用了级联分频法。代码如下:/fenpinmodule fenpin(clk,clk_1Hz,clk_100Hz,clk_1k);o
8、utput clk_1Hz,clk_100Hz,clk_1k;input clk;reg clk_1Hz=0,clk_3=0,clk_1=0,clk_2=0,clk_1k=0;reg 6:0 cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0;wire clk_100Hz;always (posedge clk) beginif ( cnt1 < 156/2-1) /156分频,生成1MHz信号 begin cnt1 <= cnt1 + 1; end else begin cnt1 <= 0; clk_1 <= clk_1; endendalways
9、(posedge clk_1)if ( cnt2 < 156/2-1) /100分频,生成10000Hz信号 begin cnt2 <= cnt2 + 1; end else begin cnt2 <= 0; clk_2 <= clk_2; end always (posedge clk_2)if ( cnt5 < 10/2-1) /10分频,生成1kHz标准信号 begin cnt5<= cnt5 + 1; end else begin cnt5<= 0; clk_1k<= clk_1k; end always (posedge clk_2)i
10、f ( cnt3 < 100/2-1) /100分频,生成100Hz信号 begin cnt3 <= cnt3 + 1; end else begin cnt3 <= 0; clk_3 <= clk_3; end assign clk_100Hz=clk_3; always (posedge clk_3)if ( cnt4 < 100/2-1) /100分频,生成1Hz标准信号 begin cnt4<= cnt4 + 1; end else begin cnt4<= 0; clk_1Hz<= clk_1Hz; endendmodule3.4计时模
11、块3.4.1 模块功能描述输入引脚是功能选择模块的输出timemode、分频模块的输出clk1Hz和按键脉冲信号plus,输出引脚是时间的时、分、秒。3.4.2模块设计思想本模块是为系统提供控制信号的模块,通过输入信号的脉冲,改变输出信号的不同状态,不同状态表示不同的工作模式。3.4.3模块设计流程首先判断工作模式,如果timemode是01处于校分模式,当按键脉冲到了,分加一。如果timemode是10处于校时模式,当按键脉冲到了,时加一。其他值(timemode=00)处于正常模式,保持正常的计时功能。3.4.4设计关键知识点图3.2 模60和 模24模块代码如下:/jishimodule
12、 jishi(clk,clk_1Hz,turn,/ turn: 接按键,在手动校时功能时,选择是调整小时,还是分钟;若长时间按住该键,还可使秒信号清零,用于精确调时mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clk_1Hz,turn,num3,num4;input mode;input count1,counta;output 7:0 sec1,min1;output 7:0 hour1;wire clk_1Hz,ct1,cta,turn,num3,num4;reg 7:0 sec1=0,min1=0;reg 7:0 hour
13、1=0;reg 1:0 m;wire count1,counta;reg minclk,hclk;always (posedge mode) /mode 信号控制系统在三种功能间转换begin if(m=4) m<=0; else m<=m+1;end/秒钟计时模块/always (posedge clk_1Hz)if(sec1=8'h59)|turn&(!m)/若长时间按住该键,还可使秒信号清零,用于精确调时。beginsec1<=0; /按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时if(!(turn&(!m) minclk&l
14、t;=1;/产生进位endelse beginif(sec13:0=4'b1001) begin sec13:0<=4'b0000; sec17:4<=sec17:4+1; endelse sec13:0<=sec13:0+1;minclk<=0;end/分钟计时模?/assign m_clk=minclk|count1;/m_clk产生进位或校正改变assign ct1=(num3&clk)|(!num3&m_clk); /ct1 用于计时、校时中的分钟计数always (posedge ct1)beginif(min1=8'h
15、59) begin min1<=0; hclk<=1; endelse beginif(min13:0=9)begin min13:0<=0; min17:4<=min17:4+1; endelse min13:0<=min13:0+1;hclk<=0;endend/小时计时模块/assign h_clk=hclk|counta;/h_clk产生进位或校正改变assign cta=(num4&clk)|(!num4&h_clk); /cta 用于计时、校时中的小时计数always (posedge cta)if(hour1=8'h23
16、) hour1<=0;elseif(hour13:0=9) begin hour17:4<=hour17:4+1; hour13:0<=0; endelse hour13:0<=hour13:0+1;endmodule3.5闹钟模块3.5.1 模块功能描述实现给定时间的闹铃功能。3.5.2模块设计思想程序中的语句 if m1="0101" and m0="1001" and s1="0101" then if s0="0001" or s0="0011" or s0=&q
17、uot;0101" or s0="0111" 即是实现闹铃功能的程序,改变数值即可改变闹铃时间。3.5.3模块设计流程图3.5.3 闹铃模块结构图3.5.4设计关键知识点VHDL语言语法、60进制、24进制的加法。/ Alarmmodule Alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert); input clk,num1,num2,count2,countb; output 7:0 amin; output 7:0 ahour; output LD_alert; wire LD_alert; reg 7:
18、0 amin=0; reg 7:0 ahour=0;assign ct2=(num1&clk)|(!num1&count2); /ct2 用于定时状态下调整分钟信号assign LD_alert=(ahour|amin)?1:0;/指示是否进行了闹铃定时always (posedge ct2)if(amin=8'h59) amin<=0;elseif(amin3:0=9)begin amin3:0<=0; amin7:4<=amin7:4+1; endelse amin3:0<=amin3:0+1;assign ctb=(num2&clk
19、)|(!num2&countb); /ctb 用于定时状态调节小时信号always (posedge ctb)if(ahour=8'h23) ahour<=0;elseif(ahour3:0=9)begin ahour3:0<=0; ahour7:4<=ahour7:4+1; endelse ahour3:0<=ahour3:0+1;endmodule3.6控制模块原理:m是模式按键,当m=0时,指当前输出的是计时功能;当m=1时,指当前调整的是闹钟时间;当m=2时,指当前调整的是计时时间;当m=3时,此时turn按键可用于跑表的暂停与开始。change
20、 接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快速加 1,用于快速调时和定时;turn接按键,在手动校时功能时,选择是调整小时,还是分钟;若长时间按住该键,还可使秒信号清零,用于精确调时。count1,count2,counta,countb分别是用来调节计时时间和闹钟时间。LD_min,LD_hour,指示当前调节的是分钟还是小时。代码如下:/ ctrolmodule ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode);input change,mode,turn; output co
21、unt1,count2,counta,countb,pause,LD_min,LD_hour;reg 1:0 m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always (posedge mode) /mode 信号控制系统在三种功能间转换begin if(m=4) m<=0; else m<=m+1;endalways (posedge turn)/接按键,在手动校时功能时,选择是调整小时,还是分钟;beginfm<=fm;end
22、always (m or fm or change) begin case(m) 3: begin /3:跑表功能; if(fm) pause=1;else pause=0;end 2:begin /2:调节时间功能; if(fm) begincount1<=change; LD_min,LD_hour<=2; end/指示当前调整的是分钟else begin counta<=change; LD_min,LD_hour<=1; end/指示当前调整的是小时count2,countb<=0;end 1:begin /1:调节闹钟功能 if(fm) begincou
23、nt2<=change; LD_min,LD_hour<=2; end/指示当前调整的是分elsebegin countb<=change; LD_min,LD_hour<=1; end/指示当前调整的是小时count1,counta<=0; end 0: begin count1,count2,counta,countb,LD_min,LD_hour<=0;end /0:计时功能 endcase endendmodul3.7控制模块原理:此模块是加速调节时间模块,count1,count2,counta,countb是手动调节时间,当长时间按这些键时,nu
24、m1,num2,num3,num4的值会发生变化,当他们值有为1时,对应的调节会快速加1。代码如下:/ fastermodule faster(clk,num1,num2,num3,num4,count1,count2,counta,countb); input clk; input count1,count2,counta,countb; output num1,num2,num3,num4; wire count1,count2,counta,countb; reg2:0 loop1=0,loop2=0,loop3=0,loop4=0; reg num1,num2,num3,num4;al
25、ways (negedge clk)/如果长时间按下“change”键,则生成“num*”信号用于连续快速加1if(count2) beginif(loop1=3) begin loop1<=0; num1<=1; endelsebegin loop1<=loop1+1; num1<=0; endendelse begin loop1<=0; num1<=0; endalways (negedge clk)if(countb) beginif(loop2=3) begin loop2<=0; num2<=1; endelsebegin loop2
26、<=loop2+1; num2<=0; endendelse begin loop2<=0; num2<=0; endalways (negedge clk)if(count1) beginif(loop3=3) begin loop3<=0; num3<=1; endelsebegin loop3<=loop3+1; num3<=0; endendelse begin loop3<=0; num3<=0; endalways (negedge clk)if(counta) beginif(loop4=3) begin loop4&l
27、t;=0; num4<=1; endelsebegin loop4<=loop4+1; num4<=0; endendelse begin loop4<=0; num4<=0; endendmodul3.8显示模块3.8.1 模块功能描述显示正确的时间3.8.2模块设计思想由sv3和sv8来控制转换正常计数器、闹钟、秒表的转换3.8.3模块设计流程、由sv3和sv8来控制转换正常计数器、闹钟、秒表的转换。当sv3=0、sv8=0时,显示正常计时器;当sv3=0、sv8=1时,显示秒表;当sv3=1时,显示闹钟。3.8.4设计关键知识点图3.8 合成模块代码如下:/
28、 fastermodule show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode);input 7:0 min1,sec1,amin;input 7:0 hour1,ahour;input3:0 MSH,MSL,SH,SL,MH,ML;input mode;output 7:0 min,sec;output 7:0 hour;reg 7:0 min,sec;reg 7:0 hour;reg 1:0 m;always (posedge mode) /mode 信号控制系统在三种功能间转换begin if(m=4
29、) m<=0; else m<=m+1;endalways (min1 or sec1 or amin or hour1 or ahour or m) begincase(m)0:begin hour<=hour1; min<=min1; sec<=sec1; end1:begin hour<=ahour; min<=amin; sec<=8'hzz; end2:begin hour<=hour1; min<=min1; sec<=8'hzz; end3: begin hour<=SH,SL; min<
30、;=MSH,MSL; sec<=MH,ML; endendcaseendendmodule3.9响铃模块原理:同时输入计时模块的时间和闹钟模块的时间。当计时模块的时间快到达整点时,会产生响声;当计时模块的时分同时等于闹钟模块的时分时,也产生响铃。这时alert为1,如果在这时按住change键,可以屏蔽闹钟响铃。/ ringmodule ring(clk,clk_1k,min1,sec1,amin,hour1,ahour,change,alert);input 7:0 min1,sec1,amin;input 7:0 hour1,ahour;input change,clk,clk_1k
31、;output alert;wire 7:0 min1,sec1,amin;wire 7:0 hour1,ahour;wire change;reg alert1=0,alert2=0;reg 1:0 sound;reg ear;wire alert;wire clk_1k,clk;always (posedge clk)if(min1=amin)&&(hour1=ahour)&&(amin|ahour)&&(!change)if(sec1<30) alert1<=1;else alert1<=0;else alert1<
32、=0;always (posedge clk)begin if(sound=3) begin sound<=0; ear<=1; end/ear 信号用于产生或屏蔽声音else begin sound<=sound+1; ear<=0; endif(min1=8'h59)&&(sec1>8'h54)|(!(min1|sec1)if(sec1>8'h54) alert2<=ear&clk_1k; /产生短音else alert2<=!ear&clk_1k; /产生长音else alert2 <= 0; /停止发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 敬业培训考试题及答案
- 淘宝店铺过户合同范本
- 琴行全职员工合同范本
- 私人门市出租合同范本
- 线上铺面转让合同范本
- 软件建设外包合同范本
- 门面租赁订金合同范本
- 瓷砖外墙清洗合同范本
- 民间技术转让合同范本
- 饭店劳务合同范本模板
- 辽宁省沈阳市2025-2026学年七年级上学期第一次月考数学试卷(含答案)
- 小学生日常行为规范知识竞赛试题(附答案)
- 2025年食品安全员考试题库及答案
- 民宿入住免责协议书范本
- 岭南版小学美术四年级上学期教学进度计划
- 管廊运维招聘题库及答案
- 江西省2025年高考物理真题及答案解析
- 2025年广东卷物理高考试卷(原卷+答案)
- 2025年河南省人民法院聘用书记员考试试题及答案
- 人教版部编三年级上册道德与法治一课一练(含答案)
- (高清版)《建筑施工作业劳动防护用品配备及使用标准》JGJ184-2009
评论
0/150
提交评论