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

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

3天内不再提示

ROM_IP的调用 用蜂鸣器播放歌曲

冬至子 来源:小樊爱学习 作者:爱学习的小樊 2023-07-19 16:44 次阅读

1.新建一个存储文件(mif文件)。

图片

2.设定为256个存储单元,每个单元8位宽。

图片

3.自行往每个单元中填充自己需要的数值。

图片

4.保存到文件夹中。

图片

5.查看生成的文件,上部分是注释,中间会显示单元个数和位宽,下部分是存储的数据。

图片

6.调用ROM_IP核,按下图箭头顺序保存。

图片

7.基本使用默认设置就行,注意单元个数和位宽与之前设定的要一样。

图片

8.在初始化选项栏中,选择最初生成的mif文件,然后和之前PLL的调用一样,选择生成inst文件,点击finish,rom的调用到此结束。

图片

9.下图是野火FPGA给的电路框图,用了两个按键,电路的效果为从1到256读取对应单元存储的数据并通过数码管显示出来,两个按键按下后,会分别从99和199开始往后读取,具体参考野火教程,这里不详细展开。

图片

10.我这里选择通过在rom中存储《恭喜发财》的乐谱频率,使蜂鸣器播放歌曲。下面是网上找到的音调和频率的对应关系,我先是使用了野火给的蜂鸣器例程(例程是循环播放七个音节),只需要在原有基础上加一个rom就行,但是他给定的是0.5秒一个音调,播放恭喜发财就有点拖沓,修改成0.5秒又会有明显的停顿,至今没搞清楚为啥,所以我换成之前FPGA实验课上做的程序。

图片

12.这是之前程序的顶层,由于器件不同,需要把调用的ip核都换掉。(需要程序的,拿到手,可以按以下流程操作)

图片

13.首先新建一个工程,选定自己的器件,将这四个文件复制到自己的工程文件夹下。

图片

14.按照上文给出的rom_ip调用,还有之前一篇pll_ip调用的方法,各自重新生成一个放到文件夹中,其中pll输出的时钟要改为12Mhz,并且在最后输出的选项卡中要勾选bsf文件,之后的顶层文件中要用,两个ip核的名字就按之前给出的写就行,否则自己还要到程序里再改一下,如下。

图片

图片

图片

图片

15.新建一个顶层的bdf文件。

图片

16.在bdf文件的空白处双击,打开symbol栏,点击下方三个点,跳转到自己的文件夹,将复制的song.bsf,ctclk.bsf,还有新生成的pll.bsf都添加进来,然后按下图连线,此时编译成功就没问题了。

图片

图片

17.最后,按照自己的板子,搞定引脚,程序完成。

图片

18.之后,只需要修改mif文件,就能播放自己要的歌曲,不过因为速度和音调会有些问题,有些效果可能不好。具体mif修改如下,以恭喜发财为例:

图片

这里的11~17是七个音节,5,6,7是三个低音音节,如果需要其它的音节,需要自己计算。

图片

根据乐谱画线的这一段,编出来的mif文件应该是下面这样的:

图片

然后复制到mif文件中

图片

重新编译并下载就可以了,其它歌曲一样的操作。

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

    关注

    38

    文章

    7444

    浏览量

    163552
  • ROM
    ROM
    +关注

    关注

    4

    文章

    562

    浏览量

    85641
  • 蜂鸣器
    +关注

    关注

    12

    文章

    889

    浏览量

    45849
  • FPGA开发板
    +关注

    关注

    10

    文章

    121

    浏览量

    31472
  • PLL电路
    +关注

    关注

    0

    文章

    92

    浏览量

    6389
收藏 人收藏

    评论

    相关推荐

    AM335x接TLV320AIC3104然后接外置扬声器,播放歌曲时没有声音输出是怎么回事?

    AM335x接TLV320AIC3104 然后接外置扬声器。 原理图如上图。目前驱动加载了,播放歌曲时没有声音输出。但是可以再扬声器接口处监测到方波。谁调试过希望给些建议
    发表于 10-29 07:17

    TPA6130A2的寄存器配置正常,也可以正常播放歌曲,但是负压只有-2.7左右,为什么?

    TPA6130A2的寄存器配置正常,也可以正常播放歌曲,但是负压只有-2.7左右,这是哪里有问题???
    发表于 10-31 08:25

    做个音乐播放器,有什么新花样呢

    现在只能简单播放歌曲了。想显示出歌名,然后记录歌的时间
    发表于 05-21 18:58

    【基于51单片机的具有识别功能的音乐门铃】

    c语言编写:客人按一下 播放歌曲1,主人连按三下播放歌曲2现在歌曲已经做成函数直接可以调用,请问各位大神如何实现客人按一下,主人连按三下从
    发表于 04-19 21:47

    想在STC12C5A60S2单片机搞个蓝牙

    想自己搞个蓝牙,来用手机控制蓝牙播放歌曲,求教如何实现?来个蓝牙原理图,和如何控制单片机播放歌曲
    发表于 11-23 20:48

    带有歌词显示的音乐播放

    本帖最后由 chew_elecfans 于 2017-8-6 11:36 编辑 播放歌曲的同时在12864LCD上显示每个乐句的歌词,并给出了音乐播放程序的详细注释。
    发表于 07-24 01:50

    PIC单片机蜂鸣器播放歌有人做过吗?分享下,谢谢

    PIC单片机蜂鸣器播放歌有人做过吗?分享下,谢谢
    发表于 10-11 15:56

    fatfs播放MP3不能正常播放歌曲,如何解决?

    求助原子哥,下面的程序我直接赋值在主函数中直接执行play_song(7);就可以正常播放歌曲,而如果把play_song(7);嵌入void play_mp3(void)函数中,在主函数中执行
    发表于 04-21 21:21

    Arduino UNO控制板发送串口协议是如何控制语音播放播放歌曲

    Arduino UNO控制板的硬件特性有哪些呢?Arduino UNO控制板发送串口协议是如何控制语音播放播放歌曲的?
    发表于 11-08 07:41

    如何使用STM32F103控制蜂鸣器发声播放音乐

    基于STM32F103,蜂鸣器播放歌曲本文的内容,分为下面几部分:1,参考网上例程;2,移植,运行,查看,尽力理解代码;3,调整测试参数;4,添加一首歌曲。下面详细描述一下过程:一,
    发表于 01-07 08:19

    STM32蜂鸣器模拟播放歌曲

    /***********************************************************************函数名:BEEP_Init*功能:蜂鸣器初始化*参数:无*返回:无*备注:引脚 点蜂鸣器电平 模式速度PC3高电平
    发表于 01-19 08:09

    iPod Shuffle是怎么随机播放歌曲的?

    iPod Shuffle是怎么随机播放歌曲的?
    发表于 08-21 15:02 3908次阅读

    使用单片机实现延时程序控制播放歌曲的仿真设计实例

    本文档的主要内容详细介绍的是使用单片机实现延时程序控制播放歌曲的仿真设计实例免费下载。
    发表于 03-10 14:18 14次下载

    使用Arduino播放歌曲

    电子发烧友网站提供《使用Arduino播放歌曲.zip》资料免费下载
    发表于 02-01 14:20 0次下载
    使用Arduino<b class='flag-5'>播放歌曲</b>

    使用Arduino无源蜂鸣器播放任何歌曲

    电子发烧友网站提供《使用Arduino无源蜂鸣器播放任何歌曲.zip》资料免费下载
    发表于 02-01 11:18 1次下载
    使用Arduino无源<b class='flag-5'>蜂鸣器</b><b class='flag-5'>播放</b>任何<b class='flag-5'>歌曲</b>