數(shù)電綜合實(shí)驗(yàn)報(bào)告--簡(jiǎn)易樂曲播放器_第1頁(yè)
數(shù)電綜合實(shí)驗(yàn)報(bào)告--簡(jiǎn)易樂曲播放器_第2頁(yè)
數(shù)電綜合實(shí)驗(yàn)報(bào)告--簡(jiǎn)易樂曲播放器_第3頁(yè)
數(shù)電綜合實(shí)驗(yàn)報(bào)告--簡(jiǎn)易樂曲播放器_第4頁(yè)
數(shù)電綜合實(shí)驗(yàn)報(bào)告--簡(jiǎn)易樂曲播放器_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)電綜合實(shí)驗(yàn)報(bào)告 -簡(jiǎn)易樂曲播放器學(xué)號(hào) 05006531班級(jí) 05102姓名 王靜摘要隨著EDA技術(shù)的進(jìn)展,基于可編程的數(shù)字電子系統(tǒng)設(shè)計(jì)的完整方案越來越受到人們的重視。我們知道,組成樂曲的每個(gè)音符的發(fā)音頻率值及其持續(xù)的時(shí)間是樂曲能連續(xù)演奏所需的2個(gè)根本要素,通過EDA工具和VHDL語言來控制這兩個(gè)根本要素便可以實(shí)現(xiàn)一個(gè)簡(jiǎn)易的樂曲播放器了。關(guān)鍵字: 樂曲播放器、VHDL、音頻、節(jié)拍AbstractWith the progress of EDA technology, based on programmable digital electronic system design integrity

2、 programs are attracting increasing attention. We know that every note of music sounds frequency and duration of the value of music is able to perform the required two basic elements, through the EDA tools and VHDL language to control these two basic elements will be able to achieve a simple music p

3、layer has.Key word: Music Player、VHDL、Audio frequency、metre一、設(shè)計(jì)任務(wù)要求設(shè)計(jì)制作一個(gè)簡(jiǎn)易樂曲播放器:1. 播放器內(nèi)預(yù)存3 首樂曲;2. 播放模式:順序播放、隨機(jī)播放,并用數(shù)碼管或LED 顯示當(dāng)前播放模式;順序播放:按內(nèi)部給定的順序依次播放3 首樂曲;隨機(jī)播放:隨機(jī)產(chǎn)生一個(gè)順序播放3 首樂曲;3. 用數(shù)碼管顯示當(dāng)前播放樂曲的順序號(hào);4. 設(shè)置開始/暫停鍵,樂曲播放過程中按該鍵那么暫停播放,再按那么繼續(xù)播放;5. 設(shè)置Next 和Previous 鍵,按Next 鍵可以聽下一首,按Previous 鍵回到本首開始;6. 選做:用戶可以自

4、行設(shè)定播放順序,設(shè)置完成后,播放器按該順序依次播放樂曲;7. 選做:自擬其它功能。二、設(shè)計(jì)思路對(duì)于音調(diào),樂曲的12平均率規(guī)定:每2個(gè)八度音之間的頻率相差1倍。在2個(gè)八度音之間,又可分為12個(gè)半音,每2個(gè)半音的頻率比為122。另外,音符A的頻率為440Hz,音符B到C之間、E到F之間為半音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中從低音1到高音1之間每個(gè)音符的頻率。而對(duì)于節(jié)拍,如果將一拍的長(zhǎng)度定為1秒,那么1/4拍的時(shí)間為1/4秒,為其提供一個(gè)4Hz的時(shí)鐘頻率即可產(chǎn)生出1/4拍的效果了。假設(shè)需要半拍,只需將該音符記錄兩次就可以了。對(duì)于以上設(shè)計(jì),實(shí)際上本次實(shí)驗(yàn)使用的是MAX7000S的實(shí)驗(yàn)板,最大時(shí)鐘頻率

5、為1MHz,故用1M除以每個(gè)音調(diào)對(duì)應(yīng)的頻率便得到其分頻比率。三、總體結(jié)構(gòu)框圖1MHz音調(diào)分頻器節(jié)拍分頻器順序播放隨機(jī)播放狀態(tài)判斷暫停或播放下一首本首重放音樂播放上一首圖1簡(jiǎn)易樂曲播放器總體結(jié)構(gòu)框圖四、流程圖開始順序播放是否隨機(jī)播放?YesNoYes隨機(jī)播放shangyishou是否本首重來?本首重放No是否上一首?播放上一首shangyishou是否下一首?播放下一首shangyishouYesYes播放/暫停鍵是否為0?YesNo暫停播放shangyishouNoNo圖2簡(jiǎn)易音樂播放器流程圖五、分塊電路設(shè)計(jì)1MHz三分頻1Tone2345679101112138014二分頻輸出圖3分塊電路音

6、調(diào)分頻器設(shè)計(jì)圖六、所實(shí)現(xiàn)功能說明1、已完成的根本功能和擴(kuò)展功能根本功能: 播放器內(nèi)預(yù)存了3首樂曲:小星星、雪絨花、童話; 播放模式:當(dāng)?shù)谝粋€(gè)撥段開關(guān)為0時(shí)為順序播放,相應(yīng)的彩燈熄滅;當(dāng)其為1時(shí)為隨機(jī)播放,相應(yīng)的彩燈點(diǎn)亮; 在任何時(shí)間第一個(gè)數(shù)碼管都將顯示當(dāng)前播放樂曲的順序號(hào); 第八個(gè)撥段開關(guān)為開始/暫停鍵,樂曲播放過程中該鍵置1那么暫停播放,置0那么繼續(xù)播放; BTN2鍵為Next鍵,BTN3鍵為Previous鍵,按Next鍵可以聽下一首,按Previous鍵回到本首開始; 擴(kuò)展功能: 剩余的七個(gè)彩燈將隨著相應(yīng)音調(diào)的變化而閃爍; BTN4鍵為L(zhǎng)ast鍵,按Last鍵可以聽上一首。2、器件的資源

7、占用情況3、所用元器件 EPM7128SLC84-15實(shí)驗(yàn)板一塊4、仿真波形圖 七、實(shí)驗(yàn)總結(jié)及心得1、 剛開始做分頻器時(shí),設(shè)計(jì)為需要某個(gè)音調(diào)的時(shí)候做其相應(yīng)的分頻,但后來發(fā)現(xiàn)這樣做太占用資源。參考一些資料后,改進(jìn)為直接使用一個(gè)底層,定義一個(gè)變量Tone來控制分頻,當(dāng)Tone為某個(gè)值時(shí),輸出為其相應(yīng)的分頻分1MHz。這樣使得資源占用情況得到了大大的改善。2、 實(shí)驗(yàn)前對(duì)整體的把握不夠完善,做了一局部后,做另一局部時(shí),發(fā)現(xiàn)又要在之前的程序里面做修改,這樣使得程序有了些不完善的地方。在以后的學(xué)習(xí)中要重視在實(shí)驗(yàn)前對(duì)實(shí)驗(yàn)整體的思考與把握。3、 在做暫停/播放、上一首、下一首、本首重放、順序播放、隨機(jī)播放這些

8、功能時(shí),開始一直想著將某些功能嵌套在其他功能中,始終不得其法。后來想到在實(shí)現(xiàn)這些功能時(shí)板子上的相應(yīng)的按鍵的狀態(tài)是各不相同的,所以可以根據(jù)這個(gè)狀態(tài)的不同來實(shí)現(xiàn)這些功能。4、 原本將三首歌寫入三個(gè)底層,在頂層用if語句調(diào)用各個(gè)底層,可是發(fā)現(xiàn)在頂層不能用if語句下實(shí)現(xiàn)元件例化。可是又找不到好的解決方法,最后只能將三首歌的播放程序?qū)懙揭粋€(gè)底層文件下,通過其狀態(tài)計(jì)數(shù)器來實(shí)現(xiàn)各個(gè)功能。5、 程序編完后,發(fā)現(xiàn)資源占用過多,無法通過編譯,這是因?yàn)楦枨幍眠^長(zhǎng)了,刪減一些后,編譯通過,占用為90%。再參加彩燈閃爍功能,最終占用為97%。6、剛開始根據(jù)課件上給的音符與頻率的關(guān)系,確定相應(yīng)的頻率,后來發(fā)現(xiàn)下載后的旋

9、律不對(duì),后把順序修改,音符越高,頻率越低,這樣播發(fā)的音樂才正確。八、完整源程序*頂層文件Songer*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Songer IS PORT (CLK1MHZ :IN STD_LOGIC; -主頻1M CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -彩燈功能 PP : IN STD_LOGIC; -暫?;虿シ?SHOW : OUT STD_LOGIC; -播放模式顯示 NEXTONE : IN STD_LOGIC; -下一首 LASTONE : IN STD_LOGI

10、C; -上一首 PREVIOUS : IN STD_LOGIC; -本首重來 SPKOUT: OUT STD_LOGIC; -音頻輸出 MODE : IN STD_LOGIC; -播放模式 SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -歌曲序號(hào)顯示 CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); STOP: IN STD_LOGIC );END;ARCHITECTURE one OF Songer IS COMPONENT NoteTabs PORT ( clk: IN STD_LOGIC; ToneIndex: OUT INTEGE

11、R RANGE 0 TO 15; PP : IN STD_LOGIC; NEXTONE : IN STD_LOGIC; -下一首 LASTONE : IN STD_LOGIC; -上一首 PREVIOUS : IN STD_LOGIC; -本首重來 MODE : IN STD_LOGIC; RANDOM: IN STD_LOGIC; SHOW : OUT STD_LOGIC; SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT; COMPONENT ToneTaba PORT ( Index: IN INTEGER RANGE 0 TO

12、15; CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); Tone : OUT INTEGER RANGE 0 TO 16#7FF# ); END COMPONENT; COMPONENT Speakera PORT(clk:IN STD_LOGIC;Tone:IN INTEGER RANGE 0 TO 16#7FF#;SpkS:OUT STD_LOGIC);END COMPONENT;SIGNAL Tone : INTEGER RANGE 0 TO 16#7FF#;SIGNAL ToneIndex :INTEGER RANGE 0 TO 15;SIGNA

13、L T:STD_LOGIC; -分頻信號(hào)CONSTANT LENGTH:POSITIVE:=8; CONSTANT TAP1:POSITIVE:=8;CONSTANT TAP2:POSITIVE:=4;SIGNAL PRBS:STD_LOGIC;SIGNAL PRREG:STD_LOGIC_VECTOR(LENGTH DOWNTO 0);BEGINPROCESS(CLK1MHZ) -T分1M頻為4Hz VARIABLE C:INTEGER RANGE 0 TO 124999;BEGIN IF(CLK1MHZEVENT AND CLK1MHZ=1)THEN IF(C=124999)THEN C:

14、=0; T=NOT T; ELSE C:=C+1; END IF; END IF;END PROCESS;process(T,STOP) -產(chǎn)生一個(gè)偽隨機(jī)信號(hào) begin if STOP=1 then prreg0); prreg(0)=1; elsif Tevent and T=1 then prreg=(prreg(length-1)downto 0)& (prreg(tap1)xor prreg(tap2); end if; end process; prbs=prreg(length); -prbs隨機(jī)為0或1CATT,MODE=MODE,SHOW=SHOW, ToneIndex =

15、ToneIndex, RANDOM=PRBS,SEG=SEG,PP=PP,NEXTONE=NEXTONE,LASTONE=LASTONE,PREVIOUS=PREVIOUS);u2: ToneTaba PORT MAP(Index=ToneIndex, Tone=Tone,CAIDENG=CAIDENG);u3: Speakera PORT MAP(clk=CLK1MHZ,Tone=Tone ,SpkS=SPKOUT);END;*底層文件NoteTabs*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NoteTabs IS PORT ( clk

16、 :IN STD_LOGIC; -4Hz ToneIndex : OUT INTEGER RANGE 0 TO 15; -音調(diào) PP : IN STD_LOGIC; -播放或暫停 NEXTONE : IN STD_LOGIC; -下一首 LASTONE : IN STD_LOGIC; -上一首 PREVIOUS : IN STD_LOGIC ; -本首重來 MODE : IN STD_LOGIC; -播放模式 SHOW :OUT STD_LOGIC; -播放模式顯示 SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-7段數(shù)碼管輸出 RANDOM: IN STD_LOG

17、IC );END;ARCHITECTURE one OF NoteTabs IS SIGNAL Counter : INTEGER RANGE 0 TO 152; BEGIN CNT8: PROCESS(clk,PP,MODE, RANDOM,NEXTONE,LASTONE,PREVIOUS) BEGIN IF(clkEVENT AND clk=1) THEN IF( NEXTONE=0 AND LASTONE=0 AND PREVIOUS=0 AND MODE=0 AND PP=0 ) THEN -順序播放模式下 SHOW=0; -燈滅 IF Counter=152 THEN Counter

18、 =0; ELSE Counter=Counter+1; END IF; ELSIF (NEXTONE=0 AND LASTONE=0 AND PREVIOUS=0 AND MODE=1 AND PP=0 )THEN -隨機(jī)播放模式下 SHOW=1; -燈亮 IF Counter=47 THEN -每首歌完后,如果隨機(jī)信號(hào)為0那么播放下一首歌 IF RANDOM=0 THEN Counter=48; -如果為1,那么播放前一首歌。這一切都可由改變狀態(tài) ELSIF RANDOM=1 THEN Counter=97; -計(jì)數(shù)器Counter來實(shí)現(xiàn) END IF; ELSIF Counter=96

19、THEN IF RANDOM=0 THEN Counter=97; ELSIF RANDOM=1 THEN Counter=00; END IF; ELSIF Counter=152 THEN IF RANDOM=0 THEN Counter=00; ELSIF RANDOM=1 THEN Counter=48; END IF; ELSE Counter=Counter+1; END IF; ELSIF PP=1 THEN -如果暫停了,計(jì)數(shù)器暫停計(jì)數(shù) Counter=Counter; ELSIF (NEXTONE=1 AND LASTONE=0 AND PREVIOUS=0) THEN -選

20、擇下一首,將計(jì)數(shù)器改為下首歌曲開始的一個(gè)數(shù) IF(Counter=47) THEN Counter=48 and Counter=96) THEN Counter=97) THEN Counter=00; END IF; ELSIF(NEXTONE=0 AND LASTONE=1 AND PREVIOUS=0) THEN -選擇上一首,將計(jì)數(shù)器直改為上首歌曲開始的一個(gè)數(shù) IF(Counter=47) THEN Counter=48 and Counter=96) THEN Counter=97) THEN Counter=48; END IF; ELSIF(NEXTONE=0 AND LAST

21、ONE=0 AND PREVIOUS=1) THEN -選擇本首重放,將計(jì)數(shù)器改為本首開始的狀態(tài)數(shù) IF(Counter=47) THEN Counter=48 and Counter=96) THEN Counter=97) THEN Counter=97; END IF; END IF; END IF; END PROCESS;PROCESS(clk) -歌曲序號(hào)顯示,通過狀態(tài)數(shù)的大小判斷BEGIN IF Counter=47 THEN SEG=48 AND Counter=96 THEN SEG=97 THEN SEGToneIndex ToneIndex ToneIndex ToneI

22、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI

23、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI

24、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI

25、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneI

26、ndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex NULL;

27、 END CASE; END PROCESS;END;*底層文件ToneTaba*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ToneTaba IS PORT ( Index: IN INTEGER RANGE 0 TO 15; CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); Tone: OUT INTEGER RANGE 0 TO 16#7FF#);END;ARCHITECTURE one OF ToneTaba ISBEGIN Search : PROCESS(Index) BEGIN CASE I

28、ndex IS -音調(diào)分頻比 WHEN 0=ToneTone= 1274; CAIDENGTone= 1135; CAIDENGTone= 1011; CAIDENGTone= 954; CAIDENGTone= 850; CAIDENGTone= 757; CAIDENGTone= 675; CAIDENGTone= 637; CAIDENGTone= 567; CAIDENGTone=505; CAIDENGTone=477; CAIDENGTone=425; CAIDENGTone=379; CAIDENGTone=337; CAIDENGTone=319; CAIDENGNULL; END CASE;END PROCESS;END;*底層文件Speakera*LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Speakera IS PORT ( clk :IN STD_LOGIC; -1MHz Tone : IN INTEGER RA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論