VHDL樂曲演奏實驗報告_第1頁
VHDL樂曲演奏實驗報告_第2頁
VHDL樂曲演奏實驗報告_第3頁
VHDL樂曲演奏實驗報告_第4頁
VHDL樂曲演奏實驗報告_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余10頁可下載查看

下載本文檔

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

文檔簡介

設(shè) 計班 級:姓名〔學(xué)號:

性 實 驗 報 告設(shè)計性EDA根底試驗室(中心):指導(dǎo)教師:試驗完成時間: 2023 年 12 月 13 日 設(shè)計性試驗 教師評閱意見:教師評閱意見:簽名:年 月日試驗成績:一、試驗?zāi)康?QuartusII軟件的使用。2EDA試驗開發(fā)系統(tǒng)的根本使用。3VHDL根本單元電路的設(shè)計應(yīng)用。進(jìn)一步把握EDA的多層次設(shè)計方法。4、學(xué)習(xí)音樂發(fā)生器的設(shè)計。二、試驗內(nèi)容及要求1、試驗內(nèi)容2、試驗要求〔擴(kuò)展要求:能夠從數(shù)碼管上顯示出當(dāng)前曲調(diào)的簡譜和頻率要求上的《友情天長地久》曲調(diào)。三、試驗原理依據(jù)樂曲的速度和每個音符的節(jié)拍數(shù)來確定。其簡譜中音符和頻率的關(guān)系如下:211拍1 設(shè)計性試驗 4hz1拍的時長,演奏ROM〔的整數(shù)倍4拍,2/421/41拍。3、樂曲硬件演奏電路系統(tǒng)主要有數(shù)控分頻器和樂曲存儲模塊兩個局部組成,其余還有的基準(zhǔn)頻率進(jìn)展分頻,得到與各個音節(jié)對應(yīng)的頻率輸出。樂曲存儲模塊產(chǎn)生節(jié)拍把握和音階選擇信號,即在此模塊中存放一個樂曲曲譜真值表〔ROM存儲出,而由計數(shù)器的技術(shù)時鐘信號作為樂曲節(jié)拍把握信號。4、要求演奏時能循環(huán)進(jìn)展,必需需另外設(shè)置一個時長計數(shù)器,當(dāng)樂曲演奏完成時,保證能自動從頭開頭演奏。該計數(shù)器把握真值表按挨次輸出簡譜。四、試驗儀器、材料計算機(jī)一臺、GW48EDA/SOPC試驗箱一臺QuartusII軟件、試驗箱連接線一根五、方案設(shè)計3個主音樂發(fā)生器NoteTabs模塊音符譯碼電路Tonetaba模塊數(shù)控分頻Speakera模塊。分好層次之后,編寫每個模塊的程序,分別生成工程符號,最終把生成的個工程符號用原理圖的方式連接起來,然后編譯、下載即可。由圖例表示如下:輸入輸入輸出〔樂曲〕NoteTabsTonetabaSpeakera此試驗設(shè)計中,我主要負(fù)責(zé)音樂發(fā)生器NoteTabs模塊〔ROM的定制過程〕和最終的連接原理圖局部。六、試驗過程及原始記錄1NoteTabs模塊NoteTabsROMROMTonetaba,所存儲的樂曲就開頭連續(xù)自然地演奏起來。2 設(shè)計性試驗 ROMMegawizardPlug-InManagermusic1其過程如下:在QuartusII主窗口Tools菜單中選擇MegawizardPlug-InManagerCreateanewcustommegafunction項。單擊next按鈕后,選擇好后cycloneVHDL語言后,產(chǎn)生對話框如下:music1模塊的定制工作,其產(chǎn)生music1VHDL語言程序如下:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.altera_mf_components.all;ENTITYmusic1ISPORT(addressclockq);

:INSTD_LOGIC_VECTOR(7DOWNTO0);:INSTD_LOGIC;:OUTSTD_LOGIC_VECTOR(3DOWNTO0)ENDmusic1;ARCHITECTURESYNOFmusic1ISSIGNALsub_wire0 :STD_LOGIC_VECTOR(3DOWNTO0);COMPONENTaltsyncramGENERIC(intended_device_family :STRING;3 設(shè)計性試驗 width_awidthad_anumwords_a

:NATURAL;:NATURAL;:NATURAL;operation_modeoutdata_reg_aaddress_aclr_aoutdata_aclr_awidth_byteena_a

:STRING;:STRING;:STRING;:STRING;:NATURAL;init_filelpm_hintlpm_type);

:STRING;:STRING;:STRINGPORT(clock0 :INSTD_LOGIC;address_a :INSTD_LOGIC_VECTOR(7DOWNTO0);q_a:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;BEGINq<=sub_wire0(3DOWNTO0);altsyncram_component:altsyncramGENERICMAP(intended_device_family=>“Cyclone“,width_a=>4,widthad_a=>8,numwords_a=>256,operation_mode=>“ROM“,outdata_reg_a=>“CLOCK0“,address_aclr_a=>“NONE“,outdata_aclr_a=>“NONE“,width_byteena_a=>1,init_file=>“data.mif“,lpm_hint=>“ENABLE_RUNTIME_MOD=NO“,lpm_type=>“altsyncram“)PORTMAP(clock0=>clock,address_a=>address,q_a=>sub_wire0);ENDSYN;4 設(shè)計性試驗 ROM122ROM8,8〔256個字,ROMAuto。依據(jù)友情天長地久的音樂簡譜,以及簡譜中的低、中、高和額節(jié)拍與發(fā)生頻率的關(guān)系等122ROM中。在數(shù)據(jù)文件編輯窗中,在mif122個音符數(shù)據(jù),并以十data.mif,存入原路徑中。NoteTabsVHDL設(shè)計其源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYNoteTabsISPORT(clk4hz:INSTD_LOGIC;Index2:INSTD_LOGIC_VECTOR(3DOWNTO0);5 設(shè)計性試驗 Tone:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDNoteTabs;oneOFNoteTabsISCOMPONENTMUSIC1PORT(address:INSTD_LOGIC_VECTOR(7DOWNTO0);clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;SIGNALCounter:STD_LOGIC_VECTOR(7DOWNTO0);DOWNTO0);BeginCNT8:PROCESS(clk4hz,Counter)BEGINIFCounter=122THENCounter<=“00000000“;ELSIF(clk4hz”EVENTANDclk4hz=”1”)THENCounter<=Counter+1;ENDIF;ENDPROCESSCNT8;u1:music1PORTMAP(address=>Counter,clock=>clk4hz,q=>Index1);Tone<=Index1;ENDone;信號作為音符的快慢信號,頻率越高,時鐘的輸出節(jié)拍速度就越快,演奏的速度也越快。將以上設(shè)計的音樂節(jié)拍發(fā)生器設(shè)置成可調(diào)用的原件,以被高層使用,其生成工程符號為:3Tonetaba模塊,其程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYToneTabaISPORT(Index:INSTD_LOGIC_VECTOR(3DOWNTO0);STD_LOGIC_VECTOR(3DOWNTO0);HIGH:OUTSTD_LOGIC;Tone:OUTSTD_LOGIC_VECTOR(12DOWNTO0));END;ARCHITECTUREoneOFToneTabaIS6 設(shè)計性試驗 BEGINPROCESS(Index)BEGINCASEIndexISWHEN“0000“=>Tone<=“1111111111111“;CODE<=“0000“;HIGH<=”0”;WHEN“0101“=>Tone<=“0110000010001“;CODE<=“0101“;HIGH<=”0”;WHEN“0110“=>Tone<=“0111000111110“;CODE<=“0110“;HIGH<=”0”;WHEN“1000“=>Tone<=“1000100010001“;CODE<=“0001“;HIGH<=”1”;WHEN“1001“=>Tone<=“1001010110010“;CODE<=“0010“;HIGH<=”1”;WHEN“1010“=>Tone<=“1010000100101“;CODE<=“0011“;HIGH<=”1”;WHEN“1100“=>Tone<=“1011000001000“;CODE<=“0101“;HIGH<=”1”;WHEN“1101“=>Tone<=“1011100011110“;CODE<=“0110“;HIGH<=”1”;WHEN“1111“=>Tone<=“1100010001000“;CODE<=“0001“;HIGH<=”1”;WHENOTHERS=>Tone<=“1111111111111“;CODE<=“0000“;HIGH<=”0”;ENDCASE;ENDPROCESS;END;是為數(shù)控分頻模塊供給音符頻率的初始值,此處有一個音符譯碼輸出CODE[3..0]和音高指示信HIGHLED來顯示樂曲演奏時對應(yīng)得音符和凹凸音。將以上設(shè)計的音符譯碼電路設(shè)置成可調(diào)用的原件,以被高層使用,其生成工程符號為:4、數(shù)控分頻模塊〔speakera〕設(shè)計,其程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSpeakeraISPORT( clk:INSTD_LOGIC;Tone:INSTD_LOGIC_VECTOR(12DOWNTO0);SpkS:OUTSTD_LOGIC);END;ARCHITECTUREoneOFSpeakeraISSIGNALPreCLK,FullSpkS:STD_LOGIC;BEGIN7 設(shè)計性試驗 DivedeCLK:PROCESS(clk)VARIABLECount4:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPreCLK<=”0”;IFCount4>11THENPreCLK<=”1”; Count4:=“0000“;ELSIFclk”EVENTANDclk=”1”THENCount4:=Count4+1;ENDIF;ENDPROCESSDivedeCLK;GenSpkS:PROCESS(PreCLK,Tone)VARIABLECount13:STD_LOGIC_VECTOR(12DOWNTO0);BEGINIFPreCLK”EVENTANDPreCLK=”1”THENIFCount13=16#1FFF#THENCount13:=Tone;FullSpkS<=”1”;ELSECount13:=Count13+1;FullSpkS<=”0”;ENDIF;ENDIF;ENDPROCESSGenSpkS;DelaySpkS:PROCESS(FullSpkS)VARIABLECount2:STD_LOGIC;BEGINIFFullSpkS”EVENTANDFullSpkS=”1”THEN Count2:=NOTCount2;IFCount2=”1”THENSpkS<=”1”;ELSESpkS<=”0”;ENDIF;ENDIF;ENDPROCESS;END;數(shù)控分頻器對FPGA的基準(zhǔn)頻率進(jìn)展分頻,得到與各個音階對應(yīng)的頻率輸出,里面包含一個計數(shù)器,當(dāng)計數(shù)器滿時,產(chǎn)生一個進(jìn)位信號FULLSPKSVHDLTone4Mhz的脈沖分2分頻,目5、依據(jù)層次化設(shè)計要求把各個局部依據(jù)試驗設(shè)計流程,即各個階段產(chǎn)生的工程元件符8 設(shè)計性試驗 號連接成原理圖如下:65,下載測試,但我們組的試驗消滅錯誤,沒有演奏出音樂,但可以手動輸入信號,可產(chǎn)生音符。為了可自動循環(huán)演奏出音樂,我address端口信號,于是,我們在原來的根底上,加addressROM地址端口和一個計數(shù)器。七、試驗結(jié)果及分析1addressROMROMROM中的音符數(shù)據(jù),從而演奏樂曲。其計數(shù)器的VHDL源程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOG

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論