FPGA数字钟

FPGA数字钟
FPGA数字钟

数字钟设计

一、实验目的:

通过设计实例,深入理解自顶向下设计方法,系统设计规范、系统设计、模块设计和系统仿真与实现各阶段的设计内容,初步掌握规范的数字系统设计方法并实践。

二、实验要求:

1、系统概述:设计一个用LED 7段显示器显示的24小时制数字钟。

2、系统目标:

(1)用8个LED 显示时间,如9点25分10秒显示为,09-25-10。

(2)设置2个按键,按键SET用于工作模式选择,按键UP用于设置数值。(可选)

(3)按SET键循环设置工作模式为:正常显示->时设置->分设置->秒设

置。在设置工作模式时,被设置相应数字按1秒速率闪烁,其它数字不变。

(4)在设置工作模式时,按UP键一次,被设置相应数字增加1,加到最大值后再加返回0,如小时加到23后再加就返回0,分和秒加到59后再加返回0 。

3、系统设计依据:

外部输入时钟为40MHZ,通过分频产生秒脉冲信号,用模60计数器对其计数产生分脉冲信号,对分脉冲用模60计数器对其计数产生时脉冲信号,再用模24计数器对时脉冲计数,即可实现一天24小时的时间信号,通过7段LED 数码管显示出来则为基本数字钟,校时电路通过两个外部异步按键对“时”、

“分”、“秒”显示数字进行校对调整。

4、系统实现要求:

要求用Mars-EP1C3-EDA实验平台。芯片与封装选择:本设计用EP1C3T FPGA实现,144脚封装,输入输出为LVTTL电平。

5、系统验证及测试要求:

用Mars-EP1C3-EDA实验平台搭建模拟测试平台测试,测试验证数字钟实现设计目标。

三、系统设计关键技术

1、按键消抖

闭合稳定

前沿抖动后沿抖动

图3-1

由图3-l可见,在按键闭合和断开时产生了多个边沿,而在实际中每按一次键,我们只需要一组稳定的上升或下降边沿,所以对于电路中的按键信号,如果我们不滤除抖动的话,还是简单的读取信号的边沿,会引起一次按键被误读多次,这样就会引起电路的误动作。为了保证按一次键电路只有一次正确的响应,即在键闭合稳定时读取键的状态,就要求电路中必须采取滤除抖动的措施。

原理:在设计中用时钟信号(key_clk)进行采样,对于按键输入信号,当两次采样信号相同时,这是判定已经稳定的按下或放开了按键,D触发器相应的被置成0态或1态。如两次采样结果不相同,则触发器维持原输出信号不变,

由于直接由触发器输出的信号时间宽度可能过长,所以在触发器后再接一级同步化电路,保证每次输出的信号只占有一个时钟周期的宽度。应用这种方法去滤除抖动,关键是确定采样时钟的频率,保证两次采样的时间间隔能够大于按键的抖动时间,且小于正常按键时的按键稳定闭合时间。

2、采用BCD码的计数模式

时、分、秒的计数都采用BCD码计数,如果采用二进制计数,分的最大计数值为59,只需要6位就可以,因为时的计数值要通过两个数码管显示,所以计数值需要经过两级译码才能驱动数码管使其正常显示,必须先把计数值译码成高低四位的BCD码,然后再分别把高、低四位BCD码译码成数码管的显示编码。如果直接采用BCD码计数,只需要一次译码就可以正常显示计数值,故采用BCD码计数更方便,简化电路。

3、数码管的动态显示

数码管的动态扫描,就是轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时在显示。数码管的轮流扫描频率不能太小,否则数码管不能同时显示,一般扫描频率在500Hz到1Khz即可。本设计中的数码管位选信号为低电平有效,数码管的段为低显,复位后把位选信号d_col赋值为8’b1111_1110,然后以1Khz的扫描频率使其循环左移,并送出相应位的字形码,即可实现数码管的动态显示。

四、系统详细设计方案:

1、系统设计分析:

数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。

秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,通过将外部输入时钟为40MHZ分频实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发生一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。

将“时”、“分”、“秒”计数器的输出值经七段显示译码器译码,通过八位LED七段显示器显示出来,显示格式为“时—分—秒”。

通过Set和Up按键对“时”、“分”、“秒”显示数字进行校对调整,Set 键循环控制工作模式,即“正常显示”、“时设置”、“分设置”、“秒设置”的循环控制,在设置工作模式时,被设置相应数字按1秒速率闪烁,其它数字不变。Up键实现调整状态时相应时间的快速加“1”以实现时间校准。

2、系统时钟和复位规划:

本设计采用一个全局时钟clk和复位reset。

3、顶层模块划分及模块功能说明

系统分为5个模块,Freq_div模块,Clock_cnt模块,Clock_ctl模块,Key_ctl 模块和Display模块。系统框图如图4-1所示,图4-2是顶层模块设计。

输入信号:

clk:系统时钟;reset:系统复位;

set:工作模式选择按键;up:调时按键;

输出信号:

d_col[7:0]:八位LED动态选择;

d_out[7:0]:LED 显示数据;

图4-1 系统框图

图4-2 顶层模块设计

4、每个模块详细功能说明,信号定义及时序定义

(1)Freq_div 模块:将40M Hz 的系统时钟进行分频产生三种时钟使能信

号:scan_clk(1khz)、key_clk(100hz)、s_clk(1hz)。

输入信号:

clk:系统时钟rst_n:复位信号

输出信号:

scan_clk:数码管扫描频率key_clk:按键采样频率

s_clk:1s时钟信号

(2)Key_ctl模块:完成对按键的同步、去抖功能,输出稳定的按键信号set_en、up_en。

输入信号:

clk:系统时钟rst_n:复位信号

set:模式设置按键up:计数值加按键

输出信号:

Set_en:模式设置使能信号up_en:按键加使能信号

(3)Clock_ctl模块:通过set_en信号对“正常显示”、“时设置”、“分设置”、“秒设置”模式的循环控制,并产生设置信号h_set(时)、m_set(分)、s_set(秒)供Clock_cnt使用。

输入信号:

Clk:系统时钟;reset:复位信号;

set_en:工作模式选择信号;

输出信号:

H_set:时设置使能信号;M_set:分设置使能信号,

S_set:秒设置使能信号;状态机信号:

Normal:正常显示状态;Hour_set:时设置状态;

Minute_set:分设置状态;Second_set:秒设置状态。

(4)Clock_cnt模块:完成数字钟的正常显示和数字钟的时、分、秒的校时,在校时模式下,通过ctl信号控制LED的闪烁,也就是间隔1s输出时间数据。

输入信号:

Clk:系统时钟reset:复位信号;

up_en:校时信号s_clk:1秒脉冲信号;

h_set:时设置使能信号;m_set:分设置使能信号,

s_set:秒设置使能信号;

输出信号:

h_data:时输出信号;m_data:分输出信号;

s_data:秒输出信号;

(5)Display模块:LED的动态显示,显示格式“时—分—秒”。

输入信号:

reset:复位信号;clk:系统时钟信号

scan_clk:数码管扫描信号h_data:时信号;

m_data:分信号;s_data:秒信号;

输出信号:

d_col:数码管的位选择信号

d_out:译码后驱动数码管信号

五、系统设计仿真及测试方案

A 、采用Quartusii 和Modelsim 的功能仿真,采用Quartusii 的时序仿真分析,验证设计的正确性。

B 、在Mars-EP1C3-EDA 实验平台上实现本设计,并测试其正确性。具体方案如图4-3所示。

八位数码管实时显示时间格式“时—分—秒”

KEY1和KEY2分别表示set 、up 键

图4-3

C 、实验板信号定义

表4-1

六、模块详细设计及功能仿真

1、Freq_div模块设计及功能仿真:

(1)模块设计

分频电路的原理:分频电路实际上就是一个计数器,根据系统提供的时钟频率和你所需的时钟频率计算出计数的值,当计数值达到设置的值时,使输出变化一次。系统提供的时钟频率为40MHz,该模块包括三个分频电路:原理如图2-4所示。

第一步:将系统时钟40_000分频产生1KHz信号scan_clk;

第二步:将1KHz进行10分频产生100Hz信号key_clk;

第三步:将100Hz进行100分频产生1Hz信号s_clk。

(scan_clk)(key_clk)

图6-1

(2)功能仿真

为了减小仿真时间和难度,把分频值改小进行仿真。设置clk周期为2ns。

设置对clk进行4分频产生scan_clk;

设置对scan_clk进行3分频产生key_clk;

设置对key_clk进行5分频产生s_clk。

图6-2

有图知,scan_clk周期为:8ns=4T clk。key_clk周期为:24ns=3T scan_clk。S_clk周期为:120ns=5T key_clk=。分频功能正确。

2、Key_ctl模块设计及功能仿真

该模块主要功能是对异步的按键信号同步处理,并消除按键抖动。原理:先用D触发器打两级,然后间隔10ms(key_clk有效)采样,把两次采样值相与,比较两次采样值是否同一,由于直接由触发器输出的信号时间宽度可能过长,所以在触发器后再接一级同步化电路,保证每次输出的有效信号只占有一个时钟周期的宽度。图6-3是set按键的同步消抖处理电路,up的原理与其相同。(1)模块设计

set

set_en

rst_n

clk

key_clk

图6-3 Set 按键消抖原理

(2)功能仿真

相关主题
相关文档
最新文档