FPGA课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA课程设计报告

多功能数字钟电路设计报告

任务书

设计一个具有时、分、秒计时的电子钟电路,按24小时制计时。要求:

1.准确计时,以数字形式显示时、分、秒的时间;

2.具有分、时校正功能,校正输入脉冲频率为1Hz;

3.具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒、57秒时发出4声500Hz低音,在59分59秒发出一声1KHz高音,它们的持续时间均为1秒,最后一声高音结束时刻恰为正点时刻;

4.具有定时闹钟功能,且最长闹铃时间为1分钟。要求可任意设置闹钟的时、分;闹铃信号为500Hz和1KHz的方波信号,交替输出,且均持续1秒。设置一个停止闹铃控制键,可以停止输出闹铃信号。

摘要

数字钟是一种用数字电路技术实现日、时、分、秒计时的装置,与传统的机械式时钟相比,具有更高的准确性和直观性,且无机械传动装置,具有更更长的使用寿命,因此得到了广泛的使用。小到人们日常生活中的电子手表,大到车站、码头、机场等公共场所的大型数

显电子钟。

本课程设计要用通过简单的逻辑芯片实现数字时钟。要点在于用555芯片连接成输出一秒的多谐振荡器用于时钟的秒脉冲,用74LS90(10进制计数器)74LS192(4位二进制计数器)等连接成60和12进制的计数器,再通过七段数码管显示,外加上校时电路和整点报时电路即构成了简单数字钟。扩展电路可实现定点报时功能。

原理图

概述

(一)、分频器:

分频器的作用是将脉冲频率调整为500Hz和1kHz两种脉冲频率,作为适中的输入信号。

其Verilog语言描述为:module divider(f,_500HzOut,_1KHzOut, ncR,CLOCK_50,s);

input ncR,CLOCK_50,s;

output _500HzOut,_1KHzOut,f;

wire _1HzOut,_5HzOut;

assign f=s?_5HzOut:_1HzOut;

divn #(.WIDTH(26),.N(50000000))

u0(.clk(CLOCK_50),

.rst_n(ncR),

.o_clk(_1HzOut)

);

divn #(.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)

);

divn #(.WIDTH(24),.N(10000000))

u3(.clk(CLOCK_50),

.rst_n(ncR),

.o_clk(_5HzOut)

);

Endmodule

(二)、计数器:

时钟里,分和秒都是六十进制计数,我们利用两个十进制计数器相连组成六十进制计数器。当低级输入端全零且高位输入端从高到低依次为0110时,计数器反馈清零,即实现60进制计数需要。

同六十进制计数器,二十四进制计数器也可由八进制计数器和三进制计数器级联组成,即当从高到低排列时,高级和低级输入端分别为0011,1000时,计数器反馈清零,即实现24进制计数需要。

整个时钟的计数即由两个60进制计数器和一个24进制计数器组成,如下图:

其中,24进制计数器的Verilog语言如下:module counter24(CntH,CntL,ncR,EN,CP);

input CP,ncR,EN;

output [3:0]CntH,CntL;

reg [3:0]CntH,CntL;

always @(posedge CP,negedge ncR)

begin

if(~ncR)

{CntH,CntL}<=8'h00;

else if(~EN)

{CntH,CntL}<={CntH,CntL};

else if((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3))) {CntH,CntL}<=8'h00;

else if((CntH==2)&&(CntL<3))

begin

CntH<=CntH;

CntL<=CntL+1'b1;

end

else if(CntL==9)

begin

CntH<=CntH+1'b1;

CntL<=4'b0000;

end

else

begin

CntH<=CntH;

CntL<=CntL+1'b1;

end

end

Endmodule

60进制计数器的Verilog语言如下:

//countuer 60

//counter10.v (BCD: 0--9)

module counter10(Q,ncR,EN,CP);

input CP,ncR,EN;

output reg [3:0]Q;

always @(posedge CP,negedge ncR) begin

if(~ncR)

Q<=4'b0000;

else if(~EN)

Q<=Q;

else if(Q==4'b1001)

相关文档
最新文档