EDA樂曲硬件演奏電路設(shè)計_第1頁
EDA樂曲硬件演奏電路設(shè)計_第2頁
EDA樂曲硬件演奏電路設(shè)計_第3頁
EDA樂曲硬件演奏電路設(shè)計_第4頁
EDA樂曲硬件演奏電路設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上電子系統(tǒng)設(shè)計課程課程設(shè)計報告題目:姓 名: 吳清清 院 系: 電力學(xué)院 專業(yè): 電子科學(xué)與技術(shù) 學(xué) 號: 指導(dǎo)教師: 譚聯(lián) 完成時間: 2016 年 12 月 21 日目錄專心-專注-專業(yè)1 課程設(shè)計題目、內(nèi)容與要求1.1 設(shè)計內(nèi)容 設(shè)計一個樂曲演奏電路,能夠自動播放編寫好的音樂。要求將音樂通過實(shí)驗(yàn)箱上的喇叭播放出來,用發(fā)光二級管顯示出樂曲的節(jié)拍。(1)完成程序的編程工作。(2)將音樂數(shù)據(jù)制成LMP_ROM文件。(3)將程序在Quartus ii軟件中進(jìn)行編譯和仿真。(4)進(jìn)行引腳鎖定,然后下載到實(shí)驗(yàn)箱上觀察實(shí)驗(yàn)結(jié)果。1.2 具體要求(1)定制音符數(shù)據(jù)ROM MUSI

2、C,檢測音符數(shù)據(jù)已經(jīng)進(jìn)入ROM中;(2)所有模塊,分別仿真測試;(3)完成系統(tǒng)仿真調(diào)試和硬件驗(yàn)證;(4)能夠?qū)墒滓魳冯S時切換。2 系統(tǒng)設(shè)計2.1 設(shè)計思路樂曲中的每一音符對應(yīng)著一個確定的頻率,要想FPGA發(fā)出不同音符的音調(diào),實(shí)際上只要控制它輸出相應(yīng)音符的頻率即可。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個音符的音調(diào)。而要準(zhǔn)確地演奏出一首樂曲,僅僅讓揚(yáng)聲器能夠發(fā)生是不夠的,還必須準(zhǔn)確地控制樂曲的節(jié)奏,即樂曲中每個音符的發(fā)生頻率及其持續(xù)時間是樂曲能夠連續(xù)演奏的兩個關(guān)鍵因素。本次設(shè)計主要包括三個部分:(1) 音符頻率的獲得;音符頻率的獲

3、得多個不同頻率的信號可通過對某個基準(zhǔn)頻率進(jìn)行分頻器獲得。由于各個音符的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計算機(jī)得到的分頻系數(shù)四舍五入取整。若基準(zhǔn)頻率過低,則分頻系數(shù)過小,四舍五入取整后的誤差較大。若基準(zhǔn)頻率過高,雖然可以減少頻率的相對誤差,但分頻結(jié)構(gòu)將變大。實(shí)際上應(yīng)該綜合考慮這兩個方面的因素,在盡量減少誤差的前提下,選取合適的基準(zhǔn)頻率。本設(shè)計中選取1MHz的基準(zhǔn)頻率,數(shù)控分頻器采用11位二進(jìn)制計數(shù)器。(3) 樂曲節(jié)奏的控制 一般樂曲最小的節(jié)拍為1/4拍,若將1拍的時間定為1秒,則只需要輸出4Hz的1/4拍的時長(0.25秒),對于其它占用時間較長的節(jié)拍(必為1/4拍的整數(shù)倍)則只

4、需要將該音符連續(xù)輸出相應(yīng)的次數(shù)即可。計數(shù)時鐘信號作為輸出音符快慢的控制信號,時鐘快時輸出節(jié)拍速度就快,演奏的速度也就快,時鐘慢時輸出節(jié)拍的速度就慢,演奏的速度自然降低,因此計數(shù)器的時鐘信號應(yīng)為4Hz。(3) 樂譜的發(fā)生本設(shè)計將樂譜中的音符數(shù)據(jù)存儲在LPM-ROM中,若某音在邏輯中停留了4個時鐘節(jié)拍,即1秒的時間,相應(yīng)地,該音符就要在LPM-ROM中連續(xù)的四個地址上都存儲。當(dāng)一個4Hz的時鐘來時,相應(yīng)地就從LPM-ROM中輸出一個音符數(shù)據(jù)。2.2 系統(tǒng)原理2.2.1總體框圖數(shù)控分頻器SPKER分頻器FDIV分頻驅(qū)動蜂鳴器 時鐘鎖相環(huán)PLL簡譜碼顯示DECL7S譯碼器F_CODE樂譜ROM計數(shù)器C

5、NT138T 該工程由是由上圖所示的幾個模塊構(gòu)成輸入的時鐘20MHZ通過鎖相環(huán)后輸出2KHZ和1KHZ的時鐘分別輸送給分頻器FDIV和計數(shù)器CNT138;FDIV將1MHZ的時鐘分頻成4HZ的時鐘。計數(shù)器CNT138T完成計數(shù)功能,138進(jìn)制,每來個時鐘沿加一。樂譜ROM記錄了1首歌的樂譜。根據(jù)上一模塊計數(shù)器所計的數(shù)讀取相應(yīng)地址里的數(shù)據(jù)傳遞給下一模塊。譯碼器F_CODE將選擇器所選擇的歌曲rom里的地址的數(shù)據(jù)翻譯成可預(yù)置計數(shù)器SPKER和簡譜碼顯示DECL7S所需的數(shù)據(jù)。分頻驅(qū)動器也就是一個數(shù)控分頻器,完成分頻的功能,并驅(qū)動蜂鳴器。2.2.2工作過程當(dāng)一個4Hz的時鐘脈沖來到時,樂譜發(fā)生器模塊

6、輸出一個音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應(yīng)的分頻系數(shù)所需的初始值,將初始值送給數(shù)控分頻器模塊,當(dāng)1MHz的時鐘脈沖來到時,數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應(yīng)的頻率(即此音符所對應(yīng)的發(fā)生頻率)給揚(yáng)聲器,揚(yáng)聲器就可發(fā)出對應(yīng)音符的聲音來.連續(xù)的4Hz的時鐘脈沖就將樂譜發(fā)生器里所存儲的音符數(shù)據(jù)一個接一個的送給了分頻系數(shù)模塊,再經(jīng)過數(shù)控分頻模塊,最后揚(yáng)聲器一個接一個的發(fā)出音符數(shù)據(jù)所對應(yīng)的聲音來。曲子也就流暢的播放出來了。同時led數(shù)碼管會隨著音樂顯示相應(yīng)的樂譜。當(dāng)樂曲一遍演奏完成后,樂曲發(fā)生器能自動從頭開始循環(huán)演奏。2.2.3樂曲演奏的原理圖3 系統(tǒng)實(shí)現(xiàn)3.1.分頻器(FDIV)將鎖相環(huán)的

7、2KHZ的時鐘分頻4Hz的時鐘,供計數(shù)器使用。(1)模塊程序module FDIV(CLK,PM);input CLK;output PM;reg8:0 Q1;reg FULL;wire RST;always(posedge CLK or posedge RST)beginif(RST)beginQ1=0;FULL=1;endelse beginQ1=Q1+1;FULL=0;endendassign RST=(Q1=449);assign PM=FULL;assign DOUT=Q1;endmodule(2)模塊圖形3.2.計數(shù)器CNT138T它是一個8位二進(jìn)制計數(shù)器,內(nèi)部設(shè)置計數(shù)最大值為13

8、9,作為音符數(shù)據(jù)ROM的地址發(fā)生器。每來一個時鐘信號,計數(shù)器就計數(shù)一次,ROM文件中的地址也隨著增加,音符數(shù)據(jù)ROM中的音符也就一個一個的取出來。3.2.1計數(shù)器CNT138T的設(shè)計這個計數(shù)器的計數(shù)頻率即為4Hz。即每一計數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間。例如,“梁祝”樂曲的第一個音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間,相應(yīng)地,所對應(yīng)的“3”音符分頻預(yù)置值為11H40C,在SPKER的輸入端停留了1秒。隨著計數(shù)器CNT138T按4Hz的時鐘速率作加法計數(shù)時,即隨地址值遞增時,音符數(shù)據(jù)ROM模塊MUSIC中的音符數(shù)據(jù)將從 ROM中通過

9、q3.0端口輸向F_CODE模塊,“梁?!睒非烷_始連續(xù)自然地演奏起來了。CNT138T的節(jié)拍是139,正好等于ROM中的簡譜碼數(shù),所以可以確保循環(huán)演奏。對于其他樂曲,此計數(shù)最大值要根據(jù)情況更改。(1)模塊程序module CNT138T(CLK,CNT8);input CLK;output 7:0 CNT8;reg7:0 CNT;wire LD;always(posedge CLK or posedge LD)beginif (LD)CNT=8b;elseCNT=CNT+1;endassign CNT8=CNT;assign LD=(CNT=138);endmodule (2)模塊圖形3.3

10、.分頻預(yù)置數(shù)譯碼器F_CODE模塊模塊F_CODE的功能首先是為模塊SPKER(11位分頻器)提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)在SPKER輸入口停留的時間即為此音符的節(jié)拍周期,模塊F_CODE是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路。3.3.1 F_CODE模塊的設(shè)計程序中設(shè)置了“梁?!睒非恳舴鶎?yīng)的分頻預(yù)置數(shù),共14個,每一音符的停留時間則由音樂節(jié)拍和音調(diào)發(fā)生查表模塊MUSIC中簡譜碼和工作時鐘inclock的頻率決定,在此為4Hz。模塊F_CODE的14個值的輸出由對應(yīng)于MUSIC模塊輸出的q3.0及4位輸入值INX3.0確定,而INX3.0最多有16種可選值。輸向模塊F_CODE中

11、INX3.0的值在SPKER中對應(yīng)的輸出頻率值與持續(xù)的時間由模塊MUSIC決定。(1)模塊程序module F_CODE(INX,CODE,H,TO);input3:0 INX;output 3:0 CODE;output H;output 10:0 TO;reg10:0 TO;reg3:0 CODE;reg H;always(INX)begin case(INX) 0:begin TO=11H7FF;CODE=0;H=0;end 1:begin TO=11H305;CODE=1;H=0;end 2:begin TO=11H390;CODE=2;H=0;end 3:begin TO=11H40

12、C;CODE=3;H=0;end 4:begin TO=11H45C;CODE=4;H=0;end 5:begin TO=11H4AD;CODE=5;H=0;end 6:begin TO=11H50A;CODE=6;H=0;end 7:begin TO=11H55C;CODE=7;H=0;end 8:begin TO=11H582;CODE=1;H=1;end 9:begin TO=11H5C8;CODE=2;H=1;end10:begin TO=11H606;CODE=3;H=1;end11:begin TO=11H640;CODE=4;H=1;end12:begin TO=11H656;C

13、ODE=5;H=1;end 13:begin TO=11H684;CODE=6;H=1;end14:begin TO=11H69A;CODE=7;H=1;end15:begin TO=11H6C0;CODE=1;H=1;end default:begin TO=11H6c0;CODE=1;H=1;endendcaseendendmodule(2)模塊圖形3.4 數(shù)字分頻器SPKER模塊音符的頻率由SPKER獲得,這是一個數(shù)控分頻器。3.4.1數(shù)字分頻器SPKS模塊設(shè)計它的CLK端輸入一具有較高頻率(1MHz)的時鐘,由于直接從分頻器中出來的輸出信號是脈寬極窄的信號,為了有利于驅(qū)動揚(yáng)聲器,需另加

14、一個D觸發(fā)器分頻以均衡其占空比,但這時的頻率將是原來的1/2。SPKER對CLK輸入信號的分頻比由輸入的11位預(yù)置數(shù)TN10.0決定。揚(yáng)聲器的輸出頻率將決定每一音符的音調(diào);這樣,分頻計數(shù)器的預(yù)置值TN10.0 與輸出頻率就有了對應(yīng)關(guān)系,而輸出的頻率又與音樂音符的發(fā)聲有對應(yīng)關(guān)系,例如在F_CODE模塊中若TN10.0=11H40C,將由揚(yáng)聲器發(fā)出音符為“3”音的信號頻率。(1)程序模塊1module SPKER(CLK,TN,SPKS);input CLK;input10:0 TN;output SPKS;reg SPKS;reg10:0 CNT11;always(posedge CLK)beg

15、in :CNT11B_LOADif(CNT11=11h7FF)beginCNT11=TN;SPKS=1b1;endelsebeginCNT11=CNT11+1;SPKS=1b0;endendendmodule(2)模塊圖形(2)程序模塊2module SPKER(CLK,TN,SPKS);input CLK;input2:0 TN;output SPKS;reg SPKS;reg2:0 CNT3;always(posedge CLK)begin if(CNT3=3h7)beginCNT3=TN;SPKS=1b1;endelsebeginCNT3=CNT3+1;SPKS=1b0;endenden

16、dmodule3.5選擇器choice選擇器完成選擇歌曲的功能:當(dāng)a的信號為1時將Q1的信號輸出當(dāng)a的信號為0時將Q2的信號輸出(1)模塊程序module choice (a,b,Q1,Q2,INX);input a;output b;input3:0 Q1;input3:0 Q2;output3:0INX;reg b;reg3:0 INX;always(a)begincase(a)01:begin b=0;INX=Q1;end 10:begin b=1;INX=Q2;end default:begin b=10;INX=Q2;end endcase endendmodule(2)模塊圖形3.

17、6.樂譜文件ROMLpm rom0模塊里面放置的是“梁?!钡臉纷V,它是利用LPM-ROM來實(shí)現(xiàn)的,將樂譜中相應(yīng)的音符放在一個連續(xù)的地址上。他首先是編寫音符數(shù)據(jù)文件,將樂譜中相應(yīng)的音符放在一個連續(xù)的地址上。因?yàn)?拍的時間定為1s,提供的是4HZ的時鐘頻率(1/4拍的整數(shù)倍),則需將這個音符存儲在相應(yīng)次數(shù)的連續(xù)的地址上。然后對音符數(shù)據(jù)進(jìn)行ROM定制,最后對定制好的ROM文件進(jìn)行測試和仿真。3.6.1樂譜文件(1)“梁?!币魳稺IDTH = 4 ; DEPTH = 256 ;ADDRESS_RADIX = DEC ;DATA_RADIX = DEC ; CONTENT BEGIN 00: 3 ; 0

18、1: 3 ; 02: 3 ; 03: 3; 04: 5; 05: 5; 06: 5; 07: 6; 08: 8; 09: 8;10: 8 ; 11: 9 ; 12: 6 ; 13: 8; 14: 5; 15: 5; 16:12; 17: 12;18: 12;19:15;20:13 ; 21:12 ; 22:10 ; 23:12; 24: 9; 25: 9; 26: 9; 27: 9; 28: 9; 29: 9;30: 9 ; 31: 0 ; 32: 9 ; 33: 9; 34: 9; 35:10; 36: 7; 37: 7; 38: 6; 39: 6;40: 5 ; 41: 5 ; 42: 5

19、 ; 43: 6; 44: 8; 45: 8; 46: 9; 47: 9; 48: 3; 49: 3;50: 8 ; 51: 8 ; 52: 6 ; 53: 5; 54: 6; 55: 8; 56: 5; 57: 5; 58: 5; 59: 5;60: 5 ; 61: 5 ; 62: 5 ; 63: 5; 64:10; 65:10; 66:10; 67:12; 68: 7; 69: 7;70: 9 ; 71: 9 ; 72: 6 ; 73: 8; 74: 5; 75: 5; 76: 5; 77: 5; 78: 5; 79: 5;80: 3 ; 81: 5 ; 82: 3 ; 83: 3; 84

20、: 5; 85: 6; 86: 7; 87: 9; 88: 6; 89: 6;90: 6 ; 91: 6 ; 92: 6 ; 93: 6; 94: 5; 95: 6; 96: 8; 97: 8; 98: 8; 99: 9;100:12;101:12 ;102:12 ;103:10;104: 9; 105: 9;106:10;107: 9;108: 8;109: 8;110: 6;111: 5 ;112: 3 ;113: 3;114: 3; 115: 3;116: 8;117: 8;118: 8;119: 8;120: 6;121: 8 ;122: 6 ;123: 5;124: 3; 125:

21、5;126: 6;127: 8;128: 5;129: 5;130: 5;131: 5 ;132: 5 ;133: 5;134: 5; 135: 5;136: 0;137: 0;138: 0;END ;(2)“隱形的翅膀”樂譜3.6.2 LMP-ROM模塊4 系統(tǒng)仿真4.1計數(shù)器CNT138T的仿真 由波形可看出,CLK為輸入時鐘信號,八位輸出二進(jìn)制信號在每個時鐘上升沿加一,當(dāng)計數(shù)至137時,從0開始重新計數(shù)。經(jīng)分析,該模塊功能完全正確。4.2.分頻器FDIV 由波形可看出CLK為輸入2KHz的時鐘信號,PM輸出為8Hz的時鐘信號,由于紙張有限沒有打印出其全部波形。經(jīng)分析該模塊功能完全正確。4.3分頻預(yù)置數(shù)F_CODE從波形上可以看到,當(dāng)輸入信號INX=1000時,code顯示的是1,H為1,預(yù)置值為582,查詢程序,發(fā)現(xiàn)功能正確。4.4分頻器SPKER此波形仿真分析比較復(fù)雜,如果由于輸入信號為1MHz,其中的分頻系數(shù)比較大,如果直接用該模塊程序進(jìn)行仿真可能導(dǎo)致仿真時間過長而失敗,因此更改程序,減小其分頻系數(shù),同樣能說明問題,在此,我將11位的預(yù)置初值改為3位

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論