EDA樂曲播放器設(shè)計(jì)(新)_第1頁
EDA樂曲播放器設(shè)計(jì)(新)_第2頁
EDA樂曲播放器設(shè)計(jì)(新)_第3頁
EDA樂曲播放器設(shè)計(jì)(新)_第4頁
EDA樂曲播放器設(shè)計(jì)(新)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

《在系統(tǒng)編程技術(shù)》項(xiàng)目設(shè)計(jì)報(bào)告課程名稱在系統(tǒng)編程技術(shù)任課教師設(shè)計(jì)題目 樂曲硬件演奏電路班級(jí)09電子信息工程(1)班姓名學(xué)號(hào)成 績?nèi)?期 2012年6月6日TOC\o"1-5"\h\z\o"CurrentDocument"1題目分析 1\o"CurrentDocument"2設(shè)計(jì)方案 1\o"CurrentDocument"2.1頂層實(shí)體描述 1\o"CurrentDocument"2.2模塊劃分 2\o"CurrentDocument"2.3模塊描述 2\o"CurrentDocument"2.3.1音樂節(jié)扌白和音調(diào)發(fā)生器模塊:noteabs 2\o"CurrentDocument"2.3.2音樂譜對(duì)應(yīng)分頻預(yù)制數(shù)查表電路模塊:tonetaba 4\o"CurrentDocument"2.3.2音樂符數(shù)控11分頻電路模塊:SPEAKERA 4\o"CurrentDocument"2.4頂層電路圖 5\o"CurrentDocument"3方案實(shí)現(xiàn) 6\o"CurrentDocument"3.1模塊仿真及實(shí)現(xiàn) 6\o"CurrentDocument"tonetaba模塊 6\o"CurrentDocument"speakera模塊 6noteaba模塊 7\o"CurrentDocument"3.2頂層電路仿真及實(shí)現(xiàn) 7\o"CurrentDocument"4硬件測(cè)試及說明 8\o"CurrentDocument"5結(jié)論 8\o"CurrentDocument"6課程總結(jié) 87附錄:程序代碼 9樂曲硬件演奏電路1題目分析本設(shè)計(jì)要求完成簡單樂曲的播放,同時(shí)可以實(shí)現(xiàn)對(duì)樂曲播放的播放及暫??刂疲约案枨x擇的控制。為了達(dá)到以上要求,本設(shè)計(jì)選擇了FPGA來實(shí)現(xiàn)。樂曲播放的基本要素就是節(jié)拍和音階,而音階對(duì)應(yīng)不同的頻率,節(jié)拍對(duì)應(yīng)音階的持續(xù)時(shí)間。本設(shè)計(jì)通過定制LPM-ROM在不同的地址段存儲(chǔ)兩首不同音樂數(shù)據(jù),通過按鍵切換歌曲。ROM中的數(shù)據(jù),以一定的時(shí)間(即節(jié)拍)讀出,用數(shù)控分頻的原理得出相應(yīng)頻率,驅(qū)動(dòng)揚(yáng)聲器發(fā)出對(duì)應(yīng)的音階,從而來實(shí)現(xiàn)完整樂曲的播放。2設(shè)計(jì)方案2?1頂層實(shí)體描述樂曲播放器頂層實(shí)體songer由4個(gè)輸入、3個(gè)輸出組成。其中l(wèi)en使能信號(hào)輸入端,具有播放停止功能:當(dāng)len輸入高電平時(shí)順序播放音樂,輸入低電平時(shí)停止;lxz是選擇信號(hào)輸入端,在使能信號(hào)len輸入高電平時(shí),根據(jù)lxz輸入的高低電平播放不同的音樂。CLK8HZ輸入端輸入8HZ的時(shí)鐘信號(hào),用于產(chǎn)生節(jié)拍基準(zhǔn),CLK12MHZ輸入端輸入12MHZ的時(shí)鐘信號(hào),用于實(shí)現(xiàn)分頻音階;CODE1[3..O]輸出端輸出與演奏發(fā)音相對(duì)應(yīng)的簡譜碼;HIGH1是高八度音指示信號(hào)輸出端,SPKOUT是聲音輸出端口,驅(qū)動(dòng)揚(yáng)聲器播放音樂。.?■■I■■????????I■I■■■■■■■■■■I■I????????■■I■■????????I■I■■■■■■■■■■I■■■■■■■■■■-L:songer [—lencodel[3.0]]lxzhighl:!—clk1l2mhzspkout:1 clkShzinst圖1頂層實(shí)體

2.2模塊劃分按照頂層實(shí)體描述,本設(shè)計(jì)將樂曲播放器系統(tǒng)分為三個(gè)模塊:ROM地址發(fā)生器,分頻查找表和數(shù)控分頻器。由自頂向下設(shè)計(jì)思想設(shè)計(jì)如下圖:樂曲播放器地址發(fā)生器分頻查找表數(shù)控分頻器地址發(fā)生器分頻查找表數(shù)控分頻器圖2模塊劃分2.3模塊描述2.3.1音樂節(jié)拍和音調(diào)發(fā)生器模塊:noteabsnoteabs地址發(fā)生器模塊中包含有一個(gè)4位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)最大值為256)的ROM,其作為音符數(shù)據(jù)ROM的地址發(fā)生器。每來一個(gè)時(shí)鐘脈沖信號(hào)(elk),4位二進(jìn)制計(jì)數(shù)器就計(jì)數(shù)一次,ROM文件中的地址也就隨著遞增,音符數(shù)據(jù)ROM中的音符也就一個(gè)接一個(gè)連續(xù)的取出來了。在地址發(fā)生器的VHDL設(shè)計(jì)中,這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率選為4Hz,即每一計(jì)數(shù)值的停留時(shí)間為0.25秒,恰為當(dāng)全音符設(shè)為1秒,四四拍的4分音符持續(xù)時(shí)間。例如,地址發(fā)生器在以下的VHDL邏輯描述中,“梁?!睒非牡谝粋€(gè)音符為“3”,此音在邏輯中停留了4個(gè)時(shí)鐘節(jié)拍,即1秒時(shí)間。那么相應(yīng)隨著程序[4]中的計(jì)數(shù)器按4Hz的時(shí)鐘頻率作加法計(jì)數(shù)時(shí),即隨地址遞增時(shí),將從音符數(shù)據(jù)ROM中將連續(xù)取出4個(gè)音符“3”通過toneindex[3..0]端口輸向分頻預(yù)置數(shù)模塊。這樣梁祝樂曲中的音符就一個(gè)接一個(gè)的通過toneindex[3..0]端口輸向分頻預(yù)置數(shù)模塊。en為noteabs模塊的使能端,當(dāng)en為高電平時(shí),noteabs開始工作;xz為歌曲選擇端,當(dāng)xz為高電平時(shí),選擇歌曲2,反之,選擇歌曲1;歌曲選擇的原理即是,在ROM中不同的地址段存儲(chǔ)不同的歌曲,當(dāng)播放歌曲時(shí)選擇相應(yīng)的地址段;在本設(shè)計(jì)中,前138中存儲(chǔ)的為《梁?!?,后117存儲(chǔ)的為《送別》ROM的定制:在QUARTUS||中編輯.mif文件。首先在File菜單下的New菜單上選擇TextEditorFile命令,進(jìn)入文本編輯器,然后輸入以上格式的數(shù)據(jù)文件。文件中的關(guān)鍵詞WIDTH設(shè)置ROM的數(shù)據(jù)寬度;DEPTH設(shè)置ROM數(shù)據(jù)的深度,即4位數(shù)據(jù)的

數(shù)量,文件中設(shè)置的256等效于8位地址線寬度;ADDRESS-RADIX二DEC和DATA-RADIX二DEC表示設(shè)置地址和數(shù)據(jù)的表達(dá)式格式都是十進(jìn)制;地址/數(shù)據(jù)表以CONTENTBEGIN開始,以END結(jié)束;其中的地址/數(shù)據(jù)表達(dá)方式是冒號(hào)左邊寫ROM地址值,冒號(hào)右邊寫對(duì)應(yīng)此地址放置的十進(jìn)制數(shù)據(jù),如46:9,表示46為地址,9為該地址中的數(shù)據(jù)。這樣每讀到一個(gè)地址,即可輸出其相應(yīng)的數(shù)據(jù)。文件編輯好后,保存時(shí)取文件名為“MUSIC.mif”,存盤的路“F:\huchuanshu0905071022\MUSIC\MUSIC.mif”。\notetabs\musicS—en toneindex[3..0]■■■■■address[7..O]?30]-41——xz■inclock—elkinstl\inst3圖3noteabs實(shí)體描述圖4ROM實(shí)體描述Addr*1*2糾+s托pr0503OSOS07B070606QB08OS□5D5iG啤KKK0102g240201020202020202ps-縫G205050305OS帕4007070606030805DS弭t>5KKK020304Q456&7&70101OT010101QI(H0606曲goa閔72OBGB07070607DBOSBGasW07osD&06asrsa-&3&10202020202az9602驚05050305oao&10407070606QIQID5DS112眄K050203Q4他&7&7&i01OT010101126010105050305oa0&136070706060808D5DS14405050501022152盟&102030202站021&0(t20205050305oa0&16£070706060806D5DS17605050505020304184&7&70i01OT010101IKQ1(H0606OSOSoa礙080807070607□1D1測(cè)01010607030606Q521603t>10202020202az22402&2OOOOOO00000023200(H9ooooQ0DODOoo(H3(H)0QDO0QQQ的咖00WooOOOO0000ao表1ROM數(shù)據(jù)表2.3.2音樂譜對(duì)應(yīng)分頻預(yù)制數(shù)查表電路模塊:tonetaba音樂譜分頻預(yù)置數(shù)模塊是樂曲簡譜碼對(duì)應(yīng)的分頻預(yù)置數(shù)查表電路。它提供了每個(gè)音符所對(duì)應(yīng)的分頻預(yù)置數(shù),即給數(shù)控分頻模塊提供計(jì)數(shù)初值。在這個(gè)模塊的VHDL邏輯描述中設(shè)置了四四拍樂曲中全部音符所對(duì)應(yīng)的分頻預(yù)置數(shù),共13個(gè),每一音符的停留時(shí)間由音樂節(jié)拍和地址發(fā)生器模塊的時(shí)鐘(Clk)的輸入頻率決定,在此為4Hz。這13個(gè)值的輸出由程序[3]的4位輸入值index[3..O]確定。輸向程序[4]中index[3..O]的值又由地址發(fā)生器模塊的輸出toneindex[3..0]的輸出值和持續(xù)時(shí)間決定。模塊的功能是輸出各個(gè)音符所對(duì)應(yīng)的分頻預(yù)置數(shù),即當(dāng)index是“0000”tone輸出為2047,即休止符的分頻預(yù)置數(shù);當(dāng)index是“0101”時(shí),tone輸出為1197即低音5的分頻預(yù)置數(shù);當(dāng)index是“1111”時(shí),tone輸出為1728即高音1的分頻預(yù)置數(shù)等等其它狀態(tài)時(shí),tone分別輸出相應(yīng)音符的分頻預(yù)置數(shù)。:tonetaba■■r■■r■■■■■■■■>index[3..O]code[30]highiOtone[10..0]finst2I圖5toneaba實(shí)體描述2.3.2音樂符數(shù)控11分頻電路模塊:SPEAKERA音符的頻率由數(shù)控分頻模塊獲得,這是一個(gè)數(shù)控分頻電路。它是由一個(gè)初值可變的加法計(jì)數(shù)器構(gòu)成。該計(jì)數(shù)器的模為2047,當(dāng)計(jì)數(shù)器記滿時(shí),計(jì)數(shù)器產(chǎn)生一個(gè)溢出信號(hào)FULL,此溢出信號(hào)就是用作發(fā)音的頻率信號(hào)。在計(jì)數(shù)器的輸入端給定不同的初值,而此預(yù)置數(shù)就是表1中的計(jì)數(shù)初值,就可得到不同音符的發(fā)音頻率信號(hào)。它計(jì)滿時(shí)所需要的計(jì)數(shù)初值可由下式來表示。計(jì)數(shù)初值(Tone)=2047-分頻系數(shù)而分頻系數(shù)又可有下式來求:分頻系數(shù)二基準(zhǔn)頻率/音符的發(fā)生頻率低音時(shí)Tone值小,分頻系數(shù)大,溢出信號(hào)周期長,揚(yáng)聲器發(fā)出的聲音低,Tone隨音樂的樂譜變化大,自動(dòng)控制分頻比,實(shí)現(xiàn)了數(shù)控分頻,發(fā)生信號(hào)的頻率與音調(diào)Tone成正比。這就是利用數(shù)控分頻器自動(dòng)演奏音樂的原理。時(shí)鐘(Clk)端輸入的是在十六進(jìn)制模塊里對(duì)12MHz的信號(hào)進(jìn)行16分頻得到的750KHz,750KHz的信號(hào)根據(jù)分頻預(yù)置數(shù)模塊中所提供的計(jì)數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。此時(shí)從數(shù)控分頻器中出來的輸出信號(hào)是脈寬極窄的脈沖式信號(hào),為了有利于驅(qū)動(dòng)揚(yáng)聲器,需另加一個(gè)D觸發(fā)器以均衡其占空比,這時(shí)的頻率就變?yōu)樵瓉淼?/2,剛好就是相應(yīng)音符的頻率。數(shù)控分頻模塊中對(duì)Clk輸入信號(hào)的分頻比由11位預(yù)置數(shù)tone[10..0]決定。Fout的輸出頻率將決定每一個(gè)音符的音調(diào),這樣,分頻計(jì)數(shù)器的預(yù)置值tone[10..0]與Fout的輸出頻率就有了對(duì)應(yīng)關(guān)系。例如在分頻預(yù)置數(shù)模塊中若取tone[10..0]=1036,將發(fā)出音符為“3”音的信號(hào)頻率。;???ifI?r?I■r■■?■??I■■?I?"????"???■?I?r?Iar■■ar■■iri■in■■■■■■rai■r:speakers i\—elk spks—?■tone[W..O] ?inst4圖6speakera實(shí)體描述音符名頻率(Hz)分頻系數(shù)計(jì)數(shù)初值音符名頻率(Hz)分頻系數(shù)計(jì)數(shù)初值休止符37500002047中音4796.1784681579低音1294.3491274773中音5882.3534251622低音2330.3961135912中音6989.4463791668低音3370.9210111036中音71136.3633301717低音4386.5989701077高音11175.5493191728低音5394.7379501197冋曰21353.7902771770低音6495.3767571290高音31512.0972481799低音7555.566751372高音41609.4422331814中音1588.6976371410高音51802.8842081839中音2638.845871480高音62027.0271851862中音3742.5745051542高音72272.7271651882表2各個(gè)音符的頻率及其對(duì)應(yīng)的分頻系數(shù)(基準(zhǔn)頻率375KHz)2?4頂層電路圖當(dāng)一個(gè)4Hz的時(shí)鐘脈沖來到時(shí),樂譜發(fā)生器模塊輸出一個(gè)音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應(yīng)的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當(dāng)12MHz的時(shí)鐘脈沖來到時(shí),數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應(yīng)的頻率(即此音符所對(duì)應(yīng)的發(fā)生頻率)給揚(yáng)聲器,揚(yáng)聲器就可發(fā)出對(duì)應(yīng)音符的聲音來.連續(xù)的4Hz的時(shí)鐘脈沖就將樂譜發(fā)生器里所存儲(chǔ)的音符數(shù)據(jù)一個(gè)接一個(gè)的送給了分頻系數(shù)模塊,再經(jīng)過數(shù)控分頻模塊,最后揚(yáng)聲器一個(gè)接一個(gè)的發(fā)出音符數(shù)據(jù)所對(duì)應(yīng)的聲音來。曲子也就流暢的播放出來了,當(dāng)樂曲一遍演奏完成后,樂曲發(fā)生器能自動(dòng)從頭開始循環(huán)演奏,按下lxz鍵時(shí)播放第二首歌,按下len鍵時(shí)停止播放歌曲。

圖7圖7頂層電路圖3方案實(shí)現(xiàn)3?1模塊仿真及實(shí)現(xiàn)3.1.1tonetaba模塊(1)仿真波形本模塊由VHDL程序設(shè)計(jì)(代碼見附錄),編譯成功后選擇目標(biāo)芯片EP1C3T144-C8,然后進(jìn)行仿真,結(jié)果如下:N:N:inieValue0pe田indexB001:HB田codeU1ahighBI:J田toneU71)ps80■9ns16O.°ns240.°ns320.0nsi400.0ns480.°ns560.°ns640.°ns720.0nsi800.0ns-1PEjI00001Y oooio0001101000"DC0111100010I12X311ZE2\Ii■lLl!773X 9121036X14101728Zl:912圖8tonetaba仿真圖(2)仿真結(jié)果分析tonetaba分頻預(yù)置數(shù)模塊的功能是輸出各個(gè)音符所對(duì)應(yīng)的分頻預(yù)置數(shù),由上面的仿真波形圖可看到若當(dāng)index是“0001”,tone輸出為773,即低音‘1’的分頻預(yù)置數(shù);當(dāng)index是“0010”時(shí),Tone輸出為912,即低音‘2’的分頻預(yù)置數(shù);此時(shí)high為0;當(dāng)index是“1000”時(shí),Tone輸出為1410即高音‘1’的分頻預(yù)置數(shù),此時(shí)high為1;其他情況也滿足,音階對(duì)應(yīng)相應(yīng)頻率。3.1.2speakera模塊(1)仿真波形本模塊由VHDL程序設(shè)計(jì)(代碼見附錄),編譯成功后選擇目標(biāo)芯片N:inieValue19.03elkBispksBl:田toneU71EP1C3T144-C8,然后進(jìn)行仿真,結(jié)果如下:Jps 1.31ms 2.62ms 3.93ms 5.24ms 6.55ms 7.86ms 9.18ms19.025rLSI I I I I I I I I I I I I19.025rLSI I I I I I I I I I I I I、770 V 1ii1i-|ri-j /, mu Ii iiiiiii::(TTQ V 1ii1i-|ri-j a 141u圖9speakera仿真圖

(2)仿真結(jié)果分析spks的輸出頻率決定每一音符的音調(diào),tone為773時(shí)對(duì)應(yīng)的分頻系數(shù)為1294即294.349HZ。周期為3.4ms;tone為1410時(shí)對(duì)應(yīng)的分頻系數(shù)為637即588.697HZ。周期為1.7ms;與波形圖對(duì)照,滿足該條件。3.1.3noteaba模塊(1)仿真波形本模塊由(1)仿真波形本模塊由VHDL程序設(shè)計(jì)(代碼見附錄),編譯成功后選擇目標(biāo)芯片圖10noteaba仿真圖(2)仿真結(jié)果分析由仿真波形可以看出當(dāng)en為低電平時(shí),無論xz為高電平還是低電平Toneldex輸出都是“0”當(dāng)xz為高電平時(shí),根據(jù)xz的高低電平選擇播放音樂,實(shí)現(xiàn)了選擇復(fù)位功能。3?2頂層電路仿真及實(shí)現(xiàn)(1)仿真波形頂層電路設(shè)計(jì)是利用原理圖設(shè)計(jì)的。將前面已經(jīng)做好的模塊進(jìn)行封裝入庫,然后在設(shè)計(jì)頂層原理圖時(shí)一一調(diào)用,在根據(jù)程序?qū)⒍丝谝灰贿B接,再編譯。編譯成功后選擇目標(biāo)芯片EP1C3T144-C8,然后進(jìn)行仿真,結(jié)果如下:O1?lXEXvnclkli.6£舊CO1?lXEXvnclkli.6£舊CCB$>B>9XK"ST>n前I種 It2^t?攀 3M¥髦普*1IV$i1 .?.「LTruLruuumnTmnnnruumjuvmrLrmnmumnrjmrLRrLrumjwirumnj.:圖11頂層仿真圖(2)仿真結(jié)果分析由仿真結(jié)果可以看出,但len為低電平時(shí),CODE1為0,這說明此時(shí)不播放音樂;當(dāng)len為高電平時(shí),code1開始變化,spkout的輸出頻率也開始變動(dòng),高八度音指示high1也開始變化。4硬件測(cè)試及說明(1)引腳鎖定選擇實(shí)驗(yàn)電路模式5。先將引腳鎖定,使CLK12MHZ與clock9相接;CLK8HZ與clock2相連,接受4HZ頻率;發(fā)音輸出SPKOUT接Speaker;與演奏發(fā)音相對(duì)應(yīng)的簡譜碼輸出顯示可由CODE1在數(shù)碼管5顯示;HIGH1為高八度指示,可由發(fā)光管D5指示;復(fù)位鍵RET、選擇鍵SEL分別接鍵7、鍵8。查表得對(duì)應(yīng)引腳號(hào)如下:圖12引腳鎖定圖存儲(chǔ)這些引腳信息后,再編譯一次(2)硬件測(cè)試結(jié)果分析程序下載后,按下鍵7,開始從頭播放音樂,再按下鍵6,播放第二首;再按下鍵7,停止播放。與預(yù)期結(jié)果一致,硬件實(shí)現(xiàn)結(jié)果正確。5結(jié)論通過自頂而下,層層分解,本設(shè)計(jì)已經(jīng)滿足了預(yù)期的實(shí)驗(yàn)?zāi)繕?biāo)??梢詫?shí)現(xiàn)停止選擇功能。但是還是有很多的不足,比如說設(shè)計(jì)還是較簡單,不夠?qū)嵱?,如果以后有時(shí)間可以把它改成電子琴。6課程總結(jié)經(jīng)過這次課程設(shè)計(jì),我對(duì)FPGA自上而下的編程方法有了更深的了解。我進(jìn)一步的了解了EDA技術(shù),應(yīng)用也更加自如,這為我們將來工作打下了堅(jiān)實(shí)的基礎(chǔ),我們用EDA技術(shù)設(shè)計(jì)并了完成樂曲硬件演奏電路,實(shí)現(xiàn)了硬件自動(dòng)發(fā)出音樂的功能,設(shè)置了手動(dòng)和自動(dòng)的輸入控制器,實(shí)現(xiàn)自動(dòng)手動(dòng)輸入。樂曲高低音的轉(zhuǎn)換隨著我們?cè)O(shè)計(jì)參數(shù)的改變而得以實(shí)現(xiàn),使我們的設(shè)計(jì)有更高的廣泛性和實(shí)用性?;仡櫞舜握n程設(shè)計(jì),從書籍,網(wǎng)絡(luò)不斷的尋找到設(shè)計(jì)電路,從開始到完成整個(gè)設(shè)計(jì),從理論到實(shí)踐,可以學(xué)到很多很多的的東西。對(duì)課本知識(shí)的進(jìn)一步加深的同時(shí)學(xué)到了很多在書本上沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的。把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正提高自己的實(shí)際動(dòng)手能力和獨(dú)立

思考的能力。在設(shè)計(jì)的過程難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。我對(duì)EDA的學(xué)習(xí)只能算是個(gè)入門,這個(gè)領(lǐng)域的發(fā)展空間非常大,應(yīng)用范圍也非常廣泛,而且我相信在將來還會(huì)有更加廣闊的應(yīng)用前景。因此在以后的學(xué)習(xí)過程中,我不能因?yàn)檎n程學(xué)習(xí)的結(jié)束而結(jié)束了我對(duì)這個(gè)方面的學(xué)習(xí)甚至這個(gè)領(lǐng)域的探索,相反我會(huì)更加努力的去學(xué)習(xí)它。感謝老師兢兢業(yè)業(yè)的教導(dǎo),讓我不僅學(xué)到了知識(shí),也學(xué)到了做人做事的一些道理,為我提供了很多幫助。在接下來的學(xué)習(xí)中,我會(huì)繼續(xù)努力,努力扎實(shí)地學(xué)習(xí)專業(yè)知識(shí),為以后打好鋪墊,奠定基礎(chǔ)。7附錄:7附錄:程序代碼1、speakera.vhdLIBRARYIEEE;--音樂符數(shù)控分頻電路模塊USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--運(yùn)算符重載ENTITYspeakeraISPORT(elk:INSTD_LOGIC;--音調(diào)頻率信號(hào)12MHZtone:INSTD_LOGIC_VECTOR(10DOWNTO0);--音樂符對(duì)應(yīng)分頻11位spks:OUTSTD_LOGIC);--聲音輸出END;ARCHITECTUREoneOFspeakeraISSIGNALPreCLK,FullSpkS:STD_LOGIC;BEGINDivideCLK:PROCESS(elk)VARIABLECount4:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPreCLK<='0';--將CLK進(jìn)行16分頻,PreCLK為CLK的16分頻IFCount4>11THENPreCLK<=T;Count4:="0000";--變量ELSIFelk'EVENTANDelk='1'THENCount4:=Count4+1;ENDIF;ENDPROCESS;GenSpkS:PROCESS(PreCLK,Tone)--11位可預(yù)置計(jì)數(shù)器VARIABLECount11:STD_LOGIC_VECTOR(10DOWNTO0);BEGINIFPreCLK'EVENTANDPreCLK='1'THENIFCount11=16#7FF#THENCount11:=Tone;FullSpkS<=T;ELSECount11:=Count11+1;FullSpkS<='0';ENDIF;ENDIF;ENDPROCESS;DelaySpkS:PROCESS(FullSpkS)--將輸出再2分頻,展寬脈沖,使揚(yáng)聲器有足夠功率發(fā)音VARIABLECount2:STD_LOGIC;BEGINIFFullSpkS'EVENTANDFullSpkS=TTHENCount2:=NOTCount2;IFCount2=TTHENspks<=T;ELSEspks<='0';ENDIF;ENDIF;ENDPROCESS;END;2、tonetaba.vhdLIBRARYIEEE;--音樂譜對(duì)應(yīng)分頻預(yù)制數(shù)查表電路模塊USEIEEE.STD_LOGIC_1164.ALL;ENTITYToneTabaISPORT(index:INSTD_LOGIC_VECTOR(3DOWNTO0);--4位預(yù)制數(shù)查表code:OUTSTD_LOGIC_VECTOR(3DOWNTO0);high:OUTSTD_LOGIC;--音樂高8度指示tone:OUTSTD_LOGIC_VECTOR(10DOWNTO0));―音樂符對(duì)應(yīng)分頻11位END;ARCHITECTUREoneOFtonetabaISBEGINSearch:PROCESS(Index)BEGINCASEIndexIS--譯碼電路,查表方式,控制音調(diào)的預(yù)置數(shù)13組頻率WHEN"0000"=>tone<="11111111111";codev="0000";HIGH<='0';--2047WHEN"0001"=>tone<="01100000101";code<="0001";HIGH<='0';--773;WHEN"0010"=>tone<="01110010000";code<="0010";HIGH<='0';--912;WHEN"0011"=>tone<="10000001100";code<="0011";HIGH<='0';--1036;WHEN"0101"=>tone<="10010101101";code<="0101";HIGH<='0';--1197;WHEN"0110"=>tone<="10100001010";code<="0110";HIGHv='0';--1290;WHEN"0111"=>tone<="10101011100";codeE<="0111";HIGH<='0';--1372;WHEN"1000"=>tone<="10110000010";code="0001";HIGH<='1';--1410;WHEN"1001"=>tone<="10111001000";code="0010";HIGH<='1';--1480;WHEN"1010"=>tone<="11000000110";code<="0011";HIGH<='1';--1542;WHEN"1100"=>tone<="11001010110";code<="0101";HIGH<='1';--1622;WHEN"1101"=>tone<="11010000100";code<="0110";HIGH<='1';--1668;WHEN"1111"=>tone<="11011000000";code<="0001";HIGH<='1';--1728;WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;END;3、 notetabs.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYnotetabsISPORT(en,xz,clk:INSTD_LOGIC;ToneIndex:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREoneOFnotetabsISCOMPONENTMUSIC―調(diào)用MUSICROM的聲明PORT( address:INSTD_LOGIC_VECTOR(7DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;SIGNALCounter:STD_LOGIC_VECTOR(7DOWNTO0);BEGINCNT8:PROCESS(clk,Counter)--計(jì)數(shù)器BEGINIFen='1'THEN--復(fù)位使能端進(jìn)行選擇if(clk'EVENTANDclk=T)THENCounterv=Counter+1;--計(jì)數(shù)器IFxz=TTHEN-選擇語句當(dāng)ret為高電平且滿足計(jì)數(shù)大于144或小于254時(shí)都播放第一首歌曲IF(Counter<144ORCounter>254)THENCount

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論