




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄摘 要i1 系統(tǒng)設(shè)計總述11.1 設(shè)計要求11.2 系統(tǒng)組成12 總體程序設(shè)計42.1 頂層模塊設(shè)計流程圖42.2 頂層電路vhdl程序設(shè)計43 單元模塊程序設(shè)計63.1 音樂節(jié)拍和音調(diào)發(fā)生器模塊63.2 音樂譜對應(yīng)分頻預(yù)置數(shù)查表電路模塊73.3 音樂譜對應(yīng)分頻預(yù)置數(shù)查表電路模塊93.4 樂曲演奏音符數(shù)據(jù)文件(媽媽的吻)113.5 定制音符數(shù)據(jù)的rom文件124 vhdl音樂硬件演奏電路系統(tǒng)仿真與調(diào)試154.1 notetabs音樂節(jié)拍和音調(diào)發(fā)生器模塊的仿真154.2 tonetaba分頻預(yù)置數(shù)查表模塊的仿真154.3 speakera音樂符數(shù)控分頻模塊的仿真164.4 擴(kuò)大此音樂硬件演
2、奏電路的通用性185 心得體會20參考文獻(xiàn)21摘 要根據(jù)國家教委與專業(yè)教學(xué)委員會對教育機(jī)構(gòu)的要求,為培養(yǎng)適應(yīng)我國21世紀(jì)國民經(jīng)濟(jì)發(fā)展需要的電子設(shè)置人才;同時基于國家教委面向21世紀(jì)電工電子課程體系改革和電工電子工科教學(xué)基地建設(shè)兩項(xiàng)教學(xué)改革研究成果。要求高等??茖W(xué)校學(xué)生能夠自己動手完成簡單數(shù)字器件的設(shè)計。這不但反應(yīng)了我國當(dāng)前在電子電路的實(shí)驗(yàn)教學(xué)體系、內(nèi)容和方法上的改革思路和教學(xué)水平的提高,更重要的是在加強(qiáng)以傳統(tǒng)電子設(shè)計方法為基礎(chǔ)的工程設(shè)計訓(xùn)練的同時,使學(xué)生能夠盡快掌握現(xiàn)代電子設(shè)計自動化技術(shù)的新方法、新工具和新手段系統(tǒng)的、科學(xué)的培養(yǎng)了學(xué)生的實(shí)際動手能力、理論聯(lián)系實(shí)際的能力、工程設(shè)計能力,創(chuàng)新能力,
3、提高了學(xué)生對基礎(chǔ)實(shí)驗(yàn)的興趣。本次設(shè)計在eda開發(fā)平臺quartus ii 6.0上利用vhdl語言設(shè)計數(shù)控分頻器電路,利用數(shù)控分頻的原理設(shè)計音樂硬件演奏電路,并定制lpm-rom存儲音樂數(shù)據(jù),以“梁?!焙汀霸铝链砦业男摹眱墒讟非鸀槔瑢⒁魳窋?shù)據(jù)存儲到lpm-rom,就達(dá)到了以純硬件的手段來實(shí)現(xiàn)樂曲的演奏效果。只要修改lpm-rom所存儲的音樂數(shù)據(jù),將其換成其他樂曲的音樂數(shù)據(jù),再重新定制lpm-rom,連接到程序中就可以實(shí)現(xiàn)其它樂曲的演奏。本設(shè)計采用的是武漢理工大學(xué)的開放設(shè)計實(shí)驗(yàn)箱,fpga目標(biāo)芯片型號為altera公司的cyclone系列中的ep1c3t144c8n。芯片配置成功后即可進(jìn)行硬
4、件測試:選擇實(shí)驗(yàn)電路結(jié)構(gòu)圖,發(fā)音輸出接speaker,當(dāng)樂曲一遍演奏完成后,樂曲發(fā)生器能自動從頭開始循環(huán)演奏。關(guān)鍵詞: fpga/cpld,音樂硬件演奏電路,vhdl語言設(shè)計,quartus ii 6.01 系統(tǒng)設(shè)計總述1.1 設(shè)計要求這是一種運(yùn)用純硬件實(shí)現(xiàn)樂曲播放的電路,比運(yùn)用微處理器實(shí)現(xiàn)樂曲播放更加復(fù)雜。它運(yùn)用了強(qiáng)大功能的eda工具開放設(shè)計試驗(yàn)箱和硬件描述語言vhdl。本課題以歌曲媽媽的吻來實(shí)現(xiàn)樂曲播放電路的功能。(1)順序播放樂曲功能:當(dāng)電路開始工作時,如果存儲器中有多首樂曲,那么演奏電路將從頭到尾順序播放這些樂曲。(2)循環(huán)播放樂曲功能:當(dāng)演奏完后一首樂曲時,將自動返回到第一首歌曲開始
5、播放,反復(fù)不止,直到關(guān)閉電源電路停止工作為止。(3)樂曲簡譜顯示功能:當(dāng)演奏電路播放樂曲時,能夠?qū)?dāng)前播放的音符通過一列發(fā)光二極管以二進(jìn)制的形式予以顯示。(4)樂曲高音顯示功能:如果電路正在播放高音音符,那么將有一個發(fā)光二極管點(diǎn)亮來顯示。(5)音量大小可調(diào)功能:運(yùn)用eda實(shí)驗(yàn)箱上的數(shù)字功率放大器lm386n,對數(shù)控分頻器輸出的音頻信號予以處理,輸出大小連續(xù)可調(diào)的音頻信號到揚(yáng)聲器。1.2 系統(tǒng)組成(1)音樂硬件演奏電路基本原理 硬件電路的發(fā)聲原理,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制fpga芯片某個引腳輸出一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出相應(yīng)頻率的聲音。樂曲中的每一音符對應(yīng)著
6、一個確定的頻率,要想fpga發(fā)出不同音符的音調(diào),實(shí)際上只要控制它輸出相應(yīng)音符的頻率即可。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個音符的音調(diào)。而要準(zhǔn)確地演奏出一首樂曲,僅僅讓揚(yáng)聲器能夠發(fā)生是不夠的,還必須準(zhǔn)確地控制樂曲的節(jié)奏,即樂曲中每個音符的發(fā)生頻率及其持續(xù)時間是樂曲能夠連續(xù)演奏的兩個關(guān)鍵因素。(2)音符頻率的獲得多個不同頻率的信號可通過對某個基準(zhǔn)頻率進(jìn)行分頻器獲得。由于各個音符的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計算機(jī)得到的分頻系數(shù)四舍五入取整。若基準(zhǔn)頻率過低,則分頻系數(shù)過小,四舍五入取整后的誤差較大。若基準(zhǔn)頻率過
7、高,雖然可以減少頻率的相對誤差,但分頻結(jié)構(gòu)將變大。實(shí)際上應(yīng)該綜合考慮這兩個方面的因素,在盡量減少誤差的前提下,選取合適的基準(zhǔn)頻率。本設(shè)計中選取750khz的基準(zhǔn)頻率。由于現(xiàn)有的高頻時鐘脈沖信號的頻率為12mhz,故需先對其進(jìn)行16分頻,才能獲得750khz的基準(zhǔn)頻率。對基準(zhǔn)頻率分頻后的輸出信號是一些脈寬極窄的尖脈沖信號(占空比=1/分頻系數(shù))。為提高輸出信號的驅(qū)動能力,以使揚(yáng)聲器有足夠的功率發(fā)音,需要再通過一個分頻器將原來的分頻器的輸出脈沖均衡為對稱方波(占空比=1/2),但這時的頻率將是原來的1/2。下表中各音符的分頻系數(shù)就是從750khz的基準(zhǔn)頻率二分頻得到的375khz頻率基礎(chǔ)上計算得到
8、的。由于最大分頻系數(shù)是1274,故分頻器采用11位二進(jìn)制計數(shù)器能滿足要求,樂曲中的休止符,只要將分頻系數(shù)設(shè)為0,即初始值=211-1=2047,此時揚(yáng)聲器不會發(fā)聲。表1 各個音符的頻率及其對應(yīng)的分頻系數(shù)(基準(zhǔn)頻率375khz)音符名頻 率(hz)分頻系數(shù)計數(shù)初值音符名頻率(hz)分頻系數(shù)計數(shù)初值休止符37500002047中音4796.1784681579低音1294.3491274773中音5882.3534251622低音2330.3961135912中音6989.4463791668低音3370.9210111036中音71136.3633301717低音4386.5989701077高
9、音11175.5493191728低音5394.7379501197高音21353.7902771770低音6495.3767571290高音31512.0972481799低音7555.566751372高音41609.4422331814中音1588.6976371410高音51802.8842081839中音2638.845871480高音62027.0271851862中音3742.5745051542高音72272.7271651882(3)樂曲節(jié)奏的控制 本設(shè)計中的梁祝和月亮代表我的心的樂曲,最小的節(jié)拍為1/4拍,若將1拍的時間定為1秒,則只需要提供一個4hz的時鐘頻率即可產(chǎn)生1/
10、4拍的時長(0.25秒),對于其它占用時間較長的節(jié)拍(必為1/4拍的整數(shù)倍)則只需要將該音符連續(xù)輸出相應(yīng)的次數(shù)即可。計數(shù)時鐘信號作為輸出音符快慢的控制信號,時鐘快時輸出節(jié)拍速度就快,演奏的速度也就快,時鐘慢時輸出節(jié)拍的速度就慢,演奏的速度自然降低。(4)樂譜發(fā)生器本文將樂譜中的音符數(shù)據(jù)存儲在lpm-rom中,如“梁?!睒非械牡谝粋€音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒的時間,相應(yīng)地,音符“3”就要在lpm-rom中連續(xù)的四個地址上都存儲。當(dāng)一個4hz的時鐘來時,相應(yīng)地就從lpm-rom中輸出一個音符數(shù)據(jù)。(5)音樂硬件演奏電路總體設(shè)計流程當(dāng)一個4hz的時鐘脈沖來到時,樂譜發(fā)生器
11、模塊輸出一個音符數(shù)據(jù)給分頻系數(shù)模塊,分頻系數(shù)模塊輸出此音符相應(yīng)的分頻系數(shù),將分頻系數(shù)送給數(shù)控分頻器模塊,當(dāng)12mhz的時鐘脈沖來到時,數(shù)控分頻器就根據(jù)分頻系數(shù)輸出相應(yīng)的頻率(即此音符所對應(yīng)的發(fā)生頻率)給揚(yáng)聲器,揚(yáng)聲器就可發(fā)出對應(yīng)音符的聲音來.連續(xù)的4hz的時鐘脈沖就將樂譜發(fā)生器里所存儲的音符數(shù)據(jù)一個接一個的送給了分頻系數(shù)模塊,再經(jīng)過數(shù)控分頻模塊,最后揚(yáng)聲器一個接一個的發(fā)出音符數(shù)據(jù)所對應(yīng)的聲音來。曲子也就流暢的播放出來了,當(dāng)樂曲一遍演奏完成后,樂曲發(fā)生器能自動從頭開始循環(huán)演奏,按下sel鍵時播放第二首歌,按下rst鍵時從頭開始播放歌曲。音樂硬件演奏電路主要是用vhdl語言來設(shè)計,并利用quart
12、us6.0軟件工具來編譯、測試和仿真,音樂硬件演奏電路設(shè)計總體設(shè)計方框圖如下圖所示。圖1.1 音樂硬件演奏電路設(shè)計總體設(shè)計方框圖 2 總體程序設(shè)計2.1 頂層模塊設(shè)計流程圖圖2.1 頂層模塊設(shè)計流程圖2.2 頂層電路vhdl程序設(shè)計library ieee; - 硬件演奏電路頂層設(shè)計use ieee.std_logic_1164.all;entity songer isport ( clk12mhz : in std_logic; -音調(diào)頻率信號 clk8hz : in std_logic; -節(jié)拍頻率用于控制音長(節(jié)拍)的時鐘頻率; sel : in std_logic;-音樂選擇鍵 rst
13、 : in std_logic;-復(fù)位鍵 code1 : out std_logic_vector (3 downto 0);- 簡譜碼輸出顯示 high1 : out std_logic; -高8度指示 spkout : out std_logic );-聲音輸出end;architecture one of songer iscomponent notetabs-元件u1例換化 port ( clk : in std_logic; sel : in std_logic; rst : in std_logic; toneindex : out std_logic_vector (3 down
14、to 0) );end component;component tonetaba-元件u2例換化 port ( index : in std_logic_vector (3 downto 0) ; code : out std_logic_vector (3 downto 0) ; high : out std_logic; tone : out std_logic_vector (10 downto 0) );end component;component speakera-元件u3例換化 port ( clk : in std_logic; tone : in std_logic_vect
15、or (10 downto 0); spks : out std_logic );end component;signal tone : std_logic_vector (10 downto 0);signal toneindex : std_logic_vector (3 downto 0);beginu1 : notetabs port map (clk=clk8hz,rst=rst,sel=sel, toneindex=toneindex);-參數(shù)傳遞映射語句u2 : tonetaba port map(index=toneindex,tone=tone,code=code1,high
16、=high1);u3 : speakera port map(clk=clk12mhz,tone=tone, spks=spkout);end;3 單元模塊程序設(shè)計根據(jù)頂層原理圖,共分為music模塊、地址發(fā)生器模塊、分頻預(yù)置數(shù)模塊、十六進(jìn)制模塊、數(shù)控分頻模塊這五個模塊。music模塊存放樂曲中的音符數(shù)據(jù),地址發(fā)生器模塊作為music模塊中所定制的音符數(shù)據(jù)rom的地址發(fā)生器,分頻預(yù)置數(shù)模塊提供分頻預(yù)置數(shù)即給數(shù)控分頻模塊提供計數(shù)初值,十六進(jìn)制模塊對12mhz的時鐘脈沖進(jìn)行16分頻,得到750khz的頻率,給數(shù)控分頻模塊提供時鐘脈沖。數(shù)控分頻模塊根據(jù)分頻預(yù)置數(shù)輸出各個音符所對應(yīng)的頻率。3.1 音樂
17、節(jié)拍和音調(diào)發(fā)生器模塊圖3.1 音樂節(jié)拍和音調(diào)發(fā)生器模塊(1) 音樂節(jié)拍和音調(diào)發(fā)生器模塊rtl電路圖圖3.2 音樂節(jié)拍和音調(diào)發(fā)生器模塊rtl電路圖 (2) 音樂節(jié)拍和音調(diào)發(fā)生器模塊vhdl程序設(shè)計library ieee;-音樂節(jié)拍和音調(diào)發(fā)生器模塊use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity notetabs isport ( clk : in std_logic;-音樂節(jié)拍時鐘4hz sel : in std_logic;-音樂選擇鍵 rst : in std_logic;-復(fù)位鍵 toneindex :
18、out std_logic_vector (3 downto 0) );end;architecture one of notetabs iscomponent music -音符數(shù)據(jù)rom1port( address : in std_logic_vector (7 downto 0); clock : in std_logic ; q : out std_logic_vector (3 downto 0);end component;signal counter : std_logic_vector (7 downto 0);-8位二進(jìn)制計數(shù)器begincnt8 : process(clk
19、, counter,sel,rst)beginif (clkevent and clk = 1) and (counter=256 or rst=0) then counter = 00000000;counter =counter+1; end if; if (clkevent and clk = 1) and (sel=0) then counter =10010000;counter counter , q=toneindex,clock=clk);end;(2) 地址發(fā)生器模塊地址發(fā)生器模塊設(shè)置了一個8位二進(jìn)制計數(shù)器(計數(shù)最大值為256),作為音符數(shù)據(jù)rom的地址發(fā)生器。每來一個時鐘脈
20、沖信號(clk),8位二進(jìn)制計數(shù)器就計數(shù)一次,rom文件中的地址也就隨著遞增,音符數(shù)據(jù)rom中的音符也就一個接一個連續(xù)的取出來了。在地址發(fā)生器的vhdl設(shè)計中,這個計數(shù)器的計數(shù)頻率選為4hz,即每一計數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒,四四拍的4分音符持續(xù)時間。例如,地址發(fā)生器在以下的vhdl邏輯描述中,“梁?!睒非牡谝粋€音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間。那么相應(yīng)隨著程序4中的計數(shù)器按4hz的時鐘頻率作加法計數(shù)時,即隨地址遞增時,將從音符數(shù)據(jù)rom中將連續(xù)取出4個音符“3”通過toneindex3.0端口輸向分頻預(yù)置數(shù)模塊。這樣梁祝樂曲中的音符就一個接一
21、個的通過toneindex3.0端口輸向分頻預(yù)置數(shù)模塊。3.2 音樂譜對應(yīng)分頻預(yù)置數(shù)查表電路模塊(1) 音樂譜分頻預(yù)置數(shù)模塊圖3.3 音樂譜分頻預(yù)置數(shù)模塊 (2) 音樂譜對應(yīng)分頻預(yù)制數(shù)查表電路vhdl程序設(shè)計音樂譜分頻預(yù)置數(shù)模塊是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路。它提供了每個音符所對應(yīng)的分頻預(yù)置數(shù),即給數(shù)控分頻模塊提供計數(shù)初值,這里以“梁?!睒非鸀槔?,列出了在這個樂曲中所用到的13個音符的分頻預(yù)置數(shù)。在這個模塊的vhdl邏輯描述中設(shè)置了四四拍樂曲中全部音符所對應(yīng)的分頻預(yù)置數(shù),共13個,每一音符的停留時間由音樂節(jié)拍和地址發(fā)生器模塊的時鐘(clk)的輸入頻率決定,在此為4hz。這13個值的輸出由
22、程序3的4位輸入值index3.0確定。輸向程序4中index3.0的值又由地址發(fā)生器模塊的輸出toneindex3.0的輸出值和持續(xù)時間決定。模塊的功能是輸出各個音符所對應(yīng)的分頻預(yù)置數(shù),即當(dāng)index是“0000”,tone輸出為2047,即休止符的分頻預(yù)置數(shù);當(dāng)index是“0101”時, tone輸出為1197即低音5的分頻預(yù)置數(shù);當(dāng)index是“1111”時, tone輸出為1728即高音1的分頻預(yù)置數(shù)等等其它狀態(tài)時,tone分別輸出相應(yīng)音符的分頻預(yù)置數(shù)。分頻預(yù)置數(shù)模塊的vhdl設(shè)計程序如下:library ieee;-音樂譜對應(yīng)分頻預(yù)制數(shù)查表電路模塊use ieee.std_logi
23、c_1164.all;entity tonetaba isport ( index : in std_logic_vector (3 downto 0) ;-4位預(yù)制數(shù)查表 code : out std_logic_vector (3 downto 0) ; high : out std_logic;-音樂高8度指示 tone : out std_logic_vector (10 downto 0) );-音樂符對應(yīng)分頻11位end;architecture one of tonetaba isbeginsearch : process(index)begincase index is - 譯
24、碼電路,查表方式,控制音調(diào)的預(yù)置數(shù)13組頻率when 0000 = tone=11111111111 ; code=0000; high tone=01100000101 ; code=0001; high tone=01110010000 ; code=0010; high tone=10000001100 ; code=0011; high tone=10010101101 ; code=0101; high tone=10100001010 ; code=0110; high tone=10101011100 ; code=0111; high tone=10110000010 ; co
25、de=0001; high tone=10111001000 ; code=0010; high tone=11000000110 ; code=0011; high tone=11001010110 ; code=0101; high tone=11010000100 ; code=0110; high tone=11011000000 ; code=0001; high null;end case;end process;end;3.3 音樂符數(shù)控11分頻電路模塊3.3 音樂譜對應(yīng)分頻預(yù)置數(shù)查表電路模塊(1) 音樂符數(shù)控11分頻電路模塊圖3.4音樂符數(shù)控11分頻電路模塊(2) 音樂符數(shù)控1
26、1分頻電路模塊rtl電路圖圖3.4音樂符數(shù)控11分頻電路模塊rtl電路圖 (3) 音樂符數(shù)控11分頻模塊電路vhdl程序設(shè)計音符的頻率由數(shù)控分頻模塊獲得,這是一個數(shù)控分頻電路。它是由一個初值可變的加法計數(shù)器構(gòu)成。該計數(shù)器的模為2047,當(dāng)計數(shù)器記滿時,計數(shù)器產(chǎn)生一個溢出信號full,此溢出信號就是用作發(fā)音的頻率信號。在計數(shù)器的輸入端給定不同的初值,而此預(yù)置數(shù)就是表1中的計數(shù)初值,就可得到不同音符的發(fā)音頻率信號。它計滿時所需要的計數(shù)初值可由下式來表示。計數(shù)初值(tone)=2047-分頻系數(shù)而分頻系數(shù)又可有下式來求:分頻系數(shù)=基準(zhǔn)頻率/音符的發(fā)生頻率低音時tone值小,分頻系數(shù)大,溢出信號周期長
27、,揚(yáng)聲器發(fā)出的聲音低,tone隨音樂的樂譜變化大,自動控制分頻比,實(shí)現(xiàn)了數(shù)控分頻,發(fā)生信號的頻率與音調(diào)tone成正比。這就是利用數(shù)控分頻器自動演奏音樂的原理。時鐘(clk)端輸入的是在十六進(jìn)制模塊里對12mhz的信號進(jìn)行16分頻得到的750khz,750khz的信號根據(jù)分頻預(yù)置數(shù)模塊中所提供的計數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。此時從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅(qū)動揚(yáng)聲器,需另加一個d觸發(fā)器以均衡其占空比,這時的頻率就變?yōu)樵瓉淼?/2,剛好就是相應(yīng)音符的頻率。數(shù)控分頻模塊中對clk輸入信號的分頻比由11位預(yù)置數(shù)tone10.0決定。fout的輸出頻率將決定每
28、一個音符的音調(diào),這樣,分頻計數(shù)器的預(yù)置值tone10.0與fout的輸出頻率就有了對應(yīng)關(guān)系。例如在分頻預(yù)置數(shù)模塊中若取tone10.0=1036,將發(fā)出音符為“3”音的信號頻率。音符的頻率由數(shù)控分頻模塊vhdl程序如下:library ieee;-音樂符數(shù)控分頻電路模塊use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport ( clk : in std_logic;-音調(diào)頻率信號12mhz tone : in std_logic_vector (10 downto 0);-音樂符對應(yīng)分
29、頻11位 spks : out std_logic );-聲音輸出end;architecture one of speakera is signal preclk, fullspks : std_logic;begindivideclk : process(clk) variable count4 : std_logic_vector (3 downto 0) ; begin preclk 11 then preclk = 1; count4 := 0000; elsif clkevent and clk = 1 then count4 := count4 + 1; end if;end p
30、rocess;genspks : process(preclk, tone)- 11位可預(yù)置計數(shù)器 variable count11 : std_logic_vector (10 downto 0); begin if preclkevent and preclk = 1 then if count11 = 16#7ff# then count11 := tone ; fullspks = 1; else count11 := count11 + 1; fullspks = 0; end if; end if;end process;delayspks : process(fullspks)-
31、將輸出再2分頻,展寬脈沖,使揚(yáng)聲器有足夠功率發(fā)音 variable count2 : std_logic; begin if fullspksevent and fullspks = 1 then count2 := not count2; if count2 = 1 then spks = 1; else spks megawizard plug-in manager,選擇“creat a new”,然后按“next”鍵,選擇lpm-rom;最后在browse下的欄中鍵入路徑與輸出文件名,注意后綴vhd小寫。(2)單擊“next”鍵,選擇rom數(shù)據(jù)位寬度為4,地址線寬為256,即設(shè)置此rom
32、能存儲4位二進(jìn)制數(shù)據(jù)共256個。(3)通過“browse” 鈕,找到rom中的加載文件路徑和文件名:注意rom元件的inclock是地址鎖存時鐘。(4)打開已定制的rom文件,將它設(shè)置為工程,并確定目標(biāo)器件,進(jìn)行測試仿真波形,按照定制步驟對音符數(shù)據(jù)文件進(jìn)行rom定制。定制好的rom文件vhdl程序如下:library ieee;use ieee.std_logic_1164.all;entity music is port ( address : in std_logic_vector (7 downto 0); inclock : in std_logic ; q : out std_log
33、ic_vector (3 downto 0);end music;architecture syn of musicis signal sub_wire0 : std_logic_vector (3 downto 0); component lpm_rom generic ( lpm_width: natural; lpm_widthad : natural; lpm_address_control: string; lpm_outdata : string; lpm_file : string); port ( address : in std_logic_vector (7 downto
34、0); inclock : in std_logic ; q : out std_logic_vector (3 downto 0); end component;begin q 4, lpm_widthad = 8, lpm_address_control = registered, lpm_outdata = unregistered, lpm_file = g:/music/singer/singer.mif) port map ( address = address, inclock = inclock, q = sub_wire0);end syn;4 vhdl音樂硬件演奏電路系統(tǒng)仿
35、真與調(diào)試4.1 notetabs音樂節(jié)拍和音調(diào)發(fā)生器模塊的仿真(1) 波形仿真將所編寫的音樂節(jié)拍和音調(diào)模塊notetabs的程序設(shè)為工程,選用altera公司的cyclone系列中的epic12q240c8為目標(biāo)芯片進(jìn)行仿真。仿真結(jié)果如下圖:圖4.1音樂節(jié)拍和音調(diào)模塊notetabs波形仿真4.2 tonetaba分頻預(yù)置數(shù)查表模塊的仿真(1) 波形仿真將所編寫的分頻預(yù)置數(shù)查表模塊tonetaba的程序設(shè)為工程,選用altera公司的cyclone系列中的epic12q240c8為目標(biāo)芯片進(jìn)行仿真。仿真結(jié)果如下圖:圖4.2 分頻預(yù)置數(shù)查表模塊tonetaba波形仿真(2) 模塊功能分析與調(diào)試t
36、onetaba分頻預(yù)置數(shù)模塊的功能是輸出各個音符所對應(yīng)的分頻預(yù)置數(shù),由上面的仿真波形圖可看到若當(dāng)index是“0000”,tone輸出為2047,即休止符的分頻預(yù)置數(shù);當(dāng)index是“0101”時,tone輸出為1197即低音5的分頻預(yù)置數(shù);當(dāng)index是“1111”時, tone輸出為1728即高音1的分頻預(yù)置數(shù)等等其它狀態(tài)時,tone分別輸出相應(yīng)音符的分頻預(yù)置數(shù),仿真波形圖證明了程序?qū)崿F(xiàn)了模塊的功能。4.3 speakera音樂符數(shù)控分頻模塊的仿真(1) 波形仿真將所編寫的音樂符數(shù)控分頻模塊speakera的程序設(shè)為工程,選用altera公司的cyclone系列中的epic12q240c8
37、為目標(biāo)芯片進(jìn)行仿真。仿真結(jié)果如下圖:圖4.3 speakera音樂符數(shù)控分頻模塊波形仿真(2) 模塊功能分析與調(diào)試speakera 音樂符數(shù)控分頻此模塊的功能是根據(jù)初始值tone的值,對輸入時鐘信號clk的頻率進(jìn)行分頻,得到想要的音符的發(fā)聲頻率其時鐘(clk)端輸入的是在十六進(jìn)制模塊里對12mhz的信號進(jìn)行16分頻得到的750khz,750khz的信號根據(jù)分頻預(yù)置數(shù)模塊中所提供的計數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。此時從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅(qū)動揚(yáng)聲器,需另加一個d觸發(fā)器以均衡其占空比,這時的頻率就變?yōu)樵瓉淼?/2,剛好就是相應(yīng)音符的頻率。在clk端輸
38、入一具有較高頻率的信號(這里是12mhz)的信號,通過分頻后由cout輸出。這里是對12mhz的信號進(jìn)行16分頻得到750khz的信號。750khz的時鐘脈沖信號是給數(shù)控分頻模塊提供時鐘信號。數(shù)控分頻模塊中對clk輸入信號的分頻比由11位預(yù)置數(shù)tone10.0決定。spkout的輸出頻率將決定每一個音符的音調(diào),這樣,分頻計數(shù)器的預(yù)置tone10.0與fout的輸出頻率就有了對應(yīng)關(guān)系。若在分頻預(yù)置數(shù)模塊中若取 tone10.0=1036,將發(fā)出音符為“3”音的信號頻率。在這個仿真波形圖中,tone的值可設(shè)為6c0(即高音1的分頻預(yù)置數(shù)1728),clk的頻率為750khz,spkout輸出的脈沖
39、信號的周期為849.9291us(即1176.568hz),接近高音1的發(fā)聲頻率。由表中可知高音1的分頻系數(shù)為319,即對輸入時鐘clk進(jìn)行319次分頻就可得高音1的發(fā)聲頻率,因此這個程序?qū)崿F(xiàn)了模塊的功能。4.4 擴(kuò)大此音樂硬件演奏電路的通用性前面所設(shè)計的電路只能演奏“梁祝”曲子,但是在實(shí)際應(yīng)用中,若能將電路實(shí)用于各種曲子的演奏,它的實(shí)用性和應(yīng)用范圍就會擴(kuò)大許多。這里主要通過修改分頻預(yù)置數(shù)模塊的程序,使其實(shí)用于各種曲子的演奏。另外要使更改樂曲方便,主要通過重新設(shè)置音符數(shù)據(jù)文件,再對其進(jìn)行l(wèi)pm-rom定制。在前面的vhdl設(shè)計中,我們只能通過程序輸出“梁?!鼻又械?3個音符的分頻預(yù)置數(shù)(即計
40、數(shù)初值),但是在其它的樂曲中可能會用到另外的那些音符,因此對程序進(jìn)行修改完善它的功能,使其能輸出另外那些音符的分頻預(yù)置數(shù)。把修改的程序代替原來此模塊的程序連入頂層文件后,要使所設(shè)計的音樂硬件演奏電路可隨意更改曲子,只要修改音符數(shù)據(jù)文件,在那些連續(xù)的地址上存儲曲子中相應(yīng)的音符,再對音符數(shù)據(jù)文件進(jìn)行rom定制,最后連接到整個電路中即可實(shí)現(xiàn)。程序修改如下:library ieee;use ieee.std_logic_1164.all;entity tonetaba is port( index : in std_logic_vector(4 downto 0);-5位預(yù)制數(shù)查表碼code : ou
41、t std_logic_vector(4 downto 0); high : out std_logic; tone : out std_logic_vector(10 downto 0);-音樂符對應(yīng)分頻11位end;architecture one of tonetaba isbegin search : process(index) begin case index iswhen 00000=tone=11111111111;code=00000;hightone=01100000101;code=00001;hightone=01110010000;code=00010;highton
42、e=10000001100;code=00011;hightone=10000110101;code=00100;hightone=10010101101;code=00101;hightone=10100001010;code=00110;hightone=10101011100;code=00111;hightone=10110000010;code=01000;hightone=10111001000;code=01001;hightone=11000000110;code=01010;hightone=11000101000;code=01011;hightone=1100101011
43、0;code=01100;hightone=11010000100;code=01101;hightone=11010110101;code=01110;hightone=11011000000;code=10001;hightone=11011101010;code=10010;hightone=11100000111;code=10011;hightone=11100010110;code=10100;hightone=11100101111;code=10101;hightone=11101000110;code=10110;hightone=11101011010;code=10111
44、;high null; end case; end process;end;5 心得體會課程設(shè)計是針對某一理論課程的要求,對學(xué)生進(jìn)行綜合性實(shí)踐訓(xùn)練的實(shí)踐教學(xué)環(huán)節(jié),可以提高學(xué)生運(yùn)用課程中所學(xué)的理論知識與實(shí)踐緊密結(jié)合,獨(dú)立地解決實(shí)際問題的能力。在這次課程設(shè)計過程中使我從中學(xué)到許多以前在課本和課堂上所無法學(xué)到的,特別是在課程設(shè)計過程中查找資料的過程中從中學(xué)到許多以前在課本和課堂上所無法學(xué)到的并從中體會到許多的樂趣,從而豐富了自己,使自己無論是上課時還是在課余都感到很充實(shí)。在本次課程設(shè)計的過程中,曾得到過老師與幾位同學(xué)的悉心指導(dǎo)與幫助,才使得我們的設(shè)計非常圓滿的完成,在此對他們表示我們最衷心的感謝,謝
45、謝你們!因?qū)W習(xí)知識的能力和時間有限,并且此次eda課程設(shè)計對于我們來說還只是初體驗(yàn),因此在本次的課程設(shè)計過程中,難免存在錯誤,懇請老師給以批評指正,并再次感謝曾幫助過我們的老師和幾位同學(xué)。 參考文獻(xiàn)1 潘松eda技術(shù)實(shí)用教程北京:科學(xué)教育出版社.20062 quartus semiconductor data books. quartus semiconductor corporation. 20013 杭州康芯電子有限公司gw48-pk3實(shí)驗(yàn)系統(tǒng)說明書杭州康芯電子有限公司2006附錄1 音樂演奏電路vhdl源程序程序1:4hz時鐘發(fā)生器模塊程序clk4hzlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利開發(fā)許可合同范例
- 修房子承攬合同范例
- 古建磚瓦出售合同范本
- 北京家裝合同范本
- 內(nèi)墻涂料修補(bǔ)合同范本
- 重慶輕工職業(yè)學(xué)院《EP系統(tǒng)原理與應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 滁州職業(yè)技術(shù)學(xué)院《藥學(xué)文獻(xiàn)檢索與利用》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州旅游職業(yè)學(xué)院《英語學(xué)習(xí)心理與策略》2023-2024學(xué)年第一學(xué)期期末試卷
- 常州幼兒師范高等??茖W(xué)校《涉外秘書英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安海棠職業(yè)學(xué)院《Java+語言程序設(shè)計實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 期末試卷(試題)-2024-2025學(xué)年滬教版三年級上冊數(shù)學(xué)
- 風(fēng)險評估報告模板
- 2024年高考全國甲卷歷史試題(含答案)
- NB-T 33015-2014 電化學(xué)儲能系統(tǒng)接入配電網(wǎng)技術(shù)規(guī)定
- 統(tǒng)編版語文四年級上冊第七單元 講述人物事跡 弘揚(yáng)家國情懷單元任務(wù)群整體公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 2024年山東教育廳事業(yè)單位筆試真題
- CJT264-2007 水處理用橡膠膜微孔曝氣器
- 母嬰保健技術(shù)服務(wù)工作總結(jié)報告
- (高清版)WST 227-2024 臨床檢驗(yàn)項(xiàng)目標(biāo)準(zhǔn)操作程序編寫要求
- 配位化學(xué) 本科生版 知到智慧樹網(wǎng)課答案
- 《配電線路旁路作業(yè)工具裝備 第1部分 柔性電纜及連接器》
評論
0/150
提交評論