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

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

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

4.保存到文件夾中。

5.查看生成的文件,上部分是注釋,中間會(huì)顯示單元個(gè)數(shù)和位寬,下部分是存儲(chǔ)的數(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讀取對(duì)應(yīng)單元存儲(chǔ)的數(shù)據(jù)并通過(guò)數(shù)碼管顯示出來(lái),兩個(gè)按鍵按下后,會(huì)分別從99和199開(kāi)始往后讀取,具體參考野火教程,這里不詳細(xì)展開(kāi)。

10.我這里選擇通過(guò)在rom中存儲(chǔ)《恭喜發(fā)財(cái)》的樂(lè)譜頻率,使蜂鳴器播放歌曲。下面是網(wǎng)上找到的音調(diào)和頻率的對(duì)應(yīng)關(guān)系,我先是使用了野火給的蜂鳴器例程(例程是循環(huán)播放七個(gè)音節(jié)),只需要在原有基礎(chǔ)上加一個(gè)rom就行,但是他給定的是0.5秒一個(gè)音調(diào),播放恭喜發(fā)財(cái)就有點(diǎn)拖沓,修改成0.5秒又會(huì)有明顯的停頓,至今沒(méi)搞清楚為啥,所以我換成之前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核的名字就按之前給出的寫(xiě)就行,否則自己還要到程序里再改一下,如下。




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

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


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

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

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

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

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

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

ROM_IP的調(diào)用 用蜂鳴器播放歌曲
評(píng)論