一、功能介绍使用 FPGA 设计一个乐曲自动演奏控制器, 将源程序下载至 FPG A 器件中,实现乐曲自动演奏。(本设计的乐曲是《友谊天长地久》的部分音乐) 乐曲演奏的原理是:由于组成乐曲的每个音符的频率值(音调) 及其持续时间( 音长) 是乐曲演奏的 2 个基本数据, 因此需要控制输出到扬声器的激励信号的频率高低和该频率信号持续的时间。频率的高低决定了音调的高低, 而乐曲的简谱与各音名的频率之间也有固定的对应关系。所有不同频率的信号都是从同一基准频率分频而得来的, 由于音阶频率多为非整数, 而分频系数又不能为小数, 故必须将计算的到的分频数进行四舍五入取整, 基准频率和分频系数应综合考虑加以选择, 从而保证音乐不会走调。如在 4MHz 时钟下, 中音 1(对应的频率值为 ) 的分频系数应该为: 4000000/(2*)=0xd3821 , 这样只需对系统时钟进行 3821 次分频即可得到所要的中音 1。至于其他音符, 同样可求出对应的分频系数, 这样利用程序可以很轻松地得到对应的乐声。此外, 在程序中设置了一个状态机,每 250ms 改变一个状态(即一个节拍) ,组成乐曲的每个音符的频率值( 音调) 相对应于状态机的每一个状态。只要让状态机的状态按顺序转换,就可以自动播放音乐了。《友谊天长地久》乐谱见下表(注: N 一拍; N 两拍; N﹒四拍; N﹒八拍; N 为乐谱。由于芯片存储容量太小,源程序只加入乐谱的一部分音符) 《友谊天长地久》乐谱 05. | | | | | 1| | . 6. 5. | | | || | | | . 6. 5. | ? 简谱中的音名与频率的关系音名频率/Hz 分频数低音 5 392 16’ d5102 低音 6 440 16’ d4545 中音 1 16’ d3821 中音 2 16’ d3373 中音 3 16’ d3033 中音 5 784 16’ d2551 高音5 880 16’ d2273 高音 6 1760 16’ d1913 二、硬件设计(电路图、原器件清单) 实物元件清单: 印刷电路板一个; 电阻( 10K Ω的 10 个, 200 Ω的8 个, 1KΩ的 14 个, 50Ω的1个); 三极管 3 个; 发光二极管(红黄绿各三个); 蜂鸣器 1 个; 8 段显示器 2 个; 按键 4 个; 4M 晶振 1 个; 电容( 104 的6 个, 10μ的1个); 电源线 1 个; 芯片底座 1 个; 电路图: 功率放大显示部分: 三、软件设计(流程图、源程序) 流程图一个完整的 EDA 设计流程既是自顶向下设计方法的具体实施途径,也是 EDA 工具软件本身的组成结构。其大致的设计流程包括:设计输入、综合、适配、时序仿真和功能仿真、编程下载、硬件测试的步骤。对于目前流行的 EDA 工具软件,图 1-1 的设计流程具有一般性[3]。图 1-1 应用 FPGA/CPLD 的 EDA 开发设计流程框图各部分源程序及说明 module song(clk,beep); // 模块名称 song //I/O 口说明 inpu
FPGA设计一个乐曲自动演奏控制器 来自淘豆网www.taodocs.com转载请标明出处.