版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 . . . 交通大學(xué)計(jì)算機(jī)與信息學(xué)院設(shè)計(jì)性實(shí)驗(yàn)報(bào)告班 級(jí): 通信工程 專業(yè) 07 級(jí) 2 班 (學(xué)號(hào)):實(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)完成時(shí)間: 2009 年 12 月 13 日14 / 14教師評(píng)閱意見: 簽名: 年 月 日實(shí)驗(yàn)成績(jī):一、實(shí)驗(yàn)?zāi)康?,了解普通揚(yáng)聲器的工作原理;2,了解QuartusII4.1中提供了宏功能元件庫(kù)mega_lpm。3,使用LPM_ROM參數(shù)化存儲(chǔ)模塊。二、實(shí)驗(yàn)容與要求要求能夠演奏出友誼地久天長(zhǎng)的曲調(diào)或可另選一段較完整的曲調(diào)。(擴(kuò)展要求:能夠從數(shù)碼管上顯示出當(dāng)前
2、曲調(diào)的簡(jiǎn)譜和頻率)SPEAKERCLKTONE SPKSU3NOTE TABSTONEINDEXCLKU1TONE TAB HIGHINDEX CODE TONEU2三、實(shí)驗(yàn)原理1,音符的頻率:可以由上圖中的U3獲得,這是一個(gè)數(shù)控分頻器。由其clk 端輸入一具有較高頻率(這里是12MHz)的信號(hào),通過U3分頻后由SPKOUT輸出,U3對(duì)clk 輸入信號(hào)的分頻比由11位預(yù)置數(shù)Tone10.0決定。SPKOUT的輸出頻率將決定每一音符的音調(diào),這樣,分頻計(jì)數(shù)器的預(yù)置值Tone10.0與SPKOUT 的輸出頻率,就有了對(duì)應(yīng)關(guān)系。2,音符的持續(xù)時(shí)間:須根據(jù)樂曲的速度與每個(gè)音符的節(jié)拍數(shù)來(lái)確定,圖中模塊U2
3、的功能首先是為U3提供決定所發(fā)音符的分頻預(yù)置數(shù),而此數(shù)在U3輸入口停留的時(shí)間即為此音符的節(jié)拍值。模塊U2是樂曲簡(jiǎn)譜碼對(duì)應(yīng)的分頻預(yù)置數(shù)查表電路,其中設(shè)置了樂曲全部音符所對(duì)應(yīng)的分頻預(yù)置數(shù)(一共8個(gè)),每一音符的停留時(shí)間由音樂節(jié)拍和音調(diào)發(fā)生器模塊U1的clk的輸入頻率決定(如為4Hz),這8個(gè)值的輸出由對(duì)應(yīng)于U2的3位輸入值Index2.0確定。3,樂譜的存儲(chǔ):在U1中設(shè)置了一個(gè)7位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)最大值為65),作為音符數(shù)據(jù)ROM 的地址發(fā)生器。這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率若選為4Hz,即每一計(jì)數(shù)值的停留時(shí)間為0.25秒,恰為當(dāng)全音符設(shè)為1秒時(shí),四四拍的4分音符持續(xù)時(shí)間。隨著U1中的計(jì)數(shù)器按4Hz的時(shí)鐘
4、速率作加法計(jì)數(shù)時(shí),即隨地址值遞增時(shí),音符數(shù)據(jù)ROM 中的音符數(shù)據(jù)將從ROM過ToneIndex2.0端口輸向U2模塊,樂曲就開始連續(xù)自然地演奏起來(lái)了。音高頻率對(duì)照表(徐老師給定發(fā)的原頻率對(duì)照表中頻率偏低)1234567低音261293329349396440493中音523587659698784880988高音1047117513191397156817601975四、實(shí)驗(yàn)儀器、材料1,2MHZ和4HZ的信號(hào)源2,ACEX1K EP1K30TC1441芯片3,揚(yáng)聲器五、方案設(shè)計(jì)(設(shè)計(jì)性實(shí)驗(yàn)需要,綜合性實(shí)驗(yàn)無(wú)該項(xiàng))1,音符的產(chǎn)生:音符的產(chǎn)生是利用數(shù)控分頻器模塊SPKEAR對(duì)輸入的時(shí)鐘信號(hào)CLK
5、400KHZ進(jìn)行分頻,預(yù)置數(shù)為TONE10.0,然后分頻得出頻率為CLK/2*(2048- TONE10.0),通過控制輸入預(yù)置數(shù)TONE10.0來(lái)達(dá)到不同的輸出頻率,以達(dá)到控制揚(yáng)聲器發(fā)出不同的聲音。例如:當(dāng)設(shè)置預(yù)置數(shù)TONE10.0為1538時(shí),輸出SPKEAR頻率為396,為低音5。2,頻率的分頻:由于實(shí)驗(yàn)給定信號(hào)源為12MHZ,不滿足數(shù)控分頻器模塊SPKEAR對(duì)輸入時(shí)鐘信號(hào)的要求,遂其進(jìn)行30分頻(PULSE30),產(chǎn)生0.4MHZ的時(shí)鐘信號(hào)。3,預(yù)置數(shù)的產(chǎn)生:預(yù)置數(shù)TONE10.0由模塊TONE TAB產(chǎn)生。模塊TONE TAB有輸入端口INDEX2.0送入音符,模塊由CASE選擇語(yǔ)句
6、產(chǎn)生與INDEX2.0輸入端口送入的音符相對(duì)應(yīng)的預(yù)置數(shù)TONE10.0,也同時(shí)產(chǎn)生其音符CODE2.0送入音符顯示模塊DISPCODE,和頻譜頻率frenquence9.0送入頻率顯示模塊DISPFREN。例如:當(dāng)輸入端口INDEX2.0送入000(為低音5對(duì)應(yīng)的編碼),有CAES選擇語(yǔ)句產(chǎn)生TONE10.0為1538,frenquence9.0為396 以與CODE2.0為101的輸出。4,音符的存儲(chǔ):音符的持續(xù)時(shí)間須根據(jù)樂曲的速度與每個(gè)音符的節(jié)拍數(shù)來(lái)確定。由存儲(chǔ)模塊music_rom_data控制,以四分之一節(jié)拍為1個(gè)單位在LPM_ROM中進(jìn)行存儲(chǔ)音符的編碼(例如本實(shí)驗(yàn)友誼地久天長(zhǎng)中頻譜共
7、涉與了8個(gè)音符,使用3個(gè)二進(jìn)制數(shù)分別對(duì)其編碼進(jìn)行存儲(chǔ);又有二分之一節(jié)拍數(shù)的音符存儲(chǔ)2個(gè)單元,以此類推,直到對(duì)整首歌曲的樂譜存儲(chǔ)結(jié)束)。存儲(chǔ)模塊music_rom_data的輸出為數(shù)控分頻器模塊TONETAB的輸入端INDEX2.0。音符與編碼對(duì)照表:音符5(低音)123561(高音)6(低音)編碼0000010100111001011101115,音符的輸出驅(qū)動(dòng):音符的存儲(chǔ)由計(jì)數(shù)器模塊LPM_COUNTE控制。計(jì)數(shù)器在時(shí)鐘CLK4HZ的控制下,沒0.25s送出一個(gè)6位數(shù)值q5.0,作為存儲(chǔ)模塊music_rom_data的地址輸入端口。這樣便達(dá)到每個(gè)存儲(chǔ)單元以同一頻率進(jìn)行有控制的輸出。6,頻譜
8、顯示模塊DISPCODE和頻率顯示模塊DISPFRENQUENCE有本組另一同學(xué)(袁亮)設(shè)計(jì)。六、實(shí)驗(yàn)過程與原始記錄1,制作存儲(chǔ)模塊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)行存儲(chǔ)。(其實(shí)128位數(shù)據(jù)位已經(jīng)夠本實(shí)驗(yàn)歌曲友誼地久天長(zhǎng)使用)形成如下圖的數(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時(shí),即clock有效時(shí),試驗(yàn)箱端揚(yáng)聲器演奏出樂曲友誼地久天長(zhǎng)的音樂。當(dāng)en_clock=0時(shí),停止演奏。實(shí)驗(yàn)分析:例如二分之一得音符低音5的實(shí)驗(yàn)流程運(yùn)轉(zhuǎn):首先計(jì)數(shù)器COUNTER在時(shí)鐘clk4hz的驅(qū)動(dòng)之下以每個(gè)數(shù)據(jù)0.25s的頻率(即每個(gè)四分之一節(jié)拍音符持續(xù)的時(shí)間)將產(chǎn)生的數(shù)據(jù)000000和000001,并將其依次送入存
24、儲(chǔ)模塊music_rom_data;其對(duì)應(yīng)的存儲(chǔ)地址為音符低音5的編碼000,并將其作為輸出送入tonetab模塊中。在tonetab模塊中以case選擇語(yǔ)句,輸出音符頻率frequence=396,音符編碼code=101以與預(yù)置數(shù)tone=1538,依次送入模塊dispfrenquence,dispcode以與speaker中。然后預(yù)置數(shù)tone在模塊speaker中,將時(shí)鐘0.4MHZ進(jìn)行CLK/2*(2048- TONE10.0)分頻得到輸出speak為396;由此類推。address=000000>index=000>tone=1538>speak=396(持續(xù)時(shí)間
25、0.25s);address=000001>index=000>tone=1538>speak=396(持續(xù)時(shí)間0.25s);address=000010>index=001>tone=1666>speak=523(持續(xù)時(shí)間0.25s);address=000011>index=001>tone=1666>speak=523(持續(xù)時(shí)間0.25s);address=000100>index=001>tone=1666>speak=523(持續(xù)時(shí)間0.25s);address=000101>index=001>to
26、ne=1666>speak=523(持續(xù)時(shí)間0.25s);八、實(shí)驗(yàn)體會(huì)在實(shí)驗(yàn)題目拿到手里的那一刻,還不知意味著什么,只是感覺看著好難,但是也好新奇。心里面有躍躍一試的激動(dòng),但是又因?yàn)橹皬膩?lái)沒有設(shè)計(jì)過此類的設(shè)計(jì)項(xiàng)目,也有一些膽顫。于是我專門找了一整塊的時(shí)間來(lái)研究此道設(shè)計(jì)題,待到抬頭時(shí)卻發(fā)現(xiàn)徐老師給的有關(guān)實(shí)驗(yàn)題目和原理的課件上面已經(jīng)將實(shí)驗(yàn)的步驟和方法以與思想,羅列的清晰可現(xiàn)。我想要是再真的做不出來(lái)可真是對(duì)不起自己的時(shí)間,對(duì)不起這課件上面的字跡,也浪費(fèi)了徐老師的心思!但在實(shí)驗(yàn)實(shí)現(xiàn)的過程中卻遇到了麻煩,(1)首先是制作存儲(chǔ)模塊music_rom_data,因?yàn)橹皼]有遇到過LPM宏功能模塊的使
27、用,還有上課時(shí)沒有認(rèn)真聽這方面的講課容(挺不好意思的),所以不知從何下手,從圖書館查找資料也只是對(duì)LPM宏模塊本身的理解與應(yīng)用,沒有使用步驟,也不知道應(yīng)該以怎樣德形式將頻譜存入.mif格式文件,這對(duì)于實(shí)驗(yàn)就不知要怎樣實(shí)現(xiàn)。周五的晚上于是我對(duì)自己說:你什么時(shí)候想好實(shí)驗(yàn)的存儲(chǔ)方法就什么時(shí)候睡覺,這樣持續(xù)到了2:30,突然恍然大悟,覺醒,于是將音符以編碼的形式將其存儲(chǔ)(好像我有點(diǎn)笨了,呵呵)。(2)然后在進(jìn)行模塊SPEAKER的設(shè)計(jì)時(shí),發(fā)現(xiàn)若以設(shè)計(jì)題目給定的12MHZ進(jìn)行分頻,那預(yù)置數(shù)TONE10.0將為負(fù)數(shù),于是計(jì)算過后,發(fā)現(xiàn)若進(jìn)行30分頻將時(shí)鐘信號(hào)調(diào)制為0.4MHZ則可以正常進(jìn)行試驗(yàn)。接下來(lái)整個(gè)實(shí)驗(yàn)一氣呵成!待到周六本組另外一同學(xué)袁亮將無(wú)誤的顯示模塊連接,呵呵,實(shí)驗(yàn)編譯成功!在這了還要感袁亮同學(xué)對(duì)我的信任!當(dāng)周日的時(shí)候,進(jìn)入了實(shí)驗(yàn)室,心里有點(diǎn)小
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度游樂園場(chǎng)地租賃及游樂設(shè)備租賃合同3篇
- 2024藝術(shù)品慈善捐贈(zèng)合同版B版
- 個(gè)人汽車租賃協(xié)議樣本詳解版
- 二零二五年度智能穿戴設(shè)備技術(shù)服務(wù)電子合同3篇
- 2025年精裝房裝修改造與家具定制合同3篇
- 探索醫(yī)療領(lǐng)域中的分布式能源系統(tǒng)解決方案
- 2025年度個(gè)人房屋抵押貸款擔(dān)保與戶外活動(dòng)組織合同4篇
- 智能消防系統(tǒng)在小區(qū)的應(yīng)用案例
- 現(xiàn)代學(xué)校游泳館的運(yùn)營(yíng)與管理策略
- 展會(huì)參展視覺設(shè)計(jì)與用戶體驗(yàn)的融合
- 2024年可行性研究報(bào)告投資估算及財(cái)務(wù)分析全套計(jì)算表格(含附表-帶只更改標(biāo)紅部分-操作簡(jiǎn)單)
- 湖北省石首楚源“源網(wǎng)荷儲(chǔ)”一體化項(xiàng)目可研報(bào)告
- 醫(yī)療健康大數(shù)據(jù)平臺(tái)使用手冊(cè)
- 碳排放管理員 (碳排放核查員) 理論知識(shí)考核要素細(xì)目表四級(jí)
- 撂荒地整改協(xié)議書范本
- 診所負(fù)責(zé)人免責(zé)合同范本
- 2024患者十大安全目標(biāo)
- 會(huì)陰切開傷口裂開的護(hù)理查房
- 實(shí)驗(yàn)報(bào)告·測(cè)定雞蛋殼中碳酸鈣的質(zhì)量分?jǐn)?shù)
- 部編版小學(xué)語(yǔ)文五年級(jí)下冊(cè)集體備課教材分析主講
- 電氣設(shè)備建筑安裝施工圖集
評(píng)論
0/150
提交評(píng)論