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