freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vhdl的自動(dòng)奏樂器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(doc畢業(yè)設(shè)計(jì)論文)(編輯修改稿)

2024-07-24 18:58 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 提供一個(gè)4Hz的時(shí)鐘頻率即可產(chǎn)生一拍的時(shí)長(zhǎng)。為了能達(dá)到演奏時(shí)能循環(huán)進(jìn)行,則需設(shè)置一個(gè)時(shí)長(zhǎng)計(jì)數(shù)器,當(dāng)樂曲演奏完時(shí),保證能自動(dòng)從頭開始演奏。本次設(shè)計(jì)樂曲演奏電路結(jié)構(gòu)方框圖如圖321所示:基準(zhǔn)時(shí)鐘12MHz模式選擇 auto手動(dòng)輸入FPGA時(shí)鐘電路數(shù)控分頻器電路音樂節(jié)拍產(chǎn)生電路音調(diào)編碼電路4Hz12MHz揚(yáng)聲器數(shù)碼管 圖321 樂曲演奏電路結(jié)構(gòu)方框圖頂層結(jié)構(gòu)所包含的模塊分別有音調(diào)發(fā)生器(ydfsq)模塊、音調(diào)編碼器(ydbmq)模塊、手動(dòng)\自動(dòng)選擇(bmux)模塊及數(shù)控分頻器(skfpq)模塊。 音調(diào)發(fā)生器模塊音調(diào)發(fā)生器模塊在此模塊中設(shè)置了一個(gè)8位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)最大值為64),這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率選為4Hz,恰好為當(dāng)全音符設(shè)為1s時(shí),四四拍的4分音符的持續(xù)時(shí)間。例如,ydfsq在以下的VHDL邏輯描述中,“月光”樂曲的第一個(gè)音符為“3”,此音在邏輯中停留了4個(gè)時(shí)鐘節(jié)拍,即為1s時(shí)間,相應(yīng)地所對(duì)應(yīng)“3”音符分頻預(yù)置數(shù)為1036在skfpq的輸入端停留了1s。隨著notetabs中的計(jì)數(shù)器按4Hz的時(shí)鐘頻率做加法計(jì)數(shù)時(shí),樂譜逐次被選取,“月光”樂曲就開始自然連續(xù)而且循環(huán)地演奏起來。音調(diào)發(fā)生器模塊VHDL源程序如下:library ieee。use 。 庫的聲明entity ydfsq isport(clk:in std_logic。toneindex:out integer range 0 to 15)。end。architecture bhv of ydfsq issignal counter:integer range 0 to 63。 讀取音符譜中的音符beginprocess(clk,counter)begin if counter=63 thencounter=0。 elsif clk’event and clk=’1’ then counter=counter+1。 end if。end process。process(counter)begincase counter is 將讀取的音符譜輸出when 0 to 3|60 to 63=toneindex=3。when 8 to 11|240to 23=toneindex=5。when 12 to 19=toneindex=6。when 24 to27|36 to 39|48 to 51=toneindex=2。when 40 to 43|52 to 55=toneindex=4。when 56 to 59=toneindex=7。when 4 to 7|44 to 47=toneindex=1。when others=NULL。end case。end process。end。音調(diào)發(fā)生器模塊的仿真圖圖331 音調(diào)發(fā)生器模塊的仿真波形圖通過仿真圖可以清楚的看到,時(shí)鐘clk由0開始計(jì)數(shù),每計(jì)一次數(shù)輸出toneindex的值隨之發(fā)生一定的變化,只不過根據(jù)樂譜的不同,輸出的變化也不盡相同。例如在本次設(shè)計(jì)中,自第4個(gè)時(shí)鐘上升沿來臨到第7個(gè)時(shí)鐘上升沿,輸出toneindex “1”。于是根據(jù)樂譜的不同就輸出不同的音符,作為音調(diào)編碼器的輸入。然后把輸出toneindex輸入到音調(diào)編碼器模塊,進(jìn)行下一步編碼工作。于是,由仿真圖可以知道本模塊輸出的即為演奏音樂的音符譜,說明該程序正確,可以生成邏輯器件。音調(diào)發(fā)生器模塊生成的邏輯器件圖332 音調(diào)發(fā)生器電路模塊生成器件音調(diào)編碼器模塊該編碼模塊的作用為將輸入的音符數(shù)據(jù)翻譯為音樂產(chǎn)生模塊的所需要的分頻系數(shù),并且顯示音符的數(shù)字碼型和高音階,通過對(duì)照?qǐng)D212各音名對(duì)應(yīng)的分頻系數(shù)值及初始值,根據(jù)輸入得到初始值,從而得到分頻系數(shù)以便進(jìn)行分頻,得到所需的頻率。音調(diào)編碼器模塊的VHDL源程序:library ieee。use 。entity ydbmq isport(index:in integer range 0 to 15。code:out integer range 0 to 15。code1:out integer range 0 to 15。tone:out integer range 0 to 2047)。end。architecture bhv of ydbmq isbeginprocess(index)begin 為個(gè)音符賦初始值以便進(jìn)行分頻case index iswhen 0=tone=2047。code=0。code1=0。 when 1=tone=773。code=1。code1=0。when 2=tone=912。code=2。code1=0。 when 3=tone=1036。code=3。code1=0。when 4=tone=1116。code=4。code1=0。when 5=tone=1197。code=5。code1=0。 when 6=tone=1290。code=6。code1=0。when 7=tone=1372。code=7。code1=0。when 8=tone=1410。code=1。code1=1。when 9=tone=1480。code=2。code1=1。when10=tone=1542。code=3。code1=1。when12=tone=1622。code=5。code1=1。 when 15=tone=1728。code=1。code1=2。when others=NULL。end case。end process。end 。音調(diào)編碼器模塊的仿真圖圖333 音調(diào)編碼器模塊的仿真波形圖在此程序中index為音樂節(jié)拍產(chǎn)生模塊輸出的音符數(shù)據(jù),經(jīng)過翻譯后將tone輸出到數(shù)控分頻模塊為其提供分頻系數(shù)的初始值,code為數(shù)碼管顯示的字符數(shù),應(yīng)用模式5,所以直接輸出音符的二進(jìn)制值,code1為高音階指示信號(hào),當(dāng)code1為1是說明輸出為高音階的音符。通過仿真圖可以清楚地看到結(jié)果。音調(diào)編碼器模塊生成的邏輯器件圖334音調(diào)編碼器模塊生成的邏輯器件 手動(dòng)\自動(dòng)選擇模塊手動(dòng)\自動(dòng)選擇模塊根據(jù)設(shè)計(jì)的要求,該簡(jiǎn)易樂曲演奏器能實(shí)現(xiàn)手動(dòng)或自動(dòng)演奏樂曲的功能。于是,可通過一個(gè)按鍵cs來進(jìn)行自動(dòng)與手動(dòng)的選擇,當(dāng)cs按下時(shí),樂曲自動(dòng)演奏,其他情況下均為手動(dòng)演奏樂曲,即可以通過按下其他的按鍵(與cs相連的按鍵除外)來控制不同的音符。與此同時(shí),還需要一個(gè)復(fù)位信號(hào)rst來控制該演奏器是否工作,當(dāng)rst為1時(shí),停止演奏,為0時(shí),可以演奏。以上提到的手動(dòng)與自動(dòng)的選擇只能在rst為0時(shí)有效。手動(dòng)\自動(dòng)選擇模塊的VHDL源程序:library ieee。use 。entity bmux isport(d1,d2:in integer range 0 to 15。cs,rst:in std_logic。
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1