HDL电子琴设计报告(2)

2019-03-22 21:33

第一章 系统设计

第一节 设计目标

一、基本功能

设计一电子琴,由键盘输入中音的七个音符的发音(DO,RE,MI,FA,SO,LA,SI)来控制蜂鸣器发出对应的音响。

二、 提高部分

用数码管显示出所发出来的音调值,比如说:若发出‘DO’,这个音调则显示1。设计一歌曲自动演奏器,由用户自己编制乐曲存入电子琴,电子琴可以完成自动演奏的功能。

第二节 设计语言

一、Verilog HDL语言介绍

Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模[2]。

作为一种通用化的硬件描述语言,Verilog HDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行[3]。

Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩

展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语句足以对从最复杂的芯片到完整的电子系统进行描述。

Verilog HDL语言已经成为一种标准的硬件描述语言。它具有以下特点: (1)作为一种多用途的硬件描述语言,它具有很好的易学性和易用性。 (2)Verilog HDL语言允许在同一个模块中进行不同抽象层次的描述。 (3)大多数逻辑综合工具都支持Verilog HDL,使得它成为设计人员的一个很好的选择。

(4)所有的制造厂商都提供了Verilog HDL的工艺库,用以支持仿真。 (5)Verilog HDL的程序语言接口拥有强大的功能,允许用户用C语言对内部数据结构进行描述[3]。

正是以上优点,使得Verilog HDL语言广泛流行。

第三节 设计原理

一、乐曲演奏原理

组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。

1、音调的控制

频率的高低决定了音调的高低。音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个8度音之间,又可分为12个半音,每两个半音的频率比为12√2。 另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表1.3.1所示:

表1.3.1 简谱中的音名与频率的关系

音名 低音1 频率/Hz 261.6 音名 中音1 频率/Hz 523.3 音名 高音1 频率/Hz 1046.5 5

低音2 低音3 低音4 低音5 低音6 低音7 293.7 329.6 349.2 392 440 493.9 中音2 中音3 中音4 中音5 中音6 中音7 587.3 659.3 698.5 784 880 987.8 高音2 高音3 高音4 高音5 高音6 高音7 1174.7 1318.5 1396.9 1568 1760 1975.5 所有不同频率的信号都是从同一个基准频率分频得到的。由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率过高,虽然误差变小,但分频数将变大。实际的设计综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率[4]。本例中选取6MHz为基准频率。若无6MHz的基准频率,则可以先分频得到6MHz,或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,演奏出的乐曲听起来都不会\走调\。

本例需要演奏的是梁祝乐曲,该乐曲各音阶频率及相应的分频比如表2所示。为了减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表2中的分频比就是从6MHz频率二分频得到的3MHz频率基础上计算得出的。由于最大的分频系数为9102,故采用14位二进制计数器分频可满足需要。在表2中,除给出了分频比以外,还给出了对应于各个音阶频率时计数器不同的预置数。对于不同的分频系数,只要加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来也容易一些,如表1.3.2所示:

表1.3.2 各音阶频率对应的分频比及预置数

音名 低音3 低音5 低音6 低音7 分频比 9102 7653 6818 6073 预置数 7281 8730 9565 10310 音名 中音2 中音3 中音5 中音6 分频比 5111 4552 3827 3409 预置数 11272 11831 12556 12974 6

中音1 5736 10647 高音1 2867 13516 此外,对于乐曲中的休止符,只要将分频系数设为0,即初始值为2141=16383即可,此时扬声器将不会发声。

2、音长的控制

音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生4分音符的时长。

如图1.3.1所示是乐曲演奏电路的原理框图,其中,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设置计数器的预置数来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如2分音符,在记谱时将该音名连续记录两次即可。

6MHZ 4HZ 预置数 扬声器 乐谱产生电路 音调名显示电路 数码管

图1.3.1乐曲演奏电路原理图

为了使演奏能循环进行,需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。

第四节 设计方案比较

一、 方案比较

方案一:采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂

的硬件电路也容易引起系统的精度不高、体积过大等不利因素。例如八个不同的音符是由八个不同的频率来控制发出的,而采用方案一就可以运用不同的分频器来对信号进行不同程度的分频。所用仪器之多显而易见。

方案二:采用Verilog HDL语言编程来实现电子琴的各项功能。系统主要由输入控制电路、顶层模块和乐曲存储及循环播放模块模块组成。

二、方案选择

和方案一相比较,方案二就显得比较笼统,只是把整个系统分为了若干个模块,而不牵涉到具体的硬件电路。但是我们必须看到用硬件描述语言Verilog HDL的优势,它不仅具有良好的电路行为描述和系统描述的能力而且通俗易懂。

因此,经过对以上两种方案的分析、比较和总结,选用方案二来进行电子琴的设计。

第五节 总体设计方案

利用EDA软件中的Verilog HDL硬件描述语言编程进行控制,然后烧程序至FPGA实验箱实现.系统原理图如图1.5.1所示。

控制输入模块 (手动输入音符功能) 顶层模块 (调用功能) 乐曲存储及循环播放模块 (自动循环播放) 乐曲1模块 乐曲2模块 图1.5.1 系统总体设计方框图

乐曲3模块 8


HDL电子琴设计报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考物理复习之各知识点汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: