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文章
7514瀏覽量
164012 -
ROM
+關注
關注
4文章
575瀏覽量
85837 -
蜂鳴器
+關注
關注
12文章
892瀏覽量
46007 -
FPGA開發板
+關注
關注
10文章
122瀏覽量
31547 -
PLL電路
+關注
關注
0文章
92瀏覽量
6431
發布評論請先 登錄
相關推薦
評論