![樂器演奏電路設(shè)計(jì)說明_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/b914c327-8643-4854-8715-cb9ee2d39fd2/b914c327-8643-4854-8715-cb9ee2d39fd21.gif)
![樂器演奏電路設(shè)計(jì)說明_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/b914c327-8643-4854-8715-cb9ee2d39fd2/b914c327-8643-4854-8715-cb9ee2d39fd22.gif)
![樂器演奏電路設(shè)計(jì)說明_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/b914c327-8643-4854-8715-cb9ee2d39fd2/b914c327-8643-4854-8715-cb9ee2d39fd23.gif)
![樂器演奏電路設(shè)計(jì)說明_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/b914c327-8643-4854-8715-cb9ee2d39fd2/b914c327-8643-4854-8715-cb9ee2d39fd24.gif)
![樂器演奏電路設(shè)計(jì)說明_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/b914c327-8643-4854-8715-cb9ee2d39fd2/b914c327-8643-4854-8715-cb9ee2d39fd25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 . . . 交通大學(xué)計(jì)算機(jī)與信息學(xué)院設(shè)計(jì)性實(shí)驗(yàn)報告班 級: 通信工程 專業(yè) 07 級 2 班 (學(xué)號):實(shí)驗(yàn)項(xiàng)目名稱: 樂器演奏電路設(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目性質(zhì): 設(shè)計(jì)性 實(shí)驗(yàn)所屬課程: VHDL 實(shí)驗(yàn)室(中心):指 導(dǎo) 教 師 : 徐雯娟 實(shí)驗(yàn)完成時間: 2009 年 12 月 13 日14 / 14教師評閱意見: 簽名: 年 月 日實(shí)驗(yàn)成績:一、實(shí)驗(yàn)?zāi)康?,了解普通揚(yáng)聲器的工作原理;2,了解QuartusII4.1中提供了宏功能元件庫mega_lpm。3,使用LPM_ROM參數(shù)化存儲模塊。二、實(shí)驗(yàn)容與要求要求能夠演奏出友誼地久天長的曲調(diào)或可另選一段較完整的曲調(diào)。(擴(kuò)展要求:能夠從數(shù)碼管上顯示出當(dāng)前
2、曲調(diào)的簡譜和頻率)SPEAKERCLKTONE SPKSU3NOTE TABSTONEINDEXCLKU1TONE TAB HIGHINDEX CODE TONEU2三、實(shí)驗(yàn)原理1,音符的頻率:可以由上圖中的U3獲得,這是一個數(shù)控分頻器。由其clk 端輸入一具有較高頻率(這里是12MHz)的信號,通過U3分頻后由SPKOUT輸出,U3對clk 輸入信號的分頻比由11位預(yù)置數(shù)Tone10.0決定。SPKOUT的輸出頻率將決定每一音符的音調(diào),這樣,分頻計(jì)數(shù)器的預(yù)置值Tone10.0與SPKOUT 的輸出頻率,就有了對應(yīng)關(guān)系。2,音符的持續(xù)時間:須根據(jù)樂曲的速度與每個音符的節(jié)拍數(shù)來確定,圖中模塊U2
3、的功能首先是為U3提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)在U3輸入口停留的時間即為此音符的節(jié)拍值。模塊U2是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路,其中設(shè)置了樂曲全部音符所對應(yīng)的分頻預(yù)置數(shù)(一共8個),每一音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)生器模塊U1的clk的輸入頻率決定(如為4Hz),這8個值的輸出由對應(yīng)于U2的3位輸入值Index2.0確定。3,樂譜的存儲:在U1中設(shè)置了一個7位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)最大值為65),作為音符數(shù)據(jù)ROM 的地址發(fā)生器。這個計(jì)數(shù)器的計(jì)數(shù)頻率若選為4Hz,即每一計(jì)數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間。隨著U1中的計(jì)數(shù)器按4Hz的時鐘
4、速率作加法計(jì)數(shù)時,即隨地址值遞增時,音符數(shù)據(jù)ROM 中的音符數(shù)據(jù)將從ROM過ToneIndex2.0端口輸向U2模塊,樂曲就開始連續(xù)自然地演奏起來了。音高頻率對照表(徐老師給定發(fā)的原頻率對照表中頻率偏低)1234567低音261293329349396440493中音523587659698784880988高音1047117513191397156817601975四、實(shí)驗(yàn)儀器、材料1,2MHZ和4HZ的信號源2,ACEX1K EP1K30TC1441芯片3,揚(yáng)聲器五、方案設(shè)計(jì)(設(shè)計(jì)性實(shí)驗(yàn)需要,綜合性實(shí)驗(yàn)無該項(xiàng))1,音符的產(chǎn)生:音符的產(chǎn)生是利用數(shù)控分頻器模塊SPKEAR對輸入的時鐘信號CLK
5、400KHZ進(jìn)行分頻,預(yù)置數(shù)為TONE10.0,然后分頻得出頻率為CLK/2*(2048- TONE10.0),通過控制輸入預(yù)置數(shù)TONE10.0來達(dá)到不同的輸出頻率,以達(dá)到控制揚(yáng)聲器發(fā)出不同的聲音。例如:當(dāng)設(shè)置預(yù)置數(shù)TONE10.0為1538時,輸出SPKEAR頻率為396,為低音5。2,頻率的分頻:由于實(shí)驗(yàn)給定信號源為12MHZ,不滿足數(shù)控分頻器模塊SPKEAR對輸入時鐘信號的要求,遂其進(jìn)行30分頻(PULSE30),產(chǎn)生0.4MHZ的時鐘信號。3,預(yù)置數(shù)的產(chǎn)生:預(yù)置數(shù)TONE10.0由模塊TONE TAB產(chǎn)生。模塊TONE TAB有輸入端口INDEX2.0送入音符,模塊由CASE選擇語句
6、產(chǎn)生與INDEX2.0輸入端口送入的音符相對應(yīng)的預(yù)置數(shù)TONE10.0,也同時產(chǎn)生其音符CODE2.0送入音符顯示模塊DISPCODE,和頻譜頻率frenquence9.0送入頻率顯示模塊DISPFREN。例如:當(dāng)輸入端口INDEX2.0送入000(為低音5對應(yīng)的編碼),有CAES選擇語句產(chǎn)生TONE10.0為1538,frenquence9.0為396 以與CODE2.0為101的輸出。4,音符的存儲:音符的持續(xù)時間須根據(jù)樂曲的速度與每個音符的節(jié)拍數(shù)來確定。由存儲模塊music_rom_data控制,以四分之一節(jié)拍為1個單位在LPM_ROM中進(jìn)行存儲音符的編碼(例如本實(shí)驗(yàn)友誼地久天長中頻譜共
7、涉與了8個音符,使用3個二進(jìn)制數(shù)分別對其編碼進(jìn)行存儲;又有二分之一節(jié)拍數(shù)的音符存儲2個單元,以此類推,直到對整首歌曲的樂譜存儲結(jié)束)。存儲模塊music_rom_data的輸出為數(shù)控分頻器模塊TONETAB的輸入端INDEX2.0。音符與編碼對照表:音符5(低音)123561(高音)6(低音)編碼0000010100111001011101115,音符的輸出驅(qū)動:音符的存儲由計(jì)數(shù)器模塊LPM_COUNTE控制。計(jì)數(shù)器在時鐘CLK4HZ的控制下,沒0.25s送出一個6位數(shù)值q5.0,作為存儲模塊music_rom_data的地址輸入端口。這樣便達(dá)到每個存儲單元以同一頻率進(jìn)行有控制的輸出。6,頻譜
8、顯示模塊DISPCODE和頻率顯示模塊DISPFRENQUENCE有本組另一同學(xué)(袁亮)設(shè)計(jì)。六、實(shí)驗(yàn)過程與原始記錄1,制作存儲模塊music_rom_data.(1)定制LPM_ROM初始化數(shù)據(jù)文件建立.mif格式文件:選擇File>New>Memory Initialization File項(xiàng),選擇數(shù)據(jù)位為256,數(shù)據(jù)寬度為8,建立.mif格式文件,將歌曲頻譜以編碼的形式,以四分之一節(jié)拍為一單位進(jìn)行存儲。(其實(shí)128位數(shù)據(jù)位已經(jīng)夠本實(shí)驗(yàn)歌曲友誼地久天長使用)形成如下圖的數(shù)據(jù)文件:(2),定制LPM_ROM元件LPM宏功能模塊設(shè)定選擇ROM_DATA模塊數(shù)據(jù)線和地址線寬度調(diào)入RO
9、M初始化數(shù)據(jù)文件LPM_ROM設(shè)計(jì)完成生成用于例化的LPM_ROM的VHDL文件music_data_rom.vhd:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.lpm_components.all;ENTITY music_data_rom ISPORT(address: IN STD_LOGIC_VECTOR (5 DOWNTO 0);q: OUT STD_LOGIC_VECTOR (2 DOWNTO 0);END music_data_rom;ARCHITECTURE SYN OF music_data_rom
10、 ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (2 DOWNTO 0);COMPONENT lpm_romGENERIC (intended_device_family: STRING;lpm_width: NATURAL;lpm_widthad: NATURAL;lpm_address_control: STRING;lpm_outdata: STRING;lpm_file: STRING;lpm_type: STRING);PORT (address: IN STD_LOGIC_VECTOR (5 DOWNTO 0);q: OUT STD_LOGIC_VECT
11、OR (2 DOWNTO 0);END COMPONENT;BEGINq <= sub_wire0(2 DOWNTO 0);lpm_rom_component : lpm_romGENERIC MAP (intended_device_family => "ACEX1K",lpm_width => 3,lpm_widthad => 6,lpm_address_control => "UNREGISTERED",lpm_outdata => "UNREGISTERED",lpm_file =>
12、"music_rom_data.mif",lpm_type => "LPM_ROM")PORT MAP (address => address,q => sub_wire0);END SYN;2,制作計(jì)數(shù)器模塊COUNTER實(shí)驗(yàn)步驟如上:生成用于例化的LPM_COUNTER的VHDL文件counter.vhd:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.all;ENTITY counter ISPORT(clk_en: IN STD_LOGIC ;clock:
13、 IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (5 DOWNTO 0);END counter;ARCHITECTURE SYN OF counter ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (5 DOWNTO 0);COMPONENT lpm_counterGENERIC (lpm_direction: STRING;lpm_port_updown: STRING;lpm_type: STRING;lpm_width: NATURAL);PORT (clk_en: IN STD_LOGIC ;clock: IN STD_LOG
14、IC ;q: OUT STD_LOGIC_VECTOR (5 DOWNTO 0);END COMPONENT;BEGINq <= sub_wire0(5 DOWNTO 0);lpm_counter_component : lpm_counterGENERIC MAP (lpm_direction => "UP",lpm_port_updown => "PORT_UNUSED",lpm_type => "LPM_COUNTER",lpm_width => 6)PORT MAP (clk_en => c
15、lk_en,clock => clock,q => sub_wire0);END SYN;3,制作數(shù)控分頻器SPKEAR模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY speaker IS PORT(CLK: IN STD_LOGIC; tone:IN integer range 0 to 2048; spks:out std_logic);END speaker;ARCHITECTURE ONE OF speaker IS SIGNAL FULL: STD_LOGI
16、C; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8:integer range 0 to 2048; BEGIN IF CLK'EVENT AND CLK='1' THEN IF CNT8=2048 THEN CNT8:=tone; FULL<='1' ELSE CNT8:=CNT8+1; FULL<='0' END IF; END IF; END PROCESS P_REG; P_DIV:PROCESS(FULL) VARIABLE CNT2:STD_LOGIC; BEGIN IF FULL
17、'EVENT AND FULL='1' THEN CNT2:=NOT CNT2; IF CNT2='1' THEN spks<='1' ELSE spks<='0' END IF; END IF; END PROCESS P_DIV;END ONE;4,制作TONE TAB模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tonetab is port(index: in std_logic_vec
18、tor(2 downto 0); tone : out integer range 0 to 2048; frequence : out integer range 0 to 990; code : out std_logic_vector(2 downto 0); end entity;architecture behave_tonetab of tonetab isbegin process(index) begin case index is when "000"=> frequence<=396;code<="101"tone&
19、lt;=1538; when "001"=> frequence<=523code<="001"tone<=1666; when "010"=> frequence<=587;code<="010"tone<=1708; when "011"=> frequence<=659;code<="011"tone<=1745; when "100"=> frequence<=78
20、4;code<="101"tone<=1794; when "101"=> frequence<=1047;code<="110"tone<=1821; when "110"=> frequence<=1175;code<="001"tone<=1857; when "111"=> frequence<=440;code<="110"tone<=1595; end case
21、; end process;end behave_tonetab;5,制定PULSE30模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity pulse30 is port(clk :in std_logic; fout:out std_logic); end;architecture behave_pulse30 of pulse30 is SIGNAL FULL: STD_LOGIC; BEGIN P1: PROCESS(CLK) VARIABLE CNT30:integer ra
22、nge 1 to 30; BEGIN IF CLK'EVENT AND CLK='1' THEN IF CNT30=30 THEN CNT30:=1; FULL<='1' ELSE CNT30:=CNT30+1; FULL<='0' END IF; END IF; END PROCESS P1; P2:PROCESS(FULL) VARIABLE CNT2:STD_LOGIC; BEGIN IF FULL'EVENT AND FULL='1' THEN CNT2:=NOT CNT2; IF CNT2=&
23、#39;1' THEN fout<='1' ELSE fout<='0' END IF; END IF; END PROCESS P2;END behave_pulse30;七、實(shí)驗(yàn)結(jié)果與分析實(shí)驗(yàn)結(jié)果:當(dāng)en_clock=1時,即clock有效時,試驗(yàn)箱端揚(yáng)聲器演奏出樂曲友誼地久天長的音樂。當(dāng)en_clock=0時,停止演奏。實(shí)驗(yàn)分析:例如二分之一得音符低音5的實(shí)驗(yàn)流程運(yùn)轉(zhuǎn):首先計(jì)數(shù)器COUNTER在時鐘clk4hz的驅(qū)動之下以每個數(shù)據(jù)0.25s的頻率(即每個四分之一節(jié)拍音符持續(xù)的時間)將產(chǎn)生的數(shù)據(jù)000000和000001,并將其依次送入存
24、儲模塊music_rom_data;其對應(yīng)的存儲地址為音符低音5的編碼000,并將其作為輸出送入tonetab模塊中。在tonetab模塊中以case選擇語句,輸出音符頻率frequence=396,音符編碼code=101以與預(yù)置數(shù)tone=1538,依次送入模塊dispfrenquence,dispcode以與speaker中。然后預(yù)置數(shù)tone在模塊speaker中,將時鐘0.4MHZ進(jìn)行CLK/2*(2048- TONE10.0)分頻得到輸出speak為396;由此類推。address=000000>index=000>tone=1538>speak=396(持續(xù)時間
25、0.25s);address=000001>index=000>tone=1538>speak=396(持續(xù)時間0.25s);address=000010>index=001>tone=1666>speak=523(持續(xù)時間0.25s);address=000011>index=001>tone=1666>speak=523(持續(xù)時間0.25s);address=000100>index=001>tone=1666>speak=523(持續(xù)時間0.25s);address=000101>index=001>to
26、ne=1666>speak=523(持續(xù)時間0.25s);八、實(shí)驗(yàn)體會在實(shí)驗(yàn)題目拿到手里的那一刻,還不知意味著什么,只是感覺看著好難,但是也好新奇。心里面有躍躍一試的激動,但是又因?yàn)橹皬膩頉]有設(shè)計(jì)過此類的設(shè)計(jì)項(xiàng)目,也有一些膽顫。于是我專門找了一整塊的時間來研究此道設(shè)計(jì)題,待到抬頭時卻發(fā)現(xiàn)徐老師給的有關(guān)實(shí)驗(yàn)題目和原理的課件上面已經(jīng)將實(shí)驗(yàn)的步驟和方法以與思想,羅列的清晰可現(xiàn)。我想要是再真的做不出來可真是對不起自己的時間,對不起這課件上面的字跡,也浪費(fèi)了徐老師的心思!但在實(shí)驗(yàn)實(shí)現(xiàn)的過程中卻遇到了麻煩,(1)首先是制作存儲模塊music_rom_data,因?yàn)橹皼]有遇到過LPM宏功能模塊的使
27、用,還有上課時沒有認(rèn)真聽這方面的講課容(挺不好意思的),所以不知從何下手,從圖書館查找資料也只是對LPM宏模塊本身的理解與應(yīng)用,沒有使用步驟,也不知道應(yīng)該以怎樣德形式將頻譜存入.mif格式文件,這對于實(shí)驗(yàn)就不知要怎樣實(shí)現(xiàn)。周五的晚上于是我對自己說:你什么時候想好實(shí)驗(yàn)的存儲方法就什么時候睡覺,這樣持續(xù)到了2:30,突然恍然大悟,覺醒,于是將音符以編碼的形式將其存儲(好像我有點(diǎn)笨了,呵呵)。(2)然后在進(jìn)行模塊SPEAKER的設(shè)計(jì)時,發(fā)現(xiàn)若以設(shè)計(jì)題目給定的12MHZ進(jìn)行分頻,那預(yù)置數(shù)TONE10.0將為負(fù)數(shù),于是計(jì)算過后,發(fā)現(xiàn)若進(jìn)行30分頻將時鐘信號調(diào)制為0.4MHZ則可以正常進(jìn)行試驗(yàn)。接下來整個實(shí)驗(yàn)一氣呵成!待到周六本組另外一同學(xué)袁亮將無誤的顯示模塊連接,呵呵,實(shí)驗(yàn)編譯成功!在這了還要感袁亮同學(xué)對我的信任!當(dāng)周日的時候,進(jìn)入了實(shí)驗(yàn)室,心里有點(diǎ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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貿(mào)易合同范本大全
- 杉木原木購銷合同范本下載
- 應(yīng)急預(yù)案編制與更新
- 鄭州電子商務(wù)職業(yè)學(xué)院《經(jīng)濟(jì)數(shù)學(xué)-微積分(一)》2023-2024學(xué)年第二學(xué)期期末試卷
- 石河子工程職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)數(shù)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 裝修垃圾清運(yùn)合同
- 重慶五一職業(yè)技術(shù)學(xué)院《最優(yōu)化設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 贛州師范高等??茖W(xué)?!督?jīng)濟(jì)數(shù)學(xué)(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 環(huán)保能源設(shè)備銷售與維護(hù)合同
- 應(yīng)急預(yù)案整改
- 化療藥物分類及不良反應(yīng)的處理課件
- 超聲科質(zhì)量控制制度及超聲科圖像質(zhì)量評價細(xì)則
- 初中物理滬粵版八年級下冊《第六章 力和機(jī)械》章節(jié)練習(xí)(含答案)
- 金礦管理制度
- 橋梁樁基礎(chǔ)施工概述及施工控制要點(diǎn)
- 云南省普通初中學(xué)生成長記錄模板-好ok
- SB/T 10415-2007雞粉調(diào)味料
- JB/T 20036-2016提取濃縮罐
- GB/T 3452.4-2020液壓氣動用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- 《社會主義市場經(jīng)濟(jì)理論(第三版)》第十三章社會主義市場經(jīng)濟(jì)標(biāo)準(zhǔn)論
- 變更索賠案例分析
評論
0/150
提交評論