基于FPGA的電子琴動態(tài)錄音與回放系統(tǒng)的設(shè)計
O 引 言
樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個音符的音調(diào)。大多數(shù)的電子琴設(shè)計都有彈奏和播放功能,但能自動對彈奏的樂曲進(jìn)行錄音并可改變回放快慢可調(diào)的設(shè)計卻很少。要實現(xiàn)錄音和回放功能,就必須將彈奏的音符值在相應(yīng)的寫控制信號控制下存儲到FPGA芯片內(nèi)部的隨機(jī)存儲器(RAM)中,而在相應(yīng)的讀控制信號控制下,將RAM中存儲的音符值讀出來,送給相應(yīng)的發(fā)聲控制等模塊。進(jìn)入20世紀(jì)90年代以后,EDA技術(shù)得到了飛速的發(fā)展,電子系統(tǒng)的設(shè)計方法發(fā)生了很大的變化,傳統(tǒng)的設(shè)計方法正逐步退出歷史舞臺,而基于EDA技術(shù)的可編程邏輯芯片設(shè)計成為電子系統(tǒng)設(shè)計的主流。本設(shè)計基于QuartusⅡ6.0開發(fā)平臺,采用VHDL語言在FPGA芯片上成功地實現(xiàn)了電子琴動態(tài)錄音與回放功能。
l 電子琴動態(tài)錄音與回放系統(tǒng)設(shè)計
已經(jīng)設(shè)計成功的多功能電子琴樂曲硬件演奏設(shè)計電路主要包括:鍵盤演奏、人工選曲并播放樂曲、錄音/回放、可控制播放歌曲的節(jié)奏快慢、液晶顯示當(dāng)前系統(tǒng)狀態(tài)等功能。其中在FPGA芯片中實現(xiàn)的電路設(shè)計有4個模塊,分別為鍵盤掃描和按鍵功能設(shè)置模塊、RoM/RAM控制器模塊、發(fā)聲控制模塊、LCD驅(qū)動控制模塊。系統(tǒng)設(shè)計框圖如圖1所示。
工作原理如下:首先通過鍵盤掃描和按鍵功能設(shè)置模塊將一個4*4的鍵盤上各按鍵進(jìn)行功能設(shè)置,然后根據(jù)相應(yīng)的操作要求進(jìn)行發(fā)聲和液晶顯示。如果選中當(dāng)前狀態(tài)是彈奏模式,則發(fā)聲控制模塊直接把琴鍵送來的音符對應(yīng)的分頻系數(shù)轉(zhuǎn)換成相應(yīng)頻率送到揚(yáng)聲器發(fā)聲,字幕信息通過液晶顯示驅(qū)動模塊驅(qū)動液晶顯示;如果選中當(dāng)前工作模式為播放模式,則ROM/RAM控制器模塊把事先存儲在ROM中的音樂數(shù)據(jù)提出來送至發(fā)聲模塊,完成自動播放功能;如果選中當(dāng)前工作狀態(tài)是錄音回放模式,則啟動ROM/RAM控制器模塊中RAM狀態(tài)機(jī)控制器進(jìn)行讀寫操作。
這里重點介紹由ROM/RAM控制模塊通過狀態(tài)機(jī)設(shè)計產(chǎn)生錄音/回放功能的實現(xiàn)。
2 ROM/RAM控制模塊的設(shè)計
ROM/RAM控制模塊的作用是通過對系統(tǒng)當(dāng)前所處的模式進(jìn)行判斷,并根據(jù)輸入的控制信號,對CycloneⅡFPGA內(nèi)嵌的RAM的讀寫信號、讀寫時鐘及讀寫地址進(jìn)行控制。其中ROM/RAM控制模塊的外部接口符號圖如圖2所示。
此模塊定義了10個輸入端口,分別為:mode_key(鍵盤演奏模式)、mode_auto(播放歌曲模式)、mode_tape(錄音回放模式)、time_up(節(jié)奏上升)、time_down(節(jié)奏下降)、song_select(曲目選擇)、tape(錄音)、playback(放音)、reset(系統(tǒng)復(fù)位)、clk(時鐘)。定義了15個輸出端口:rom_add(ROM地址)、rom_clk(ROM時鐘)、rom_en(ROM時鐘使能)、ram_wradd(RAM寫地址)、ram_wren(RAM寫使能)、ram_wrclk(RAM寫時鐘)、ram_rdadd(RAM讀地址)、ram_rden(RAM讀地址)、ram_rdclk(RAM讀地址)、full(錄音滿信號)、over(回放完畢信號)以及5個提供LCD驅(qū)動顯示用的信號。
RAM/ROM控制模塊中的RAM控制部分分成兩個小部分,采用有限狀態(tài)機(jī)(FSM)分別對RAM讀狀態(tài)和RAM寫狀態(tài)進(jìn)行操作控制。當(dāng)系統(tǒng)當(dāng)前模式為“錄音/回放模式”時,如果“錄音”按鍵按下,則RAM進(jìn)行寫操作,從首地址開始進(jìn)行存儲。如果存儲滿1 024個地址空間,則提示“錄音滿”,寫操作終止,等待用戶命令,以進(jìn)行下一步操作。當(dāng)系統(tǒng)當(dāng)前模式為“錄音/回放模式”時,如果“回放”按鍵按下,則RAM進(jìn)行讀操作,從首地址開始將RAM單元中的數(shù)據(jù)送給發(fā)聲控制模塊進(jìn)行播放。如果讀完1 024個地址空間,則提示“回放完畢”,讀操作終止,等待用戶命令,以進(jìn)行下一步操作。
評論