多功能数字钟FPGA实现.doc
文本预览下载声明
实验报告:
多功能数字钟
081180008 陈家伟
一、设计任务
本实验使用verilog HDL语言在FPGA平台上实现了一个简单的多功能数字钟,它主要包含一下几个主要功能:
(1)实现基本计时功能,并以24小时显示。
(2)实现校时功能。
(3)实现闹钟功能:设定闹钟时间,采用蜂鸣器提示,并且实现了自动关闭。
(4)实现跑表功能:具有启动、停止、继续、复位功能。
在本实验中,最大的问题便是多个功能并行时的干扰问题,需要在设计时对功能切换过程可能产生的干扰充分把握,实现多个功能的并存。
二、输入输出界面的设计
在实验中,输入输出界面需要首先考虑,以保证整个系统设计的统一性。在输入界面的设计上,由于按键资源的限制,必须考虑各个功能键的复用;在输出界面的设计上,由于显示资源的限制,必须考虑数码管显示界面的复用。
输入界面设计如下:
(1)KEY1(PIN_122)为模式切换键。整个系统具有4种功能模式:计时(mode0)、校时(mode1)、闹钟(mode2)、跑表(mode3)。由KEY1负责模式的切换。
(2)KEY2(PIN_121)为复用键。mode0(计时)下,KEY2键不起作用;mode1(校时)下,KEY2键使时间增加;mode2(闹钟)下,KEY2键使闹钟设置对应位增加;mode3(跑表)下,KEY2键控制跑表的开始、暂停、继续。
(3)KEY3(PIN_123)为复用键。mode0(计时)下,KEY3键不起作用;mode1(校时)下,KEY3键负责时位、分位的切换;mode2(闹钟)下,KEY3键负责闹钟设置时位、分位的切换;mode3(跑表)下,KEY3控制跑表的复位。
输入界面设计时主要考虑的是尽量将不同模式下相近的功能归并到同一个按键上来,一方面方便用户的操作,另一方面也使得设计简洁明了,减少的错误的出现。
输出界面(四位数码管显示器)设计如下:
(1)mode0(计时)下,四位数码管显示的是24小时计时:左边两个数码管显示小时;右边两个数码管显示分钟;最右边数码管的dp以闪动显示秒。
(2)mode1(校时)下,四个数码管显示与计时模式下相同,但是最右边的数码管的dp停止闪动,以区分计时模式与校时模式。
(3)mode2(闹钟)下,四个数码管显示与校时模式下相同,但是切换为闹钟设定值的显示。
(4)mode3(跑表)下,四个数码管显示与校时模式下相同,但是切换为跑表的显示。
三、模块设计
3.1 显示模块设计
由于FPGA口资源的限制,数码管显示模块采用动态显示。数码管动态显示需要位选信号和段选信号,其中段选信号控制每一位数码管的显示,位选信号利用视觉暂留效应通过高速的位选切换达到静态显示的效果。
其中,段选模块如下图所示:
位选模块如下图所示
在本显示模块中,以最后一位dp的闪烁显示秒
3.2 计数器模块
计数器模块是本实验的核心,在时间的记录、时间的设定、闹钟的设定中都有重要的应用。
下面是用于计时(mode0)、设定时间(mode1)的计数器模块
其中,由select_2to1_1\2两个模块确定计数器的时钟输入,由select1_1\2两个模块实现时间设定模式的位切换。
下面是用于闹钟设定的模块
其一个24进制计数器和一个60进制计数器分别由按键信号提供时钟的输入,实现闹钟的设定。
3.3 闹钟比较模块
闹钟比较模块是闹钟功能的核心。其原理是将计时计数器的值同闹钟计数器的预置值进行比较。
比较模块如下图所示:
3.4 跑表模块
跑表模块由两个100进制计数器构成,由按键控制计数器时钟输入,以实现对跑表的开始、暂停、继续、复位。
跑表模块如下图所示:
显示全部