版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、在系統(tǒng)編程技術項目設計報告課程名稱 在系統(tǒng)編程技術 任課教師 設計題目 樂曲硬件演奏電路 班 級 09電子信息工程(1)班 姓名學號 成 績 日 期 2012年6月6日 目 錄1題目分析12設計方案12.1頂層實體描述12.2模塊劃分22.3模塊描述22.3.1音樂節(jié)拍和音調發(fā)生器模塊:noteabs22.3.音樂譜對應分頻預制數(shù)查表電路模塊:tonetaba42.3.2音樂符數(shù)控11分頻電路模塊:SPEAKERA42.4頂層電路圖53方案實現(xiàn)63.1模塊仿真及實現(xiàn)63.1.1 tonetaba模塊63.1.2 speakera模塊63.1.3 noteaba模塊73.2頂層電路仿真及實現(xiàn)74
2、硬件測試及說明75結論86課程總結87附錄:程序代碼9I樂曲硬件演奏電路1題目分析本設計要求完成簡單樂曲的播放,同時可以實現(xiàn)對樂曲播放的播放及暫??刂疲约案枨x擇的控制。為了達到以上要求,本設計選擇了FPGA來實現(xiàn)。樂曲播放的基本要素就是節(jié)拍和音階,而音階對應不同的頻率,節(jié)拍對應音階的持續(xù)時間。本設計通過定制LPM-ROM在不同的地址段存儲兩首不同音樂數(shù)據(jù),通過按鍵切換歌曲。ROM中的數(shù)據(jù),以一定的時間(即節(jié)拍)讀出,用數(shù)控分頻的原理得出相應頻率,驅動揚聲器發(fā)出對應的音階,從而來實現(xiàn)完整樂曲的播放。2設計方案2.1頂層實體描述樂曲播放器頂層實體songer由4個輸入、3個輸出組成。其中l(wèi)en
3、使能信號輸入端,具有播放停止功能:當len輸入高電平時順序播放音樂,輸入低電平時停止;lxz是選擇信號輸入端,在使能信號len輸入高電平時,根據(jù)lxz輸入的高低電平播放不同的音樂。CLK8HZ輸入端輸入8HZ的時鐘信號,用于產生節(jié)拍基準,CLK12MHZ輸入端輸入12MHZ的時鐘信號,用于實現(xiàn)分頻音階;CODE13.0輸出端輸出與演奏發(fā)音相對應的簡譜碼;HIGH1是高八度音指示信號輸出端,SPKOUT是聲音輸出端口,驅動揚聲器播放音樂。圖1 頂層實體2.2模塊劃分按照頂層實體描述,本設計將樂曲播放器系統(tǒng)分為三個模塊:ROM地址發(fā)生器,分頻查找表和數(shù)控分頻器。由自頂向下設計思想設計如下圖:樂曲播
4、放器分頻查找表ROM地址發(fā)生器數(shù)控分頻器圖2 模塊劃分2.3模塊描述2.3.1音樂節(jié)拍和音調發(fā)生器模塊:noteabsnoteabs地址發(fā)生器模塊中包含有一個4位二進制計數(shù)器(計數(shù)最大值為256)的ROM,其作為音符數(shù)據(jù)ROM的地址發(fā)生器。每來一個時鐘脈沖信號(clk),4位二進制計數(shù)器就計數(shù)一次,ROM文件中的地址也就隨著遞增,音符數(shù)據(jù)ROM中的音符也就一個接一個連續(xù)的取出來了。在地址發(fā)生器的VHDL設計中,這個計數(shù)器的計數(shù)頻率選為4Hz,即每一計數(shù)值的停留時間為0.25秒,恰為當全音符設為1秒,四四拍的4分音符持續(xù)時間。例如,地址發(fā)生器在以下的VHDL邏輯描述中,“梁?!睒非牡谝粋€音符為
5、“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間。那么相應隨著程序4中的計數(shù)器按4Hz的時鐘頻率作加法計數(shù)時,即隨地址遞增時,將從音符數(shù)據(jù)ROM中將連續(xù)取出4個音符“3”通過toneindex3.0端口輸向分頻預置數(shù)模塊。這樣梁祝樂曲中的音符就一個接一個的通過toneindex3.0端口輸向分頻預置數(shù)模塊。en為noteabs模塊的使能端,當en為高電平時,noteabs開始工作;xz為歌曲選擇端,當xz為高電平時,選擇歌曲2,反之,選擇歌曲1;歌曲選擇的原理即是,在ROM中不同的地址段存儲不同的歌曲,當播放歌曲時選擇相應的地址段;在本設計中,前中存儲的為梁祝,后存儲的為送別。ROM的定制:
6、在QUARTUS|中編輯.mif文件。首先在File菜單下的New菜單上選擇Text Editor File命令,進入文本編輯器,然后輸入以上格式的數(shù)據(jù)文件。文件中的關鍵詞WIDTH設置ROM的數(shù)據(jù)寬度;DEPTH設置ROM數(shù)據(jù)的深度,即4位數(shù)據(jù)的數(shù)量,文件中設置的256等效于8位地址線寬度;ADDRESS-RADIX=DEC和DATA-RADIX=DEC表示設置地址和數(shù)據(jù)的表達式格式都是十進制;地址/數(shù)據(jù)表以CONTENT BEGIN開始,以END結束;其中的地址/數(shù)據(jù)表達方式是冒號左邊寫ROM地址值,冒號右邊寫對應此地址放置的十進制數(shù)據(jù),如46:9,表示46為地址,9為該地址中的數(shù)據(jù)。這樣
7、每讀到一個地址,即可輸出其相應的數(shù)據(jù)。文件編輯好后,保存時取文件名為“MUSIC.mif”,存盤的路“F:huchuanshu0905071022MUSICMUSIC.mif”。 圖3noteabs實體描述 圖4ROM實體描述表1ROM數(shù)據(jù)表2.3.音樂譜對應分頻預制數(shù)查表電路模塊:tonetaba音樂譜分頻預置數(shù)模塊是樂曲簡譜碼對應的分頻預置數(shù)查表電路。它提供了每個音符所對應的分頻預置數(shù),即給數(shù)控分頻模塊提供計數(shù)初值。在這個模塊的VHDL邏輯描述中設置了四四拍樂曲中全部音符所對應的分頻預置數(shù),共13個,每一音符的停留時間由音樂節(jié)拍和地址發(fā)生器模塊的時鐘(Clk)的輸入頻率決定,在此為4Hz。
8、這13個值的輸出由程序3的4位輸入值index3.0確定。輸向程序4中index3.0的值又由地址發(fā)生器模塊的輸出toneindex3.0的輸出值和持續(xù)時間決定。模塊的功能是輸出各個音符所對應的分頻預置數(shù),即當index是“0000”,tone輸出為2047,即休止符的分頻預置數(shù);當index是“0101”時, tone輸出為1197即低音5的分頻預置數(shù);當index是“1111”時, tone輸出為1728即高音1的分頻預置數(shù)等等其它狀態(tài)時,tone分別輸出相應音符的分頻預置數(shù)。圖5 toneaba實體描述2.3.2音樂符數(shù)控11分頻電路模塊:SPEAKERA音符的頻率由數(shù)控分頻模塊獲得,這
9、是一個數(shù)控分頻電路。它是由一個初值可變的加法計數(shù)器構成。該計數(shù)器的模為2047,當計數(shù)器記滿時,計數(shù)器產生一個溢出信號FULL,此溢出信號就是用作發(fā)音的頻率信號。在計數(shù)器的輸入端給定不同的初值,而此預置數(shù)就是表1中的計數(shù)初值,就可得到不同音符的發(fā)音頻率信號。它計滿時所需要的計數(shù)初值可由下式來表示。計數(shù)初值(Tone)=2047-分頻系數(shù)而分頻系數(shù)又可有下式來求:分頻系數(shù)=基準頻率/音符的發(fā)生頻率低音時Tone值小,分頻系數(shù)大,溢出信號周期長,揚聲器發(fā)出的聲音低,Tone隨音樂的樂譜變化大,自動控制分頻比,實現(xiàn)了數(shù)控分頻,發(fā)生信號的頻率與音調Tone成正比。這就是利用數(shù)控分頻器自動演奏音樂的原理
10、。時鐘(Clk)端輸入的是在十六進制模塊里對12MHz的信號進行16分頻得到的750KHz,750KHz的信號根據(jù)分頻預置數(shù)模塊中所提供的計數(shù)初值,分別得出相應音符頻率的兩倍值。此時從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅動揚聲器,需另加一個D觸發(fā)器以均衡其占空比,這時的頻率就變?yōu)樵瓉淼?/2,剛好就是相應音符的頻率。數(shù)控分頻模塊中對Clk輸入信號的分頻比由11位預置數(shù)tone10.0決定。Fout的輸出頻率將決定每一個音符的音調,這樣,分頻計數(shù)器的預置值tone10.0與Fout的輸出頻率就有了對應關系。例如在分頻預置數(shù)模塊中若取tone10.0=1036,將發(fā)出音符
11、為“3”音的信號頻率。圖6 speakera實體描述音符名頻 率(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.097248179
12、9低音7555.566751372高音41609.4422331814中音1588.6976371410高音51802.8842081839中音2638.845871480高音62027.0271851862中音3742.5745051542高音72272.7271651882表2各個音符的頻率及其對應的分頻系數(shù)(基準頻率375KHz)2.4頂層電路圖當一個4Hz的時鐘脈沖來到時,樂譜發(fā)生器模塊輸出一個音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當12MHz的時鐘脈沖來到時,數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應的頻率(即此音符所對應的發(fā)生頻率)給揚聲
13、器,揚聲器就可發(fā)出對應音符的聲音來.連續(xù)的4Hz的時鐘脈沖就將樂譜發(fā)生器里所存儲的音符數(shù)據(jù)一個接一個的送給了分頻系數(shù)模塊,再經(jīng)過數(shù)控分頻模塊,最后揚聲器一個接一個的發(fā)出音符數(shù)據(jù)所對應的聲音來。曲子也就流暢的播放出來了,當樂曲一遍演奏完成后,樂曲發(fā)生器能自動從頭開始循環(huán)演奏,按下lxz鍵時播放第二首歌,按下len鍵時停止播放歌曲。圖7 頂層電路圖3方案實現(xiàn)3.1模塊仿真及實現(xiàn)3.1.1 tonetaba模塊(1)仿真波形 本模塊由VHDL程序設計(代碼見附錄),編譯成功后選擇目標芯片EP1C3T144-C8,然后進行仿真,結果如下:圖8 tonetaba仿真圖(2)仿真結果分析tonetaba
14、分頻預置數(shù)模塊的功能是輸出各個音符所對應的分頻預置數(shù),由上面的仿真波形圖可看到若當index是“0001”,tone輸出為773,即低音1的分頻預置數(shù);當index是“0010”時, Tone輸出為912,即低音2的分頻預置數(shù);此時high為0;當index是“1000”時, Tone輸出為1410即高音1的分頻預置數(shù),此時high為1;其他情況也滿足,音階對應相應頻率。3.1.2 speakera模塊(1)仿真波形本模塊由VHDL程序設計(代碼見附錄),編譯成功后選擇目標芯片EP1C3T144-C8,然后進行仿真,結果如下:圖9 speakera仿真圖(2)仿真結果分析spks的輸出頻率決定
15、每一音符的音調,tone為773時對應的分頻系數(shù)為1294即294.349HZ。周期為3.4ms; tone為1410時對應的分頻系數(shù)為637即588.697HZ。周期為1.7ms;與波形圖對照,滿足該條件。3.1.3 noteaba模塊(1)仿真波形 本模塊由VHDL程序設計(代碼見附錄),編譯成功后選擇目標芯片EP1C3T144-C8,然后進行仿真,結果如下:圖10 noteaba仿真圖(2)仿真結果分析 由仿真波形可以看出當en為低電平時,無論xz為高電平還是低電平ToneIdex輸出都是“0”,當xz為高電平時,根據(jù)xz的高低電平選擇播放音樂,實現(xiàn)了選擇復位功能。3.2頂層電路仿真及實
16、現(xiàn)(1)仿真波形頂層電路設計是利用原理圖設計的。將前面已經(jīng)做好的模塊進行封裝入庫,然后在設計頂層原理圖時一一調用,在根據(jù)程序將端口一一連接,再編譯。編譯成功后選擇目標芯片EP1C3T144-C8,然后進行仿真,結果如下:圖11 頂層仿真圖(2)仿真結果分析 由仿真結果可以看出,但len為低電平時,CODE1為0,這說明此時不播放音樂;當len為高電平時,code1開始變化,spkout的輸出頻率也開始變動,高八度音指示high1也開始變化。4硬件測試及說明(1) 引腳鎖定選擇實驗電路模式5。先將引腳鎖定,使CLK12MHZ與clock9相接;CLK8HZ與clock2相連,接受4HZ頻率;發(fā)音
17、輸出SPKOUT接Speaker;與演奏發(fā)音相對應的簡譜碼輸出顯示可由CODE1在數(shù)碼管5顯示;HIGH1為高八度指示,可由發(fā)光管D5指示;復位鍵RET、選擇鍵SEL分別接鍵7、鍵8。查表得對應引腳號如下:圖12 引腳鎖定圖 存儲這些引腳信息后,再編譯一次(2)硬件測試結果分析 程序下載后,按下鍵7,開始從頭播放音樂,再按下鍵6,播放第二首;再按下鍵7,停止播放。與預期結果一致,硬件實現(xiàn)結果正確。5結論通過自頂而下,層層分解,本設計已經(jīng)滿足了預期的實驗目標??梢詫崿F(xiàn)停止選擇功能。但是還是有很多的不足,比如說設計還是較簡單,不夠實用,如果以后有時間可以把它改成電子琴。6課程總結經(jīng)過這次課程設計,
18、我對FPGA自上而下的編程方法有了更深的了解。我進一步的了解了EDA技術,應用也更加自如,這為我們將來工作打下了堅實的基礎,我們用EDA技術設計并了完成樂曲硬件演奏電路,實現(xiàn)了硬件自動發(fā)出音樂的功能,設置了手動和自動的輸入控制器,實現(xiàn)自動手動輸入。樂曲高低音的轉換隨著我們設計參數(shù)的改變而得以實現(xiàn), 使我們的設計有更高的廣泛性和實用性?;仡櫞舜握n程設計,從書籍,網(wǎng)絡不斷的尋找到設計電路,從開始到完成整個設計,從理論到實踐,可以學到很多很多的的東西。對課本知識的進一步加深的同時學到了很多在書本上沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的。把所學
19、的理論知識與實踐相結合起來,從理論中得出結論,才能真正提高自己的實際動手能力和獨立思考的能力。在設計的過程難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計之后,一定把以前所學過的知識重新溫故。我對EDA的學習只能算是個入門,這個領域的發(fā)展空間非常大,應用范圍也非常廣泛,而且我相信在將來還會有更加廣闊的應用前景。因此在以后的學習過程中,我不能因為課程學習的結束而結束了我對這個方面的學習甚至這個領域的探索,相反我會更加努力的去學習它。感謝老師兢兢業(yè)業(yè)的教導,讓我不僅學到了知識,也學到了做人做事的一些道理,為我提供
20、了很多幫助。在接下來的學習中,我會繼續(xù)努力,努力扎實地學習專業(yè)知識,為以后打好鋪墊,奠定基礎。7附錄:程序代碼1、speakera.vhdLIBRARY IEEE;-音樂符數(shù)控分頻電路模塊USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-運算符重載ENTITY speakera IS PORT ( clk : IN STD_LOGIC;-音調頻率信號12MHZ tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);-音樂符對應分頻11位 spks : OUT STD_LOGIC );-聲音輸出E
21、ND;ARCHITECTURE one OF speakera IS SIGNAL PreCLK, FullSpkS : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk) VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PreCLK 11 THEN PreCLK = 1; Count4 := 0000;-變量 ELSIF clkEVENT AND clk = 1 THEN Count4 := Count4 + 1; END IF; END PROCESS;GenSpkS : PROCESS(PreC
22、LK, Tone)- 11位可預置計數(shù)器 VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0); 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;DelaySpkS : PROCESS(FullSpkS)-將輸出再2分頻,展寬脈沖,使揚聲器有足夠功率發(fā)音 VARI
23、ABLE Count2 : STD_LOGIC; BEGIN IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THEN spks = 1; ELSE spks tone=11111111111 ; code=0000; HIGH tone=01100000101 ; code=0001; HIGH tone=01110010000 ; code =0010; HIGH tone=10000001100 ; code =0011; HIGH tone=10010101101 ;code=0101
24、; HIGH tone=10100001010 ; code=0110; HIGH tone=10101011100 ; code E=0111; HIGH tone=10110000010 ; code =0001; HIGH tone=10111001000 ; code =0010; HIGH tone=11000000110 ; code =0011; HIGH tone=11001010110 ; code =0101; HIGH tone=11010000100 ; code =0110; HIGH tone=11011000000 ; code =0001; HIGH NULL;
25、END CASE;END PROCESS;END;3、notetabs.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY notetabs IS PORT (en,xz,clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END;ARCHITECTURE one OF notetabs ISCOMPONENT MUSIC-調用MUSIC ROM的聲明 PORT( address : IN STD_
26、LOGIC_VECTOR (7 DOWNTO 0); inclock : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);END COMPONENT; SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN CNT8 : PROCESS(clk, Counter) -計數(shù)器 BEGINIF en=1 THEN-復位使能端進行選擇 if(clkEVENT AND clk = 1)THEN Counter=Counter+1;-計數(shù)器 IF xz=1 THEN-選擇語句當ret為高電平且滿足計數(shù)大于144或小于254時都播放第一首歌曲IF (Counter254) THEN Counter 138) THEN Counter = 00000001;END IF;ELSE null;END IF; end if; ELSE Counter Counter,q=toneindex,inclock=clk);end;4、songer.vhdlibrary ieee;use ieee.std_logic_1164.all;entity song
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年華東師大版選擇性必修3化學下冊月考試卷含答案
- 2025年上教版七年級物理下冊月考試卷含答案
- 2025年教科新版九年級生物下冊階段測試試卷含答案
- 2025年滬科版四年級語文上冊月考試卷含答案
- 2025年華東師大版八年級數(shù)學下冊月考試卷含答案
- 2025年冀教版七年級化學下冊月考試卷含答案
- 2025年岳麓版五年級數(shù)學上冊月考試卷
- 二手老舊房買賣合同中2024年度的房屋評估與定價
- 個人外匯基礎知識
- 小學生防綁架安全教育
- 冠脈旋磨術疾病查房
- 教師培訓的教師專業(yè)知識與技能
- 人工智能在體育訓練與競技分析中的應用
- 2024版幼兒園哲學思考與人生觀主題班會課件
- 2023年拓展加盟經(jīng)理年終總結及下一年計劃
- 比賽對陣表模板
- 混凝土技術規(guī)格書
- 醫(yī)美藥品基本管理制度范本
- 吳茱萸熱奄包
- 思想道德與法治2023版教學設計第六章 學習法治思想 提升法治素養(yǎng)
- 霍尼韋爾1900 Honeywell條碼掃描槍設置
評論
0/150
提交評論