鐘秀媚 , 陳榮軍 ,2, 李偉健
(1.中山大學(xué) 信息科學(xué)與技術(shù)學(xué)院,廣東 廣州 510006;2.中山大學(xué) 南方學(xué)院,廣東 廣州 510970)
現(xiàn)代娛樂(lè)設(shè)備多種多樣,各種新奇的發(fā)明層出不窮,大大豐富了人們的娛樂(lè)休閑和生活。而其中數(shù)字音樂(lè)電子琴由于其操作簡(jiǎn)單、價(jià)格低廉而廣受大眾喜愛(ài)。數(shù)字音樂(lè)電子琴是現(xiàn)代電子科技與音樂(lè)結(jié)合的產(chǎn)物,傳統(tǒng)的鋼琴由于其體積龐大笨重、價(jià)格昂貴,普通家庭的孩子如果想要學(xué)琴而又無(wú)法買得起鋼琴的話,電子琴就是一個(gè)很好的選擇。國(guó)內(nèi)外均有許多對(duì)電子琴的研究和創(chuàng)意發(fā)明[1-4],文中介紹的是一種基于FPGA和超聲波測(cè)距的虛擬電子琴。
該虛擬電子琴可用于家庭娛樂(lè)或幼兒初識(shí)教育,也可以作適當(dāng)?shù)男薷脑O(shè)計(jì)后作為家庭或公共場(chǎng)合卡拉OK系統(tǒng)、跳舞機(jī)等。它是一種集娛樂(lè)、教育和醫(yī)療保健于一體的,同時(shí)具有結(jié)構(gòu)簡(jiǎn)單、成本低廉、對(duì)環(huán)境友好等特點(diǎn)的裝置。
系統(tǒng)總的架構(gòu)是由FPGA(Cyclone III)、超聲波測(cè)距模塊和蜂鳴器共同組成。系統(tǒng)結(jié)構(gòu)框圖如圖1所示,F(xiàn)PGA作為系統(tǒng)控制單元,控制超聲波模塊向空間中發(fā)射超聲波信號(hào),F(xiàn)PGA控制模塊內(nèi)設(shè)定的定時(shí)/計(jì)數(shù)器counter1開始計(jì)數(shù),形成一個(gè) “虛擬琴鍵鍵盤”,該琴鍵的鍵盤寬度由counter1決定,當(dāng)測(cè)量到手指處于某一“鍵盤”位置,即超聲波遇到手指被反射回來(lái)由超聲波模塊接收到,對(duì)手指的所處“琴鍵”位置進(jìn)行測(cè)量,超聲波模塊向FPGA控制模塊返回相應(yīng)的測(cè)量信號(hào),定時(shí)/計(jì)數(shù)器counter0由該回響信號(hào)控制進(jìn)行計(jì)數(shù),計(jì)算出這一“按鍵”,選擇相應(yīng)的音符(頻率)傳送給蜂鳴器,蜂鳴器發(fā)出某一音調(diào)的聲音。當(dāng)手指在虛擬的“鍵盤”上靈動(dòng)跳躍時(shí),蜂鳴器便可以發(fā)出一連串美妙的音樂(lè)。
圖1 虛擬電子琴的系統(tǒng)結(jié)構(gòu)框圖Fig.1 Structure diagram of the virtual electronic piano system
虛擬鍵盤模塊是由超聲波測(cè)距模塊和虛擬琴鍵模塊組成。
超聲波測(cè)距模塊是一種通過(guò)發(fā)射超聲波和接收回響信號(hào),測(cè)量回響時(shí)差來(lái)進(jìn)行測(cè)量物體距離的裝置。該裝置具有結(jié)構(gòu)簡(jiǎn)單、受環(huán)境光度影響小、成本低廉等特點(diǎn)。本設(shè)計(jì)采用的是DYP-ME007超聲波測(cè)距模塊。由于超聲波在空氣中的傳播速度受環(huán)境溫度的影響[5],因此,為了更精確靈敏地測(cè)量物體位置,DYP-ME007超聲波測(cè)距模塊中加入了溫度補(bǔ)償電路。DYP-ME007超聲波測(cè)距模塊有out和echo兩種輸出方式,out為只要收到一個(gè)回波則輸出一個(gè)脈沖信號(hào),echo為收到回波后輸出一個(gè)脈沖寬度與距離成正比的脈沖信號(hào),這里選擇的是echo引腳。DYP-ME007模塊可提供3~350 cm的非接觸式距離感測(cè)功能。
DYP-ME007超聲波測(cè)距模塊的echo腳的輸出脈沖寬度與距離之間的關(guān)系為
其中uS為echo脈沖的寬度,單位為μs。
琴鍵是一張印有鍵盤的紙,紙上每個(gè)鍵的寬度是固定的。由于超聲波測(cè)距是有盲區(qū)的,因此在設(shè)定“琴鍵”位置的時(shí)候應(yīng)該避開其盲區(qū)。經(jīng)測(cè)試選用的超聲波測(cè)距模塊的盲區(qū)在0-3 cm之內(nèi),因此,只要把“琴鍵”位置設(shè)在3 cm之外就可以了。這里設(shè)定“琴鍵”總的寬度為35 cm,從距超聲波測(cè)距模塊5 cm遠(yuǎn)處開始,每5 cm為一個(gè)“琴鍵”。
FPGA(現(xiàn)場(chǎng)可編程門陣列)作為可編程邏輯器件,是在PAL等邏輯器件的基礎(chǔ)上發(fā)展而來(lái),其規(guī)模比較大,可以代替幾百塊通用IC芯片[6]。FPGA內(nèi)部具有豐富的邏輯資源,能夠?qū)崿F(xiàn)各種硬件電路,它的結(jié)構(gòu)主要由3部分組成:一個(gè)二維的邏輯塊陣列,構(gòu)成了其邏輯組成核心;輸入/輸出塊;連接邏輯塊的互連資源。而verilog HDL是一種簡(jiǎn)單的硬件描述語(yǔ)言,可以很容易地用verilog HDL編寫代碼實(shí)現(xiàn)某一特定功能的電路,而且FPGA是可以多次寫入擦除,方便調(diào)試和修改。用戶可以在其基礎(chǔ)上簡(jiǎn)單快捷的完成設(shè)計(jì)。本設(shè)計(jì)采用芯片EP3C25Q240C8N。
圖2 FPGA內(nèi)部硬件電路連接圖Fig.2 Hardware circuit connection diagram in FPGA
用芯片EP3C25Q240C8N實(shí)現(xiàn)硬件電路如圖2所示,U1是超聲波測(cè)距控制模塊,U2模塊是音符頻率選擇模塊。clk為系統(tǒng)的時(shí)鐘輸入信號(hào),為50 MHz,rst為復(fù)位信號(hào),en為開關(guān)使能引腳,echo為超聲波測(cè)量回波時(shí)差得到的脈沖信號(hào),trig為向超聲波模塊發(fā)送的激勵(lì)脈沖,tune為送給蜂鳴器的一定頻率的信號(hào)。超聲波測(cè)距模塊測(cè)得手指所在 “琴鍵”位置,當(dāng)測(cè)到的手指距超聲波模塊的距離在音符i的琴鍵范圍(5*i,5*i+5)cm內(nèi),則根據(jù)特定的音符頻率,分別計(jì)算出每個(gè)音符的分頻系數(shù)
其中為音符i的頻率,求出分頻系數(shù),對(duì)時(shí)鐘信號(hào)進(jìn)行產(chǎn)生相應(yīng)頻率的周期信號(hào)tune,傳送給蜂鳴器進(jìn)行發(fā)聲。
蜂鳴器是一種廣泛運(yùn)用于各種電子產(chǎn)品的電子訊響器件,采用直流供電,其實(shí)現(xiàn)電路結(jié)構(gòu)簡(jiǎn)單,如圖3所示。
圖3 蜂鳴器電路Fig.3 Circuit of buzzer driver
系統(tǒng)流程如圖4所示:counter1為控制超聲波模塊測(cè)量最大范圍的計(jì)數(shù)器,counter0用于計(jì)算超聲波模塊返回的脈沖寬度。counter1和counter0初始值為0,在發(fā)射一個(gè)激勵(lì)脈沖trig后counter1開始計(jì)時(shí),檢查回波信號(hào)echo是否為高電平,是則counter0開始計(jì)數(shù),直到echo變?yōu)榈碗娖絚ounter0停止計(jì)數(shù)。指定一個(gè)最大測(cè)量值,由公式(1)計(jì)算出一個(gè)計(jì)數(shù)值,當(dāng)counter1計(jì)數(shù)到該計(jì)數(shù)值時(shí),提取counter0的值。為了使測(cè)量數(shù)據(jù)比較穩(wěn)定,代碼總增加了濾波部分,綜合考慮靈敏度和穩(wěn)定性,選擇均值濾波器的長(zhǎng)度為8。
圖4 流程圖Fig.4 Flow chart
FPGA選用的時(shí)鐘頻率為50 MHz,參考文獻(xiàn)[4]中音階頻率對(duì)應(yīng)關(guān)系,根據(jù)公式(2)求出各個(gè)音符的分頻系數(shù)如表1所示,根據(jù)每個(gè)音符對(duì)應(yīng)的分頻系數(shù)對(duì)時(shí)鐘進(jìn)行分頻,得到相應(yīng)頻率的音符信號(hào)tune輸出給蜂鳴器。
表1 音階頻率與分頻系數(shù)表Tab.1 Scale frequency and frequency factor table
本設(shè)計(jì)是采用verilog HDL進(jìn)行編寫的,在QuartusII編譯器上進(jìn)行綜合編譯,用ModelSim仿真器進(jìn)行仿真,驗(yàn)證功能正確后通過(guò)QuartusII內(nèi)的下載器將編譯好的電路下載到FPGA(CycloneIII)上。其中超聲波測(cè)距控制模塊部分代碼如下:
用ModelSim進(jìn)行仿真,輸入一個(gè)模擬的距離值,當(dāng)距離為某一值時(shí),tune的輸出頻率為相應(yīng)值,對(duì)該信號(hào)進(jìn)行測(cè)量驗(yàn)證了其頻率是符合要求的,說(shuō)明仿真的結(jié)果符合設(shè)計(jì)要求。仿真波形圖如圖5所示。
如圖1所示搭建好系統(tǒng)的硬件電路,運(yùn)行系統(tǒng),用手指或者其他物體“敲擊”超聲波模塊前方的“虛擬鍵盤”,檢驗(yàn)蜂鳴器發(fā)出的音符是否符合設(shè)計(jì)要求,實(shí)踐證明,該音樂(lè)系統(tǒng)能夠根據(jù)敲下的“琴鍵”較準(zhǔn)確地發(fā)出相應(yīng)的音符。
圖5 仿真波形圖Fig.5 Simulation waveform
快速移動(dòng)手指或物體的位置,檢查該電子琴的靈敏度如何,實(shí)驗(yàn)檢驗(yàn)發(fā)現(xiàn),當(dāng)手指或物體在各個(gè)“琴鍵”之間切換時(shí),靈敏度不夠高,檢查后發(fā)現(xiàn),是因?yàn)椤扒冁I”之外的區(qū)域的分頻設(shè)置問(wèn)題,導(dǎo)致每個(gè)音符之間的切換會(huì)出現(xiàn)停滯,對(duì)verilog代碼進(jìn)行修改,再次檢驗(yàn),靈敏度有了很大改善,各個(gè)“琴鍵“之間的切換更為流暢,基本達(dá)到了設(shè)計(jì)的目標(biāo)要求。
本設(shè)計(jì)基本達(dá)到設(shè)計(jì)預(yù)想要求:選擇不同“琴鍵”時(shí)能夠相應(yīng)地發(fā)出某一特定音符。上面描述的是虛擬電子琴的基本的結(jié)構(gòu)和功能。FPGA具有很大靈活性,可以根據(jù)需要在本設(shè)計(jì)的基礎(chǔ)上進(jìn)行多功能改進(jìn):如增加若干選擇鍵,可以相應(yīng)選擇低/中/高音;或者加入多個(gè)超聲波測(cè)距模塊,制作成一個(gè)大型的跳舞機(jī)系統(tǒng)。
[1]Suzuki Y,Yamayoshi T,Kato T,et al.Japanese inventors develop electronic piano with remote controller[C]//US Fed News Service, Including US State News,2007.
[2]Raoul Parienti.Foldable Electronic Piano with Means to Make the Keyboard Stiff-KR20090010080A[P].2008-11-26.
[3]LIU Shu-peng, CHEN Lin, ZHU Xiang-ming, et al.Digital piano keyboard based on PVDF piezoelectric film[C]//Audio Language and Image Processing (ICALIP), 2010 International Conference on Digital Object Identifier:10.1109/ICALIP.2010.5684555 Publication Year: 2010:378-382.
[4]閆娟.基于Verilog HDL的簡(jiǎn)易電子琴設(shè)計(jì)[J].企業(yè)技術(shù)開發(fā),2011(7):104-104,109.YAN Juan.Design of electronic piano based on verilog HDL[J].Technological Development of Enterprisf,2011(7):104-104,109.
[5]李云龍,卜雄誅,趙文,等.新型嵌入式超聲波測(cè)距系統(tǒng)[J].儀表技術(shù)與傳感器,2012(1):97-9.9 LI Yun-long,BU Xiong-zhu,ZHAO Wen,et la.New embedded ultrasonic distance measurement system[J].Intrument Technique and Sensor,2012(1):97-99.
[6]包明,趙明富,陳渝光.EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2002.