河南大學(xué) 梁 勇 閆占強(qiáng)
數(shù)字化語(yǔ)音存儲(chǔ)與回放系統(tǒng)的作用是對(duì)聲音信號(hào)進(jìn)行存儲(chǔ)和回放,并實(shí)現(xiàn)數(shù)字化控制。能夠做到的控制方法有很多,譬如單片機(jī)控制、DSP控制、FPGA控制等。本文研究的是基于FPGA控制下的語(yǔ)音存儲(chǔ)與回放系統(tǒng),在該系統(tǒng)中,沒(méi)有使用專(zhuān)用的語(yǔ)音處理芯片,而是利用FPGA作為核心控制器,完成語(yǔ)音信號(hào)的數(shù)字化處理,從而實(shí)現(xiàn)語(yǔ)音的存儲(chǔ)與回放。
圖1 數(shù)字化語(yǔ)音存儲(chǔ)與回放系統(tǒng)示意圖
圖2 FPGA外部接線(xiàn)
該數(shù)字化語(yǔ)音存儲(chǔ)與回放系統(tǒng)的基本工作原理是:將麥克風(fēng)采集到得語(yǔ)音信號(hào)經(jīng)過(guò)模擬放大和濾波處理后,通過(guò)模數(shù)轉(zhuǎn)換器(A/D)轉(zhuǎn)換成數(shù)字信號(hào),再通過(guò)控制器(FPGA)的控制存儲(chǔ)在存儲(chǔ)器中;回放時(shí),由控制器(FPGA)將數(shù)據(jù)從存儲(chǔ)器中讀出,然后通過(guò)數(shù)模轉(zhuǎn)換器(D/A)轉(zhuǎn)換成模擬信號(hào),經(jīng)放大后由揚(yáng)聲器輸出。當(dāng)然,為了實(shí)現(xiàn)高質(zhì)量的音質(zhì)要求,在A(yíng)D之前及DA之后,用帶通濾波器濾除不必要的噪聲,以達(dá)到較好的效果。人實(shí)際說(shuō)話(huà)的頻率范圍300~3400Hz,所以濾波器設(shè)計(jì)在該頻道范圍。
本設(shè)計(jì)方案系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
FPGA頂層接線(xiàn)如圖2所示。在該設(shè)計(jì)中clk24m接24MHz晶振;cp接ADC0809模數(shù)轉(zhuǎn)換電路;yy[7..0]接HM628128D;res接按鍵開(kāi)關(guān),res為0時(shí)地址復(fù)位;wo接高低電平開(kāi)關(guān),wo為0時(shí)錄音為1時(shí)放音;dout[7..0]接D/A轉(zhuǎn)換器的數(shù)據(jù)輸入端;wr、read、adr[16..0]接HM628128D;bz接發(fā)光指示燈,顯示錄音或放音工作狀態(tài);其余端接ADC0809模數(shù)轉(zhuǎn)換電路。
分頻器1,用來(lái)產(chǎn)生存儲(chǔ)器所需要的存儲(chǔ)時(shí)鐘;分頻器2,用來(lái)產(chǎn)生AD芯片所需要的采樣時(shí)鐘。
根據(jù)數(shù)模轉(zhuǎn)換電路ADC0809的功能實(shí)現(xiàn)以及各管腳的具體作用,我們可以對(duì)ADC0809進(jìn)行控制,以實(shí)現(xiàn)其數(shù)模轉(zhuǎn)換的作用。
AD0809的采樣工作時(shí)序如圖3所示,我們可以根據(jù)該時(shí)序,畫(huà)出控制器的時(shí)序轉(zhuǎn)換圖,如圖4所示。
我們用狀態(tài)機(jī)的思想設(shè)計(jì)該控制器。以下是部分代碼。其實(shí)現(xiàn)的電路封裝后的形式如圖2的最下面的芯片。
圖3 AD0809采樣時(shí)序
圖4 ADC0809采樣狀態(tài)圖
存儲(chǔ)芯片HM628128D控制模塊為jicunnx。在實(shí)際的操作過(guò)程中,任何存儲(chǔ)芯片對(duì)于數(shù)據(jù)的存儲(chǔ)與讀取都需要一定的控制信號(hào),這樣方能實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)與讀取。為此,我們?cè)贔PGA芯片中對(duì)于該存儲(chǔ)芯片的控制進(jìn)行了設(shè)計(jì)。同樣用狀態(tài)機(jī)的思想來(lái)實(shí)現(xiàn),程序略。
三態(tài)門(mén),由于存儲(chǔ)芯片HM628128D的數(shù)據(jù)端是雙向端口,輸入輸出共用,所以FPGA和它連接的時(shí)候需要設(shè)計(jì)三態(tài)門(mén),使得在HM628128D進(jìn)行讀操作時(shí),三態(tài)門(mén)處于高阻狀態(tài)。其實(shí)現(xiàn)的電路封裝后的形式如圖2的tris1的芯片。
控制電路我們使用quartusⅡ自帶的仿真工具進(jìn)行驗(yàn)證。
對(duì)于分頻器電路來(lái)說(shuō),我們可以通過(guò)quartusⅡ自帶的仿真軟件進(jìn)行仿真,由于分頻器1和分頻器2完全相同,可以對(duì)任意一個(gè)進(jìn)行仿真即可,對(duì)分頻器1的仿真結(jié)果如圖5所示。
該設(shè)計(jì)所使用的分頻器為48分頻,由圖5可以看出該設(shè)計(jì)達(dá)到了要求。
由該圖(圖中信號(hào)從上到下依次為:ale,clk,din[7..0],dout[7..0],eoc,oe,start)可以看出,在clk下降沿時(shí)刻,當(dāng)eoc為高電平時(shí),就將din[7..0]的數(shù)據(jù)傳送給dout[7..0],ale與start則周期性的出現(xiàn)(由于輸入eoc的周期出現(xiàn))。從而實(shí)現(xiàn)信號(hào)轉(zhuǎn)換的開(kāi)始與鎖存。
該三態(tài)門(mén)所能實(shí)現(xiàn)的功能是:當(dāng)寫(xiě)入時(shí),wr=0,read=1,tris1為打開(kāi)狀態(tài),DIN[7..0]通過(guò)輸出YY[7..0]寫(xiě)入芯片HM628128D,當(dāng)讀出時(shí),wr=1,read=0,此時(shí),trish高阻狀態(tài),由芯片HM628128D讀出數(shù)據(jù),DON[7..0]通過(guò)DOU[7..0]送到DAC0800中。該三態(tài)門(mén)實(shí)現(xiàn)8位數(shù)據(jù)的傳輸。其仿真結(jié)果如圖7所示。
圖5 分頻器電路的仿真結(jié)果
圖6 ADC0809控制模塊的仿真
圖7 三態(tài)門(mén)電路的仿真結(jié)果
圖8 存儲(chǔ)芯片控制模塊的仿真結(jié)果
對(duì)于存儲(chǔ)芯片的控制模塊的仿真結(jié)果如圖8所示。
由圖中可以看出,該設(shè)計(jì)可以對(duì)存儲(chǔ)芯片HM628128D的存儲(chǔ)與讀取進(jìn)行控制,實(shí)現(xiàn)其功能。
在本設(shè)計(jì)中,實(shí)現(xiàn)了用FPGA芯片控制語(yǔ)音的存儲(chǔ)與回放,由于FPGA芯片自帶容量較小,無(wú)法實(shí)現(xiàn)大量數(shù)據(jù)的存儲(chǔ),所以使用了HM628128D實(shí)現(xiàn)存儲(chǔ)容量的擴(kuò)展,這樣可以使語(yǔ)音存儲(chǔ)時(shí)間為10s以上。如果在軟件中增加壓縮算法,可節(jié)省存儲(chǔ)空間,是一種實(shí)用的電路方案。
[1]張常年,王振紅.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽訓(xùn)練精選[M].北京:化學(xué)工業(yè)出版社,2010.
[2]王誠(chéng),吳繼華等.Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005.
[3]潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程(第三版)[M].北京:科學(xué)出版社,2007.
[4]李洋.EDA技術(shù)實(shí)用教程(第二版)[M].北京:機(jī)械工業(yè)出版社,2009.
[5]徐志軍等.CPLD/FPGA的開(kāi)發(fā)與運(yùn)用[M].北京:電子工業(yè)出版社,2002.
[6]Peter Wilson著.杜海生,等譯.FPGA設(shè)計(jì)實(shí)踐[M].北京:人民郵電出版社,2009.
[7]華成英,童詩(shī)白.模擬電子技術(shù)基礎(chǔ)(第四版)[M].北京:高等教育出版社,2006.