EDA乐曲硬件演奏电路设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《电子系统设计》课程课程设计报告

题目: 乐曲硬件演奏电路设计

*名:***

院系:电力学院

专业:电子科学与技术

学号: *********

指导教师:**

完成时间: 2016 年 12 月 21 日

目录

1 课程设计题目、内容与要求 (1)

1.1 设计内容 (1)

1.2 具体要求 (1)

2 系统设计 (1)

2.1 设计思路 (1)

2.2 系统原理 (3)

2.2.1总体框图 (3)

2.2.2工作过程 (3)

2.2.3乐曲演奏的原理图 (4)

3 系统实现 (4)

3.1.分频器(FDIV) (4)

3.2.计数器CNT138T (6)

3.2.1计数器CNT138T的设计 (6)

3.3.分频预置数译码器F_CODE模块 (7)

3.3.1 F_CODE模块的设计 (8)

3.4 数字分频器SPKER模块 (10)

3.4.1数字分频器SPKS模块设计 (10)

3.5选择器choice (12)

3.6.乐谱文件ROM (14)

3.6.1乐谱文件 (14)

3.6.2 LMP-ROM模块 (15)

4 系统仿真 (15)

4.1计数器CNT138T的仿真 (15)

4.2.分频器FDIV (16)

4.3分频预置数F_CODE (16)

4.4分频器SPKER (16)

4.5乐曲ROM的数据读取 (17)

5 硬件验证 (17)

5.1引脚锁定 (18)

5.2硬件连接 (18)

5.2实验现象 (18)

6 总结 (19)

7参考书目 (19)

1 课程设计题目、内容与要求

1.1 设计内容

设计一个乐曲演奏电路,能够自动播放编写好的音乐。要求将音乐通过实验箱上的喇叭播放出来,用发光二级管显示出乐曲的节拍。

(1)完成程序的编程工作。

(2)将音乐数据制成LMP_ROM文件。

(3)将程序在Quartus ii软件中进行编译和仿真。

(4)进行引脚锁定,然后下载到实验箱上观察实验结果。

1.2 具体要求

(1)定制音符数据ROM MUSIC,检测音符数据已经进入ROM中;

(2)所有模块,分别仿真测试;

(3)完成系统仿真调试和硬件验证;

(4)能够将两首音乐随时切换。

2 系统设计

2.1 设计思路

乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。

本次设计主要包括三个部分:

(1)音符频率的获得;

音符频率的获得多个不同频率的信号可通过对某个基准频率进行分频器获得。由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。本设计中选取1MHz的基准频率,数控分频器采用11位二进制计数器。

(3)乐曲节奏的控制

一般乐曲最小的节拍为1/4拍,若将1拍的时间定为1秒,则只需要输出4Hz的1/4拍的时长(0.25秒),对于其它占用时间较长的节拍(必为1/4拍的整数倍)则只需要将该音符连续输出相应的次数即可。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低,因此计数器的时钟信号应为4Hz。

(3)乐谱的发生

本设计将乐谱中的音符数据存储在LPM-ROM中,若某音在逻辑中停留了4个时钟节拍,即1秒的时间,相应地,该音符就要在LPM-ROM 中连续的四个地址上都存储。当一个4Hz的时钟来时,相应地就从LPM-ROM中输出一个音符数据。

2.2 系统原理

2.2.1总体框图

该工程由是由上图所示的几个模块构成

①输入的时钟20MHZ通过锁相环后输出2KHZ和1KHZ的时钟分别输送给分频器FDIV和计数器CNT138;FDIV将1MHZ的时钟分频成4HZ 的时钟。

②计数器CNT138T完成计数功能,138进制,每来个时钟沿加一。

③乐谱ROM记录了1首歌的乐谱。根据上一模块计数器所计的数读取相应地址里的数据传递给下一模块。

④译码器F_CODE将选择器所选择的歌曲rom里的地址的数据翻译成可预置计数器SPKER和简谱码显示DECL7S所需的数据。

⑤分频驱动器也就是一个数控分频器,完成分频的功能,并驱动蜂鸣器。

2.2.2工作过程

当一个4Hz的时钟脉冲来到时,乐谱发生器模块输出一个音符数据给分频系数模块,分频系数模块输出此音符相应的分频系数所需的初始值,将初始值送给数控分频器模块,当1MHz的时钟脉冲来到时,

数控分频器就根据分频系数输出相应的频率(即此音符所对应的发生频率)给扬声器,扬声器就可发出对应音符的声音来.连续的4Hz的时钟脉冲就将乐谱发生器里所存储的音符数据一个接一个的送给了分频系数模块,再经过数控分频模块,最后扬声器一个接一个的发出音符数据所对应的声音来。曲子也就流畅的播放出来了。同时led数码管会随着音乐显示相应的乐谱。当乐曲一遍演奏完成后,乐曲发生器能自动从头开始循环演奏。

2.2.3乐曲演奏的原理图

3 系统实现

3.1.分频器(FDIV)

将锁相环的2KHZ的时钟分频4Hz的时钟,供计数器使用。

(1)模块程序

module FDIV(CLK,PM);

input CLK;

output PM;

reg[8:0] Q1;

相关文档
最新文档