0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

电子设计 来源:郭婷 作者:电子设计 2018-12-04 10:37 次阅读

1 系统的设计要求

应用VHDL硬件描述语言,设计一个乐曲硬件演奏电路,它能将一首预先设置存储好的乐曲自动播放出来,除此之外,也能够通过按键的方式输入音符,使其具备简易电子琴的功能。通过此项研究,能够深切的体会利用EDA工具开发的优越性,在此基础上,对乐曲硬件演奏电路功能进行丰富,具有一定的社会实用性。

根据硬件演奏电路的功能进行全局分析,采用自上至下的设计方法,从系统总体要求出发,逐步将设计内容细化,最后完成系统结构的整体设计。将功能分为以下几个部分,1)实现预先设置乐曲的播放功能;2)实现预置乐曲的暂停和继续播放实时控制功能;3)实现预置多首乐曲间的切换功能。

预置乐曲,本文选取了《梁祝》的一段作预置,作预置时,需要将乐曲音符转换成相应的代码,通过计算逐一将音符转换成代码,通过EDA开发平台quartusii6.0进行乐曲定制。

为了提供乐曲发音所需要的发音频率,编写数控分频器程序,对单一输入高频,进行预置数分频,生成每个音符发音的相应频率。

为了给分频提供预置数,需要计算分频预置数。

对每部分结构单元逐一进行编译,生成相应的元器件符号,并对独立结构单元功能进行仿真

2 系统的详细设计方案

2.1 顶层实体描述

按照EDA开发流程,采用VHDL硬件描述语言开发,将乐曲硬件演奏电路设计进行模块化分解,层次化设计,分成几个单独的结构体,每个结构体实现部分功能,最后,经顶层文件将各单独结构体进行综合,实现乐曲硬件演奏。

有四个输入,三个输出端口

四输入端口分别是:clk8hz端口,作为节拍脉冲信号输入端口;clk12mhzZ端口,作为发音频率初始信号输入端口;P输入端口,作为控制歌曲暂停和继续播放的输入端口。ch输入端口,作为控制歌曲之间切换播放的输入端口。

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

三输出端口分别是:code1输出端口,作为音符简码输出LED显示端口;high1输出端口,作为音符高8度指示端口;spkout输出端口,作为乐曲的声音输出端口。

2.2 模块划分

本系统主要由三个功能模块组成:notetabsvhd,tonetaba.vhd和speakera.vhd.第一部分notetabs,地址发生器,实现按节拍读乐谱的功能;第二部分tonetaba,查表电路,为speakera提供分频预置数,实现乐曲译码输出CODE[3:0];第三部分speakera,产生发音频率,实现乐曲播放。系统结构图如图2.

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

为了实现乐曲的播放,首先需要将曲谱定制到音符数据ROM里面,然后才能按照一定的节拍从ROM中读出曲谱。由于所选曲子中不含低音,转换关系如表1所示。

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

2.3 模块描述

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

sperkera是一个数控分频器,由其clk端输入一个12mhz信号,通过speakera分频后,由spkout,通过一d触发器,pinlv变为原来的二分之一,sperakera对clk的输入信号的分频比由11位tone[100]决定,spkout的输出频率为音符的音调。

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

tonebata的功能首先是为speakera提供分频预置数,此数的停留时间即为音符的节拍值,此模块为歌曲简谱码提供对应的分频预置查表电路,音符停留时间由clk的输入频率决定,再次为4hz.

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

3 系统的方案实现

3.1 各模块仿真及描述

notetabs作为音符rom的地址发生器,此模块中设置了一个8位2进制计数器,频率为4hz,即为4个音符一秒时间四四拍的4分音符。notetabs计数器计数器按4hz时钟频率做加法计数,当stop为高电平时停止加法运算,而当change可设置rom中数据的跳转,rom通过toneindex[30]端口输向tonetaba模块。乐曲就演奏起来了。

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

由图6 sperkera仿真波形可以看出,当clk输入时钟频率为12mhz时,输出端信号clk输出的频率,随tong信号的不同,输出不同频率的声音信号。

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

由图7tonetaba信号的仿真波形,可以看出,当输入信号index[30]输入不同信号值,code输出端输出音符的显示,high为音符高位信号,tone大于7时high为高电平。

图8为notetabs仿真波形,当clk输入时钟信号,toneindex[30]端从rom中读入音符数据,当输入端口stop为“1”时,暂停从rom中读入数据,stop为“0”继续读取音符信号,change为高低电平时,模块分别读取rom不同位置的数据。

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

3.2 顶层电路仿真及描述

在QuartusII开发平台上实现基于FPGA的音乐演奏电路的设计

clk8hz端输入8hz时钟信号,另一个clk12mhz输入12mhz时钟信号,系统将自动从music.mif中读取音符信号,以频率不同输出到spkout,同时输出到显示端口,和高音端口,code1[30],high1.p端口可以是音符暂停输出(高电平时),ch端口控制歌曲间的切换。

4 硬件测试及说明

选择实验电路模式1,将引脚锁定时clk12mhz于clock9连接,短路帽clock接12mhz.clk8hz与clock2连接。发音输出spkout接speaker.简谱码输出code1由数码管5显示,high高8度指示由发光管d5指示,p与按键d16连接,ch与的15连接。最后向目标芯片下载适配后的sof逻辑设计文件。

5 结论

本次设计在EDA开发工具QuartusII平台上,应用语言层次化和模块化的设计方法,通过音符编码的设计思想,预先定制乐曲,在此基础上设计了一个乐曲硬件演奏电路,经过对整体进行模块化分析、编程、综合、仿真及最终下载,完整实现简易音乐器的播放功能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21597

    浏览量

    601009
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    128037
  • EAD
    EAD
    +关注

    关注

    0

    文章

    3

    浏览量

    6718
收藏 人收藏

    评论

    相关推荐

    谁能用stm32f103ze帮我做个双字节音乐演奏的程序,感激不尽...

    谁能用stm32f103ze帮我做个双字节音乐演奏的程序,感激不尽...
    发表于 12-10 14:21

    结合闹钟与电子音乐演奏的综合项目适合初学者的项目。

    小弟最近在写课程设计报告,感觉这个项目不错,比较综合,于是分享出来供大家共同交流学习。本文EDA 开发平台上,利用VHDL语言设计数控分频器电路,采用可编程逻辑器件
    发表于 12-14 21:38

    如何去实现一种基于51单片机的音乐盒设计

    一.硬件方案本设计以51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C语言进行程序设计。通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制
    发表于 11-19 06:07

    如何利用Arduino与蜂鸣器实现音乐演奏

    如何利用Arduino与蜂鸣器实现音乐演奏呢?其程序代码该怎样去实现呢?
    发表于 02-14 07:22

    单片机音乐程序教程

    单片机音乐程序教程:声音基础,单一程序音乐演奏,模块化音乐程序演奏等内容。
    发表于 06-03 12:17 173次下载
    单片机<b class='flag-5'>音乐</b>程序教程

    定时循环音乐演奏电路

    定时循环音乐演奏电路
    发表于 05-08 15:11 436次阅读
    定时循环<b class='flag-5'>音乐演奏</b><b class='flag-5'>电路</b>图

    SK--111声控音乐演奏电路

    SK--111声控音乐演奏电路
    发表于 06-08 15:48 686次阅读
    SK--111声控<b class='flag-5'>音乐演奏</b>器<b class='flag-5'>电路</b>图

    音乐演奏器设计

    音乐演奏器设计 一、任务设计并制作一个可以演奏乐曲的远程音乐演奏器,基本电路框图如图。
    发表于 08-02 08:35 1749次阅读
    <b class='flag-5'>音乐演奏</b>器设计

    eda音乐演奏程序

    EDA音乐演奏程序例程,可根据需要改编
    发表于 12-09 23:19 6次下载

    FPGA平台上实现对DPA攻击的电路级防护技术

    。进行DPA攻击的根本原因是电路逻辑表示的不对称性引起的。本文将应用FPGA的自身结构特点,结合目前常用的抗DPA攻击的电路级防护技术,深入研究与分析
    发表于 11-24 09:12 2546次阅读
    <b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>平台上</b><b class='flag-5'>实现</b>对DPA攻击的<b class='flag-5'>电路</b>级防护技术

    基于Proteus的单片机演奏音乐实现[图]

    常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。 实验结果表明,该方案电路简单,切实可行且效果不错。 当前的很多用单片机实现
    发表于 01-18 03:00 1639次阅读

    基于Proteus单片机的音乐演奏实现系统

    本文提出的一种基于 Proteus 的单片机演奏音乐的方法,非常简单实用,且该方法基于软件来实现的,所以成本非常低,调试方便,效果也很不错,适合于爱好音乐的单片机学习者。 单片机系统
    发表于 04-08 09:27 5458次阅读
    基于Proteus单片机的<b class='flag-5'>音乐演奏</b><b class='flag-5'>实现</b>系统

    采用FPGA DIY开发板控制自动演奏音乐

    wang1113的作业自动演奏音乐视频。
    的头像 发表于 06-20 13:26 1825次阅读

    使用PLD器件和VHDL语言实现数字系统的电子密码锁设计

    密码锁电路由键盘控制、密码设置和音乐演奏三大功能模块组成,原理如图1所示。Count,Keyvalue,Contrl,Smdisplay构成键盘控制模块,Songer是音乐演奏模块,Set是密码设置模块。
    的头像 发表于 04-28 08:10 3124次阅读
    使用PLD器件和VHDL语言<b class='flag-5'>实现</b>数字系统的电子密码锁设计

    FPGA多媒体开发平台DE2上实现音乐流水灯控制系统的设计

    , 以方波信号驱动蜂鸣器发出音乐, 再根据不同音阶来控制流水灯的闪烁。与借助微处理器实现乐曲演奏相比, 以纯硬件方式完成乐曲演奏电路更直观。
    的头像 发表于 10-07 11:24 3483次阅读
    <b class='flag-5'>在</b><b class='flag-5'>FPGA</b>多媒体<b class='flag-5'>开发</b><b class='flag-5'>平台</b>DE2上<b class='flag-5'>实现</b><b class='flag-5'>音乐</b>流水灯控制系统的设计