新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的電子琴動(dòng)態(tài)錄音與回放系統(tǒng)的設(shè)計(jì)

基于FPGA的電子琴動(dòng)態(tài)錄音與回放系統(tǒng)的設(shè)計(jì)

作者: 時(shí)間:2009-05-06 來源:網(wǎng)絡(luò) 收藏

O 引 言
樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對(duì)應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個(gè)音符的音調(diào)。大多數(shù)的設(shè)計(jì)都有彈奏和播放功能,但能自動(dòng)對(duì)彈奏的樂曲進(jìn)行錄音并可改變回放快慢可調(diào)的設(shè)計(jì)卻很少。要實(shí)現(xiàn)錄音和回放功能,就必須將彈奏的音符值在相應(yīng)的寫控制信號(hào)控制下存儲(chǔ)到芯片內(nèi)部的隨機(jī)存儲(chǔ)器(RAM)中,而在相應(yīng)的讀控制信號(hào)控制下,將RAM中存儲(chǔ)的音符值讀出來,送給相應(yīng)的發(fā)聲控制等模塊。進(jìn)入20世紀(jì)90年代以后,EDA技術(shù)得到了飛速的發(fā)展,電子系統(tǒng)的設(shè)計(jì)方法發(fā)生了很大的變化,傳統(tǒng)的設(shè)計(jì)方法正逐步退出歷史舞臺(tái),而基于EDA技術(shù)的可編程邏輯芯片設(shè)計(jì)成為電子系統(tǒng)設(shè)計(jì)的主流。本設(shè)計(jì)基于QuartusⅡ6.0開發(fā)平臺(tái),采用VHDL語言在芯片上成功地實(shí)現(xiàn)了錄音與回放功能。

本文引用地址:http://2s4d.com/article/192067.htm


l 錄音與設(shè)計(jì)
已經(jīng)設(shè)計(jì)成功的多功能電子琴樂曲硬件演奏設(shè)計(jì)電路主要包括:鍵盤演奏、人工選曲并播放樂曲、錄音/回放、可控制播放歌曲的節(jié)奏快慢、液晶顯示當(dāng)前系統(tǒng)狀態(tài)等功能。其中在芯片中實(shí)現(xiàn)的電路設(shè)計(jì)有4個(gè)模塊,分別為鍵盤掃描和按鍵功能設(shè)置模塊、RoM/RAM控制器模塊、發(fā)聲控制模塊、LCD驅(qū)動(dòng)控制模塊。系統(tǒng)設(shè)計(jì)框圖如圖1所示。

工作原理如下:首先通過鍵盤掃描和按鍵功能設(shè)置模塊將一個(gè)4*4的鍵盤上各按鍵進(jìn)行功能設(shè)置,然后根據(jù)相應(yīng)的操作要求進(jìn)行發(fā)聲和液晶顯示。如果選中當(dāng)前狀態(tài)是彈奏模式,則發(fā)聲控制模塊直接把琴鍵送來的音符對(duì)應(yīng)的分頻系數(shù)轉(zhuǎn)換成相應(yīng)頻率送到揚(yáng)聲器發(fā)聲,字幕信息通過液晶顯示驅(qū)動(dòng)模塊驅(qū)動(dòng)液晶顯示;如果選中當(dāng)前工作模式為播放模式,則ROM/RAM控制器模塊把事先存儲(chǔ)在ROM中的音樂數(shù)據(jù)提出來送至發(fā)聲模塊,完成自動(dòng)播放功能;如果選中當(dāng)前工作狀態(tài)是錄音回放模式,則啟動(dòng)ROM/RAM控制器模塊中RAM狀態(tài)機(jī)控制器進(jìn)行讀寫操作。
這里重點(diǎn)介紹由ROM/RAM控制模塊通過狀態(tài)機(jī)設(shè)計(jì)產(chǎn)生錄音/回放功能的實(shí)現(xiàn)。


2 ROM/RAM控制模塊的設(shè)計(jì)
ROM/RAM控制模塊的作用是通過對(duì)系統(tǒng)當(dāng)前所處的模式進(jìn)行判斷,并根據(jù)輸入的控制信號(hào),對(duì)CycloneⅡFPGA內(nèi)嵌的RAM的讀寫信號(hào)、讀寫時(shí)鐘及讀寫地址進(jìn)行控制。其中ROM/RAM控制模塊的外部接口符號(hào)圖如圖2所示。

此模塊定義了10個(gè)輸入端口,分別為:mode_key(鍵盤演奏模式)、mode_auto(播放歌曲模式)、mode_tape(錄音回放模式)、time_up(節(jié)奏上升)、time_down(節(jié)奏下降)、song_select(曲目選擇)、tape(錄音)、playback(放音)、reset(系統(tǒng)復(fù)位)、clk(時(shí)鐘)。定義了15個(gè)輸出端口:rom_add(ROM地址)、rom_clk(ROM時(shí)鐘)、rom_en(ROM時(shí)鐘使能)、ram_wradd(RAM寫地址)、ram_wren(RAM寫使能)、ram_wrclk(RAM寫時(shí)鐘)、ram_rdadd(RAM讀地址)、ram_rden(RAM讀地址)、ram_rdclk(RAM讀地址)、full(錄音滿信號(hào))、over(回放完畢信號(hào))以及5個(gè)提供LCD驅(qū)動(dòng)顯示用的信號(hào)。
RAM/ROM控制模塊中的RAM控制部分分成兩個(gè)小部分,采用有限狀態(tài)機(jī)(FSM)分別對(duì)RAM讀狀態(tài)和RAM寫狀態(tài)進(jìn)行操作控制。當(dāng)系統(tǒng)當(dāng)前模式為“錄音/回放模式”時(shí),如果“錄音”按鍵按下,則RAM進(jìn)行寫操作,從首地址開始進(jìn)行存儲(chǔ)。如果存儲(chǔ)滿1 024個(gè)地址空間,則提示“錄音滿”,寫操作終止,等待用戶命令,以進(jìn)行下一步操作。當(dāng)系統(tǒng)當(dāng)前模式為“錄音/回放模式”時(shí),如果“回放”按鍵按下,則RAM進(jìn)行讀操作,從首地址開始將RAM單元中的數(shù)據(jù)送給發(fā)聲控制模塊進(jìn)行播放。如果讀完1 024個(gè)地址空間,則提示“回放完畢”,讀操作終止,等待用戶命令,以進(jìn)行下一步操作。


上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉