崔智軍+劉昭元+張瑜
摘 要: 簡易觸摸電子琴是以FPGA芯片作為系統控制核心,通過數控分頻的原理實現音樂自動播放、琴鍵演奏的功能,有限狀態機實現觸摸控制和LCD顯示驅動,再采用友晶科技的4.3寸液晶觸摸顯示屏(LTM)完成簡易觸摸電子琴模式選擇控制和琴鍵顯示控制。在DE0?Nano FPGA(Altera Cyclone Ⅳ)開發板上的測試表明,所設計的低成本簡易觸摸電子琴可以實現觸摸控制彈奏和自動播放樂曲的功能,同時具有較高的實用價值。
關鍵詞: FPGA; 電子琴; 液晶顯示屏; 有限狀態機
中圖分類號: TN710?34; TP332 文獻標識碼: A 文章編號: 1004?373X(2014)22?0114?03
Design of simple touch electronic piano based on FPGA
CUI Zhi?jun1, LIU Zhao?yuan2, ZHANG Yu1
(1. Department of Electronics and Information Engineering, Ankang University, Ankang 725000, China;
2. Xian ZTE New Software Co., Ltd, Xian 710129, China)
Abstract: The simple touch electronic piano, which takes FPGA chip as system control core, employs the principle of NC divider to achieve automatic music playing, finite state machine to realize the touch control and LCD display drive, and 4.3 inch LCD touch panel Module (LTM) of Terasic to complete a simple touch electronic piano mode selection control and key display control. The test on DE0?NanoFPGA (Altera Cyclone IV) development board show that the design of low?cost simple touch electronic piano can achieve the functions of touch control and automatic music playing, and also has high practical value.
Keywords: field programmable gate array; electronic piano; liquid crystal display; finite state machine
0 引 言
電子琴因其操作簡單,且能模擬各種傳統樂器的音色,而深受消費者喜歡。目前市場上有很多種音樂模塊,可以直接產生各種樂曲,多數集中在使用單片機、555定時器、邏輯組合電路、LDQ852集成塊等[1?4],這些設計方法各有優缺點,例如使用單片機實現簡單、成本低,但是產生的音頻過少,很難滿足標準電子琴的設計要求及市場需求。FPGA器件具有靜態可重復編程和動態可在系統重構的特性,同時其硬件功能可以通過軟件編程來修改,故具有很好的設計靈活性和通用性。同時基于FPGA的電子琴設計還具有體積小、系統可靠性高、開發周期短和研制成本低的優點[5?7]。所以本文在FPGA器件上設計一個簡易觸摸屏電子琴電路,來實現觸摸控制彈奏和自動播放樂曲的功能。
1 簡易觸摸電子琴的系統設計
基于FPGA的簡易觸摸電子琴的原理結構如圖1所示,整個系統主要包括片外系統時鐘模塊、片內PLL時鐘模塊、計數分頻模塊、音樂節拍產生電路模塊、鍵值掃描模塊、音符譯碼電路模塊、數控分頻電路模塊、自動播放與手動輸入模式選擇模塊、液晶觸摸屏顯示驅動模塊、揚聲器驅動模塊等。
圖1 簡易觸摸電子琴的結構圖
整個系統的工作過程大致如下:DE0?Nano FPGA開發板提供50 MHz的系統時鐘經鎖相環分頻后得到33 MHz的時鐘信號,而33 MHz的時鐘信號經計數器分頻得到一個4 Hz的時鐘信號給音樂節拍產生電路,作為產生1拍的時長。當LCD觸摸屏接通電源后,觸摸屏上會顯示不同的功能按鍵,其中通過選擇自動播放和手動彈奏輸入模式轉換按鍵,最終實現自動播放樂曲和手動彈奏控制音樂輸出的功能。圖1所示的簡易觸摸電子琴的核心模塊分別是音樂節拍產生電路模塊、音符譯碼電路模塊、LCD驅動模塊。下面就針對這三個關鍵模塊給出詳盡的設計描述。
2 音樂節拍產生電路模塊
該模塊利用FPGA的片內ROM存放樂曲簡譜真值表,由一個二進制計數器作為樂曲數據存儲器ROM的地址發生器。該計數器的計數頻率為4 Hz,即每一計數值的停留時間為0.25 s,當音樂節拍產生器中計數器按4 Hz的時鐘頻率做加法計數時,即隨地址值遞增時,樂曲數據存儲器ROM中的音符數據,將從ROM中的輸出端傳送到音符譯碼電路,所存儲的樂曲就開始連續自然地演奏起來。二進制計數器的位數將根據所存放樂曲簡譜基本節拍數來決定。 4 Hz頻率信號作為輸出音符的快慢信號,即每一計數值的停留時間為0.25 s計1拍,四四拍的四分音符的持續時間為1 s,頻率越高,時鐘的輸出節拍速度就快,演奏的速度就越快,反之演奏的速度就變慢。音樂節拍發生器模塊的電路圖包含在圖2中。
3 音符譯碼電路模塊
音符譯碼電路即音調發生器,它實際上是一個音符頻率查表電路,音符譯碼電路模塊放置了21個音樂簡譜對應的頻率表,如表1所示,根據該表
表1 音名與頻率對應表 Hz
為數控分頻模塊提供所發音符頻率的初始值,音符譯碼電路模塊的作用就是產生獲得音階的分頻預置值,程序中設置了21個音符所對應的音符頻率的初始值,這21個值的輸出由對應于音符譯碼電路的輸入索引值確定,該值中音符在數控分頻模塊入口的停留時間由音樂節拍發生器中的音符數據決定,該數據重復的次數為該音符的節拍數。每個音符的停留時間由音樂節拍發生器的時鐘頻率決定,在此為4 Hz信號。
音階的頻率可以通過高頻時鐘進行分配得到,采用時鐘的頻率越高,分頻系數越大,分頻后的音階頻率就越準確,但是由于分頻系數大使得要使用的計數單元增加,需要耗費更多的邏輯單元,而且為了減少發音的誤差,本次設計直接以系統給定的50 MHz的等占空比脈沖信號作為系統的基準頻率。數控分頻器設計為20位的二進制加法計數器。其中分頻預置值的計算公式如下:分頻預置值=220-基準頻率/音符頻率,本次設計中每個音符的頻率是已知的,基準頻率是50 MHz,這樣就可以依次算出每個音符對應的分頻預置值,又因為用小數表示比較麻煩,所以在本次設計中分頻預制值均取整數,允許微小的偏差存在。音符譯碼電路模塊的RTL級視圖如圖2所示。
圖2 音符譯碼電路模塊RTL級視圖
4 LCD驅動模塊
設計LCD顯示驅動模塊,關鍵在于需要根據液晶屏的控制時序和用戶指令集,采用硬件描述語言設計有限狀態機來實現LCD顯示驅動模塊的初始化、寫入數據和命令操作;LCD顯示驅動模塊的狀態轉換如圖3所示[8?9]。在圖3所示的狀態轉換圖中,當系統上電后,首先完成持續大約0.05 s的自動復位,然后才進入LCD模塊的圖形顯示初始化過程。在狀態機中設置有初始化命令、起始行地址和屏顯示數據三條轉換路徑來適應LCD屏的不同工作階段,同時也在關鍵轉換路徑上設置有可以配置的延時循環。這樣既可以方便LCD模塊的工作調試,又可以使LCD模塊一直工作在寫屏模式(RW=0),驅動LCD模塊的動態實時顯示。
圖3 LCD驅動模塊狀態轉換圖
5 簡易觸摸電子琴的設計驗證
使用DE0?Nano FPGA開發板(Altera Cyclone Ⅳ EP4CE22F17C6N)和友晶科技公司生產的4.3寸液晶觸摸顯示屏(LTM)組成簡易觸摸電子琴的硬件測試平臺;設計項目經過Quartus Ⅱ 10.1開發工具編譯和芯片下載配置后得到的實際驗證效果圖如圖4所示。經實際電路測試驗證,達到了設計要求。
圖4 簡易觸摸屏電子琴實物圖
6 結 語
本文所設計的以友晶科技公司生產的4.3寸液晶觸摸顯示屏(LTM)為觸摸顯示控制終端的低成本簡易觸摸電子琴。在FPGA開發板上的驗證結果表明,完全實現了觸摸控制彈奏和自動播放樂曲的功能。同時將樂曲硬件演奏電路的核心部分集成在FPGA芯片上,不但大大簡化了外圍電路,有效地提高了設計的靈活性,而且具有體積小、功耗低、可靠性高的特點,極大的降低了設計成本,縮短了設計周期,由此可見FPGA技術在設計電子產品方面體現出極大的優越性。
參考文獻
[1] 曹曼.基于FPGA的電子琴設計[J].信息科技,2012(5):180?181.
[2] 陳華容.基于FPGA的電子琴設計[J].器件與電路,2006(2):26?29.
[3] 孫萬麟.基于AT89C51單片機的電子琴設計[J].電腦知識與技術,2010(2):5626?5627.
[4] 周琛暉.基于AT89S51單片機的電子琴設計[J].電腦知識與技術,2009(27):7679?7681.
[5] 張卿.基于FPGA的音樂演奏電路及電子琴的設計[J].現代經濟信息,2009(8):143?148.
[6] 付夢婷,付永慶.基于CPLD的88鍵電子琴的設計與實現[J].電子器件,2013(5):737?741.
[7] 李雪梅.基于FPGA的電子琴動態錄音與回放系統的設計[J].現代電子技術,2009,32(3):130?133.
[8] 王慶春,何曉燕.基于FPGA的便攜式邏輯分析儀的設計[J].電子測量技術,2012(10):80?83.
[9] 王慶春,何曉燕,崔智軍.基于FPGA的多功能LCD顯示控制器設計[J].電子設計工程2012(12):135?137.
3 音符譯碼電路模塊
音符譯碼電路即音調發生器,它實際上是一個音符頻率查表電路,音符譯碼電路模塊放置了21個音樂簡譜對應的頻率表,如表1所示,根據該表
表1 音名與頻率對應表 Hz
為數控分頻模塊提供所發音符頻率的初始值,音符譯碼電路模塊的作用就是產生獲得音階的分頻預置值,程序中設置了21個音符所對應的音符頻率的初始值,這21個值的輸出由對應于音符譯碼電路的輸入索引值確定,該值中音符在數控分頻模塊入口的停留時間由音樂節拍發生器中的音符數據決定,該數據重復的次數為該音符的節拍數。每個音符的停留時間由音樂節拍發生器的時鐘頻率決定,在此為4 Hz信號。
音階的頻率可以通過高頻時鐘進行分配得到,采用時鐘的頻率越高,分頻系數越大,分頻后的音階頻率就越準確,但是由于分頻系數大使得要使用的計數單元增加,需要耗費更多的邏輯單元,而且為了減少發音的誤差,本次設計直接以系統給定的50 MHz的等占空比脈沖信號作為系統的基準頻率。數控分頻器設計為20位的二進制加法計數器。其中分頻預置值的計算公式如下:分頻預置值=220-基準頻率/音符頻率,本次設計中每個音符的頻率是已知的,基準頻率是50 MHz,這樣就可以依次算出每個音符對應的分頻預置值,又因為用小數表示比較麻煩,所以在本次設計中分頻預制值均取整數,允許微小的偏差存在。音符譯碼電路模塊的RTL級視圖如圖2所示。
圖2 音符譯碼電路模塊RTL級視圖
4 LCD驅動模塊
設計LCD顯示驅動模塊,關鍵在于需要根據液晶屏的控制時序和用戶指令集,采用硬件描述語言設計有限狀態機來實現LCD顯示驅動模塊的初始化、寫入數據和命令操作;LCD顯示驅動模塊的狀態轉換如圖3所示[8?9]。在圖3所示的狀態轉換圖中,當系統上電后,首先完成持續大約0.05 s的自動復位,然后才進入LCD模塊的圖形顯示初始化過程。在狀態機中設置有初始化命令、起始行地址和屏顯示數據三條轉換路徑來適應LCD屏的不同工作階段,同時也在關鍵轉換路徑上設置有可以配置的延時循環。這樣既可以方便LCD模塊的工作調試,又可以使LCD模塊一直工作在寫屏模式(RW=0),驅動LCD模塊的動態實時顯示。
圖3 LCD驅動模塊狀態轉換圖
5 簡易觸摸電子琴的設計驗證
使用DE0?Nano FPGA開發板(Altera Cyclone Ⅳ EP4CE22F17C6N)和友晶科技公司生產的4.3寸液晶觸摸顯示屏(LTM)組成簡易觸摸電子琴的硬件測試平臺;設計項目經過Quartus Ⅱ 10.1開發工具編譯和芯片下載配置后得到的實際驗證效果圖如圖4所示。經實際電路測試驗證,達到了設計要求。
圖4 簡易觸摸屏電子琴實物圖
6 結 語
本文所設計的以友晶科技公司生產的4.3寸液晶觸摸顯示屏(LTM)為觸摸顯示控制終端的低成本簡易觸摸電子琴。在FPGA開發板上的驗證結果表明,完全實現了觸摸控制彈奏和自動播放樂曲的功能。同時將樂曲硬件演奏電路的核心部分集成在FPGA芯片上,不但大大簡化了外圍電路,有效地提高了設計的靈活性,而且具有體積小、功耗低、可靠性高的特點,極大的降低了設計成本,縮短了設計周期,由此可見FPGA技術在設計電子產品方面體現出極大的優越性。
參考文獻
[1] 曹曼.基于FPGA的電子琴設計[J].信息科技,2012(5):180?181.
[2] 陳華容.基于FPGA的電子琴設計[J].器件與電路,2006(2):26?29.
[3] 孫萬麟.基于AT89C51單片機的電子琴設計[J].電腦知識與技術,2010(2):5626?5627.
[4] 周琛暉.基于AT89S51單片機的電子琴設計[J].電腦知識與技術,2009(27):7679?7681.
[5] 張卿.基于FPGA的音樂演奏電路及電子琴的設計[J].現代經濟信息,2009(8):143?148.
[6] 付夢婷,付永慶.基于CPLD的88鍵電子琴的設計與實現[J].電子器件,2013(5):737?741.
[7] 李雪梅.基于FPGA的電子琴動態錄音與回放系統的設計[J].現代電子技術,2009,32(3):130?133.
[8] 王慶春,何曉燕.基于FPGA的便攜式邏輯分析儀的設計[J].電子測量技術,2012(10):80?83.
[9] 王慶春,何曉燕,崔智軍.基于FPGA的多功能LCD顯示控制器設計[J].電子設計工程2012(12):135?137.
3 音符譯碼電路模塊
音符譯碼電路即音調發生器,它實際上是一個音符頻率查表電路,音符譯碼電路模塊放置了21個音樂簡譜對應的頻率表,如表1所示,根據該表
表1 音名與頻率對應表 Hz
為數控分頻模塊提供所發音符頻率的初始值,音符譯碼電路模塊的作用就是產生獲得音階的分頻預置值,程序中設置了21個音符所對應的音符頻率的初始值,這21個值的輸出由對應于音符譯碼電路的輸入索引值確定,該值中音符在數控分頻模塊入口的停留時間由音樂節拍發生器中的音符數據決定,該數據重復的次數為該音符的節拍數。每個音符的停留時間由音樂節拍發生器的時鐘頻率決定,在此為4 Hz信號。
音階的頻率可以通過高頻時鐘進行分配得到,采用時鐘的頻率越高,分頻系數越大,分頻后的音階頻率就越準確,但是由于分頻系數大使得要使用的計數單元增加,需要耗費更多的邏輯單元,而且為了減少發音的誤差,本次設計直接以系統給定的50 MHz的等占空比脈沖信號作為系統的基準頻率。數控分頻器設計為20位的二進制加法計數器。其中分頻預置值的計算公式如下:分頻預置值=220-基準頻率/音符頻率,本次設計中每個音符的頻率是已知的,基準頻率是50 MHz,這樣就可以依次算出每個音符對應的分頻預置值,又因為用小數表示比較麻煩,所以在本次設計中分頻預制值均取整數,允許微小的偏差存在。音符譯碼電路模塊的RTL級視圖如圖2所示。
圖2 音符譯碼電路模塊RTL級視圖
4 LCD驅動模塊
設計LCD顯示驅動模塊,關鍵在于需要根據液晶屏的控制時序和用戶指令集,采用硬件描述語言設計有限狀態機來實現LCD顯示驅動模塊的初始化、寫入數據和命令操作;LCD顯示驅動模塊的狀態轉換如圖3所示[8?9]。在圖3所示的狀態轉換圖中,當系統上電后,首先完成持續大約0.05 s的自動復位,然后才進入LCD模塊的圖形顯示初始化過程。在狀態機中設置有初始化命令、起始行地址和屏顯示數據三條轉換路徑來適應LCD屏的不同工作階段,同時也在關鍵轉換路徑上設置有可以配置的延時循環。這樣既可以方便LCD模塊的工作調試,又可以使LCD模塊一直工作在寫屏模式(RW=0),驅動LCD模塊的動態實時顯示。
圖3 LCD驅動模塊狀態轉換圖
5 簡易觸摸電子琴的設計驗證
使用DE0?Nano FPGA開發板(Altera Cyclone Ⅳ EP4CE22F17C6N)和友晶科技公司生產的4.3寸液晶觸摸顯示屏(LTM)組成簡易觸摸電子琴的硬件測試平臺;設計項目經過Quartus Ⅱ 10.1開發工具編譯和芯片下載配置后得到的實際驗證效果圖如圖4所示。經實際電路測試驗證,達到了設計要求。
圖4 簡易觸摸屏電子琴實物圖
6 結 語
本文所設計的以友晶科技公司生產的4.3寸液晶觸摸顯示屏(LTM)為觸摸顯示控制終端的低成本簡易觸摸電子琴。在FPGA開發板上的驗證結果表明,完全實現了觸摸控制彈奏和自動播放樂曲的功能。同時將樂曲硬件演奏電路的核心部分集成在FPGA芯片上,不但大大簡化了外圍電路,有效地提高了設計的靈活性,而且具有體積小、功耗低、可靠性高的特點,極大的降低了設計成本,縮短了設計周期,由此可見FPGA技術在設計電子產品方面體現出極大的優越性。
參考文獻
[1] 曹曼.基于FPGA的電子琴設計[J].信息科技,2012(5):180?181.
[2] 陳華容.基于FPGA的電子琴設計[J].器件與電路,2006(2):26?29.
[3] 孫萬麟.基于AT89C51單片機的電子琴設計[J].電腦知識與技術,2010(2):5626?5627.
[4] 周琛暉.基于AT89S51單片機的電子琴設計[J].電腦知識與技術,2009(27):7679?7681.
[5] 張卿.基于FPGA的音樂演奏電路及電子琴的設計[J].現代經濟信息,2009(8):143?148.
[6] 付夢婷,付永慶.基于CPLD的88鍵電子琴的設計與實現[J].電子器件,2013(5):737?741.
[7] 李雪梅.基于FPGA的電子琴動態錄音與回放系統的設計[J].現代電子技術,2009,32(3):130?133.
[8] 王慶春,何曉燕.基于FPGA的便攜式邏輯分析儀的設計[J].電子測量技術,2012(10):80?83.
[9] 王慶春,何曉燕,崔智軍.基于FPGA的多功能LCD顯示控制器設計[J].電子設計工程2012(12):135?137.