




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
電子琴設(shè)計(jì)設(shè)計(jì)要求設(shè)計(jì)一個(gè)八音電子琴。由鍵盤輸入控制音響,同時(shí)可自動演奏樂曲。用戶可以將自己編制的樂曲存入電子琴,演奏時(shí)可選擇鍵盤輸入樂曲或者已存入的樂曲。系統(tǒng)組成系統(tǒng)由數(shù)控分頻器和樂曲存儲模塊組成。數(shù)控分頻器對FPGA的基準(zhǔn)頻率進(jìn)行分頻,得到與各個(gè)音階對應(yīng)的頻率輸出。樂曲存儲模塊產(chǎn)生節(jié)拍控制和音階選擇信號,即在此模塊中可存放一個(gè)樂曲曲譜真值表,由一個(gè)計(jì)數(shù)器來控制此真值表的輸出,而由計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘信號作為樂曲節(jié)拍控制信號。模塊設(shè)計(jì)
1.頂層模塊的設(shè)計(jì)2.自動演奏模塊(automusic)的設(shè)計(jì)3.音調(diào)發(fā)生器(tone)模塊的設(shè)計(jì)4.數(shù)控分頻模塊(speaker)的設(shè)計(jì)1.頂層模塊的設(shè)計(jì)頂層模塊由樂曲自動演奏(automusic),音調(diào)發(fā)生器(tone)和數(shù)控分頻器(speaker)三個(gè)模塊組成。其中樂曲演奏部分又包括了鍵盤編碼。設(shè)置一個(gè)自動演奏/鍵盤輸入切換auto,即當(dāng)auto=“0”時(shí),選擇自動演奏音樂存儲器里面的樂曲,auto=“1”時(shí),選擇鍵盤輸入的信號。頂層設(shè)計(jì)原理圖2.自動演奏模塊(automusic)的設(shè)計(jì)音樂存儲模塊的作用是產(chǎn)生8位發(fā)聲控制輸入index。當(dāng)auto為“0”時(shí),由存儲在此模塊中的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,可自動演奏樂曲。此模塊的VHDL程序中包括兩個(gè)進(jìn)程,首先是對時(shí)基脈沖進(jìn)行分頻得到4Hz的脈沖,作為第二個(gè)進(jìn)程的時(shí)鐘信號,它用來控制每個(gè)音階之間的停頓時(shí)間,1/4=0.25s;第二個(gè)進(jìn)程是音樂的存儲,可根據(jù)需要編寫不同的樂曲。3.音調(diào)發(fā)生器(tone)模塊的設(shè)計(jì)音調(diào)發(fā)生器的作用是產(chǎn)生獲得音階的分頻預(yù)置值。當(dāng)8位發(fā)聲控制輸入index中的某一位為高電平時(shí),則對應(yīng)某一音階的數(shù)值將在端口tone輸出,該數(shù)值即為該音階的分頻預(yù)置值,分頻預(yù)置值控制數(shù)控分頻器來對4MHz的脈沖進(jìn)行分頻,由此可得到每個(gè)音階對應(yīng)的頻率。例如輸入index=“00000010”,即對應(yīng)的按鍵是2,產(chǎn)生的分頻系數(shù)便是6809;code輸出對應(yīng)該音階簡譜的顯示數(shù)碼;high輸出指示音階高8度,低電平有效。4.數(shù)控分頻模塊(speaker)的設(shè)計(jì)數(shù)控分頻模塊對時(shí)基脈沖進(jìn)行分頻,得到與1、2、3、4、5、6、7七個(gè)音符對應(yīng)頻率。該模塊的VHDL程序中包含了三個(gè)進(jìn)程。首先對FPGA的32MHz的時(shí)基脈沖進(jìn)行分頻得到8MHz的脈沖,然后按照tone1輸入的分頻系數(shù)對8MHz的脈沖再次分頻,得到所需要的音符頻率。第三個(gè)進(jìn)程的作用是在音調(diào)輸出時(shí)再進(jìn)行二分頻,將脈沖展寬,使揚(yáng)聲器有足夠發(fā)聲功率。電子琴程序設(shè)計(jì)與仿真電子琴程序設(shè)計(jì)與仿真1.頂層程序與仿真2.音階發(fā)生器程序與仿真3.數(shù)控分頻模塊程序與仿真4.自動演奏模塊程序與仿真1.頂層程序與仿真--文件名:top.vhd--功能:頂層文件--最后修改日期:2004.3.20libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisPort(clk32MHz:instd_logic;--32MHz系統(tǒng)時(shí)鐘
handTOauto:instd_logic;--鍵盤輸入/自動演奏code1:outstd_logic_vector(6downto0);--音符顯示信號index1:instd_logic_vector(7downto0);--鍵盤輸入信號high1:outstd_logic;--高低音節(jié)信號
spkout:outstd_logic);--音頻信號endtop;architectureBehavioraloftopiscomponentautomusicPort(clk:instd_logic;Auto:instd_logic;index2:instd_logic_vector(7downto0);index0:outstd_logic_vector(7downto0));endcomponent;componenttonePort(index:instd_logic_vector(7downto0);code:outstd_logic_vector(6downto0);high:outstd_logic;tone0:outintegerrange0to2047);endcomponent;componentspeakerPort(clk1:instd_logic;tone1:inintegerrange0to2047;
spks:outstd_logic);endcomponent;signaltone2:integerrange0to2047;signalindx:std_logic_vector(7downto0);beginu0:automusicport
map(clk=>clk32MHZ,index2=>index1,index0=>indx,Auto=>handtoAuto);u1:toneportmap(index=>indx,tone0=>tone2,code=>code1,high=>high1);u2:speakerportmap(clk1=>clk32MHZ,tone1=>tone2,spks=>spkout);endBehavioral;(頂層文件仿真圖)2.音階發(fā)生器程序與仿真--文件名:tone.vhd。--功能:音階發(fā)生器程序。--最后修改日期:2004.4.13。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytoneisPort(index:instd_logic_vector(7downto0);--音符輸入信號code:outstd_logic_vector(6downto0);--音符顯示信號high:outstd_logic;--高低音顯示信號tone0:outintegerrange0to2047);--音符的分頻系數(shù)endtone;architectureBehavioraloftoneisbeginsearch:process(index)--此進(jìn)程完成音符到音符的分頻系數(shù)譯碼,音符的顯示,高低音階begincaseindexiswhen"00000001"=>tone0<=773;code<="1001111";high<='1';when"00000010"=>tone0<=912;code<="0010010";high<='1';when"00000100"=>tone0<=1036;code<="0000110";high<='1';when"00001000"=>tone0<=1116;code<="1001100";high<='1';when"00010000"=>tone0<=1197;code<="0100100";high<='1';when"00100000"=>tone0<=1290;code<="0100000";high<='0';when"01000000"=>tone0<=1372;code<="0001111";high<='0';when"10000000"=>tone0<=1410;code<="0000000";high<='0';whenothers=>tone0<=2047;code<="0000001";high<='0';endcase;endprocess;endBehavioral;(音階發(fā)生器仿真圖)3.數(shù)控分頻模塊程序與仿真--文件名:speaker.vhd。--功能:實(shí)現(xiàn)數(shù)控分頻。--最后修改日期:20004.3.19。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityspeakerisPort(clk1:instd_logic;--系統(tǒng)時(shí)鐘tone1:inintegerrange0to2047;--音符分頻系數(shù)spks:outstd_logic);--驅(qū)動揚(yáng)聲器的音頻信號endspeaker;architectureBehavioralofspeakerissignalpreclk,fullspks:std_logic;beginpulse1:process(clk1)--此進(jìn)程對系統(tǒng)時(shí)鐘進(jìn)行4分頻variablecount:integerrange0to8;beginifclk1'eventandclk1='1'thencount:=count+1;ifcount=2thenpreclk<='1';
elsifcount=4thenpreclk<='0';count:=0;endif;endif;endprocesspulse1;genspks:process(preclk,tone1)--此進(jìn)程按照tone1輸入的--分頻系數(shù)對8MHz的脈沖再次分頻,得到所需要的音符頻率variablecount11:integerrange0to2047;Beginifpreclk'eventandpreclk='1'thenifcount11<tone1thencount11:=count11+1;fullspks<='1';elsecount11:=0;fullspks<='0';endif;endif;endprocess;delaysps:process(fullspks)--此進(jìn)程對fullspks進(jìn)行2分頻variablecount2:std_logic:='0';beginiffullspks'eventandfullspks='1'thencount2:=notcount2;ifcount2='1'thenspks<='1';elsespks<='0';endif;endif;endprocess;endBehavioral;(數(shù)控分頻模塊仿真圖)4.自動演奏模塊程序與仿真--文件名:automusic.vhd--功能:實(shí)現(xiàn)自動演奏功能。--最后修改日期:2004.3.19。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityautomusicisPort(clk,Auto:instd_logic;--系統(tǒng)時(shí)鐘;鍵盤輸入/自動演奏index2:instd_logic_vector(7downto0);--鍵盤輸入信號index0:outstd_logic_vector(7downto0));--音符信號輸出endautomusic;architectureBehavioralofautomusicissignalcount0:integerrange0to31;--changesignalclk2:std_logic;beginpulse0:process(clk,Auto)--此進(jìn)程完成對系統(tǒng)時(shí)鐘8M的分頻,得到4Hz的信號clk2variablecount:integerrange0to8000000;beginifAuto='1'thencount:=0;clk2<='0';
elsif
clk'eventandclk='1'thencount:=count+1;ifcount=4000000(4)thenclk2<='1';
elsifcount=8000000(8)thenclk2<='0';count:=0;endif;endif;endprocess;music:process(clk2)--此進(jìn)程完成自動演奏部分曲的地址累加beginifclk2'eventandclk2='1'thenifcount0=31thencount0<=0;elsecount0<=count0+1;endif;endif;endprocess;com1:process(count0,Auto,index2)beginifAuto='0'thencasecount0is--此case語句:存儲自動演奏部分的曲when0=>index0<="00000100";--3when1=>index0<="00000100";--3when2=>index0<="00000100";--3when3=>index0<="00000100";--3when4=>index0<="00010000";--5when5=>index0<="00010000";--5when6=>index0<="00010000";--5when7=>index0<="00100000";--6when8=>index0<="10000000";--8when9=>index0<="10000000";--8when10=>index0<="10000000";--8when11=>index0<="00000100";--3when12=>index0<="00000010";--2when13=>index0<="00000010";--2when14=>index0<="00000001";--1when15=>index0<="00000001";--1when16=>index0<="00010000";
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨學(xué)科合作在提高血液透析安全管理中的應(yīng)用
- 小學(xué)英語課堂游戲單詞字母句子類游戲陷阱
- 高中語文情感美文守護(hù)你一輩子
- 初中語文文言文庭中有奇樹原文譯文與詩詞鑒賞
- 非營利組織的財(cái)務(wù)管理技巧與實(shí)務(wù)
- 學(xué)校畢業(yè)聯(lián)歡會主持人開場白模板(30篇)
- 高效財(cái)務(wù)管理軟件應(yīng)用實(shí)戰(zhàn)指南
- 總務(wù)電工年終總結(jié)范文(3篇)
- 道德教育在年輕設(shè)計(jì)師中的推廣與實(shí)踐
- 河南2025年01月2025年河南商丘市市直機(jī)關(guān)遴選公務(wù)員51人國家公務(wù)員考試消息筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年湖南理工職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫一套
- 2025年專利權(quán)侵權(quán)和解協(xié)議書范本
- 2024中考百日誓師大會動員講話稿
- 2025年中國廣州軌道交通行業(yè)市場全景評估及投資前景展望報(bào)告
- 2025年中國電力中電華創(chuàng)電力技術(shù)研究有限公司招聘筆試參考題庫附帶答案詳解
- 教職工開學(xué)安全第一課培訓(xùn)
- 2025年貴州貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2024-2025學(xué)年北京西城區(qū)八年級初二(上)期末英語試卷(含答案)
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級語文試卷(含答案)
- 《家庭護(hù)士》課件
- 2024年社區(qū)工作者考試時(shí)事政治模擬題及答案
評論
0/150
提交評論