EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx

上传人:摩西的****12 文档编号:154794937 上传时间:2020-12-07 格式:PPTX 页数:24 大小:203.73KB
返回 下载 相关 举报
EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx_第1页
第1页 / 共24页
EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx_第2页
第2页 / 共24页
EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx_第3页
第3页 / 共24页
EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx_第4页
第4页 / 共24页
EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx》由会员分享,可在线阅读,更多相关《EDA乐曲硬件演奏电路设计 课程设计(2020年12月整理).pptx(24页珍藏版)》请在金锄头文库上搜索。

1、摘要,乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设 备。实现方法有许多种,随着 FPGA 集成度的提高,价格下降,EDA 设计工具更 新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设 计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不 允许以牺牲硅的效率达到保持结构的独特性。使用现今的 EDA 软件工具来应付这 些问题,并不是一件简单的事情。FPGA 预装了很多已构造好的参数化库单元 LPM 器件。通过引入支持 LPM 的 EDA 软件工具,设计者可以设计出结构独立而且硅片 的使用效率非常高的产品。 本课设在 EDA 开发平台上利

2、用 VHDL 语言设计数控分频器电路,利用数控分 频的原理设计乐曲硬件演奏电路,并定制 LPM-ROM 存储音乐数据,以“两只老虎” 乐曲为例,将音乐数据存储到 LPM-ROM,就达到了以纯硬件的手段来实现乐曲的 演奏效果。只要修改 LPM-ROM 所存储的音乐数据,将其换成其他乐曲的音乐数据, 再重新定制 LPM-ROM,连接到程序中就可以实现其它乐曲的演奏。 关键词:FPGA;EDA;VHDL;音乐,0,1,目录,设计要求. 1 1、方案论证与对比. 1 1.1 方案一. 1 1.2 方案二. 1 1.3 综合对比. 1 2 乐曲演奏电路原理. 2 2.1 音乐演奏电路原理 . 2 2.2

3、 音符频率的获得 . 2 2.3 乐曲节奏的控制 . 3 2.4 乐谱发生器 . 3 2.5 乐曲演奏电路原理框图 . 3 3 音乐硬件演奏电路的设计实现 . 4 3.1 地址发生器模块 . 4 3.1.1 地址发生器的 VHDL 设计. 4 3.2 分频预置数模块 . 6 3.2.1 分频预置数模块的 VHDL 设计. 6 3.3 数控分频模块 . 8 3.3.1 数控分频模块的 VHDL 设计. 8 3.4 music 模块. 10 3.4.1 音符数据文件. 10 3.5.2 LPM-ROM 定制 . 12 3.6 顶层文件 . 14 4 时序仿真及下载调试过程. 16 4.1 时序仿真

4、图 . 16 4.2 引脚锁定以及下载 . 17 4.3 调试过程及结果. 17 5 扩大乐曲硬件演奏电路的通用性 . 18 5.1 完善分频预置数模块的功能 . 18 设计总结与心得体会. 21 参考文献. 22,1,乐曲硬件演奏电路设计,设计要求 利用 FPGA,设计一个乐曲硬件演奏电路。乐曲的 12 平均率规定:每 2 个八 度(如简谱中的中音 1 与高音 1)之间的频率相差 1 倍。在 2 个八度音之间,又 可分为 12 个半音,每 2 个半音的频率比为 12/2。另外,音符 A 的频率为 440HZ, 音符 B 到 C 之间,E 到 F 之间为半音,其余为全音。由此可以计算出简谱中从

5、 低音l 至高音 1 之间每个音符的频率。设计音符查找表电路模块,时钟模块,数 控分频器模块,音乐节拍产生模块电路。,1、方案论证与对比 方案一 利用 FPGA 来实现乐曲硬件演奏电路。乐曲的 12 平均率规定:每 2 个八度 (如简谱中的中音 1 与高音 1)之间的频率相差 1 倍。在 2 个八度音之间,又可 分为 12 个半音,每 2 个半音的频率比为 12/2。另外,音符A 的频率为 440HZ, 音符 B 到 C 之间,E 到 F 之间为半音,其余为全音。由此可以计算出简谱中从 低音l 至高音 1 之间每个音符的频率。设计音符查找表电路模块,时钟模块,数 控分频器模块,音乐节拍产生模块

6、电路。 方案二 制作一个纯硬件电路来完成乐曲演奏。 综合对比 与利用微处理器来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要 复杂得多,如果不借助于功能强大的 EDA 工具和硬件描述语言,仅凭传统的数 字逻辑技术,即使最简单的演奏电路也难以实现。所以选择方案一。,乐曲演奏电路原理 音乐演奏电路原理,图 1 电路原理框图 该主系统由三个模块:Songer 顶层文件、div 分频器、译码器组成。且 Songer 顶层文件还包括 3 个子文件分别是 NoteTabs,ToneTaba 和 Speakera,此外,我 们还需建立一个名为“music”的 LPM_ROM 模块与 NoteTabs 模

7、块连接。 音符频率的获得 多个不同频率的信号可通过对某个基准频率进行分频器获得。由于各个音符的频 率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍 五入取整。若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。若 基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该 综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。 本文中选取 750KHz 的基准频率。由于现有的高频时钟脉冲信号的频率为 12MHz, 故需先对其进行 16 分频,才能获得 750KHz 的基准频率。对基准频率分频后的输 出信号是一些脉宽极窄的尖脉冲信号(占空比

8、=1/分频系数)。为提高输出信号的 驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频 器的输出脉冲均衡为对称方波(占空比=1/2),但这时的频率将是原来的 1/2。 由于最大分频系数是 1274,故分频器采用 11 位二进制计数器才能满足要求。 乐曲节奏的控制,2,3,本课设的两只老虎乐曲,最小的节拍为 1/4 拍,若将 1 拍的时间定为 1 秒,则只 需要提供一个 4Hz 的时钟频率即可产生 1/4 拍的时长(0.25 秒),对于其它占用 时间较长的节拍(必为 1/4 拍的整数倍)则只需要将该音符连续输出相应的次数 即可。 计数时钟信号作为输出音符快慢的控制信号,时钟快

9、时输出节拍速度就快,演奏 的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。 乐谱发生器 本文将乐谱中的音符数据存储在 LPM-ROM 中,如“两只老虎”乐曲中的第一 个音符为“3”,此音在逻辑中停留了 4 个时钟节拍,即 1 秒的时间,相应地, 音符“3”就要在 LPM-ROM 中连续的四个地址上都存储。当一个 4Hz 的时钟来时, 相应地就从 LPM-ROM 中输出一个音符数据。 乐曲演奏电路原理框图 我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连 续演奏所需的两个基本要素,问题是如何来获取这两个要素所对应的数值以及通 过纯硬件的手段来利用这些数值实现所希望乐

10、曲的演奏效果。图 1 中,模块 U1 类似于弹琴人的手指;U2 类似于琴键;U3 类似于琴弦或音调发声器。 音符的频率可以由图 1 中的SPEAKERA 获得,这是一个数控分频器。由 其clk 端输入一具有较频率(这里是 12MHz)的信号,通过SPEAKERA 分频后 由 SPKOUT 输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲 式信号,为了有利于驱动扬声器,需另加一个 D 触发器以均衡其占空比,但这 时的频率将是原来的 1/2。SPEAKERA 对 clk 输入信号的分频比由 11 位预置数 Tone10.0决定。SPKOUT 的输出频率将决定每一音符的音调,这样,分频计数

11、 器的预置值Tone10.0与SPKOUT 的输出频率,就有了对应关系。 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定,图 1 中模 块 TONETABA 的功能首先是为 SPEAKERA 提供决定所发音符的分频预置数, 而此数在SPEAKERA 输入口停留的时间即为此音符的节拍值。输向 TONETABA 中 Index3.0的值 ToneIndex3.0的输出值与持续的时间由模块 NOTETABS 决 定。在 NOTETABS 中设置了一个 8 位二进制计数器,作为音符数据 ROM 的地,址发生器。得到乐曲演奏电路的原理框图如图 1 所示:,图 1 电路原理图 音乐硬件演奏电路的设

12、计实现 音乐硬件演奏电路主要是用 VHDL 语言来设计,并利用 QuartusII 软件工具来 编译、测试和仿真。根据顶层原理图,共分为地址发生器模块、分频预置数模块、 数控分频模块这三个模块。而 music 模块是存放乐曲中的音符数据,在我们的顶 层原理图中并没有显示出来,地址发生器模块作为 music 模块中所定制的音符数 据 ROM 的地址发生器,分频预置数模块提供分频预置数即给数控分频模块提供计 数初值。数控分频模块根据分频预置数输出各个音符所对应的频率。 地址发生器模块 地址发生器模块设置了一个 8 位二进制计数器(计数最大值为 138),作为音符数 据 ROM 的地址发生器。每来一个时钟脉冲信号(Clk),8 位二进制计数器就计数 一次,ROM 文件中的地址也就随着递增,音符数据 RO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号