基于FPGA的樂(lè)曲發(fā)生器設(shè)計(jì)-新品速遞_第1頁(yè)
基于FPGA的樂(lè)曲發(fā)生器設(shè)計(jì)-新品速遞_第2頁(yè)
基于FPGA的樂(lè)曲發(fā)生器設(shè)計(jì)-新品速遞_第3頁(yè)
基于FPGA的樂(lè)曲發(fā)生器設(shè)計(jì)-新品速遞_第4頁(yè)
基于FPGA的樂(lè)曲發(fā)生器設(shè)計(jì)-新品速遞_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

精品文檔-下載后可編輯基于FPGA的樂(lè)曲發(fā)生器設(shè)計(jì)-新品速遞概述隨著EDA技術(shù)的進(jìn)展,基于可編程ASIC的數(shù)字電子系統(tǒng)設(shè)計(jì)的完整方案越來(lái)越受到人們的重視,并且以EDA技術(shù)為的能在可編程ASIC上進(jìn)行系統(tǒng)芯片集成的新設(shè)計(jì)方法,也正在快速地取代基于pcb板的傳統(tǒng)設(shè)計(jì)方式。與利用微處理器(CPU或MCU)來(lái)實(shí)現(xiàn)樂(lè)曲演奏相比,以純硬件完成樂(lè)曲演奏電路的邏輯要復(fù)雜得多,如果不借助于功能強(qiáng)大的EDA工具和硬件描述語(yǔ)言,僅憑傳統(tǒng)的數(shù)字邏輯技術(shù),即使簡(jiǎn)單的演奏電路也難以實(shí)現(xiàn)。如何使用EDA工具設(shè)計(jì)電子系統(tǒng)是人們普遍關(guān)心的問(wèn)題,本設(shè)計(jì)在美國(guó)ALTERA公司MAX+plusⅡ的EDA軟件平臺(tái)上,使用層次化設(shè)計(jì)方法,實(shí)現(xiàn)了樂(lè)曲發(fā)生器的設(shè)計(jì)。樂(lè)曲選取《梁?!分谢糠郑浜?jiǎn)譜如圖1所示。

2音符與頻率的關(guān)系

我們知道,組成樂(lè)曲的每個(gè)音符的發(fā)音頻率值及其持續(xù)的時(shí)間是樂(lè)曲能連續(xù)演奏所需的2個(gè)基本要素,首先讓我們來(lái)了解音符與頻率的關(guān)系。

樂(lè)曲的12平均率規(guī)定:每2個(gè)八度音(如簡(jiǎn)譜中的中音1與高音1)之間的頻率相差1倍。在2個(gè)八度音之間,又可分為12個(gè)半音,每2個(gè)半音的頻率比為12√2。另外,音符A(簡(jiǎn)譜中的低音6)的頻率為440Hz,音符B到C之間、E到F之間為半音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中從低音l至高音1之間每個(gè)音符的頻率,如表1所示。

產(chǎn)生各音符所需的頻率可用一分頻器實(shí)現(xiàn),由于各音符對(duì)應(yīng)的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計(jì)算得到的分頻數(shù)四舍五入取整。若分頻器時(shí)鐘頻率過(guò)低,則由于分頻系數(shù)過(guò)小,四舍五入取整后的誤差較大;若時(shí)鐘頻率過(guò)高,雖然誤差變小,但會(huì)增加分頻器的分頻級(jí)數(shù)。實(shí)際的設(shè)計(jì)應(yīng)綜合考慮兩方面的因素,在盡量減小頻率誤差的前提下取合適的時(shí)鐘頻率。本文設(shè)計(jì)的樂(lè)曲發(fā)生器選取6MHz的基準(zhǔn)頻率。若無(wú)6MHz的時(shí)鐘頻率,則可以先分頻得到6MHz或換一個(gè)新的基準(zhǔn)頻率。實(shí)際上,只要各個(gè)音符間的相對(duì)頻率關(guān)系不變,演奏出的樂(lè)曲聽(tīng)起來(lái)都不會(huì)"走調(diào)"。

化蝶簡(jiǎn)譜中各音符對(duì)應(yīng)的分頻系數(shù)如表2所示。為了減小輸出的偶次諧波分量,輸出到揚(yáng)聲器的波形應(yīng)為對(duì)稱方波,因此在到達(dá)揚(yáng)聲器之前,有一個(gè)二分頻的分頻器。表2中的分頻系數(shù)是從6MHz頻率二分頻得到的3MHz頻率基礎(chǔ)上計(jì)算得出的。由于的分頻系數(shù)為9101,故采用14位二進(jìn)制計(jì)數(shù)器已能滿足分頻要求。

每個(gè)音符持續(xù)的時(shí)間是樂(lè)曲能連續(xù)演奏所需的另一個(gè)基本要素?;牡墓?jié)拍為1/4拍,將1拍的時(shí)間長(zhǎng)度定為1s,則只需要再提供一個(gè)4Hz的時(shí)鐘頻率即可產(chǎn)生1/4拍的時(shí)長(zhǎng)。演奏的時(shí)間控制通過(guò)記錄來(lái)完成,對(duì)于占用時(shí)間較長(zhǎng)的節(jié)拍(一定是1/4拍的整數(shù)倍,如2/4拍),只需將該音符連續(xù)記錄2次即可。

3層次化設(shè)計(jì)

我們?cè)诿绹?guó)AI。TERA公司MAX+plusⅡ的EDA軟件平臺(tái)上,使用層次化設(shè)計(jì)手段,實(shí)現(xiàn)了化蝶樂(lè)曲發(fā)生器的設(shè)計(jì)。圖2為化蝶樂(lè)曲發(fā)生器的頂層電路。

音符的頻率可以由PUI。SE元件的輸出SPEAK獲得,這是一個(gè)數(shù)控分頻器,由其CLK6MHz端輸入6MHz脈沖信號(hào),分頻比由預(yù)置輸入端D[13..0]決定。輸出為方波信號(hào),其頻率為3000000/(1+D[13..0]),單位為Hz。

音符的持續(xù)時(shí)間需根據(jù)樂(lè)曲的速度及每個(gè)音符的節(jié)拍數(shù)來(lái)確定,TABLE元件首先是為PULSE元件提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)停留的時(shí)間即為此音符的節(jié)拍值。在TABLE元件中設(shè)置了一個(gè)8位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)值為138),這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率選為4Hz,所以每一計(jì)數(shù)值的停留時(shí)間為0.25s,即四四拍的4分音符持續(xù)時(shí)間。例如,化蝶樂(lè)曲的個(gè)音符?quot;低音3"(1拍),停留的時(shí)間需用4個(gè)計(jì)數(shù)時(shí)鐘節(jié)拍,即1s。相應(yīng)地,所對(duì)應(yīng)的"低音3"音符分頻預(yù)置值為9100,其值在AF[13..0]輸出端停留了1s。隨著TABLE元件中的計(jì)數(shù)器按4Hz的時(shí)鐘速率作加法計(jì)數(shù)時(shí),化蝶樂(lè)曲就開(kāi)始連續(xù)自然地演奏起來(lái)了。

底層元件的VHDL邏輯描述如下:

--PULSE元件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYpulseISPORT(clk:INSTD_LOGIC;一一待分頻時(shí)鐘d:INSTD_LOGIC_VECTOR(13DOWNTO0);--分頻預(yù)置數(shù)輸入fout:OUTSTD_LOGIC);一一發(fā)音輸出ENDpulsesARCHITECTUREbehavOFpulseISSIGNALcount:STD_LOGIC-VECTOR(13DOWNTO0);SIGNALcao,caoo1,cao2,load:STD_LOGIC'BEGINPROCESS(clk,load,d)BEGINIFclk'EVENTANDclk='l'THENIFload='1'THENcount=d;ELSEcount=count一1;ENDIF;ENDIF;ENDPROCESS;PROCESS(count)BEGINIFcount=0THENcao='l';ELSEcao='0';ENDIF;load=cao;ENDPROCESS;PROCESS(clk)--去毛刺BEGINIFclk'EVENTANDclk='1'THENcaol=cao;ENDIF;ENDPROCESS;PROCESS(cao1)BEGINIFcao1'EVENTANDcao1='1'THENca02=NOTcao2;ENDIFfout=cao2;ENDPROCESS;ENDbehav;一一TABLE元件IBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtableISPORT(clk:INSTD_LOGIC;af:OUTINTEGERRANGE0TO16#3FFF#)一一14位二進(jìn)制數(shù)END;ARCHITECTUREoneOFtableISCONSTANT1ow_3:INTEGER:=9100;CONSTANT1ow_5;INTEGER:=7652;CONSTANT1ow_6:INTEGER:=6817;CONSTANT1ow_7:INTEGER:=6073;CONSTANTmid_1:INTEGER;=5732;CONSTANTmid_2:INTEGER:=5107;CONSTANTmid_3:INTEGER:=4550;CONSTANTmid_5:INTEGER:=3826;CONSTANTmid_6:INTEGER:=3408;CONSTANThighl:INTEGER:=2866CONSTANTstop:INTEGER:=0;--休止符分頻系數(shù)SIGNALcounter:INTEGERRANGE0TO138;BEGINPROCESS(clk)BEGINIFcounter=138THENcounter=0;ELSIF(clk'EVENTANDclk='l')THENcounter=counter+1;ENDIF;ENDPROCESS;PROCESS(counter)BEGINCASEcounterISWHEN00=af=low_3;--低音3WHEN01=af=low_3;WHEN02=af=low_3;WHEN03=af=low_3;WHEN04?gt;af=low_5;WHEN05=af=low_5;WHEN06=af=low_5;WHEN07=af=low_6;WHEN08=af=low_1;WHEN09=af=low_1;WHEN10=af=low_1;WHEN11=af=low_2;……WHEN134=af=low_5;WHEN135=af=low_5;WHEN136=af=stop;WHEN137=af=stop;WHEN138=af=stop;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;END;

4實(shí)驗(yàn)驗(yàn)證

需要說(shuō)明的是不同的數(shù)字系統(tǒng)其引腳鎖定是不一樣的,為了便于在實(shí)驗(yàn)系統(tǒng)上驗(yàn)證設(shè)計(jì)結(jié)果,必須按照實(shí)驗(yàn)系統(tǒng)的結(jié)構(gòu)對(duì)輸入和輸出引腳進(jìn)行鎖定。本設(shè)計(jì)采用的是杭州康芯電子有限公司生產(chǎn)的GW48-CK實(shí)驗(yàn)系統(tǒng),F(xiàn)PGA目標(biāo)芯片的型號(hào)為EPFl0K10LC84。芯片配置成功后即可進(jìn)行硬件測(cè)試:選擇實(shí)驗(yàn)電路結(jié)構(gòu)圖NO.6,使CLK6MH2與C10c

溫馨提示

  • 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. 人人文庫(kù)網(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)論