![基于Verilog多首樂曲選擇演奏電路設(shè)計_第1頁](http://file4.renrendoc.com/view/22583acfef75a216763c711eb254f75b/22583acfef75a216763c711eb254f75b1.gif)
![基于Verilog多首樂曲選擇演奏電路設(shè)計_第2頁](http://file4.renrendoc.com/view/22583acfef75a216763c711eb254f75b/22583acfef75a216763c711eb254f75b2.gif)
![基于Verilog多首樂曲選擇演奏電路設(shè)計_第3頁](http://file4.renrendoc.com/view/22583acfef75a216763c711eb254f75b/22583acfef75a216763c711eb254f75b3.gif)
![基于Verilog多首樂曲選擇演奏電路設(shè)計_第4頁](http://file4.renrendoc.com/view/22583acfef75a216763c711eb254f75b/22583acfef75a216763c711eb254f75b4.gif)
![基于Verilog多首樂曲選擇演奏電路設(shè)計_第5頁](http://file4.renrendoc.com/view/22583acfef75a216763c711eb254f75b/22583acfef75a216763c711eb254f75b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..基于verilog硬件樂曲演奏電路設(shè)計〔quartusII〕模塊可以實現(xiàn)4x4鍵盤掃描按鍵播放音樂,ROM中存四首歌曲,可以通過選擇播放。一、設(shè)計任務(wù)與要求設(shè)計目的:利用數(shù)控分頻器設(shè)計硬件演奏電路。設(shè)計容:學(xué)習(xí)課本定制音符數(shù)據(jù)ROM"music〞。填入新的樂曲。爭取可以在一個ROM裝上多首歌曲,可手動或自動選擇歌曲。設(shè)計要求:用仿真波形和電路原理圖,詳細表達硬件電子琴的工作原理及其verilog文件中相關(guān)語句功能,表達硬件實現(xiàn)情況。二、總體框圖ROMROM"music〞音符控制輸出數(shù)控分頻器音符譯碼七段數(shù)碼管分頻器蜂鳴器LED燈ROM中的音樂數(shù)據(jù)文件剛可由編輯好的音符填入MIF文件中再定制LPM_ROM將音符數(shù)據(jù)加載入ROM中,并設(shè)計程序在運行時自動讀取ROM中的文件并置入數(shù)控分頻器中。當(dāng)采用四四拍曲子時,每節(jié)拍持續(xù)時間為0.5秒。置入數(shù)控分頻器的速度也應(yīng)與此同步或一致,防止音樂過快或過快慢而失真。我給出的C調(diào)音階頻率表,各頻率對應(yīng)的預(yù)置數(shù)就與數(shù)控分頻推動蜂鳴器發(fā)出聲音的頻率對應(yīng)。在編寫數(shù)控分頻器時,不僅要考慮預(yù)置數(shù)的輸入方式,還要考慮輸入的速度,以及驅(qū)動蜂鳴器發(fā)聲的頻率。為了在擴展能夠在ROM中同時存放多首歌曲,并可以手動選擇需要的歌曲,故可將ROM中分假設(shè)干段存放不同曲子。當(dāng)手動選擇歌曲時,可根據(jù)輸入的選擇信號,讀出ROM中對應(yīng)地址的曲子,并將ROM中的曲子完整的播放出來。為了顯示高、中、低三種音調(diào),可在音符>>預(yù)置數(shù)的譯碼過程中,同時譯出高、中、低三種音階的信號,并利用三個LED燈輸出信號。同時,也可利用該譯碼模塊,將當(dāng)前演奏的音符簡譜表達出來。下面給出C調(diào)音節(jié)頻率表:音階頻率Hz音階頻率Hz音階頻率Hz1661.227830.617415.311479.986739.9963701318.525659.335329.631174.664587.334293.671108.733554.373277.19987.762493.882246.9488014401220三、功能模塊3.1音符數(shù)據(jù)地址發(fā)生器模塊T138T模塊T138T是一個10位二進制計數(shù)器,部計數(shù)最大值為500,作為音樂ROM地址發(fā)生器。這個計數(shù)器的計數(shù)頻率即為4HZ,即每一個數(shù)值停留時間為0.25秒??梢酝ㄟ^選那么en的值00011011,選擇不同的歌曲。moduleT138T(clk,t,en);inputclk;input[1:0]en;output[9:0]t;reg[9:0]t;always(posedgeclk)begincase(en)0:beginif(t<=138)t=t+1;elset=0;end1:beginif(t>=139&&t<=263)t=t+1;elset=139;end2:beginif(t>=263&&t<=335)t=t+1;elset=263;end3:beginif(t>=335&&t<=439)t=t+1;elset=335;endendcaseendendmodule模塊圖:仿真圖:3.2分頻預(yù)置查表模塊F_CODE模塊F_CODE樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表為SPKER提供所發(fā)音符的分頻預(yù)置數(shù),分頻分頻預(yù)置數(shù)共14個,每一個音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)生查表模塊MUSIC中簡碼和時鐘inclock的頻率決定,為4hz即0.25s一個上升沿到來就傳送一次數(shù)據(jù)。程序:modulef_code(inx,code,h,to);input[3:0]inx;outputh;output[3:0]code;output[10:0]to;reg[10:0]to;reg[3:0]code;regh;always(inx)begincase(inx)0:beginto<=11'H7FF;code<=0;h<=0;end1:beginto<=11'H305;code<=1;h<=0;end2:beginto<=11'H390;code<=2;h<=0;end3:beginto<=11'H40C;code<=3;h<=0;end4:beginto<=11'H45C;code<=4;h<=0;end5:beginto<=11'H4AD;code<=5;h<=0;end6:beginto<=11'H50A;code<=6;h<=0;end7:beginto<=11'H55C;code<=7;h<=0;end8:beginto<=11'H582;code<=1;h<=1;end9:beginto<=11'H5C8;code<=2;h<=1;end10:beginto<=11'H606;code<=3;h<=1;end11:beginto<=11'H640;code<=4;h<=1;end12:beginto<=11'H656;code<=5;h<=1;end13:beginto<=11'H684;code<=6;h<=1;end14:beginto<=11'H69A;code<=7;h<=1;end15:beginto<=11'H6C0;code<=1;h<=1;enddefault:beginto<=11'H6C0;code<=1;h<=1;endendcaseendendmodule模塊:仿真圖:3.3數(shù)控分頻器模塊SPKER工作時其CLK輸入一較高頻率〔1MHZ〕時鐘,通過SPKER分頻后,經(jīng)由D觸發(fā)器由SPK_KX輸出。由于直接從數(shù)空分頻器中出來的輸出信號是脈沖極窄的信號,為了有利于驅(qū)動揚聲器,加一個D觸發(fā)器分頻以均衡其占空比,但這時的頻率是原來的1/2.SPKER對輸入的tn[10..0]例如11'H40C是1036與2047的間距為1011,每隔1011SPK_KX就為1,1出現(xiàn)的頻率就是3音符對應(yīng)的頻率,相應(yīng)的頻率越高對應(yīng)的數(shù)值就越高,就是離2047越近的分頻預(yù)置數(shù)。程序:modulespker(clk,tn,spks);inputclk;input[10:0]tn;outputspks;regspks;reg[10:0]t11;always(posedgeclk)begin:t11b_loadif(t11==11'h7FF)begint11=tn;spks<=1'b1;endelsebegint11=t11+1;spks<=1'b0;endendendmodule模塊:仿真圖:3.4音符數(shù)據(jù)模塊ROMMUSICDatamif文件:模塊圖:3.5鎖相環(huán):利用鎖相環(huán)將20MHZ分成1MHZ和2KHZ模塊圖:3.6分頻2khz分成4hz程序:modulefdiv(clk,pm);inputclk;outputpm;reg[8:0]q1;regfull;wirerst;always(posedgeclkorposedgerst)beginif(rst)beginq1<=0;full<=1;endelsebeginq1<=q1+1;full<=0;endendassignrst=(q1==499);assignpm=full;assigndout=q1;endmodule模塊圖:3.7分頻器此分頻為了給鍵盤掃描提供1000HZ的時鐘輸入程序:modulefenpin(clk20M,clk10);inputclk20M;outputregclk10;reg[20:0]q;always(posedgeclk20M)beginif(q==9999)beginq=21'd0;clk10=~clk10;endelseq=q+21'd1;endendmodule模塊:3.8鍵盤掃描模塊key通過4X4鍵盤輸入的數(shù)作為F_CODE的輸入信號從0到15表示低音01234567和高音1234567程序:modulekey(clk10,lie,hang,result);inputclk10;input[3:0]lie;outputreg[3:0]hang,result;reg[1:0]q;always(posedgeclk10)beginq=q+1;case(q)0:hang=4'b0111;1:hang=4'b1011;2:hang=4'b1101;3:hang=4'b1110;default:hang=4'b1111;endcasecase({hang,lie})8'b01110111:result=0;8'b01111011:result=1;8'b01111101:result=2;8'b01111110:result=3;8'b10110111:result=4;8'b10111011:result=5;8'b10111101:result=6;8'b10111110:result=7;8'b11010111:result=8;8'b11011011:result=9;8'b11011101:result=4'ha;8'b11011110:result=4'hb;8'b11100111:result=4'hc;8'b11101011:result=4'hd;8'b11101101:result=4'he;8'b11101110:result=4'hf;//default:result=0;endcaseendendmodule模塊:3.9二選一選擇器為了通過輸入信號的0或1來確定是播放音樂還是鍵盤播放模塊程序:modulemux21a(a,b,rst,y);input[3:0]a;input[3:0]b;inputrst;output[3:0]y;assigny=(rst"a:b);endmodule模塊圖:四頂層文件圖紙:五實驗總結(jié):實驗過程中我們遇到了很多東西,在解決問題的同時我們也學(xué)到了很多東西。首先,我們更加熟悉QuartusⅡ軟件的使用,平時課堂上我們也使用過它,可是畢竟時間有限,了解只是片面的,例如我們在仿真波形的時候設(shè)置的endtime過長,結(jié)果導(dǎo)致等待時間過長。通過這次實訓(xùn)更加系統(tǒng)的應(yīng)用它,具體了解了它的功能以及具體的操作方法。其次對于理論知識運用到實踐中有了更深刻的理解,對于課本上的理論的知識平時只是通過教師的講解,沒有一個更深入的認知,正是通過實訓(xùn)很好地讓我們把平時學(xué)習(xí)的課本理論知識應(yīng)用到實踐中,這對于以后工作的鍛煉有很好的啟發(fā)作用。理論畢竟只是理論,它與實際總會有一定的差距。例如,我們這次的實訓(xùn)課題是音樂發(fā)生器,我們想到了運用平時的積累的知識大膽創(chuàng)新,鑒于此我們想到了將每首樂曲音符的高音、中音、低音分別通過三個數(shù)碼管顯示出來,同時讓流水燈跟隨著音樂的播放閃爍著,同時我們設(shè)想如果通過開關(guān)選擇控制,我們可以選擇播放不同的樂曲。最終形成了我們自己的方案——"跳動的音樂發(fā)生器〞!可是就在大家把程序調(diào)試完成之后下載到FPGA芯片中了之后,發(fā)現(xiàn)數(shù)碼管的顯示并不是我們預(yù)想的那樣。大家馬上展開了討論,我們這使用的動態(tài)數(shù)碼管的顯示方式,結(jié)合到教師在課堂上的講解的知識,我們意識到,如果每次只想讓一個數(shù)碼管點亮,就應(yīng)該通過給其他的數(shù)碼管的位碼賦值使其不被點亮,這一點我們在設(shè)計程序的時候忽略了這個問題。對于不同的樂曲,我們小組的一個成員覺得網(wǎng)上找不到適宜的程序,他發(fā)費了一下午的時間通過上網(wǎng)查找資料編寫出了"兩只蝴蝶"的大局部樂曲。等到我們的作品根本完成之后,我們大家有了一個想法——用點陣顯示所播放樂曲的名稱,我們找到了教師說出了我們的想法,教師針對我們的想法給我了具體了方案,并且給出了具體參考容,我們根據(jù)教師的點撥設(shè)計出了顯示模塊。其實實訓(xùn)并不完全考察的理論知識的學(xué)習(xí),同時它也考察了我們的綜合能力,包括自我學(xué)習(xí)的能力、與人交流溝通的能力、團隊協(xié)作精神……這些能力的鍛煉與培養(yǎng)對我們以后走向工作崗位是非常必要的。當(dāng)今社會競爭劇烈,特別是電子方面的開展真是日新月異,這就更需要我們有良好的團隊合作意識,有不畏困難困苦的鉆研精神,有開拓進取的創(chuàng)新的品質(zhì),
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代信息技術(shù)在城市公共安全中的重要作用
- 現(xiàn)代教育中系統(tǒng)性能監(jiān)控的應(yīng)用
- 吊裝危險作業(yè)方案
- 7《什么比獵豹的速度更快》(說課稿)-2024-2025學(xué)年統(tǒng)編版語文五年級上冊
- 27紀昌學(xué)射(說課稿)2024-2025學(xué)年四年級上冊語文統(tǒng)編版
- 8賣火柴的小女孩 第二課時 說課稿 -2024-2025學(xué)年語文三年級上冊統(tǒng)編版
- 5《走近我們的老師》說課稿-2024-2025學(xué)年道德與法治三年級上冊統(tǒng)編版
- Unit4 Then and Now(說課稿)-2024-2025學(xué)年譯林版(三起)英語六年級上冊
- 2024年六年級品社下冊《走出國門》說課稿 山東版
- 4我們的公共生活(說課稿)-2023-2024學(xué)年道德與法治五年級下冊統(tǒng)編版
- 2024年執(zhí)業(yè)醫(yī)師考試-醫(yī)師定期考核(口腔)筆試參考題庫含答案
- 中國律師學(xué) 課件 陳衛(wèi)東 第10-17章 律師收費制度-律師非訴訟業(yè)務(wù)(二)
- 宮頸癌后裝治療及護理
- 2024年度-IATF16949運行培訓(xùn)課件
- 理解師生關(guān)系的重要性
- 統(tǒng)編版語文八年級下冊第7課《大雁歸來》分層作業(yè)(原卷版+解析版)
- 2024年湖南省普通高中學(xué)業(yè)水平考試政治試卷(含答案)
- 零售企業(yè)加盟管理手冊
- 設(shè)備維保的維修流程與指導(dǎo)手冊
- 招標(biāo)代理服務(wù)的關(guān)鍵流程與難點解析
- 材料預(yù)定協(xié)議
評論
0/150
提交評論