EDA设计数字钟实验报告

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

南京理工大学

EDA(Ⅱ)实验报告

——多功能数字钟

姓名:

学号:

学院:

指导教师:

时间:2014/11/3~2014/11/7

摘要

日益复杂的电子线路使得基于原理图的设计越来越复杂,甚至不切实际。硬件描述语言的诞生,对设计自动化起到了极大的促进和推动作用。Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,实现了从算法级、门级到开关级的多种抽象设计层次的数字系统建模,具有仿真,验证,故障模拟与时序分析等功能。

本文利用Verilog HDL语言,采用自顶向下的设计方法设计多功能数字钟,并通过QuartusⅡ分块进行了仿真。此程序通过下载到FPGA芯片后,可实现实际的数字钟显示,具有基本的计时显示和设置,时间校正,整点报时,12h/24h转换,闹钟设置和闹铃控制的功能。

关键词: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,数字钟

Abstract

The development of electronic circuit has grown to be too complicated to be designed base on schematic diagram. The birth of HDL accelerated the development of electronic design automation drastically. Verilog HDL is one of the HDL with multiple and strong functions.

In this thesis, a complex digital system is designed in the bottom-up way with Verilog HDL and is simulated by QuartusⅡ. The function of a digital clock can be realized by downloading the program to FPGA, which includes timing, time-setting, hourly chiming, 12/24transforming, bell-setting and bell-controlling.

Keywords: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,

Digital clock

目录

摘要

Abstract

第一章数字钟设计要求说明

第二章数字钟的设计思路和工作原理第三章模块的Verilog HDL设计与仿真

3.1 计数器模块

3.2 基本计时顶层模块

3.3 分频模块

3.4 整点报时模块

3.5闹钟模块

3.6 LED数码管显示模块

3.7 数字钟顶层模块

第四章FPGA实现

第五章总结

5.1 遇到的问题与解决方案

5.2 尚存在的不足之处

5.3 收获与感悟

参考文献

第一章数字钟设计要求说明

(一)数字钟可以正常进行基本的时,分,秒计时功能。

(二)分别由六个数码管显示时分秒的计时。

(三)可以对数字钟的小时和分钟进行校正。

(四)具有整点报时功能,在时钟计时到59分53秒时开始报时,在59分53秒,55秒,57秒时报时频率为500Hz, 59分59秒时

报时频率为1kHz。

(五)具有闹钟设定功能,具体到小时和分钟,默认模式下闹钟响一分钟。有按键可以控制闹钟是否发出声响。

(六)可以进行12/24小时转换。

(七)具有重置清零功能。

第二章数字钟的设计思路和工作原理

本文中的数字钟设计采用自底向上的设计方法,共分为三层。

首先设计基础模块,包括模6,10,12,24,60 计数器模块,系统频率48MHz到2kHz和1kHz分频模块,1kHz到500Hz,250Hz,1Hz的分频模块,整点报时模块,闹钟模块,LED显示模块。然后,用一个顶层模块控制模12,24,60计数器模块构成基本的计时模块;再用一个顶层模块控制两个分频模块,实现分频模块的统一。最后用一个总的顶层电路,统一之前的子模块,实现数字钟的Verilog HDL描述。如下图方框图所示。

其工作原理是:由系统晶振产生48MHz的稳定的高频脉冲信号,作为数字钟的时间基准,再经过分频器输出标准秒脉冲。模60计数器作为分钟和秒计数器,秒计数器计满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器由模24计数器计数。计数器的输出送至LED译码显示电路,即可显示时间。计时出现误差时可以用校正电路对小时和分钟进行计数。整点报时电路和闹钟电路为基本计时电路的功能拓展,只有在基本计时模块正常运行的情况下才能运行。

第三章模块的Verilog HDL设计

3.1计数器模块

3.1.1 模24小时计数器

小时计数器的计数规律为00-01-02-03……10-11-12……22-23-00……,这样就要求在设计时小时计数器的个位和十位均按照8421BCD码计数。程序如下:

//counter24.v (BCD计数0~23)

module counter24(CounterH,CounterL,nCR,EN,CP);

input CP,nCR,EN; //timing impulse CP,zero clearing singal nCR,enable singal EN output [3:0] CounterH,CounterL;

reg [3:0] CounterH,CounterL;

/*定义了两个四位Reg型矢量,等效于8个变量(CounterH[0]、CounterH[1]、CounterH[2]、CounterH[3]),(CounterL[0]、CounterL[1]、CounterL[2]、CounterL[3])*/

always@(posedge CP or negedge nCR)

//时钟上升沿或清零信号跳变为低电平时,条件为真

begin

if(~nCR) {CounterH,CounterL}<= 8'h00; //nCR=0,异步清零else if (~EN) {CounterH,CounterL}<={CounterH,CounterL};

//对使能信号无效的处理

else if ((CounterH>2)||(CounterL>9)||(CounterH==2)&&(CounterL>=3))

{CounterH,CounterL}<=8'h00;

//对小时计时器出错的处理

else if ((CounterH==2)&&(CounterL<3))

begin CounterH<=CounterH; CounterL<=CounterL+1'b1;end

//进行20到23计数

else if (CounterL==9)

begin CounterH<=CounterH+1'b1; CounterL<=4'b0000;end

//小时十位进位计数

else

begin CounterH<=CounterH; CounterL<=CounterL+1'b1;end

//小时个位计数

end

endmodule

相关文档
最新文档