1、 在系统编程技术项目设计报告在系统编程技术项目设计报告 课程名称课程名称 在系统编程技术在系统编程技术 任课教师任课教师 设计题目设计题目 乐曲硬件演奏电路乐曲硬件演奏电路 班班 级级 姓姓 名名 学学 号号 成成 绩绩 日日 期期 乐曲硬件演奏电路乐曲硬件演奏电路 一、 题目分析 经过查阅相关的资料,我们可以知道,组成乐曲的每个音符的发音频率值及 其持续的时间是乐曲能连续演奏所需的两个基本要素, 所以我们要设计出类似于 弹琴人手指的模块,类似于琴键的模块,类似于琴弦或音调发生器的模块,最后 通过这三个模块可以完成梁祝乐曲的演奏,与演奏发音相对应的简谱码也可 以输出显示出来。 二、 设计方案
2、模块划分如下图: 顶层实体描述如下: 图 1 电路原理框图 该主系统由三个模块: Songer 顶层文件、 div 分频器、 译码器组成。 且 Songer 顶层文件还包括 3 个子文件分别是 NoteTabs,ToneTaba 和 Speakera,此外,我 们还需建立一个名为“music”的 LPM_ROM 模块与 NoteTabs 模块连接。 1对于模块 NoteTabs 的功能描述: 该模块的功能就是定义音符数据 ROM“music”随着该模块中的计数器控制 时钟频率速率作加法计数时,即地址值递增时,音符数据 ROM 中的音符数据。将 从 ROM 中通过 ToneIndex30端口输向
3、 ToneTaba 模块,演奏梁祝 。在该模 块中设置了一个 8 位二进制计数器(计数最大值为 138) ,作为音符数据 ROM 的 地址发生器。这个计数器的计数频率为 4Hz,即每一计数值的停留时间为 0.25 秒,恰为当全音符设为 1 秒时,四四拍的 4 分音符持续时间。 2对于模块 ToneTaba 的功能描述: 该模块是乐曲简谱码对应的分频预置数查找表电路, 其中设置了乐曲的全部 音符所对应的分频置数,每一音符的停留时间由音乐节拍和音调发生器模块 NoteTabs 的 CLK 的输入频率决定,这些值由对应于 ToneTaba 的 4 位输入值 Index30确定,最多有 16 种可选值
4、。输向 ToneTaba 中 Index30的值 ToneIndex30的输出值与持续的时间由模块 NoteTabs 决定。 3对于模块 Speakera 的功能描述: 该模块是一个数控分频器,音符的频率可由此模块获得。由 CLK 端输入一具有较 高频率的信号,通过 Speakera 分频后由 SPKOUT 输出。由于直接从数控分频器中出来 的输出信号是脉宽极窄的脉冲式信号。为了利用驱动扬声器,需加一个 D 触发器以均 衡其占空比, 频率将是原来的 1/2。 Speakera 对 CLK 输入信号的分频比由预置数 Tone 决定。SPKOUT 的输出频率将决定每一音符的音调。 4对于译码器模块
5、的功能描述: 译码器模块是一个七段译码器,作用是在硬件上显示音频的高低,用 0 到 7 分别 对应空节拍、do、ri、mi、fa、suo、la、xi,高音时,LED 亮,数码管显示对应数 字。 图 2 顶层电路图 三、 方案实现 1 对于模块 NoteTabs 的仿真及描述 这个计数器的计数频率为 4Hz,即每一计数值的停留时间为 0.25 秒,恰为 当全音符设为 1 秒时,四四拍的 4 分音符持续时间,由此即可保证每个音符持续 的时间如仿真波形图所示。 2 对于模块 ToneTaba 的仿真及描述 该模块是乐曲简谱码对应的分频预置数查找表电路, 其中设置了乐曲的全部 音符所对应的分频置数,对
6、于不同的输入,通过查表方式可以获得不同的控制音 调的预置数。 3 对于模块 Speakera 的仿真及描述 由CLK端输入一具有较高频率的信号, 通过Speakera分频后由SPKOUT输出。 由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号。 4 对于模块Songer的仿真及描述 梁祝乐曲简谱如下: 波形仿真图如下: Songer 模块就是顶层设计文件, 所有的模块都由它调用。 输入了 8Hz 与 12Hz 的时钟信号,然后由 CODE1 输出了与演奏发音相对应的简谱码,HIGH1 为高八度 音标,SPKOUT 输出乐曲。 四、 硬件测试及说明 电路的顶层文件管脚分配图如下: 图 3 管脚分配图 选择实验电路模式 1,先将引脚锁定,使 CLK12MHz 与 clock9 相连接,接受 12MHz 时钟频率即用短路冒在 clock9