多功能数字钟设计说明书2

更新时间:2024-05-24 20:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

浙江机电职业技术学院实训说明书 课题名称: 多功能数字钟

引言

随着进入了数字化和信息化的时代,其特点是各种数字产品的广泛应用。现在数字产品在性能提高、复杂度增大的同时,其更新换代的步伐也越来越快,实现这种进步的因素在于生产制造技术和电子设计技术的进步。 生产制造技术以微细加工技术为代表,目前已进展到深亚微米阶段,可以在其平方厘米的芯片上集成数千万个晶体管。

钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断电力设备,甚至各种定时电器的自动启用等,所有这些都是以钟表数字化为基础的。因此研究数字钟及扩大其应用,有着非常现实的意义。

内容摘要

利用QuartusⅡ,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常分,

1

浙江机电职业技术学院实训说明书 秒计时,动态显示、快速校分、整点报时、时段控制的功能。

分析整个电路的工作原理,分别说明各自模块的设计原理和调试、仿真、编程下载的过程,并对最终结果进行总结,最后提出在实验过程中出现的问题和解决的方案。

通过实验掌握一些逻辑组合期间的基本功能和用法,同时体会利用软件设计电路的方便快捷,避免硬件布线的繁琐,提高效率。

设计内容和功能要求

1) 设计内容简介:综合运用所学的数字电路和系统设计的知识,学会采用层次化设计的概

念,将此次任务分成若干个模块,规定某一模块的功能和各模块之间的接口,然后将各模块组合起来构成系统框图。任务要求设计一个多功能数字时钟电路,可以完成00:00:00~23:59:59的及时功能,并具有闹钟,校准和整点报时功能。

2) 设计要求:设计一个数字钟系统,能实现“小时”、“分钟”和“秒”的计时及显示功能

外,还能实现时间校对和闹钟功能,整点报时功能。

3) 设计方法:用硬件描述语言(VerilogHDL 语言)和电路图设计的方法在QuartusⅡ软件

系统平台上建立数字电子钟电路的顶层文件并完成编译和仿真。

4) 设计实现:将若干底层模块打包组成整个多功能数字钟的顶层模块、仿真及下载到可编

程逻辑器件上,从而实现各项功能。

系统设计方案

数字钟的功能可以从总体上分为三类,分别是正常计时、时钟校对和闹钟设置,所以考虑在系统中设置一个模式控制信号mode。模式控制信号对应一个按键,每按一次按键相当于工作模式进行一次变换,多次按下则数字钟将在正常计时、时间校对和闹钟设置三种模式下于此循环变换。

在设计中时钟校对和闹钟设置工作模式都需要对时间进行设置,通常对小时、分钟和秒进行设置,所以需要在系统中设置一个时间设置信号set,对应一个按键,每次按键相当于在小时设置、分钟设置和秒设置之间进行变换。时间设置时,分钟、小时和秒计时单位之间互相独立,不存在进位关系。

同时设置一个时间调整信号(加1按键),每按一次与accum对应的按键,相当于对需要调整的分钟或者小时的数字进行加1操作。

数字钟的计时输出信号是必不可少的,用hour,min和sec信号分别表示需要显示的小

2

浙江机电职业技术学院实训说明书 时、分钟和秒钟的计时结果,上述计时结果将通过译码显示模块进行译码后,连接到外部的七段数码显示器。

在带有闹钟设置功能的数字钟,闹钟输出信号是必须的,当到达闹钟设置的时间后,要想外部扬声器发送一个闹铃信号,设置speaker。

本设计中的小时、分钟和秒的计时结果采用BCD码表示方法。采用这种表示方法便于对技术结果的高位和低位分别进行译码。

系统框图

mode mode Clk12Mhz 分频器模块 set thour i_spk_set Set tmin 计时模块 tsec hour am_accum ahour min 闹钟模式 ah_accum amin accum Accum tm_accum shour sec 设置时间 th_accum smin 整点报时 Thour==ahour&&t speaker min==amn en l_speaker

3

浙江机电职业技术学院实训说明书

多功能数字钟接口信号定义

信号名 clk mode accum Set voice L_alert L_hour L_min L_al_set alert hhout hlout mhout

I/O I I I I I O O O O O O O O 位宽 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 7bits 7bits 7bits 7bits 4

含义 系统时钟输入 数字中工作模式切换信号 时钟设置的加1信号 对小时和分钟进行设置的选择信号 闹钟闹铃/静音设置信号 闹钟闹铃标志信号 小时设置标志信号 分钟设置表示信号 闹钟设置的标志信号 闹铃输出信号 小时计时高位译码输出信号 小时计时低位译码输出信号 分钟计时高位译码输出信号 浙江机电职业技术学院实训说明书 Mlout shout slout O O O 7bits 7bits 7bits 分钟计时低位译码输出信号 秒计时高位译码输出信号 秒计时低位译码输出信号

各模块介绍

1) 顶层模块:

下面设计了四个模块,包括:分频器模块、闹钟模块、计时模块和时间设置模块。在顶层连接模块中,按照信号连接关系把这四个模块连接起来。

module wq( );

clk, o_miao_1, o_miao_2, o_fen_1, o_fen_2, o_shi_1, o_shi_2, mode, set, accum, voice, o_led1, o_led2, o_led3, o_led4, o_led5, o_led6, o_led7, led, nl_kz

input clk;

input mode; input set; input accum; input voice; input nl_kz; output o_led1; output o_led2; output o_led3; output o_led4; output o_led5; output o_led6; output o_led7; output led; output [3:0]o_miao_1;

output [3:0]o_miao_2;

output [3:0]o_fen_1;

output

5

[3:0]o_fen_2;

output [3:0]o_shi_1;

output [3:0]o_shi_2;

wire clk1s; wire [7:0]miao; wire [7:0]fen; wire [7:0]shi; wire [7:0]fen_1;

wire [7:0]shi_1;

wire nz_bz; wire [2:0]m_mode;

wire [7:0]m_fen;

wire [7:0]m_shi;

1s)

); jishi u_jishi( 1s),

.clk1s(clkwire [7:0]m_miao;

wire [7:0]m_m_fen;

wire [7:0]m_m_shi;

wire [7:0]m_m_miao;

wire [2:0]m1; wq_1hz u_wq_1hz(

.clk(clk), .clk1s(clk

浙江机电职业技术学院实训说明书 reg o_led7; reg led; reg [2:0]m7;

always @(posedge nl_kz) begin ~o_led4;

if(nl_kz == 1)

o_led4 =

1)

begin o_miao_1 = o_miao_2 =

end

else if(m_mode ==

1;

led

end

if(nz_bz == 1) begin

end

0;

o_led7 =

m_miao; m_miao/10; if(o_led4 == 1)

else ;

end

always @(posedge clk1s) begin if(m_mode == 0) begin o_miao_1 = i_miao; o_miao_2 = i_miao/10; o_fen_1 = i_fen; o_fen_2 =

i_fen/10; o_shi_1 =

i_shi; o_shi_2 =

i_shi/10;

o_led1 = 1; o_led2 = 0; o_led3 = 0; if(nz_bz == 1) begin begin

if(o_led4 == 1)

led

= 1;

else ;

end end else begin

led = 0;

m_fen; m_fen/10; m_shi; m_shi/10;

1;

0;

0;

1)

0;

1;

0;

0;

o_fen_1 = o_fen_2 = o_shi_1 = o_shi_2 = o_led1 = 0; o_led2 = 1; o_led3 = 0; if(m1 == 0) begin

o_led5 =

o_led6 =

o_led7 =

end

else if(m1 ==

begin

o_led5 =

o_led6 =

o_led7 =

end else begin

o_led5 =

o_led6 =

11

= 1;

else ;

end else

led = 0; end else begin if(m1 == 0) begin

o_led5 = 1;

o_led6 =

0;

o_led7 =

0;

end

else if(m1 ==

1)

begin

o_led5 =

0;

o_led6 =

1;

o_led7 =

0;

end else begin

o_led5 =

0;

o_led6 =

0;

o_led7 =

1;

浙江机电职业技术学院实训说明书

end o_miao_1 = o_miao_2 = o_fen_1 = o_fen_2 = o_shi_1 =

m_m_shi;

o_shi_2 = o_led1 = 0; o_led2 = 0; o_led3 = 1; if(nz_bz == 1) begin

m_m_shi/10;

= 1;

end

endmodule

end

end else

led = 0; else ;

led

m_m_miao; m_m_miao/10; m_m_fen; m_m_fen/10;

if(o_led4 == 1)

实验中遇到的问题及解决方法

问题1:实验后期的引脚分配及下载方法不当,实验所用电脑没有驱动。耗时较长。

解决方法:参阅电子工业出版社出版的FPGA/CPLD应用技术第161页关于引脚的分配和下载验证的介绍。

问题2:下载验证过程中时段控制部分有错误,源代码在软件上仿真没有错误,但是下载到实验版验证时,数码管从00:09:00开始亮,而设计要求是从00:00:00开始。 解决方法:修改源代码中的fen〈=8‘h59,则数码管恢复设计要求。

小结

1) 设计必须要有整体概念,提前熟悉软件。刚开始时没头绪,不知道该怎样分块,进度很

慢,再加上对软件不是很熟悉,那些不能远行,那些是不正确的操作等等,走了很多冤枉路。

2) 设计的模块要分块调试,免得等所有都完工了再调试出错,那样的话很难确定是四名出

错,更加没头绪。有必要的话做一部分后就送到平台上调试,这样会大大减少出错率。 3) 没有硬件软件化的概念,开始设计是没有总体的规划,不知道什么是可行的,怎样使搭

12

浙江机电职业技术学院实训说明书 配组合最优化。

4) 遇到问题先自己摸索,查阅资料要有技巧,避免没有目的和思路。明白自己要解决什么

问题。同时请教老师,和同学交流。良好的沟通很重要。

CPLD/FPGA技术应用CPLD/FPGA技术应用

参考文献

王芳 杭州 王静霞 北京 13

电子工业出版社 电子工业出版社

浙江机电职业技术学院实训说明书

14

本文来源:https://www.bwwdw.com/article/2pw7.html

Top