可置数,设定闹钟的时钟设计

实验手册

  • 实验目的
  1. 实现时钟
  2. 实现时钟置数
  3. 实现闹钟设置和闹钟放歌
  4. 完成仿真和板级验证
  • 实验原理
  1. 理论原理
    1. 按键控制部分(消抖后,key有效值为1)。

使用状态机,通过按键进入不同状态,从而使得按键可以设置闹钟和当前时间。

置数和闹钟我视为相同操作,以flag区分。

最后将置数值和功能标识输出。

 

          2.时钟部分

利用计数器计数,实现时分秒计时。计数部分包含cnt_base(1s时钟源),cnt_s,cnt_min,cnt_h,实现基础时钟。

置数功能通过对计数器加入置数位(flag==2’b10)实现,显示的值实时更新。

闹钟功能设置时间可观察化, flag==2’b11时显示闹钟时间。

最后进行判断,闹钟时间时位和分位与当前时间一致并且使能闹钟功能时,蜂鸣器标志位输出flag_b=1。

         3.闹钟音乐播放

音符读取速度。

 

音符读取。

 

音符译码,根据音符匹配出对应计数值。

 

flag_b==1时产生驱动蜂鸣器的pwm波(50%,占空比大小不同,响声大小不同)。

 

2.硬件原理

蜂鸣器

低电平时蜂鸣器的驱动管导通。

 

按键

             按键默认状态为1,按下为0。

3.系统框图

        输入按键消抖后得到[3:0]key1,作为状态机的状态切换和value的改变条件,控制模块以[1:0]flag表示模式(设置当前时间还是设置闹钟),输出value作为数字时钟置数来源或者闹钟源数据,数字时钟部分完成计时功能并判断flag输入,flag == 2’b10,value的值是进行数字时钟置数, flag == 2’b11时,vlaue是更新当前闹钟设置值。通过对进行当前时间和设置的闹钟时间进行比较,到达闹钟时间时输出flag_b=1,作为闹钟播放音乐的标志。

  • 模块说明

4.模块端口信号列表

信号名

clk

时钟信号

rst

复位

beep_en

闹钟使能信号,led灯

[3:0]key

按键输入

[5:0]seg_sel

数码管位选信号

[7:0] seg_dig

数码管段选信号

beep

蜂鸣器

5.状态转移图

 

  1. 6.时序图

状态机时序图

7.仿真波形图

 状态机仿真波形

Key0按下,进入置数模式,状态机state_c=s2。

当状态到达s4时,value=value_h*10000+value_f*100+value_m;

按下key1时,flag=2’b11。

设置完毕,state_c=s1, value=value_h*10000+value_f*100+value_m;

  • 板级验证效果(拍照或录制视频)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值