eda課程設(shè)計(jì)VHDL 音樂(lè)播放器

上傳人:e****s 文檔編號(hào):54892986 上傳時(shí)間:2022-02-16 格式:DOC 頁(yè)數(shù):19 大?。?43.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
eda課程設(shè)計(jì)VHDL 音樂(lè)播放器_第1頁(yè)
第1頁(yè) / 共19頁(yè)
eda課程設(shè)計(jì)VHDL 音樂(lè)播放器_第2頁(yè)
第2頁(yè) / 共19頁(yè)
eda課程設(shè)計(jì)VHDL 音樂(lè)播放器_第3頁(yè)
第3頁(yè) / 共19頁(yè)

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《eda課程設(shè)計(jì)VHDL 音樂(lè)播放器》由會(huì)員分享,可在線閱讀,更多相關(guān)《eda課程設(shè)計(jì)VHDL 音樂(lè)播放器(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、子信息科學(xué)與技術(shù)專業(yè)課程設(shè)計(jì)任務(wù)書學(xué)生姓名專業(yè)班級(jí)學(xué)號(hào)題 目樂(lè)曲自動(dòng)播放器課題性質(zhì)工程設(shè)計(jì)課題來(lái)源自擬課題指導(dǎo)教師同組姓名主要內(nèi)容自行選擇一首自己喜愛(ài)的經(jīng)典樂(lè)曲,用FPGA設(shè)計(jì)實(shí)現(xiàn)一個(gè)該曲目的自動(dòng)演奏電路。任務(wù)要求(1)根據(jù)設(shè)計(jì)題目要求編寫相應(yīng)程序代碼(2)對(duì)編寫的VHDL程序代碼進(jìn)行編譯和仿真(3)利用實(shí)驗(yàn)箱完成硬件驗(yàn)證(4)總結(jié)設(shè)計(jì)內(nèi)容,完成課程設(shè)計(jì)說(shuō)明書參考文獻(xiàn)1曹昕燕. .北京: 清華大學(xué)出版社,2004年2焦素敏. . 北京: 清華大學(xué)出版社,2005年3焦素敏. . 河南工業(yè)大學(xué),2008年4黃智偉. . 電子工業(yè)出版社,2005年5劉昌華. . 國(guó)防工業(yè)出版社,2005年審查意見(jiàn)

2、指導(dǎo)教師簽字:教研室主任簽字: 2011年月日一、 設(shè)計(jì)任務(wù)及要求:(1)根據(jù)設(shè)計(jì)題目要求編寫相應(yīng)程序代碼。(2)對(duì)編寫的VHDL程序代碼進(jìn)行編譯和仿真。(3)利用實(shí)驗(yàn)箱完成硬件驗(yàn)證。(4)總結(jié)設(shè)計(jì)內(nèi)容,完成課程設(shè)計(jì)說(shuō)明書。用VHDL語(yǔ)言設(shè)計(jì)樂(lè)音的節(jié)拍與音符產(chǎn)生電路;用VHDL語(yǔ)言設(shè)計(jì)可控分頻器電路;最后能夠采用FPGA芯片進(jìn)行音樂(lè)播放。二、 設(shè)計(jì)原理及總體框圖:音調(diào)發(fā)生音調(diào)編碼數(shù)控分頻總體框圖產(chǎn)生音樂(lè)的兩個(gè)因素是音樂(lè)頻率和音樂(lè)的持續(xù)時(shí)間,以純硬件完成演奏電路比利用微處理器(CPU)來(lái)實(shí)現(xiàn)樂(lè)曲演奏要復(fù)雜的多,如果不借助于功能強(qiáng)大的EDA工具和硬件描述語(yǔ)言,憑借傳統(tǒng)的數(shù)字邏輯技術(shù),即使最簡(jiǎn)單的演

3、奏電路也難以實(shí)現(xiàn)。根據(jù)設(shè)計(jì)要求,樂(lè)曲硬件演奏電路系統(tǒng)主要由數(shù)控分頻器和樂(lè)曲存儲(chǔ)模塊組成。數(shù)控分頻器對(duì)FPGA的基準(zhǔn)頻率進(jìn)行分頻,得到與各個(gè)音階對(duì)應(yīng)的頻率輸出。樂(lè)曲存儲(chǔ)模塊產(chǎn)生節(jié)拍控制和音階選擇信號(hào),即在此模塊中可存放一個(gè)樂(lè)曲曲譜真值表,由一個(gè)計(jì)數(shù)器來(lái)控制此真值表的輸出,而由計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘信號(hào)作為樂(lè)曲節(jié)拍控制信號(hào)。1、音名與頻率的關(guān)系音樂(lè)的十二平均率規(guī)定:每?jī)蓚€(gè)八度音(如簡(jiǎn)譜中的中音與高音)之間的頻率相差一倍在兩個(gè)八度音之間,又可分為十二個(gè)半音,每?jī)蓚€(gè)半音的頻率比為4。另外,音名(簡(jiǎn)譜中的低音)的頻率為440Hz,音名B到C之間,E到F之間為半音,其余為全音,由此可以計(jì)算出簡(jiǎn)譜中從低音1到高音

4、1之間每個(gè)音名的頻率如表1所示.表1 簡(jiǎn)譜中的音名與頻率的關(guān)系音名頻率/Hz音名頻率/Hz音名頻率/Hz低音1中音1高音1低音2中音2高音2低音3中音3高音3低音4中音4高音4低音5中音5高音5低音6440中音6880高音61760低音7中音7高音7由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將得到的分頻數(shù)四舍五入取整。若基準(zhǔn)頻率過(guò)低,則由于分頻系數(shù)過(guò)小,四舍五入取整后的誤差較大,若基準(zhǔn)頻率過(guò)高,雖然誤碼差變小,但分頻結(jié)構(gòu)將變大。實(shí)際的設(shè)計(jì)應(yīng)綜合考慮兩方面的因素,在盡量減小頻率誤差的前提下取舍合適的基準(zhǔn)頻率。本例中選取4MHz的基準(zhǔn)頻率,若無(wú)4MHz的時(shí)鐘頻率,實(shí)際上,只要各個(gè)音名間

5、的相對(duì)品頻率關(guān)系不變,C作1與D作1演奏出的音樂(lè)聽(tīng)起來(lái)都不會(huì)“走調(diào)”。各音階頻率及相應(yīng)的分頻系數(shù)如表2所示。為了減少輸出的偶次諧波分量,最后輸出到揚(yáng)聲器的波形應(yīng)為對(duì)稱方波,因此在到達(dá)揚(yáng)聲器之前,有一個(gè)二分頻的分頻器。表2中的分頻系數(shù)就是從4MHZ頻率二分頻得到的2MHZ頻率基礎(chǔ)上計(jì)算得出的。表2 各音階頻率對(duì)應(yīng)的分頻值音名分頻系數(shù)初始值音名分頻系數(shù)初始值音名分頻系數(shù)初始值低音17644547中音138224369高音119116280低音268101381中音234054786高音212706921低音360672124中音330345157高音315176674低音457272464中音42

6、8645327高音414326759低音551023089中音525515640高音512566935低音645453646中音622735918高音611377054低音740504141中音720256166高音710137178由于最大的分頻系數(shù)為7644,故采用13位二進(jìn)制計(jì)數(shù)器已能滿足分頻要求。在表2,除給出了分頻比以外,給出了對(duì)應(yīng)于各個(gè)音階頻率時(shí)計(jì)數(shù)器不同的初始值,對(duì)于樂(lè)曲中的休止符,要將分頻系數(shù)設(shè)為0,即初始值為8191即可,此時(shí)揚(yáng)聲器將不會(huì)發(fā)聲。對(duì)于不同的分頻系數(shù),加載不同的初始值即可。用加載初始值而不是將分頻輸出譯碼反饋,可以有效地減少本設(shè)計(jì)占用可編程邏輯器件的資源,也是同步

7、計(jì)數(shù)器的一個(gè)常用設(shè)計(jì)技巧。當(dāng)一個(gè)4Hz的時(shí)鐘脈沖來(lái)到時(shí),樂(lè)譜發(fā)生器模塊輸出一個(gè)音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應(yīng)的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當(dāng)12MHz的時(shí)鐘脈沖來(lái)到時(shí),數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應(yīng)的頻率(即此音符所對(duì)應(yīng)的發(fā)生頻率)給揚(yáng)聲器,揚(yáng)聲器就可發(fā)出對(duì)應(yīng)音符的聲音來(lái).連續(xù)的4Hz的時(shí)鐘脈沖就將樂(lè)譜發(fā)生器里所存儲(chǔ)的音符數(shù)據(jù)一個(gè)接一個(gè)的送給了分頻系數(shù)模塊,再經(jīng)過(guò)數(shù)控分頻模塊,最后揚(yáng)聲器一個(gè)接一個(gè)的發(fā)出音符數(shù)據(jù)所對(duì)應(yīng)的聲音來(lái)。曲子也就流暢的播放出來(lái)了.樂(lè)曲演奏頂層原理圖三、 程序設(shè)計(jì):1、NOTETABS模塊LIBRARY IEEE;.ALL;ENTITY n

8、otetabs IS PORT(clk :IN STD_LOGIC; toneindex: OUT INTEGER RANGE 0 TO 15);END;ARCHITECTURE one OF notetabs IS SIGNAL counter:INTEGER RANGE 0 TO 139; BEGIN CNT8:PROCESS(clk) BEGIN IF counter=127 THEN counter=0; ELSIF(clkEVENT AND clk=1) THEN counter toneindex toneindex toneindex toneindex toneindex to

9、neindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex to

10、neindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex to

11、neindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex to

12、neindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex to

13、neindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindex toneindexNULL; END CASE; END PROCESS;END;2、TONETABA模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Tonetaba IS PORT(index : IN INTEGER RANGE 0 TO 15; code : OUT

14、 INTEGER RANGE 0 TO 15; high : OUT STD_LOGIC ; tone : OUT INTEGER RANGE 0 TO 16#7FF# );END;ARCHITECTURE one OF Tonetaba ISBEGIN SEARCH: PROCESS(index) BEGIN CASE index IS WHEN 0 = tone=2047;code=0;high tone=773;code=1;high tone=912;code=2;high tone=1036;code=3;high tone=1197;code=5;high tone=1290;co

15、de=6;high tone=1372;code=7;high tone=1410;code=1;high tone=1480;code=2;high tone=1542;code=3;high tone=1622;code=5;high tone=1668;code=6;high tone=1728;code=1;high NULL; END CASE; END PROCESS;END;3、SPEAKERA模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY speakera IS PORT(clk :IN STD_LOGIC; tone:IN

16、INTEGER RANGE 0 TO 16#7FF#; spks: OUT STD_LOGIC);END;ARCHITECTURE one OF speakera IS SIGNAL preclk:STD_LOGIC; SIGNAL fullspks:STD_LOGIC;BEGIN divideclk:PROCESS(clk) VARIABLE count4:INTEGER RANGE 0 TO 15; BEGINpreclk11 THEN preclk=1;count4:=0; ELSIF clkEVENT AND clk=1 THEN count4:=count4+1; END IF; E

17、ND PROCESS; genspks:PROCESS(preclk,tone) VARIABLE count11: INTEGER RANGE 0 TO 16#7FF#; BEGIN IF preclkEVENT AND preclk=1 THEN IF count11=16#7FF# THEN count11:= tone; fullspks=1; ELSE count11:=count11+1; fullspks=0; END IF; END IF; END PROCESS; delaysks:PROCESS(fullspks) VARIABLE count2:STD_LOGIC; BE

18、GIN IF fullspks EVENT AND fullspks=1 THEN count2:= NOT count2; IF count2=1 THEN spks=1; ELSE spksCLK8HZ,TONEINDEX=TONEINDEX);U2:TONETABA PORT MAP(INDEX=TONEINDEX,TONE=TONE,CODE=CODE1,HIGH=HIGH1);U3:SPEAKERA PORT MAP(CLK=CLK12MHZ,TONE=TONE,SPKS=SPKOUT);END;四、編譯及仿真:NOTETABS模塊的仿真TONETABA模塊的仿真SPEAKERA模塊

19、的仿真頂層文件仿真圖五、硬件調(diào)試及結(jié)果分析頂層文件編譯仿真好之后,通過(guò)電腦連接到硬件上,下載頂層文件到FPGA里,下載完畢之后,輸入clk12MHz與clock9相接,接收12MHz時(shí)鐘頻率,輸入clk8Hz與clock2相接,接收4Hz的時(shí)鐘頻率。發(fā)音輸出SPKOUT接speaker,HIGH是高八度音指示,code1輸出是演奏發(fā)音相對(duì)應(yīng)的簡(jiǎn)譜碼。然后 就能聽(tīng)到對(duì)應(yīng)的樂(lè)曲。六、參考文獻(xiàn):1曹昕燕. .北京: 清華大學(xué)出版社,2004年2焦素敏. . 北京: 清華大學(xué)出版社,2009年3焦素敏. . 河南工業(yè)大學(xué),2008年4黃智偉. . 電子工業(yè)出版社,2005年5劉昌華. . 國(guó)防工業(yè)出版社,2005年七、心得體會(huì): 通過(guò)這次課程設(shè)計(jì),我的EDA得到了很大的提高。剛開始沒(méi)有思路,也是參考網(wǎng)絡(luò)和書籍,還有同學(xué)的幫助,才能完成。當(dāng)然中間也有很多的問(wèn)題。例如以前對(duì)LPM_ROM不是很熟悉,通過(guò)音樂(lè)播放器對(duì)它有了進(jìn)一步的了解。也大大的鍛煉了我們的動(dòng)手能力。團(tuán)結(jié)的力量是巨大的。

展開閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!