鐘秀媚 , 陳榮軍 ,2, 李偉健
(1.中山大學 信息科學與技術學院,廣東 廣州 510006;2.中山大學 南方學院,廣東 廣州 510970)
現代娛樂設備多種多樣,各種新奇的發明層出不窮,大大豐富了人們的娛樂休閑和生活。而其中數字音樂電子琴由于其操作簡單、價格低廉而廣受大眾喜愛。數字音樂電子琴是現代電子科技與音樂結合的產物,傳統的鋼琴由于其體積龐大笨重、價格昂貴,普通家庭的孩子如果想要學琴而又無法買得起鋼琴的話,電子琴就是一個很好的選擇。國內外均有許多對電子琴的研究和創意發明[1-4],文中介紹的是一種基于FPGA和超聲波測距的虛擬電子琴。
該虛擬電子琴可用于家庭娛樂或幼兒初識教育,也可以作適當的修改設計后作為家庭或公共場合卡拉OK系統、跳舞機等。它是一種集娛樂、教育和醫療保健于一體的,同時具有結構簡單、成本低廉、對環境友好等特點的裝置。
系統總的架構是由FPGA(Cyclone III)、超聲波測距模塊和蜂鳴器共同組成。系統結構框圖如圖1所示,FPGA作為系統控制單元,控制超聲波模塊向空間中發射超聲波信號,FPGA控制模塊內設定的定時/計數器counter1開始計數,形成一個 “虛擬琴鍵鍵盤”,該琴鍵的鍵盤寬度由counter1決定,當測量到手指處于某一“鍵盤”位置,即超聲波遇到手指被反射回來由超聲波模塊接收到,對手指的所處“琴鍵”位置進行測量,超聲波模塊向FPGA控制模塊返回相應的測量信號,定時/計數器counter0由該回響信號控制進行計數,計算出這一“按鍵”,選擇相應的音符(頻率)傳送給蜂鳴器,蜂鳴器發出某一音調的聲音。當手指在虛擬的“鍵盤”上靈動跳躍時,蜂鳴器便可以發出一連串美妙的音樂。

圖1 虛擬電子琴的系統結構框圖Fig.1 Structure diagram of the virtual electronic piano system
虛擬鍵盤模塊是由超聲波測距模塊和虛擬琴鍵模塊組成。
超聲波測距模塊是一種通過發射超聲波和接收回響信號,測量回響時差來進行測量物體距離的裝置。該裝置具有結構簡單、受環境光度影響小、成本低廉等特點。本設計采用的是DYP-ME007超聲波測距模塊。由于超聲波在空氣中的傳播速度受環境溫度的影響[5],因此,為了更精確靈敏地測量物體位置,DYP-ME007超聲波測距模塊中加入了溫度補償電路。DYP-ME007超聲波測距模塊有out和echo兩種輸出方式,out為只要收到一個回波則輸出一個脈沖信號,echo為收到回波后輸出一個脈沖寬度與距離成正比的脈沖信號,這里選擇的是echo引腳。DYP-ME007模塊可提供3~350 cm的非接觸式距離感測功能。
DYP-ME007超聲波測距模塊的echo腳的輸出脈沖寬度與距離之間的關系為

其中uS為echo脈沖的寬度,單位為μs。
琴鍵是一張印有鍵盤的紙,紙上每個鍵的寬度是固定的。由于超聲波測距是有盲區的,因此在設定“琴鍵”位置的時候應該避開其盲區。經測試選用的超聲波測距模塊的盲區在0-3 cm之內,因此,只要把“琴鍵”位置設在3 cm之外就可以了。這里設定“琴鍵”總的寬度為35 cm,從距超聲波測距模塊5 cm遠處開始,每5 cm為一個“琴鍵”。
FPGA(現場可編程門陣列)作為可編程邏輯器件,是在PAL等邏輯器件的基礎上發展而來,其規模比較大,可以代替幾百塊通用IC芯片[6]。FPGA內部具有豐富的邏輯資源,能夠實現各種硬件電路,它的結構主要由3部分組成:一個二維的邏輯塊陣列,構成了其邏輯組成核心;輸入/輸出塊;連接邏輯塊的互連資源。而verilog HDL是一種簡單的硬件描述語言,可以很容易地用verilog HDL編寫代碼實現某一特定功能的電路,而且FPGA是可以多次寫入擦除,方便調試和修改。用戶可以在其基礎上簡單快捷的完成設計。本設計采用芯片EP3C25Q240C8N。

圖2 FPGA內部硬件電路連接圖Fig.2 Hardware circuit connection diagram in FPGA
用芯片EP3C25Q240C8N實現硬件電路如圖2所示,U1是超聲波測距控制模塊,U2模塊是音符頻率選擇模塊。clk為系統的時鐘輸入信號,為50 MHz,rst為復位信號,en為開關使能引腳,echo為超聲波測量回波時差得到的脈沖信號,trig為向超聲波模塊發送的激勵脈沖,tune為送給蜂鳴器的一定頻率的信號。超聲波測距模塊測得手指所在 “琴鍵”位置,當測到的手指距超聲波模塊的距離在音符i的琴鍵范圍(5*i,5*i+5)cm內,則根據特定的音符頻率,分別計算出每個音符的分頻系數

其中為音符i的頻率,求出分頻系數,對時鐘信號進行產生相應頻率的周期信號tune,傳送給蜂鳴器進行發聲。
蜂鳴器是一種廣泛運用于各種電子產品的電子訊響器件,采用直流供電,其實現電路結構簡單,如圖3所示。

圖3 蜂鳴器電路Fig.3 Circuit of buzzer driver
系統流程如圖4所示:counter1為控制超聲波模塊測量最大范圍的計數器,counter0用于計算超聲波模塊返回的脈沖寬度。counter1和counter0初始值為0,在發射一個激勵脈沖trig后counter1開始計時,檢查回波信號echo是否為高電平,是則counter0開始計數,直到echo變為低電平counter0停止計數。指定一個最大測量值,由公式(1)計算出一個計數值,當counter1計數到該計數值時,提取counter0的值。為了使測量數據比較穩定,代碼總增加了濾波部分,綜合考慮靈敏度和穩定性,選擇均值濾波器的長度為8。

圖4 流程圖Fig.4 Flow chart
FPGA選用的時鐘頻率為50 MHz,參考文獻[4]中音階頻率對應關系,根據公式(2)求出各個音符的分頻系數如表1所示,根據每個音符對應的分頻系數對時鐘進行分頻,得到相應頻率的音符信號tune輸出給蜂鳴器。

表1 音階頻率與分頻系數表Tab.1 Scale frequency and frequency factor table
本設計是采用verilog HDL進行編寫的,在QuartusII編譯器上進行綜合編譯,用ModelSim仿真器進行仿真,驗證功能正確后通過QuartusII內的下載器將編譯好的電路下載到FPGA(CycloneIII)上。其中超聲波測距控制模塊部分代碼如下:

用ModelSim進行仿真,輸入一個模擬的距離值,當距離為某一值時,tune的輸出頻率為相應值,對該信號進行測量驗證了其頻率是符合要求的,說明仿真的結果符合設計要求。仿真波形圖如圖5所示。
如圖1所示搭建好系統的硬件電路,運行系統,用手指或者其他物體“敲擊”超聲波模塊前方的“虛擬鍵盤”,檢驗蜂鳴器發出的音符是否符合設計要求,實踐證明,該音樂系統能夠根據敲下的“琴鍵”較準確地發出相應的音符。

圖5 仿真波形圖Fig.5 Simulation waveform
快速移動手指或物體的位置,檢查該電子琴的靈敏度如何,實驗檢驗發現,當手指或物體在各個“琴鍵”之間切換時,靈敏度不夠高,檢查后發現,是因為“琴鍵”之外的區域的分頻設置問題,導致每個音符之間的切換會出現停滯,對verilog代碼進行修改,再次檢驗,靈敏度有了很大改善,各個“琴鍵“之間的切換更為流暢,基本達到了設計的目標要求。
本設計基本達到設計預想要求:選擇不同“琴鍵”時能夠相應地發出某一特定音符。上面描述的是虛擬電子琴的基本的結構和功能。FPGA具有很大靈活性,可以根據需要在本設計的基礎上進行多功能改進:如增加若干選擇鍵,可以相應選擇低/中/高音;或者加入多個超聲波測距模塊,制作成一個大型的跳舞機系統。
[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的簡易電子琴設計[J].企業技術開發,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]李云龍,卜雄誅,趙文,等.新型嵌入式超聲波測距系統[J].儀表技術與傳感器,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技術與數字系統設計[M].北京:北京航空航天大學出版社,2002.