基于FPGA的数字钟设计

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

基于FPGA的多功能数字钟

一、设计题目

基于Xilinx FPGA的多功能数字钟设计

二、设计目的

1.掌握可编程逻辑器件的应用开发技术

——设计输入、编译、仿真和器件编程;

2.熟悉一种EDA软件使用;

3.掌握Verilog设计方法;

4.掌握分模块分层次的设计方法;

5.用Verilog完成一个多功能数字钟设计;

6.学会FPGA的仿真。

三、设计内容

设计实验项目九多功能电子钟

✧功能要求:

利用实验板设计实现一个能显示时分秒的多功能电子钟,具体要求为:

基本功能:

1)准确计时,以数字形式显示时、分、秒,可通过按键选择指示当前显示时间范围模

式;

2)计时时间范围 00:00:00-23:59:59

3)可实现校正时间功能;

4)可通过实现时钟复位功能:00:00:00

扩展功能:

1)定时报:时间自定(不要求改变),闹1分钟(1kHz)---利用实验板LED或外接电路

实现。

2)仿广播电台正点报时:XX:59:[51,53,55,57(500Hz);59(1kHz)] ---利用实验板LED

或外接电路实现。

3)报整点时数:XX:00:[00.5-XX.5](1kHz),自动、手动---利用实验板LED或外接电

路实现。

4)手动输入校时;

5)手动输入定时闹钟;

6)万年历;

7)其他扩展功能;

✧设计步骤与要求:

1)计算并说明采用Basys2实验板时钟50MHz实现系统功能的基本原理。

2)在Xilinx ISE13.1 软件中,利用层次化方法,设计实现模一百计数及显示的电

路系统,设计模块间的连接调用关系,编写并输入所设计的源程序文件。

3)对源程序进行编译及仿真分析(注意合理设置,以便能够在验证逻辑的基础上尽快

得出仿真结果)。

4)输入管脚约束文件,对设计项目进行编译与逻辑综合,生成下载所需.bit类型文

件。

5)在Basys2实验板上下载所生成的.bit文件,观察验证所设计的电路功能。

四、总体设计思路

主体分为分频模块,正常时间模块(包含两个模60计数器和一个模24计数器子模块),闹钟模块(分为一个模60计数器模块,一个模24计数器模块,四个比较器模块),电台报时模块,数码管显示模块(分为模式选择模块,片选信号及扫描程序模块,和译码模块)。将各模块连接好各接线口即得到数字钟顶层模块complete.sch。

五、各模块设计及源代码

1.分频模块

分频模块要将50MHz的时钟信号分成三个分别为1Hz,500Hz,1kHz的三个脉冲信号,设置三个计数器,在三个频率信号分别对应的延时时间进行翻转,就可以得到三个不同的脉冲信号。源代码如下:

//freq.v

module freq(clk,_1Hz,_500Hz,_1kHz);

input clk;

output _1Hz,_500Hz,_1kHz;

reg _1Hz=0,_500Hz=0,_1kHz=0;

reg [24:0] cnt1=0,cnt2=0,cnt3=0;

always @(posedge clk)

begin

if (cnt1<25'd2*******)

//if (cnt1<25'd249)

//做test仿真时让变化更快

cnt1<=cnt1+1;//未达到计数时间计数器加一

else

begin

_1Hz<=~_1Hz;//达到计时时间,信号翻转且计数器归零

cnt1<=0;

end

end

always @(posedge clk)

begin

if (cnt2<25'd49999)

//if(cnt2<25'd49)

cnt2<=cnt2+1;

else

begin

_500Hz<=~_500Hz;

cnt2<=0;

end

end

always @(posedge clk)

begin

if (cnt3<25'd24999)

//if (cnt3<25'd25)

cnt3<=cnt3+1;

else

begin

_1kHz<=~_1kHz;

cnt3<=0;

end

end

endmodule

2.时钟正常显示模块

正常显示模块分为时分秒三个子模块,分别对应一个模24计数器和两个模60计数器。模24计数器和模60计数器设计都BCD码来表示时分秒的值,每个分为高位和低位,均对应一个十进制的数。对模24计数器,每个脉冲信号来临时当低位小于9时加一;等于9时高位加一且低位置零;且高位小于3,低位小于9,超过时高低位均置零;当高位等于2时,低位只能到3,同时复位nCR低电平时高低位均置零。同理可得模60计数器的设计。根据这个思路,得到模24计数器源代码如下:

//counter24.v

module counter24(CntH,CntL,nCR,EN,CP);

input nCR,EN,CP;

output [3:0] CntH,CntL;//分别为高位和低位

reg [3:0] CntH,CntL;

相关文档
最新文档