版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、蘭花草樂曲硬件演奏電路設(shè)計專業(yè):電子信息工程 學(xué)號:2010012145 姓名:程營前言樂曲演奏廣泛應(yīng)用于自動答錄裝置,手機(jī)鈴聲,集團(tuán)電話,及智能儀器儀表設(shè)備。實(shí)現(xiàn)方法有許多種,在眾多的實(shí)驗(yàn)方法中,以純硬件完成樂曲演奏,隨著fpga集成度的提高,價格下降,eda設(shè)計工具更新?lián)Q代,功能日益普及與流行,使這種方案的應(yīng)用越來越多。本文分析了樂曲演奏設(shè)計中音符,頻率,節(jié)拍與編碼的相互關(guān)系,并在eda開發(fā)工具max-plus ii平臺上,采用vhdl語言及原理圖的設(shè)計方法,實(shí)現(xiàn)基于fpga片上系統(tǒng)動態(tài)顯示可選擇多首樂譜的樂曲演奏器的設(shè)計,使樂曲演奏數(shù)字電路的設(shè)計得到了更好的優(yōu)化,提高了設(shè)計得靈活性。目錄
2、目錄.1前言.11.題目分析.11.1功能要求.11.2性能指標(biāo)22.設(shè)計方案.2 2.1頂層實(shí)體描述.3 2.2模塊劃分.3 2.3模塊描述 2.3.1 speakera模塊.4 2.3.2 tonetaba模塊5 2.3.3 notetabs 模塊6 2.4頂層電路圖.83硬件測試及說明84.課程總結(jié)85.參考文獻(xiàn).81. 題目分析1.1功能要求(1)播放歌曲(2)簡譜碼輸出顯示在數(shù)碼管顯示(3)通過led燈顯示音階1.2性能指標(biāo)(1)樂曲硬件演奏電路的基本原理樂曲都是由一連串的音符組成,每一音符對應(yīng)著一個確定的頻率,按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各
3、個音符的音調(diào)。我們知道,組成樂曲的每個音符的發(fā)音頻率值及其持續(xù)的時間是樂曲能連續(xù)演奏所需的兩個基本要素,所以,掌握好一首歌曲的節(jié)奏,就能完整地演奏出來。(2)音符頻率和樂曲節(jié)奏多個不同頻率的信號可通過對某個基準(zhǔn)頻率進(jìn)行分頻器獲得,本設(shè)計中選取750khz的基準(zhǔn)頻率,由于clk端輸入的是較高頻率12mhz信號,可以對其進(jìn)行16分頻。計數(shù)時鐘信號作為輸出音符快慢的控制信號,時鐘快時輸出節(jié)拍速度就快,演奏的速度也就快,時鐘慢時輸出節(jié)拍的速度就慢,演奏的速度自然降低。簡譜音符和頻率關(guān)系如下表所示: 表1 各音階頻率對應(yīng)的分頻值音名分頻系數(shù)初始值音名分頻系數(shù)初始值音名分頻系數(shù)初始值低音11274773中
4、音16371410高音13191728低音21135912中音25871480高音22771770低音310111036中音35051542高音32481799低音49701077中音44681579高音42331814低音59501197中音54251622高音52081839低音67571290中音63791668高音61851862低音76751372中音73301717高音716518822. 設(shè)計方案自頂向下的設(shè)計框圖樂曲硬件電路設(shè)計數(shù)控分頻器音樂節(jié)拍和音調(diào)發(fā)生器預(yù)置數(shù)查表電路2.1頂層實(shí)體描述當(dāng)一個4hz的時鐘脈沖來到時,樂譜發(fā)生器模塊輸出一個音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸
5、出此音符相應(yīng)的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當(dāng)12mhz的時鐘脈沖來到時,數(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)的聲音來。曲子也就流暢的播放出來了,當(dāng)樂曲一遍演奏完成后,樂曲發(fā)生器能自動從頭開始循環(huán)演奏。頂層設(shè)計程序:library ieee;use ieee.std_logic_1164.all;entity songer isport(clk12mhz:in std_
6、logic;clk8hz :in std_logic; code1 : out std_logic_vector (3 downto 0)high1: out std_logicspkout: out std_logic);endarchitecture one of songer iscomponent notetabsport(clk :in std_logic; toneindex: out std_logic_vector(3 downto 0);end component;component tonetabaport(index: in std_logic_vector (3 dow
7、nto 0);code: out std_logic_vector (3 downto 0);high: out std_logic;tone: out std_logic_vector (10 downto 0);end component;component speakera port ( clk : in std_logic;tone : in std_logic_vector (10 downto 0);spks : out std_logic );end component;signal tone: std_logic_vector (10 downto 0);signal tone
8、index: std_logic_vector (3 downto 0);beginu1: notetabs port map (clk=clk8hz, toneindex= toneindex);u2: tonetaba port map (index = toneindex, tone=tone,code=code1,high=high1);u3: speakera port map (clk=clk12hz, tone= tone, spks=spkout);end;2.2模塊劃分主系統(tǒng)由三個模塊組成,分別為speakera模塊、tonetaba模塊、notetabs模塊。(1)spea
9、kera是數(shù)控分頻模塊;(2)tonetaba是分頻預(yù)置數(shù)查找表電路模塊;(3)notetabs音調(diào)發(fā)生器模塊。2.3模塊描述2.3.1 speakera模塊speakeraclktone10:0spks speakera模塊實(shí)體圖音符的頻率可以由此模塊獲得,這是一個數(shù)控分頻器,由其clk端輸入一具有較高頻率的信號,通過speakera分頻后由spkout輸出,由于直接從數(shù)控分頻器中出來的輸出信號是脈沖極窄的脈沖式信號,為了有利于驅(qū)動揚(yáng)聲器,需另加一個d觸發(fā)器以均衡其占空比,但這時的頻率將是原來的1/2。speakera對clk輸入信號的分頻比由11位預(yù)置數(shù)tone10.0決定。spkout的
10、輸出頻率將決定每一音符的音調(diào),這樣,分頻計數(shù)器的預(yù)置值tone10.0與spkout的輸出頻率就有了對應(yīng)關(guān)系。例如在tonetaba模塊中若取tone10.0=1036,將發(fā)出音符為“3”音的信號頻率。程序如下library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport ( clk : in std_logic; tone : in std_logic_vector (10 downto 0); spks : out std_logic )
11、;end;architecture one of speakera is signal preclk, fullspks : std_logic;begindivideclk : process(clk) variable count4: std_logic_vector (3 downto 0) ; beginpreclk11 then preclk =1; count4:= 0000; elsif clkevent and clk = 1 then count4:=count4+1;end if;end process;genspks : process(preclk, tone)- 11
12、位可預(yù)置計數(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分頻,展寬脈沖,使揚(yáng)聲器有足夠功率發(fā)音 variable count2 :
13、std_logic;beginif fullspksevent and fullspks = 1 then count2 := not count2;if count2 = 1 then spks = 1;else spks tone=11111111111;code =0000; high tone=10000001100;code =0011; high tone=10010101101;code =0101; high tone=10100001010;code =0110; high tone=10101011100;code =0111; high tone=10110000010;
14、code =0001; high tone=10111001000;code =0001; high tone=11000000110;code =0011; high tone=11000101011;code =0100; high tone=11001010110;code =0101; high tone=11010000100;code =0110; high null;end case;end process;end;2.3.3 notetabs模塊notetabsclktoneindex(3:0) notetabs模塊實(shí)體圖在notetabs中設(shè)置了一個8位二進(jìn)制計數(shù)器,作為音符
15、數(shù)據(jù)rom的地址發(fā)生器,計數(shù)最大值為138,如果樂曲比較長的話可以用9位,此時計數(shù)最大值為512。這個計數(shù)器的計數(shù)頻率選為4hz,即每一計數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間。隨著notetabs中的計數(shù)器按4hz的時鐘速率作加法計數(shù)時,即隨地址值遞增時,音符數(shù)據(jù)rom中的音符數(shù)據(jù)將從rom中通過toneindex3.0端口輸向tonetaba模塊,樂曲就開始自然地演奏起來。程序如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity notetab
16、s is port(clk :in std_logic; toneindex: out std_logic_vector(3 downto 0);end;architecture one of notetabs iscomponent musicport(address:in std_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)begincnt8:process
17、(clk,counter)beginif counter1=128 then counter = 00000000;elsif (clkevent and clk=1) then counter counter,q=toneindex,inclock=clk);end;在notetabs模塊中定制rom元件,首先建立.mif文件輸入音樂譜,再利用megawizard plug-in manager定制rom宏功能塊,最后加載于rom中,步驟為:(1)進(jìn)入quartusii,選菜單 tool-megawizard plug-in manager,選擇“creat a new”,然后按“next”
18、鍵,選擇lpm-rom;最后在browse下的欄中鍵入路徑與輸出文件名。(2)單擊“next”鍵,選擇rom數(shù)據(jù)位寬度為4,地址線寬為256,即設(shè)置此rom能存儲4位二進(jìn)制數(shù)據(jù)共256個。(3)通過“browse” 鈕,找到rom中的加載文件路徑和文件名:注意rom元件的inclock是地址鎖存時鐘。(4)打開已定制的rom文件,將它設(shè)置為工程,并確定目標(biāo)器件,進(jìn)行測試仿真波形,按照定制步驟對音符數(shù)據(jù)文件進(jìn)行rom定制。定制的宏模塊如下圖所示:012345670661010101010108101010101010991688898877246666000032131313131313131340131313131313121248101012121212111156101010100000641010131313131212721010101010109980889988778866663333963388887710466666610101129998775512066660000high1notetabsclktoneindex3:0tonetabaindex3:0highcode3:0tone10:0speakeratone10:0clkspksclk12mhzclk8hzspkout2.4頂層電路圖code3:03. 硬件測試及說明對其進(jìn)行引腳鎖定,下載到fpga上進(jìn)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)培訓(xùn)師資引進(jìn)合同
- 二零二五年度土地開發(fā)權(quán)轉(zhuǎn)讓居間代理合同模板
- 二零二五年度出差安全防護(hù)設(shè)備及服務(wù)租賃合同4篇
- 2025業(yè)績目標(biāo)達(dá)成股權(quán)激勵與員工股權(quán)激勵績效合同3篇
- 二零二五年度企業(yè)培訓(xùn)項(xiàng)目監(jiān)督合同
- 二零二五年度天然氣交易平臺服務(wù)合同
- 二零二五年度兩居房車租賃與民宿合作合同樣本2篇
- 2025年度水路聯(lián)合運(yùn)輸貨運(yùn)代理服務(wù)合同范本
- 二零二五版文化產(chǎn)業(yè)發(fā)展擔(dān)保合同示范文本4篇
- 2025年度個人房產(chǎn)抵押貸款擔(dān)保合同違約責(zé)任4篇
- 2025年度杭州市固廢處理與資源化利用合同3篇
- 部編版二年級下冊《道德與法治》教案及反思(更新)
- 充電樁項(xiàng)目運(yùn)營方案
- 退休人員出國探親申請書
- 傷殘撫恤管理辦法實(shí)施細(xì)則
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
評論
0/150
提交評論