VGA蜂鸣器秒表设计
一、设计简要概况:
本设计基于手机上的数字秒表进行设计,结合VGA显示,蜂鸣器的使用以及开发板的相关基础知识可以实现计时和倒计时两种功能。通过参考学习指导书上的简要代码,自我设计编写数字秒表的所有核心代码并下板验证其功能。数字秒表的设计灵感源于生活,使设计者更为清楚地了解到数字系统设计的相关过程,掌握一定的设计能力,为今后的学习实践奠定坚实的基础。
二、设计功能介绍:
(1) 计时功能
l 计时与暂停:将rst_n置1,xuanze置1,进入计时功能状态,将play2置1,秒表开始计时,计时最大范围可达到59分59秒,当play置0时,即时停止,系统维持当前停止时刻的时间保持不变。
l 记录与保存:在计时的过程中,通过按按钮让record在短时间内置1,可记录计时过程中的三个时刻,如果按按钮的次数大于三次,从第四次开始将会覆盖之前保存过的时刻数据。通过将[2:0]check所代表的开发板最左边三个开关分别置1,可以查看之前保存的时刻数据,优先级为check[2]>check[1]>check[0]。
l 时间显示:将rst_n2置1,计时功能可以通过七段数码管来显示时间,左边两个用于显示分钟,右边两个用于显示秒数,当计时停止时(play=0),七段数码管保持当前时刻的秒数保持不变。
(2) 倒计时功能
l 倒计时与暂停:将rst_n置1,xuanze置0,进入倒计时功能状态,系统规定倒计时时长为1分钟,将play置1,秒表开始计倒时,将play置0,秒表停止在当前时刻,可通过系统设计规定不同的倒计时时长。
l 闹铃歌曲:当计时结束时,开发板会通过蜂鸣器自动循环播放《天空之城》,作为闹钟的提示音提醒时间已到,通过将rst_n置0,停止播放,并让计时器恢复到起始状态。
l 时间显示:将rst_n2置1,计时功能可以通过七段数码管和VGA显示屏分别显示时间,左边两个七段显示管用于显示分钟,右边两个用于显示秒数,当到计时结束时VGA显示屏上的数字自动消失,开发板最左边的LED会亮起。
三、设计原理
(1) VGA显示原理
1. VGA的概念
VGA的英文全称是Video Graphic Array,即显示绘图阵列。VGA 支持640X480的较高分辨率下同时显示16种色彩或256 种灰度,同时在320X240 分辨率下可以同时显示256 种颜色。肉眼对颜色的敏感远大于分辨率,所以即使分辨率较低图像依然生动鲜明。VGA 由于良好的性能迅速开始流行,厂商们纷纷在VGA 基础上加以扩充,如将显存提高至1M 并使其支持更高分辨率800*600或1024 *768,这些扩充的模式就称之为VESA的Super VGA 模式,简称SVGA,现在的显卡和显示器都支持SVGA 模式。不管是VGA 还是SVGA,使用的连线都是15针的梯形插头,传输模拟信号。
2. VGA的接口信号
目前大多数计算机与外部显示设备之间都是通过模拟VGA 接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。本例中,VGA 接口是标准的15针接口,有五个接口信号,如下表。

3.行同步和场同步
为了实现发送端与接受端图像各点一一正确对应,发送端与接收端的扫描必须同步。同步脉冲是周期稳定,边沿陡峭的脉冲。按我国电视标准,行同步脉冲的频率等于行频为15.625KHZ,行周期为64us。在电视技术中常以64us 作为时间单位,并以H 表示,即1H=64us。场同步脉冲频率等于场频为50HZ, 场周期为20ms,即312.5H。行同步脉冲宽度为4.7us 左右,场同步脉冲宽度为2.5~3H。
(2)蜂鸣器发声原理
1、音调的控制
频率的高低决定音调的高低。简谱中从低音1 到高音1 的每个音名对应的频率如下表所示。

考虑到如果基频过低,则由于分频比太小,造成四舍五入后误差较大;如果基频过高,虽然误差减小了,但是分频数变大。综合以上两个因素,选择5MHz 作为基频。由于实验板上没有5MHz 的时钟频率,所以必须先分频。
为了减小输出的偶次谐波分量,输出到扬声器的波形应为对称方波,因此在扬声器前要加一个二分频。表中给出了各音阶频率时计数器不同的预置数。采用加载预置数实现分频的方法比采用反馈复零法节约资源,实现起来也容易些。对于乐曲中的休止符,只要令分频系数设为0,即初始值为2e14-1=16383 即可,此时扬声器将不会发出声。
2.音长的控制
音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。
本例演奏的梁祝片段,最短的音符为四分音符,如果将全音符的持续时间设为1s 的话,则只需要再提供一个4Hz的时钟频率即可产生四分音符的时长。
演奏电路的原理图如下图所示:

4.参考代码功能验证波形图

四、设计架构
设计整体架构
l 顶层模块(two_function_stopwatch)
l 计时和记录功能模块(time_counter_record)
n 边沿检测器(posedge_detection)
n 计时模块(time_counter)
l 蜂鸣器模块(fengmingqi)
l VGA模块(vga2)
l 倒计时模块(time_countdown)
l 动态扫描分频模块(fenpin2)
l 时钟1Hz分频模块(fenpin_1HZ)
l 动态扫描模块(saomiao_xuanze)
l 七段数码管模块(seg_dec)
六、实验结果分析
本次实验经过验证符合预期结果。
计时可以随时停止,并最多保存记录三个计时过程中的时刻。倒计时过程中,VGA显示屏显示数字,可以随时停止,倒计时结束后可以通过蜂鸣器演奏《天空之城》模仿显示生活中的闹钟。
七、实验心得
在设计数字系统的过程中会遇到诸多问题,比如在一开始时VGA显示屏无法显示,通过debug的过程中发现是划分区域的问题,显示过后发现位置不太准确,又经过了几次调试后才最终成果。不过,通过验证——修改——验证这一看似重复的过程,个人的实力水平和对知识的透彻程度都有大幅度的提升。在做蜂鸣器的时候,当自己听到美妙的歌曲时,心中不由自主地长生一种成就感和兴奋感。同时,通过数字系统的设计,我对整个过程有了较为全面的了解,也为今后的学习和实践打下了坚实的基础。