曹 曼
瓊州學院,海南三亞 572022
電子琴由于操作相對比較簡單,并且能夠模擬幾乎所有傳統(tǒng)樂器的音色,因而深受廣大消費者的喜愛。
近年來,在數(shù)字系統(tǒng)的設(shè)計領(lǐng)域融入了一種新型的設(shè)計技術(shù):數(shù)字系統(tǒng)設(shè)計的自動化技術(shù)EDA(Electronic Design Automation)。
該技術(shù)優(yōu)越之處在于系統(tǒng)設(shè)計的效率高、保密性強、集成度好、易于修改和實現(xiàn)等。
因此,一躍成為當下數(shù)字系統(tǒng)設(shè)計領(lǐng)域的主流技術(shù),并被越來越廣泛地應(yīng)用到相關(guān)領(lǐng)域中,其中,被應(yīng)用到電子琴的設(shè)計與實現(xiàn)中去就是一個相當重要的嘗試及應(yīng)用。本文所設(shè)計的電子琴基于一種可編程邏輯控制器件:FPGA(Field Programmable Logical Device)芯片,首先采用Visual Basic來設(shè)計上位機琴鍵的控制界面程序,再利用VHDL硬件描述語言設(shè)計系統(tǒng)的核心部件(演奏電路)以及配合使用一些適當和必要的外圍電路,并且,核心部件的模塊通過QUARTUS II這個平臺,自頂而下地進行下載到Altera芯片上,其中,上位機經(jīng)RS232串行口能夠直接和FPGA進行通信,從而完成數(shù)據(jù)的交換工作。該演奏電路由琴鍵控制界面直接進行音調(diào)的輸入,并通過RS232的通信方式來控制從而可以發(fā)出DO、RE、MI等共計8個音調(diào),經(jīng)由蜂鳴器出聲,順利行使完成演奏功能??蓮那冁I上手動直接進行演奏各種電路,亦可自動開始樂曲演奏,而且能夠模擬笛子、小號、風琴、單簧和雙簧等傳統(tǒng)樂器。同通常所見到的電了琴的設(shè)計一樣,該電子琴采用總計61個按鍵,共劃分為5個音區(qū),每個音區(qū)包含12個琴鍵,即7個白色的琴鍵與5個黑色的琴鍵(為半音鍵),在進行演奏的時候能夠動態(tài)顯示各音名。
為了使電子琴的演奏電路完美實現(xiàn)8個音鍵的控制和順利播放已經(jīng)編好的音樂,對系統(tǒng)的設(shè)計就應(yīng)有所要求。根據(jù)各個音調(diào)的頻率差異來實現(xiàn)當演奏者按不同的音鍵時從而發(fā)出的聲音又了差別。
當八位發(fā)聲控制鍵的輸入中有一位是高電平時,那么,對應(yīng)這一音階其初始計數(shù)值被作為獲得此音階分頻的預(yù)置值而將送至預(yù)制數(shù)計數(shù)器,而后預(yù)制數(shù)計數(shù)器就會輸出相應(yīng)的頻率,同時輸出的還有對應(yīng)音階簡譜的顯示代碼,然后,該頻率通過二分頻器被送至揚聲器,在揚聲器處能夠發(fā)出相對應(yīng)該音符的聲音,與此同時,該音名將顯示在數(shù)碼管上。
該設(shè)計采用Altera芯片第一代Cyclone系列FPGA EP1C6器件,它是在全1.5V SRAM工藝的基礎(chǔ)之上,容量由2910個邏輯單元上升至20060,具有多達294912bit 的嵌入RAM Cyclone FPGA,其支持所有的單端I/O 標準;EP1C6 具有4000個邏輯單元(Logical Units),17 個M4K RAM塊以及2個 PLL。
其中,U3是蜂鳴器。當IO 134輸出不同的頻率時,U3蜂鳴器就會發(fā)出相對應(yīng)的聲音。FPGA核心的供電部分采用了AMS1117-1.5V LDO芯片,可提供高達1.5V、800mA。
電子琴演奏電路程序設(shè)計采用了頂層原理圖,在Quartus II9.0環(huán)境下進行設(shè)計。
基于FPGA設(shè)計的電子琴電路總共涉及5個模塊,分別為分頻模塊、顯示模塊、揚聲器模塊、琴鍵掃描模塊以及音調(diào)產(chǎn)生編碼模塊。現(xiàn)分別圍繞這5個電路模塊進行詳細闡述。
這個系統(tǒng)共需要2個重要的分頻頻率:一個是對各個琴鍵產(chǎn)生分頻系數(shù)l MHz的系統(tǒng)頻率,另一個是掃描琴鍵為l KHz的頻率。顯示模塊的作用主要是通過數(shù)碼管把唱名顯示出來。
揚聲器模塊主要為數(shù)控分頻器電路,其主要結(jié)構(gòu)采用了加法電路得以實現(xiàn)。倘若計數(shù)值是音調(diào)產(chǎn)生電路(TONE)的數(shù)值時,計數(shù)值將會清零,并且將SPERK的數(shù)值進行反輸出即作用為兩分頻,否則就累計加一。此處所采用的兩分頻目的是使輸出較寬的頻率脈寬,以便較好地驅(qū)動揚聲器。
由于總共需要61個琴鍵,因此,琴鍵電路部分采用矩陣連接方式。矩陣式琴鍵掃描電路有掃描法、線翻轉(zhuǎn)法這兩種摹本方法,這里采用掃描法,其原理就是在程序中通過逐行或逐列對琴鍵接口進行掃描,再依據(jù)端口輸入情況來判斷哪個琴鍵被按下。掃描法的電路將行接作為輸出,而列接作為輸入。掃描的流程如下:首先,判斷琴鍵是否被按下;其次,琴鍵去抖動,其電路包括軟件與硬件電路,此處采用后者;然后,掃描琴鍵的位置,先命令逐列線輸出0,之后讀取行線狀態(tài),如果都是高電平,那么無琴鍵按下,若不全是0,就表示為0的掃描列線與低電平的行線相交叉處琴鍵被按下。
音調(diào)即頻率的高低,由音調(diào)發(fā)生器來產(chǎn)生各音區(qū)和音符相對應(yīng)的頻率。
5個音區(qū)每個有12個半音,其中,C、D、E、F、G、A、B等各對應(yīng)7個白色的琴鍵,C*、D*、F*、G*、A*等分別對應(yīng)5個黑色的琴鍵。
該模塊將產(chǎn)生各個音符分頻預(yù)置值。因揚聲器電路頻率是方波波形,所以分頻系數(shù)為2倍的音符頻率分頻值。
綜上,由于設(shè)計電子琴的核心部分是集成在FPGA上,所以大大減少了外圍電路的設(shè)計。在增加部分功能的基礎(chǔ)上反而降低了設(shè)計成本,將具有廣闊的設(shè)計和應(yīng)用前景。
[1]霍福翠.基于FPGA的電子琴設(shè)計[J].科學與財富,2011(6):351.
[2]陳華容.基于FPGA的電子琴設(shè)計[J].電聲技術(shù),2006(2):26-29.