




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、EDA技術及應用課程設計說明書 2013 屆 電子信息工程 專業 1班級題 目 音樂播放器 學 號 姓 名 指導教師 二一 五 年 6 月 25 日一、 音樂播放器基本原理 1 硬件電子琴設計原理樂曲演奏的原理是:由于組成樂曲的每個音符的頻率值(音調)及其持續時間(音長)是樂曲演奏的2個基本數據,因此需要控制輸出到揚聲器的激勵信號的頻率高低和該頻率信號持續的時間。頻率的高低決定了音調的高低,而樂曲的簡譜與各音名的頻率對應關系在后面將給出。所有不同頻率的信號都是從一基準頻率分頻而得來的,由于音階頻率多為非整數,而分頻系數有不能為小數,故必須將計算得到的分頻數進行向下取整,基準頻率和分頻系數應綜合
2、考慮加以選擇,從而保證音樂不會走調。如在48MHz 時鐘下,中音1(對應的頻率值是523.3Hz)的分頻系數應該為:48000000/(2*523.3)=45863,這樣只需對系統時鐘進行45863次分頻即可得到所要的中音M1(分頻系數計算公式為D=F/2K,由于F/2K之后,會使分頻系數D變小,所以功能模塊中語句:beep_r<=!beep_r,使得輸出取反,K=F/2count_end,消除了前面除以2K的影響) 。 2 樂曲自動演奏設計原理硬件電路和自動演奏的原理同硬件電子琴實驗原理類似。至于其他音符,同樣可由一式求出對應的分頻系數。在程序中設置一個狀態機,每250ms改變一個狀態
3、(即一個節拍),組成樂曲的每個音符的頻率值(音調)相對應于狀態機的每一個狀態。只要讓狀態機的狀態按順序轉換,就可以自動演奏播放音樂了。歡樂頌樂曲的簡譜如圖所示: 3 消抖原理作為機械開關的鍵盤,在按鍵操作時,由于機械觸點的彈性及電壓突跳等原因,在觸點閉合或開啟的瞬間會出現電壓抖動,實際應用中如果不進行處理將會造成誤觸發。由于這里是低電平表示按鍵按下,所以按鍵去抖動的關鍵在于提取穩定的低電平狀態,慮除前沿、后沿抖動毛刺。對于一個按鍵信號,可以用一個脈沖對他進行取樣,如果連續三次取樣為低電平,可以認為信號已經處于鍵穩定狀態,這時輸出一個低電平按鍵信號。繼續取樣的過程中如果不能滿足連續三次取樣為低,
4、則認為鍵穩定狀態結束,這時輸出變為高電平。二、 音樂播放器的硬件設計1頂層模塊輸入輸出:管腳說明:輸入:時鐘信號clk ,按鍵6:0key ,功能切換鍵key7輸出:LED燈6:0led ,蜂鳴器beep;Key0: DO key1: RE key2: ME key3:FA key4: SOLkey5: LA key6: SI key7:功能切換鍵2 按鍵消抖模塊輸入:時鐘信號clk, 功能切換鍵key7輸出:穩定脈沖信號3 電子琴模塊輸入:時鐘信號clk ,按鍵6:0key ,輸出:LED燈6:0led ,蜂鳴器beep;Key0: DO key1: RE key2: ME key3:FA
5、key4: SOLkey5: LA key6: SI 按下相應的鍵有對應LED燈指示。4樂曲自動演奏模塊輸入:時鐘信號clk;輸出:蜂鳴器beep三 元器件列表: 序號耗材名稱型號/規格技術要求與參數數量單位1PCB制版10cm*8cm2層板1塊2CPLDEPM7064AELC44-10N44引腳,PLCC封裝1個3數碼管SR420401K 11074位,共陰極,40mm*15mm2個4PLCC-44 底座通用44引腳1個5鐘振方形12MHz,4引腳1個6電阻通用200歐姆8只7電阻通用1K歐姆14只8電阻通用10K歐姆10只9電阻通用50歐姆1只10電容104獨石電容0.1uF6只11電容電
6、解電容50V,10uF1只12按鍵通用4引腳4只13發光二極管通用紅色3只14發光二極管通用綠色3只15三極管通用NPN9只16雙排插頭通用10針1個17電源接插線通用含20cm電源線1對三、 音樂播放器的Verilog實現1電子琴程序module beep1(clk,key,beep,led);/模塊名稱beepinput clk;/系統時鐘48MHzinput6:0key;/按鍵輸入output beep;/蜂鳴器輸出端output6:0led;/LED輸出reg beep_r;/寄存器reg15:0count,count_end;reg6:0key_r;reg 13:0a; /消抖寄存器
7、always(posedge clk)begincount <= count + 1'b1;/計數器加1if(count = count_end)&(!(count_end = 16'hffff)begincount <= 16'h0;/計數器清零beep_r <= !beep_r; /取反輸出信號endendalways (key)begina=2000; /消抖等待時間key_r = key;/取鍵值case(key_r)7'b1111110:begin while(a>0)begin a=a-1; end count_end
8、 = 16'hb327;while(a>0)begin a=a-1; end end7'b1111101:begin while(a>0)begin a=a-1 ;end count_end = 16'h9fa0;while(a>0)begin a=a-1; end end/中音2的分頻系數值7'b1111011:begin while(a>0)begin a=a-1 ;end count_end = 16'h8e32;while(a>0)begin a=a-1; end end/中音3的分頻系數值7'b111011
9、1:begin while(a>0)begin a=a-1 ;end count_end = 16'h8637;while(a>0)begin a=a-1; end end/中音4的分頻系數值7'b1101111:begin while(a>0)begin a=a-1 ;end count_end = 16'h7794;while(a>0)begin a=a-1; end end/中音5的分頻系數值7'b1011111:begin while(a>0)begin a=a-1 ;end count_end = 16'h6a88
10、;while(a>0)begin a=a-1; end end/中音6的分頻系數值7'b0111111:begin while(a>0)begin a=a-1 ;end count_end = 16'h5ee8;while(a>0)begin a=a-1; end end/中音7的分頻系數值default: begin while(a>0)begin a=a-1 ;end count_end = 16'hffff;while(a>0)begin a=a-1; end endendcaseendassign beep =beep_r;/輸出音
11、樂assign led =key_r;/輸出按鍵狀態Endmodule2 樂曲自動演奏程序module song(clk,beep,led);/模塊名稱 inputclk;/系統時鐘48Mhzoutputbeep;/蜂鳴器輸出端 output7:0 led;regbeep_r;/寄存器 reg7:0 state;/樂譜狀態機reg15:0count,count_end;reg23:0count1;/樂譜參數:D=F/2K (D:參數,F:時鐘頻率,K:音高頻率) /以下是12MHZ晶振狀態下的各音高對應的參數 /*parameter L_5 = 16'h3bca,/低音5 M_1 =
12、16'h2cc9,/中音1 M_2 = 16'h27f8,/中音2 M_3 = 16'h238c,/中音3 M_4 = 16'h218d,/中音4 M_5 = 16'h1de5,/中音5 M_6 = 16'h1aa2;/中音6 parameterTIME = 3000000;/控制每一個音的長短(250ms)*/ /樂譜參數:D=F/2K (D:參數,F:時鐘頻率,K:音高頻率) parameter L_5 = 16'd61224,/低音5 M_1 = 16'd45863,/中音1 M_2 = 16'd40864,/中音2
13、 M_3 = 16'd36402,/中音3 M_4 = 16'd34359,/中音4 M_5 = 16'd30612; /中音5 parameterTIME = 12000000;/控制每一個音的長短(250ms) assign beep = beep_r;/輸出音樂 ,蜂鳴器 always(posedge clk)begincount <= count + 1'b1;/計數器加1 if(count = count_end)begincount <= 16'h0;/計數器清零 beep_r <= !beep_r;/輸出取反 endend
14、always (posedge clk)beginif(count1 < TIME)/一個節拍250mS count1 = count1 + 1'b1;elsebegincount1 = 24'd0;if(state = 8'd125) /控制歌曲循環播放時間 state = 8'd0; /循環從頭開始 elsestate = state + 1'b1; /循環結構體 begincase(state)8'd0,8'd1: count_end = M_3;/中音"3",持續2個節拍 8'd2,8'd
15、3: count_end = M_3;/中音"3",持續2個節拍 8'd4,8'd5:count_end = M_4;/中音"4",持續2個節拍 8'd6,8'd7: count_end = M_5;8'd8,8'd9: count_end = M_5;8'd10,8'd11: count_end = M_4;8'd12,8'd13: count_end = M_3;8'd14,8'd15: count_end = M_2;8'd16,8'd1
16、7: count_end = M_1;8'd18,8'd19: count_end = M_1;8'd20,8'd21: count_end = M_2;8'd22,8'd23: count_end = M_3;8'd24,8'd25,8'd26: count_end = M_3;8'd27: count_end = M_2;8'd28,8'd29,8'd30,8'd31: count_end = M_2;8'd32,8'd33: count_end = M_3;8&
17、#39;d34,8'd35: count_end = M_3;8'd36,8'd37: count_end = M_4;8'd38,8'd39: count_end = M_5;8'd40,8'd41: count_end = M_5;8'd42,8'd43: count_end = M_4;8'd44,8'd45: count_end = M_3;8'd46,8'd47: count_end = M_2;8'd48,8'd49: count_end = M_1;8'
18、d50,8'd51: count_end = M_1;8'd52,8'd53: count_end = M_2;8'd54,8'd55: count_end = M_3;8'd56,8'd57,8'd58: count_end = M_2;8'd59: count_end = M_1;8'd60,8'd61,8'd62,8'd63: count_end = M_1;8'd64,8'd65: count_end = M_2;8'd66,8'd67: count_
19、end = M_2;8'd68,8'd69: count_end = M_3;8'd70,8'd71: count_end = M_1;8'd72,8'd73: count_end = M_2;8'd74: count_end = M_3;8'd75: count_end = M_4;8'd76,8'd77: count_end = M_3;8'd78,8'd79: count_end = M_1;8'd80,8'd81: count_end = M_2;8'd82: cou
20、nt_end = M_3;8'd83: count_end = M_4;8'd84,8'd85: count_end = M_3;8'd86,8'd87: count_end = M_2;8'd88,8'd89: count_end = M_1;8'd90,8'd91: count_end = M_2;/8'd92,8'd93: count_end = L_5;8'd92,8'd93,8'd94,8'd95:count_end = L_5;/8'd94,8'd
21、95: count_end = M_3;8'd96,8'd97: count_end = M_3;8'd98,8'd99: count_end = M_3;8'd100,8'd101: count_end = M_4;8'd102,8'd103: count_end = M_5;8'd104,8'd105: count_end = M_5;8'd106,8'd107: count_end = M_4;8'd108: count_end = M_3;8'd109: count_end
22、= M_2;8'd110,8'd111: count_end = M_1;8'd112,8'd113: count_end = M_1;8'd114,8'd115: count_end = M_2;8'd116,8'd117: count_end = M_3;8'd118,8'd119,8'd120: count_end = M_2;8'd121: count_end = M_1;8'd122,8'd123,8'd124,8'd125: count_end = M_1
23、;default:count_end = 16'hffff;endcase end endendassign led0=(count_end = M_1)?0:1; /控制LED燈的語言 assign led1=(count_end = M_2)?0:1;assign led2=(count_end = M_3)?0:1;assign led3=(count_end = M_4)?0:1;assign led4=(count_end = M_5)?0:1;assign led5=(count_end = L_5)?0:1;assign led6=1;assign led7=1;3選擇模
24、塊程序module select(key,beep1,beep2,led1,led2,beep,led); input key,beep1,beep2; input 6:0led1; input 6:0led2; output beep; output 6:0led; reg key_r;always (negedge key)beginkey_r = key_r;/將琴鍵開關轉換為乒乓開關endassign beep=(key_r)?beep2:beep1;assign led=(key_r)?led2:led1;Endmodule4頂層文件程序module dzq(key,key7,beep,led,clk);input key7;input 6:0key;input clk;output 6:0led;output beep;reg dout1;reg dout2;reg dout3;reg led;reg key_r;wire a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版境外投資協議書
- 機電工程施工總承包資質標準二零二五年
- 物業委托管理協議
- 2025年日用織物制品項目建議書
- 供電外包勞務合同樣本
- 青島版小學二年級上冊數學教學計劃
- 平面的投影-教案
- 企業門頭制作合同樣本
- 中圖版地理必修二第二章學教案
- 淘寶客服聘用合同
- 《小兒急性白血病》課件
- 植保員培訓課件
- 2023年新《招標投標法》考試題庫附答案
- 《斷路器動作時間測試系統設計》13000字(論文)
- 2024年浙江省中考社會(開卷)真題卷及答案解析
- T-CNHAW 0011-2024 干眼診療中心分級建設要求
- 內蒙古中東部旱地谷子栽培技術規程(DB15-T 638-2013)
- 2025屆湖北省武漢市重點中學高三第一次模擬考試數學試卷含解析
- 網店推廣模擬習題及答案
- 道路管道清淤施工方案
- 智能信貸風控策略
評論
0/150
提交評論