資源描述:
《EDA簡易電子琴設(shè)計報告》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、一、題目分析1、分析要求,確定總體方框圖本設(shè)計基本部分是用VHDL語言設(shè)計一個簡易的八音符電子琴,在?Quartus?II?平臺下下載到Cyclone系列的EP1C12Q240C8芯片中,該電路設(shè)計能夠?qū)崿F(xiàn)DO、RE、MI、FA等八個音調(diào)的電子琴,發(fā)揮部分是設(shè)計一樂曲自動演奏器,用戶自己編制樂曲存入電子琴,電子琴可以完成自動演奏。電子琴音樂產(chǎn)生原理及硬件設(shè)計由于一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了。根據(jù)系統(tǒng)設(shè)計要求,系統(tǒng)設(shè)計采用自頂向下的設(shè)計方法,系統(tǒng)的整體組裝設(shè)計原理圖如圖1所
2、示,它由樂曲自動演奏模塊AUTO、音調(diào)發(fā)生模塊TONE和數(shù)控分頻模塊FENPIN三部分組成。圖1系統(tǒng)的整體組裝設(shè)計原理圖2、最終完成的技能指標(biāo)(1)設(shè)計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲。二、選擇方案通過可編程邏輯器件(PLD)和VHDL14硬件描述引言來實現(xiàn)電子琴的基本部分和發(fā)揮部分的設(shè)計。對于基本部分,設(shè)計的主體是數(shù)控分頻器,對輸入的頻率進(jìn)行分頻,得到各個音階對應(yīng)的頻率最為輸出。當(dāng)按下不同的鍵時發(fā)出不同的聲音。對于發(fā)揮部分,則在原設(shè)計的基礎(chǔ)上,增加一個樂曲存儲模塊,代替了鍵盤
3、輸入,產(chǎn)生節(jié)拍控制(index數(shù)據(jù)存留時間)和音階選擇信號,即在此模塊中可存放一個樂曲曲譜真值表,由一個計數(shù)器來控制此真值表的輸出,而由此計數(shù)器的計數(shù)時鐘信號作為樂曲節(jié)拍控制信號,從而可以設(shè)計出一個純硬件的樂曲自動演奏電路。?方案一:由單片機(jī)來完成設(shè)計??捎脝纹瑱C(jī)控制鍵盤的輸入,以及產(chǎn)生相應(yīng)的頻率信號作為輸出。目前,單片機(jī)的功能已比較強(qiáng)大,集成度日益增高且其設(shè)計和控制比較容易。但是由于在傳統(tǒng)的單片機(jī)設(shè)計系統(tǒng)中必須使用許多分立元件組成單片機(jī)的外圍電路,如鎖存器,譯碼器等都需要單獨(dú)的電路,因此整個系統(tǒng)顯得十分復(fù)雜,抗干擾性差,在運(yùn)行過程中容易死機(jī)或進(jìn)入死循環(huán),可靠性降
4、低,而功耗費(fèi)用增高。?方案二:利用PLC來完成設(shè)計。目前利用PLC的技術(shù)已經(jīng)比較成熟。PLC有其優(yōu)點,?其性能優(yōu)異,體積小,可靠性和精度都比較好,在電子琴的設(shè)計中可采用PLC來完成硬件的控制,但是用PLC實現(xiàn)編程相對比較復(fù)雜,對于電子琴這種小型設(shè)計來說成本過高。?方案三:利用可編程邏輯器件PLD來完成該設(shè)計。利用PLD可以很好的解決上述的問題。它的成品體積小,適合電子琴這種小型設(shè)計。其性能穩(wěn)定,控制精度高(Xilinx公司的高密度,高速可預(yù)測延時,高性能系列芯片),易于管理和屏蔽,抗干擾能力強(qiáng),可靠性高。綜上,在本設(shè)計中選擇第三種方案最優(yōu)。三、各模塊原理及其程序1
5、、樂曲自動演奏模塊樂曲自動演奏模塊(AUTO.VHD)的作用是產(chǎn)生8位發(fā)聲控制輸入信號/當(dāng)進(jìn)行自動演奏時,由存儲在此模塊中的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,從而自動演奏樂曲。為了實現(xiàn)擴(kuò)展部分的設(shè)計,便需要多加上一個音樂存儲模塊,該模塊的作用是產(chǎn)生8位發(fā)聲控制輸入index,auto為0或1時可以選擇自動演奏或者鍵盤輸入,如果auto為0,則而由存儲在此模塊中的8位二進(jìn)制數(shù)來作為發(fā)聲控制輸入,由此便可自動演奏樂曲。此模塊的VHDL語言中包括兩個進(jìn)程,首先是對基準(zhǔn)脈沖進(jìn)行分頻得到4Hz的脈沖,作為第二個進(jìn)程的時鐘信號,它的目的是控制每個音階之間的停頓時間,此處便是1/4
6、=0.25s,第二個進(jìn)程是音樂的存儲,可根據(jù)需要編寫不同的樂曲。?這段模塊的原理圖如圖2所示:14CLKAUTOINDEX0[7.0]INDEX2[7.0]圖2樂曲自動演奏模塊原理圖樂曲自動演奏模塊可以由VHDL語言來實現(xiàn),下面是一段主要代碼:BEGINIFAUTO='0'THENCASECOUNT0ISWHEN0=>INDEX0<="00000100";--3WHEN1=>INDEX0<="00000100";--3WHEN2=>INDEX0<="00000100";--3WHEN3=>INDEX0<="00000100";--3WHEN4=>INDEX0<="
7、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=
8、>INDE