新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 基于FPGA的音樂硬件演奏電路設(shè)計與實現(xiàn)(一)

基于FPGA的音樂硬件演奏電路設(shè)計與實現(xiàn)(一)

作者: 時間:2013-05-09 來源:網(wǎng)絡(luò) 收藏

1 系統(tǒng)的設(shè)計要求

本文引用地址:http://m.butianyuan.cn/article/175241.htm

應(yīng)用VHDL硬件描述語言,設(shè)計一個樂曲硬件演奏,它能將一首預(yù)先設(shè)置存儲好的樂曲自動播放出來,除此之外,也能夠通過按鍵的方式輸入音符,使其具備簡易電子琴的功能。通過此項研究,能夠深切的體會利用EDA工具開發(fā)的優(yōu)越性,在此基礎(chǔ)上,對樂曲硬件演奏功能進行豐富,具有一定的社會實用性。

根據(jù)硬件演奏的功能進行全局分析,采用自上至下的設(shè)計方法,從系統(tǒng)總體要求出發(fā),逐步將設(shè)計內(nèi)容細化,最后完成系統(tǒng)結(jié)構(gòu)的整體設(shè)計。將功能分為以下幾個部分,1)實現(xiàn)預(yù)先設(shè)置樂曲的播放功能;2)實現(xiàn)預(yù)置樂曲的暫停和繼續(xù)播放實時控制功能;3)實現(xiàn)預(yù)置多首樂曲間的切換功能。

預(yù)置樂曲,本文選取了《梁?!返囊欢巫黝A(yù)置,作預(yù)置時,需要將樂曲音符轉(zhuǎn)換成相應(yīng)的代碼,通過計算逐一將音符轉(zhuǎn)換成代碼,通過EDA開發(fā)平臺quartusii6.0進行樂曲定制。

為了提供樂曲發(fā)音所需要的發(fā)音頻率,編寫數(shù)控分頻器程序,對單一輸入高頻,進行預(yù)置數(shù)分頻,生成每個音符發(fā)音的相應(yīng)頻率。

為了給分頻提供預(yù)置數(shù),需要計算分頻預(yù)置數(shù)。

對每部分結(jié)構(gòu)單元逐一進行編譯,生成相應(yīng)的元器件符號,并對獨立結(jié)構(gòu)單元功能進行仿真。

2 系統(tǒng)的詳細設(shè)計方案

2.1 頂層實體描述

按照EDA開發(fā)流程,采用VHDL硬件描述語言開發(fā),將樂曲硬件演奏電路設(shè)計進行模塊化分解,層次化設(shè)計,分成幾個單獨的結(jié)構(gòu)體,每個結(jié)構(gòu)體實現(xiàn)部分功能,最后,經(jīng)頂層文件將各單獨結(jié)構(gòu)體進行綜合,實現(xiàn)樂曲硬件演奏。

有四個輸入,三個輸出端口。

四輸入端口分別是:clk8hz端口,作為節(jié)拍脈沖信號輸入端口;clk12mhzZ端口,作為發(fā)音頻率初始信號輸入端口;P輸入端口,作為控制歌曲暫停和繼續(xù)播放的輸入端口。ch輸入端口,作為控制歌曲之間切換播放的輸入端口。

三輸出端口分別是:code1輸出端口,作為音符簡碼輸出LED顯示端口;high1輸出端口,作為音符高8度指示端口;spkout輸出端口,作為樂曲的聲音輸出端口。

2.2 模塊劃分

本系統(tǒng)主要由三個功能模塊組成:notetabsvhd,tonetaba.vhd和speakera.vhd.第一部分notetabs,地址發(fā)生器,實現(xiàn)按節(jié)拍讀樂譜的功能;第二部分tonetaba,查表電路,為speakera提供分頻預(yù)置數(shù),實現(xiàn)樂曲譯碼輸出CODE[3:0];第三部分speakera,產(chǎn)生發(fā)音頻率,實現(xiàn)樂曲播放。系統(tǒng)結(jié)構(gòu)圖如圖2.

為了實現(xiàn)樂曲的播放,首先需要將曲譜定制到音符數(shù)據(jù)ROM里面,然后才能按照一定的節(jié)拍從ROM中讀出曲譜。由于所選曲子中不含低音,轉(zhuǎn)換關(guān)系如表1所示。

DIY機械鍵盤相關(guān)社區(qū):機械鍵盤DIY


分頻器相關(guān)文章:分頻器原理

上一頁 1 2 下一頁

關(guān)鍵詞: 電路 測試

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉