1.新建一個(gè)存儲文件(mif文件)。

2.設(shè)定為256個(gè)存儲單元,每個(gè)單元8位寬。

3.自行往每個(gè)單元中填充自己需要的數(shù)值。

4.保存到文件夾中。

5.查看生成的文件,上部分是注釋,中間會顯示單元個(gè)數(shù)和位寬,下部分是存儲的數(shù)據(jù)。

6.調(diào)用ROM_IP核,按下圖箭頭順序保存。

7.基本使用默認(rèn)設(shè)置就行,注意單元個(gè)數(shù)和位寬與之前設(shè)定的要一樣。

8.在初始化選項(xiàng)欄中,選擇最初生成的mif文件,然后和之前PLL的調(diào)用一樣,選擇生成inst文件,點(diǎn)擊finish,rom的調(diào)用到此結(jié)束。

9.下圖是野火FPGA給的電路框圖,用了兩個(gè)按鍵,電路的效果為從1到256讀取對應(yīng)單元存儲的數(shù)據(jù)并通過數(shù)碼管顯示出來,兩個(gè)按鍵按下后,會分別從99和199開始往后讀取,具體參考野火教程,這里不詳細(xì)展開。

10.我這里選擇通過在rom中存儲《恭喜發(fā)財(cái)》的樂譜頻率,使蜂鳴器播放歌曲。下面是網(wǎng)上找到的音調(diào)和頻率的對應(yīng)關(guān)系,我先是使用了野火給的蜂鳴器例程(例程是循環(huán)播放七個(gè)音節(jié)),只需要在原有基礎(chǔ)上加一個(gè)rom就行,但是他給定的是0.5秒一個(gè)音調(diào),播放恭喜發(fā)財(cái)就有點(diǎn)拖沓,修改成0.5秒又會有明顯的停頓,至今沒搞清楚為啥,所以我換成之前FPGA實(shí)驗(yàn)課上做的程序。

12.這是之前程序的頂層,由于器件不同,需要把調(diào)用的ip核都換掉。(需要程序的,拿到手,可以按以下流程操作)

13.首先新建一個(gè)工程,選定自己的器件,將這四個(gè)文件復(fù)制到自己的工程文件夾下。

14.按照上文給出的rom_ip調(diào)用,還有之前一篇pll_ip調(diào)用的方法,各自重新生成一個(gè)放到文件夾中,其中pll輸出的時(shí)鐘要改為12Mhz,并且在最后輸出的選項(xiàng)卡中要勾選bsf文件,之后的頂層文件中要用,兩個(gè)ip核的名字就按之前給出的寫就行,否則自己還要到程序里再改一下,如下。




15.新建一個(gè)頂層的bdf文件。

16.在bdf文件的空白處雙擊,打開symbol欄,點(diǎn)擊下方三個(gè)點(diǎn),跳轉(zhuǎn)到自己的文件夾,將復(fù)制的song.bsf,ctclk.bsf,還有新生成的pll.bsf都添加進(jìn)來,然后按下圖連線,此時(shí)編譯成功就沒問題了。


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

18.之后,只需要修改mif文件,就能播放自己要的歌曲,不過因?yàn)樗俣群鸵粽{(diào)會有些問題,有些效果可能不好。具體mif修改如下,以恭喜發(fā)財(cái)為例:

這里的11~17是七個(gè)音節(jié),5,6,7是三個(gè)低音音節(jié),如果需要其它的音節(jié),需要自己計(jì)算。

根據(jù)樂譜畫線的這一段,編出來的mif文件應(yīng)該是下面這樣的:

然后復(fù)制到mif文件中

重新編譯并下載就可以了,其它歌曲一樣的操作。
-
存儲器
+關(guān)注
關(guān)注
39文章
7739瀏覽量
171759 -
ROM
+關(guān)注
關(guān)注
4文章
579瀏覽量
89165 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
900瀏覽量
47779 -
FPGA開發(fā)板
+關(guān)注
關(guān)注
10文章
129瀏覽量
32456 -
PLL電路
+關(guān)注
關(guān)注
0文章
94瀏覽量
7098
發(fā)布評論請先 登錄
AM335x接TLV320AIC3104然后接外置揚(yáng)聲器,播放歌曲時(shí)沒有聲音輸出是怎么回事?
TPA6130A2的寄存器配置正常,也可以正常播放歌曲,但是負(fù)壓只有-2.7左右,為什么?
【基于51單片機(jī)的具有識別功能的音樂門鈴】
想在STC12C5A60S2單片機(jī)搞個(gè)藍(lán)牙
帶有歌詞顯示的音樂播放
fatfs播放MP3不能正常播放歌曲,如何解決?
Arduino UNO控制板發(fā)送串口協(xié)議是如何控制語音播放器播放歌曲的
如何使用STM32F103控制蜂鳴器發(fā)聲播放音樂
STM32蜂鳴器模擬播放歌曲
使用單片機(jī)實(shí)現(xiàn)延時(shí)程序控制播放歌曲的仿真設(shè)計(jì)實(shí)例
使用Arduino無源蜂鳴器播放任何歌曲
ROM_IP的調(diào)用 用蜂鳴器播放歌曲
評論