资源描述:
《FPGA课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、FPGA课程设计报告11多功能数字钟电路设计报告任务书设计一个具有时、分、秒计时的电子钟电路,按24小时制计时。要求:1.准确计时,以数字形式显示时、分、秒的时间;2.具有分、时校正功能,校正输入脉冲频率为1Hz;3.具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒、57秒时发出4声500Hz低音,在59分59秒发出一声1KHz高音,它们的持续时间均为1秒,最后一声高音结束时刻恰为正点时刻;4.具有定时闹钟功能,且最长闹铃时间为1分钟。要求可任意设置闹钟的时、分;闹铃信号为500Hz和1KHz的方波信号,交替输出,且均持续1秒。设置一个停止闹铃控制键,可以停止输
2、出闹铃信号。摘要11数字钟是一种用数字电路技术实现日、时、分、秒计时的装置,与传统的机械式时钟相比,具有更高的准确性和直观性,且无机械传动装置,具有更更长的使用寿命,因此得到了广泛的使用。小到人们日常生活中的电子手表,大到车站、码头、机场等公共场所的大型数显电子钟。本课程设计要用通过简单的逻辑芯片实现数字时钟。要点在于用555芯片连接成输出一秒的多谐振荡器用于时钟的秒脉冲,用74LS90(10进制计数器)74LS192(4位二进制计数器)等连接成60和12进制的计数器,再通过七段数码管显示,外加上校时电路和整点报时电路即构成了简单数字钟。扩展电路可实现定点报时功能。原理图概述(
3、一)、分频器:分频器的作用是将脉冲频率调整为500Hz和1kHz两种脉冲频率,作为适中的输入信号。11其Verilog语言描述为:moduledivider(f,_500HzOut,_1KHzOut,ncR,CLOCK_50,s);inputncR,CLOCK_50,s;output_500HzOut,_1KHzOut,f;wire_1HzOut,_5HzOut;assignf=s?_5HzOut:_1HzOut;divn#(.WIDTH(26),.N(50000000))u0(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_1HzOut));divn#(
4、.WIDTH(17),.N(100000))u1(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_500HzOut));divn#(.WIDTH(16),.N(50000))u2(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_1KHzOut)11);divn#(.WIDTH(24),.N(10000000))u3(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_5HzOut));Endmodule(二)、计数器:时钟里,分和秒都是六十进制计数,我们利用两个十进制计数器相连组成六十进制计数器。当低级输入端全零且高
5、位输入端从高到低依次为0110时,计数器反馈清零,即实现60进制计数需要。同六十进制计数器,二十四进制计数器也可由八进制计数器和三进制计数器级联组成,即当从高到低排列时,高级和低级输入端分别为0011,1000时,计数器反馈清零,即实现24进制计数需要。整个时钟的计数即由两个60进制计数器和一个24进制计数器组成,如下图:11其中,24进制计数器的Verilog语言如下:modulecounter24(CntH,CntL,ncR,EN,CP);inputCP,ncR,EN;output[3:0]CntH,CntL;reg[3:0]CntH,CntL;always@(posedg
6、eCP,negedgencR)beginif(~ncR){CntH,CntL}<=8'h00;elseif(~EN){CntH,CntL}<={CntH,CntL};elseif((CntH>2)
7、
8、(CntL>9)
9、
10、((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;elseif((CntH==2)&&(CntL<3))beginCntH<=CntH;11CntL<=CntL+1'b1;endelseif(CntL==9)beginCntH<=CntH+1'b1;CntL<=4'b0000;endelsebeginCntH<=CntH;Cnt
11、L<=CntL+1'b1;endendEndmodule60进制计数器的Verilog语言如下://countuer60//counter10.v(BCD:0--9)modulecounter10(Q,ncR,EN,CP);inputCP,ncR,EN;outputreg[3:0]Q;always@(posedgeCP,negedgencR)beginif(~ncR)Q<=4'b0000;elseif(~EN)Q<=Q;elseif(Q==4'b1001)11Q<=4'b0000;elseQ