基于fpga的乐曲演奏电路的设计内容摘要:

消费电子、通信、图像图理、测试以及其它终端市场。 Cyclone II 器件的制造基于 300mm 晶圆,采用台积电 90nm、低 K值电介质工艺,这种可靠工艺也曾被用于 Altera 的 Stratix II 器件。 这种工艺技术确保了快速有效性和低成本。 通过使硅片面积最小化, Cyclone II 器件可以在单芯片上支持复杂的数字系统,而在成本上则可以和 ASIC 竞争。 Cyclone II 器件的特基于 FPGA的乐曲演奏电路的设计 8 8 性如下表表 1 所列: 表 1 Cyclone II器件特性 特性 说明 成本优化的架构 器件架构为最低的成本而优化,提供多达 68,416 个逻辑单元 (LE),密度超过第一代 Cyclone FPGA的 3倍。 Cyclone II FPGA内部的逻辑资源可以用来实现复杂的应用。 嵌入式存储器 基于流行的 M4K存储器块,提供多达 ,可以支持配置为广泛 的操作模式,包括 RAM、 ROM、先入先出( FIFO)缓冲器以及单端口和双端口模式。 嵌入式乘法器 提供最多 150 个 18x18比特乘法器,是低成本数字信号处理( DSP)应用的理想方案。 这些乘法器可用于实现通用 DSP 功能,如有限冲击响应( FIR)滤波器、 快速傅立叶变换、相关器、编 /解码器以及数控振荡器( NCO)。 外部存储器接口 提供高级外部存储器接口支持,允许开发人员集成外部单倍数据速率( SDR) 、双倍数据速率( DDR) 、 DDR2 SDRAM器件以及第二代四倍数据速率( QDRII)SRAM器件 ,数据速率最高可达 668 Mbps。 差分 I/O支持 提供差分信号支持,包括 LVDS、 RSDS、 miniLVDS、 LVPECL、 SSTL和 HSTL I/O标准。 LVDS标准支持接收端最高 805 Mbps数据速率,发送端最高 622 Mbps。 单端 I/O支持 支持各种单端 I/O 标准,如当前系统中常用的 LVTTL、 LVCMOS、 SSTL、 HSTL、PCI和 PCIX标准。 接口和协议支持 支持串行总线和网络接口(如 PCI 和 PCIX) ,快速访问外部存储器件,同时还支持大量通讯协议,包括以太网 协议和通用接口。 循环冗余码 (CRC) 具有 32 比特 CRC 自动校验功能。 内置的 CRC 校验电路简化了校验流程,只需在 Quartus II 软件中单击一下即可。 这是 FPGA 中对付单事件干扰( SEU)问题最有效的解决方案。 时钟管理电路 支持最多达四个可编程锁相环( PLL)和最多 16个全局时钟线,提供强大的时钟管理和频率合成能力,使系统性能最大化。 这些 PLL提供的高级特性包括频率合成、可编带宽、输入时钟扩频、锁定探测以及支持差分输入输出时钟信号。 片内匹配 支持驱动阻抗匹配和片内串行终端匹配。 片内匹配消除了对外部电阻的需求,提高了信号完整性,简化电路板设计。 Cyclone II FPGA 通过外部电阻还可支持并行匹配和差分匹配。 本章小结 本章主要介绍了 FPGA的内部结构、基本原理、特点以及开发流程,还介绍了硬件描述语言 VHDL的特点、语法规则及其模块化设计的优势和仿真软件、优势。 基于 FPGA的乐曲演奏电路的设计 9 9 3 系统工作原理 声音的频谱范围一般在几十到几千赫兹,利用程序来控制 FPGA 芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。 乐曲中的每 一个音符对应着一个确定的频率,因此,要想发出不同音符的音调,只要能控制输出相应音符的频率即可。 乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以往扬声器上连续地发出各个音符的音调。 而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间,也就是节拍。 设计的关键是要准确地产生乐曲中每个音符的发音频率,并根据乐曲要求按音符需要的节拍输出,这是乐曲能够演奏的两个关键因素。 音符频率的获得 由乐曲的 12 平均率可知:每两个八度音(如简谱中的中音 1 与高音 1)之间的频率相差 1 倍。 在两个八度音之间,又可分为 12 个半音,每两个半音的频率比为 21/12。 另外,音符 A(简谱中的低音 6)的频率为 440HZ,音符 B 到 C之间, E 到 F 之间为半音,其余为全音。 由此可以计算出简谱中从低音 1至高音1之间每个音符的频率。 在基于 FPGA 的数字系统设计中,多个不同频率的信号,一般是通过对某个基准频率进行分频获得的。 由于各个音符的频率多为非整数,而分频系数又不能为小数,故必须将计算机得到的分频系数四舍五入取整。 若基准频率过低,则分频系数过小,四舍五入取整后的误差较大。 若基准频率过高,虽然可以减少频率的相对误差,但是又增加了分频器的级数,分频结构将变大,继而增加系统成本。 实际上应综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。 本文设计中选取 750KHZ 的基准频率。 由于现有的高频始终脉冲信号的频率为 12MHZ,故需先对其进行 16分频,才能获得 750KHZ 的基准频率,其实,只要各个音符间的相对频率不变,演奏出的乐曲听起来都不会“走调”。 还有一点需要强调 :对基准频率分频后的输出信号是一些脉宽极窄的 尖脉冲信号(占空比 =1/分频系数)。 为提高输出信号的驱动能力,以使扬声器有足够的功率发音,需要再通过一个分频器将原来的分频器的输出脉冲均衡为对称方波(占空比 =1/2),但这时的频率将是原来的 1/2,在计算分频系数时应该考虑。 表 2 中各音符的分频系数就是从 750KHZ 的基准频率二分频得到的 375KHZ基础上计算得到的。 由于最大分频系数使 1274,故分频器采用 11 位二进制计数器能满足要求,乐曲中的休止符,只要将分频系数设位 0,即初始值 =2111=2047,此时扬声器不会发声。 基于 FPGA的乐曲演奏电路的设计 10 10 表 2 各个音符的频率及其对应的 分频系数(基准频率 375KHZ) 音符名 频率( HZ) 分频系数 计数初值 休止符 375000 0 2047 低音 1 1274 773 低音 2 1135 912 低音 3 1011 1036 低音 4 970 1077 低音 5 950 1197 低音 6 757 1290 低音 7 675 1372 中音 1 637 1410 中音 2 587 1480 中音 3 505 1542 中音 4 468 1579 中音 5 425 1622 中音 6 379 1668 中音 7 330 1717 高音 1 319 1728 高音 2 277 1770 高音 3 248 1799 高音 4 233 1814 高音 5 208 1839 高音 6 185 1862 高音 7 165 1882 乐曲节奏的控制 每个音符持续的时间是乐曲能连续演奏的所需的另一个基本要素,我们可以在每一个案件的后面连接一个 D 触发器,用来存储每一个琴键以及辅助按键的状态。 在第一次按下琴键时,启动最小节拍计时器,每隔一个音乐的最小节拍将所有 D 触发器的数值读入到系统内部进行处理。 例如,我们要演奏“ 3”这个音符两个拍子,在相应琴键上按下两个拍子的过程中,系统也读了两次“ 3”这个音符。 这里,我们假设通过电子琴演奏的乐曲最小节拍为 1 /4 拍(当然,这个最小节拍是可以修改的),将 1拍的时间 长度定为 1s,则只需要再提供一个 4HZ的时钟频率即可产生 1 /4 拍的时长。 音乐自动演奏的时间控制通过记录来完成,对于占用时间较长的节拍一定是1/4 拍的 n倍( n为整数)。 我们就可以用一个存储器来存储音符。 1/4 拍的音符存储电路一次, n/4 拍的音符存储电路 n次。 在音乐自动演奏的时候,用一个加法器来计算存储器的地址。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。