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開始往后讀取,具體參考野火教程,這里不詳細(xì)展開。
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ì)有明顯的停頓,至今沒搞清楚為啥,所以我換成之前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)來(lái),然后按下圖連線,此時(shí)編譯成功就沒問(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è)譜畫線的這一段,編出來(lái)的mif文件應(yīng)該是下面這樣的:
然后復(fù)制到mif文件中
重新編譯并下載就可以了,其它歌曲一樣的操作。
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164415 -
ROM
+關(guān)注
關(guān)注
4文章
575瀏覽量
86038 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
893瀏覽量
46115 -
FPGA開發(fā)板
+關(guān)注
關(guān)注
10文章
124瀏覽量
31602 -
PLL電路
+關(guān)注
關(guān)注
0文章
92瀏覽量
6483
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AM335x接TLV320AIC3104然后接外置揚(yáng)聲器,播放歌曲時(shí)沒有聲音輸出是怎么回事?
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ú)源蜂鳴器播放任何歌曲
![使用Arduino無(wú)源<b class='flag-5'>蜂鳴器</b><b class='flag-5'>播放</b>任何<b class='flag-5'>歌曲</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論