资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
多功能数字钟实验报告目录多功能数字钟实验报告1一、实验任务及要求31基本功能32拓展功能3二、实验条件31软件32开发板3三、电路的设计过程31工作原理与组成框图32单元电路设计3模块(1)计时与调时电路3模块(2)12-24小时转换电路:3模块(3)显示电路:3模块(4)报时电路:3模块(5)闹钟电路:33总体仿真波形3四、调试过程31.调试步骤32.调试中遇到的问题及解决办法33.最后观察到的实验结果3五、实验的收获、体会与改进建议3一、 实验任务及要求用FPGA器件和EDA技术实现多功能数字钟的设计1基本功能 以数字形式显示时、分、秒的时间; 小时计数器为同步24进制; 要求手动校时、校分和自动校时、校分。2拓展功能 任意时刻闹钟; 小时显示(12/24)切换电路 仿广播电台正点报时; 自动报整点时数; 万年历; 秒表。二、 实验条件1软件:ISE13.42开发板:Basys2三、 电路的设计过程1 组成框图2 单元电路设计顶层模块:顶层模块是对所有模块的调用,源代码及注释如下:module top_clock(nCR,CP,show,sw,sel0,S1,S0,AH,AM,ledout,sp,led,sel0,sel1,sel2,clear,stop );/nCR为复位开关,CP500MHZ脉冲,show 7喂数码管输出,sw四个数码管点亮选择,S1、S0调整按键,AH、AM调整拨码开关,ledout整点显示led,sp仿电台报时led,led闹钟显示led,sel0、sel1、sel2组合选择开关,clear秒清零开关,stop秒表停开关 input nCR,CP,S1,S0,AH,AM,sel0,sel1,sel2,clear,stop; output 6:0show; output 3:0sw; output 3:0ledout; output sp,led; wire 23:0cnt; wire 15:0cnt_out,stopsec; wire 15:0cnt_time; wire 15:0cnt_alarm; wire 15:0year; wire 7:0month,day; second stoop(CP,stopsec,nCR,stop,clear);/秒表 date dt(cnt,CP,nCR,year,month,day,sel0,sel1,sel2,AM,AH);/万年历 TO_12 ampm(cnt23:8,cnt_time);/12-24进制转换 clock lclock(CP,cnt,S1,S0,nCR,AH,AM,sel0,sel1,sel2,clear);/报时即校时 show out_led(show,CP,sw,cnt_out);/译码 baoshi zhengdian(CP,cnt,ledout,sp);/整点报时 alarm alarmset(cnt_alarm,S0,S1,AH,AM,nCR,CP,sel0,sel1,sel2);/闹钟 TAswitch AT(cnt_time,cnt_alarm,cnt,cnt_out,sel0,sel1,sel2,year,month,day,stopsec);/功能选择 time_alarm alled(cnt23:8,cnt_alarm,led,CP,nCR);/闹钟时间对比endmodule顶层模块图如下模块(1)计时与调时电路:计时模块中包含了计时调时模块和分频器模块,其中分频器模块的功能是将50MHz的信号转化为1Hz的信号,实现秒脉冲功能;计时调时模块的功能包括将秒脉冲信号通过六进制计数器和十进制计数器转化为24位二进制的时分秒的形式(每四位一个数,一共六个数),同时通过手动调时和自动调时模块对信号进行调节。 源代码如下:/计时与调时模块module clock(CP,cnt,S1,S0,nCR,AH,AM,sel0,sel1,sel2,clear ); input S1,S0,CP,nCR,AH,AM,sel0,sel1,sel2,clear; output 23:0cnt; reg 3:0HH,HL,MH,ML,SH,SL; wire clk; secclk sec(CP,clk,nCR); assign cnt=HH,HL,MH,ML,SH,SL; always (posedge clk or negedge nCR) begin /自动调时部分 if(!nCR) begin HH=4b0000;HL=4b0000;MH=4b0000;ML=4b0000;SH=4b0000;SL=4b0000; end else begin if(AH&(!sel0)&(!sel1)&(!sel2) begin if(HH=4d2&HL=4d3) begin HH=4b0000; HL=4b0000; end else if(HL=4d9) begin HH=HH+4b0001; HL=4b0000; end else HL=HL+4b0001; end else if(AM&(!sel0)&(!sel1)&(!sel2) begin if(MH=4d5&ML=4d9) begin MH=4b0000; ML=4b0000; end else if(ML=4d9) begin MH=MH+4b0001; ML=4b0000; end else ML=ML+4b0001; end /秒清零部分else if(clear&(!sel0)&(!sel1)&sel2) begin SH=4b0000; SL=4b0000;end else begin /手动调时部分 if(S1&(!sel0)&(!sel1)&(!sel2) begin if(HH=4d2&HL=4d3) begin HH=4b0000; HL=4b0000; end else if(HL=4d9) begin HH=HH+4b0001; HL=4b0000; end else HL=HL+4b0001; end /时钟部分 else if(S0&(!sel0)&(!sel1)&(!sel2) begin if(MH=4d5&ML=4d9) begin MH=4b0000; ML=4b0000; end else if(ML=4d9) begin MH=MH+4b0001; ML=4b0000; end else ML=ML+4b0001; end else begin if(SL=4d9&SH=4d5) begin SL=4h0; SH=4h0; if(ML=4d9&MH=4d5) begin ML=4h0; MH=4h0; if(HH=4d2&HL=4d3) begin HH=4h0; HL=4h0; end else if(HL=4d9) begin HH=HH+4b0001; HL=4h0; end else HL=HL+4b0001; end else if(ML=4d9) begin ML=4h0; MH=MH+4b0001; end else ML=ML+4b0001; end else if(SL=4d9) begin SH=SH+4b0001; SL=4b0000; end else SL=SL+4b0001; end end end endendmodule/秒脉冲分频器模块module secclk(clk_in,clk_out,nCR ); /clk_in和clk_out分别为信号的输入输出端,nCR为清零端 input clk_in,nCR ; output clk_out; reg 24:0cnt=25d0; reg clk_out=1b0; always (posedge clk_in or negedge nCR) begin if(nCR) cnt=25d0; else begin if(cnt=25d24999999) begin clk_out=clk_out;cnt=1d0; endelse cnt=cnt+1d1;end endendmodule波形图cnt为输出端,CP为原脉冲信号,S1为手动校时,S0为手动校分,nCR为清零,AH和AM为自动校时和校分。令S1=1,可见时钟在秒脉冲的上升沿从00:00:00变为01:00:00。模块(2)12-24小时转换电路: 12-24小时转换电路的原理是将12小时和24小时的显示模式进行相互转化,得到想要的显示。源代码如下:/12-24小时转换电路module TO_12(cnt,cnt_out,switch );/cnt为输入信号,cnt_out为输出信号,switch为选择开关 input23:0
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号