基于FPGA音乐硬件演奏电路设计.doc
设计报告
课程名称
任课教师
设计题目乐曲硬件演奏电路
班级
姓名
学号
日期
一.题目分析
1、利用可编程逻辑器件FPGA,设计乐曲硬件演奏电路,其结构框图如下图所示:
模式选择
模式选择
auto
手动输入
基准时钟
12MHz
时钟电路
音乐
节拍
产生
电路
数控分频器电路
音符查表电路
扬声器
4MHz
2、功能要求
利用数控分频器设计硬件乐曲电路,由键盘输入控制音响,同时可自动演奏乐曲。演奏时可选择键盘输入乐曲或者已存入的乐曲,并配以一个扬声器,该设计产生的音乐选自“梁祝”片段。
二、方案选择
与利用微处理器来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。
三、细化框图
(1)音乐硬件演奏电路基本原理
硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
(2)音符频率的获得
多个不同频率的信号可通过对某个基准频率进行分频器获得。由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。本设计中选取750KHz的基准频率。由于现有的高频时钟脉冲信号的频率为12MHz,故需先对其进行16分频,才能获得750KHz的基准频率。对基准频率分频后的输出信号是一些脉宽极窄的尖脉冲信号(占空比=1/分频系数)。为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的1/2。下表中各音符的分频系数就是从750KHz的基准频率二分频得到的375KHz频率基础上计算得到的。由于最大分频系数是1274,故分频器采用11位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设为0,即初始值=211-1=2047,此时扬声器不会发声。
音符名
频率(Hz)
分频
系数
计数初值
音符名
频率(Hz)
分频
系数
计数
初值
休止符
375000
0
2047
中音4
468
1579
低音1
1274
773
中音5
425
1622
低音2
1135
912
中音6
379
1668
低音3
1011
1036
中音7
330
1717
低音4
970
1077
高音1
319
1728
低音5
950
1197
高音2
277
1770
低音6
757
1290
高音3
248
1799
低音7
675
1372
高音4
233
1814
中音1
637
1410
高音5
208
1839
中音2
587
1480
高音6
185
1862
中音3
505
1542
高音7
165
1882
各个音符的频率及其对应的分频系数(基准频率375KHz)
(3)乐曲节奏的控制
本设计中的梁祝的乐曲,最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要提供一个4Hz的时钟频率即可产生1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。
计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。
(4)乐谱发生器
本文将乐谱中的音符数据存储在LPM-ROM中,如“梁祝”乐曲中的第一个音符为“3”,此音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,音符“3”就要在LPM-ROM中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。
(5)音乐硬件演奏电路总体设计流程
当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数