一、 实验目的
1、 了解普通扬声器的工作原理。
2、 使用FPGA产生不同的音乐频率。
3、 进一步体验FPGA的灵活性。
二、 实验原理
本实验是完成一小段音乐程序的开发,然后再用扬声器进行试听。下面主要介绍一下完成本实验的几个主要部分的工作原理。
音符的产生:音符的产生是利用计数器对输入的时钟信号进行分频,然后输出不同的频率来控制扬声器发不同的声音。计数器必须是模可变的计数器,也就是其初始计数值可变,这样便可以对其进行初始化,使其从不同的初始值开始计数,实现对输入时钟信号的不同分频。
节拍的产生:节拍也是利用计数器来实现,如果某一个音符需要维持的时间比较长,那么就可以在此计数器从计数值A到计数值B之间都维持该音符,很显然,A和B之间的间隔越大,那么该音符维持的时间也就越长。
乐谱的存储:乐谱是一个固定的组合电路,根据不同的输入值,然后输出一个固定的值,该值就是音符产生计数器的分频的初始值。
适当的选择这些计数器和组合电路,便可完成不同的乐曲和不同节奏。
三、 实验内容
本实验要求完成的任务是通过编程实现一段音乐旋律的循环播放。
四、 实验步骤
1、 打开QUARTUSII软件,新建一个工程。
2、 建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。
3、 按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光盘中提供的示例程序。
4、 编写完VHDL程序后,保存起来。方法同实验一。
5、 对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。
6、 编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译一次,以使管脚分配生效。
7、 根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。
如果是调用的本书提供的VHDL代码,则实验连线如下:
Clk:时钟输入信号,接1.5MHz的时钟源。
Spk:输出,接扬声器部分的输入端SPK。
8、 用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。
五、 实验结果与现象
以设计的参考示例为例,当设计文件加载到目标器件后,确认信号连接线已正确连接,将数字信号源模块CLOCK1的时钟选择为1.5MHz ,在实验平台上的音频输出模块将会响起一段“梁祝”音乐的旋律。
六、 实验报告
1、 了解乐曲节拍产生的过程,注意音符的节拍长短的变化是由什么控制的。
2、 熟悉音乐编程的过程,填入新的乐曲。
3、 试利用FPGA的LPM-ROM将音乐旋律存放入ROM,然后再调用的形式编写程序。
4、 绘出仿真波形图,并加以说明。