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

下載本文檔

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

文檔簡介

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

2.2模塊劃分按照頂層實體描述,本設(shè)計將樂曲播放器系統(tǒng)分為三個模塊:ROM地址發(fā)生器,分頻查找表和數(shù)控分頻器。由自頂向下設(shè)計思想設(shè)計如下圖:樂曲播放器地址發(fā)生器分頻查找表數(shù)控分頻器地址發(fā)生器分頻查找表數(shù)控分頻器圖2模塊劃分2.3模塊描述2.3.1音樂節(jié)拍和音調(diào)發(fā)生器模塊:noteabsnoteabs地址發(fā)生器模塊中包含有一個4位二進制計數(shù)器(計數(shù)最大值為256)的ROM,其作為音符數(shù)據(jù)ROM的地址發(fā)生器。每來一個時鐘脈沖信號(elk),4位二進制計數(shù)器就計數(shù)一次,ROM文件中的地址也就隨著遞增,音符數(shù)據(jù)ROM中的音符也就一個接一個連續(xù)的取出來了。在地址發(fā)生器的VHDL設(shè)計中,這個計數(shù)器的計數(shù)頻率選為4Hz,即每一計數(shù)值的停留時間為0.25秒,恰為當全音符設(shè)為1秒,四四拍的4分音符持續(xù)時間。例如,地址發(fā)生器在以下的VHDL邏輯描述中,“梁?!睒非牡谝粋€音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間。那么相應(yīng)隨著程序[4]中的計數(shù)器按4Hz的時鐘頻率作加法計數(shù)時,即隨地址遞增時,將從音符數(shù)據(jù)ROM中將連續(xù)取出4個音符“3”通過toneindex[3..0]端口輸向分頻預(yù)置數(shù)模塊。這樣梁祝樂曲中的音符就一個接一個的通過toneindex[3..0]端口輸向分頻預(yù)置數(shù)模塊。en為noteabs模塊的使能端,當en為高電平時,noteabs開始工作;xz為歌曲選擇端,當xz為高電平時,選擇歌曲2,反之,選擇歌曲1;歌曲選擇的原理即是,在ROM中不同的地址段存儲不同的歌曲,當播放歌曲時選擇相應(yīng)的地址段;在本設(shè)計中,前138中存儲的為《梁?!?,后117存儲的為《送別》ROM的定制:在QUARTUS||中編輯.mif文件。首先在File菜單下的New菜單上選擇TextEditorFile命令,進入文本編輯器,然后輸入以上格式的數(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ù)的表達式格式都是十進制;地址/數(shù)據(jù)表以CONTENTBEGIN開始,以END結(jié)束;其中的地址/數(shù)據(jù)表達方式是冒號左邊寫ROM地址值,冒號右邊寫對應(yīng)此地址放置的十進制數(shù)據(jù),如46:9,表示46為地址,9為該地址中的數(shù)據(jù)。這樣每讀到一個地址,即可輸出其相應(yīng)的數(shù)據(jù)。文件編輯好后,保存時取文件名為“MUSIC.mif”,存盤的路“F:\huchuanshu0905071022\MUSIC\MUSIC.mif”。\notetabs\musicS—en toneindex[3..0]■■■■■address[7..O]?30]-41——xz■inclock—elkinstl\inst3圖3noteabs實體描述圖4ROM實體描述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測01010607030606Q521603t>10202020202az22402&2OOOOOO00000023200(H9ooooQ0DODOoo(H3(H)0QDO0QQQ的咖00WooOOOO0000ao表1ROM數(shù)據(jù)表2.3.2音樂譜對應(yīng)分頻預(yù)制數(shù)查表電路模塊:tonetaba音樂譜分頻預(yù)置數(shù)模塊是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路。它提供了每個音符所對應(yīng)的分頻預(yù)置數(shù),即給數(shù)控分頻模塊提供計數(shù)初值。在這個模塊的VHDL邏輯描述中設(shè)置了四四拍樂曲中全部音符所對應(yīng)的分頻預(yù)置數(shù),共13個,每一音符的停留時間由音樂節(jié)拍和地址發(fā)生器模塊的時鐘(Clk)的輸入頻率決定,在此為4Hz。這13個值的輸出由程序[3]的4位輸入值index[3..O]確定。輸向程序[4]中index[3..O]的值又由地址發(fā)生器模塊的輸出toneindex[3..0]的輸出值和持續(xù)時間決定。模塊的功能是輸出各個音符所對應(yīng)的分頻預(yù)置數(shù),即當index是“0000”tone輸出為2047,即休止符的分頻預(yù)置數(shù);當index是“0101”時,tone輸出為1197即低音5的分頻預(yù)置數(shù);當index是“1111”時,tone輸出為1728即高音1的分頻預(yù)置數(shù)等等其它狀態(tài)時,tone分別輸出相應(yīng)音符的分頻預(yù)置數(shù)。:tonetaba■■r■■r■■■■■■■■>index[3..O]code[30]highiOtone[10..0]finst2I圖5toneaba實體描述2.3.2音樂符數(shù)控11分頻電路模塊:SPEAKERA音符的頻率由數(shù)控分頻模塊獲得,這是一個數(shù)控分頻電路。它是由一個初值可變的加法計數(shù)器構(gòu)成。該計數(shù)器的模為2047,當計數(shù)器記滿時,計數(shù)器產(chǎn)生一個溢出信號FULL,此溢出信號就是用作發(fā)音的頻率信號。在計數(shù)器的輸入端給定不同的初值,而此預(yù)置數(shù)就是表1中的計數(shù)初值,就可得到不同音符的發(fā)音頻率信號。它計滿時所需要的計數(shù)初值可由下式來表示。計數(shù)初值(Tone)=2047-分頻系數(shù)而分頻系數(shù)又可有下式來求:分頻系數(shù)二基準頻率/音符的發(fā)生頻率低音時Tone值小,分頻系數(shù)大,溢出信號周期長,揚聲器發(fā)出的聲音低,Tone隨音樂的樂譜變化大,自動控制分頻比,實現(xiàn)了數(shù)控分頻,發(fā)生信號的頻率與音調(diào)Tone成正比。這就是利用數(shù)控分頻器自動演奏音樂的原理。時鐘(Clk)端輸入的是在十六進制模塊里對12MHz的信號進行16分頻得到的750KHz,750KHz的信號根據(jù)分頻預(yù)置數(shù)模塊中所提供的計數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。此時從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅(qū)動揚聲器,需另加一個D觸發(fā)器以均衡其占空比,這時的頻率就變?yōu)樵瓉淼?/2,剛好就是相應(yīng)音符的頻率。數(shù)控分頻模塊中對Clk輸入信號的分頻比由11位預(yù)置數(shù)tone[10..0]決定。Fout的輸出頻率將決定每一個音符的音調(diào),這樣,分頻計數(shù)器的預(yù)置值tone[10..0]與Fout的輸出頻率就有了對應(yīng)關(guān)系。例如在分頻預(yù)置數(shù)模塊中若取tone[10..0]=1036,將發(fā)出音符為“3”音的信號頻率。;???ifI?r?I■r■■?■??I■■?I?"????"???■?I?r?Iar■■ar■■iri■in■■■■■■rai■r:speakers i\—elk spks—?■tone[W..O] ?inst4圖6speakera實體描述音符名頻率(Hz)分頻系數(shù)計數(shù)初值音符名頻率(Hz)分頻系數(shù)計數(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各個音符的頻率及其對應(yīng)的分頻系數(shù)(基準頻率375KHz)2?4頂層電路圖當一個4Hz的時鐘脈沖來到時,樂譜發(fā)生器模塊輸出一個音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應(yīng)的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當12MHz的時鐘脈沖來到時,數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應(yīng)的頻率(即此音符所對應(yīng)的發(fā)生頻率)給揚聲器,揚聲器就可發(fā)出對應(yīng)音符的聲音來.連續(xù)的4Hz的時鐘脈沖就將樂譜發(fā)生器里所存儲的音符數(shù)據(jù)一個接一個的送給了分頻系數(shù)模塊,再經(jīng)過數(shù)控分頻模塊,最后揚聲器一個接一個的發(fā)出音符數(shù)據(jù)所對應(yīng)的聲音來。曲子也就流暢的播放出來了,當樂曲一遍演奏完成后,樂曲發(fā)生器能自動從頭開始循環(huán)演奏,按下lxz鍵時播放第二首歌,按下len鍵時停止播放歌曲。

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

思考的能力。在設(shè)計的過程難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。我對EDA的學(xué)習(xí)只能算是個入門,這個領(lǐng)域的發(fā)展空間非常大,應(yīng)用范圍也非常廣泛,而且我相信在將來還會有更加廣闊的應(yīng)用前景。因此在以后的學(xué)習(xí)過程中,我不能因為課程學(xué)習(xí)的結(jié)束而結(jié)束了我對這個方面的學(xué)習(xí)甚至這個領(lǐng)域的探索,相反我會更加努力的去學(xué)習(xí)它。感謝老師兢兢業(yè)業(yè)的教導(dǎo),讓我不僅學(xué)到了知識,也學(xué)到了做人做事的一些道理,為我提供了很多幫助。在接下來的學(xué)習(xí)中,我會繼續(xù)努力,努力扎實地學(xué)習(xí)專業(yè)知識,為以后打好鋪墊,奠定基礎(chǔ)。7附錄:7附錄:程序代碼1、speakera.vhdLIBRARYIEEE;--音樂符數(shù)控分頻電路模塊USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--運算符重載ENTITYspeakeraISPORT(elk:INSTD_LOGIC;--音調(diào)頻率信號12MHZtone:INSTD_LOGIC_VECTOR(10DOWNTO0);--音樂符對應(yīng)分頻11位spks:OUTSTD_LOGIC);--聲音輸出END;ARCHITECTUREoneOFspeakeraISSIGNALPreCLK,FullSpkS:STD_LOGIC;BEGINDivideCLK:PROCESS(elk)VARIABLECount4:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPreCLK<='0';--將CLK進行16分頻,PreCLK為CLK的16分頻IFCount4>11THENPreCLK<=T;Count4:="0000";--變量ELSIFelk'EVENTANDelk='1'THENCount4:=Count4+1;ENDIF;ENDPROCESS;GenSpkS:PROCESS(PreCLK,Tone)--11位可預(yù)置計數(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分頻,展寬脈沖,使揚聲器有足夠功率發(fā)音VARIABLECount2:STD_LOGIC;BEGINIFFullSpkS'EVENTANDFullSpkS=TTHENCount2:=NOTCount2;IFCount2=TTHENspks<=T;ELSEspks<='0';ENDIF;ENDIF;ENDPROCESS;END;2、tonetaba.vhdLIBRARYIEEE;--音樂譜對應(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));―音樂符對應(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)--計數(shù)器BEGINIFen='1'THEN--復(fù)位使能端進行選擇if(clk'EVENTANDclk=T)THENCounterv=Counter+1;--計數(shù)器IFxz=TTHEN-選擇語句當ret為高電平且滿足計數(shù)大于144或小于254時都播放第一首歌曲IF(Counter<144ORCounter>254)THENCount

溫馨提示

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

最新文檔

評論

0/150

提交評論