FPGA在語音存儲與回放系統(tǒng)中的應用
1 引言
隨著數(shù)字信號處理器、超大規(guī)模集成電路的高速發(fā)展,語音記錄技術(shù)已從模擬錄音階段過渡到數(shù)字錄音階段。在數(shù)字化錄音技術(shù)中,壓縮后的語音數(shù)據(jù)有些存儲在硬盤中,有些存儲在帶有掉電保護功能的RAM或FLASH存儲器中。筆者介紹的語音存儲與回放系統(tǒng),未使用專用的語音處理芯片,不需要擴展接口電路,只利用FPGA作為核心控制器,就能完成語音信號的數(shù)字化處理,即實現(xiàn)語音的存儲與回放。
2 系統(tǒng)總體結(jié)構(gòu)
數(shù)字化語音存儲與回放系統(tǒng)的基本工作原理是將模擬語音信號通過模數(shù)轉(zhuǎn)換器(A/D)轉(zhuǎn)換成數(shù)字信號,再通過控制器控制存儲在存儲器中;回放時,由FPGA控制將數(shù)據(jù)從存儲器中讀出,然后通過數(shù)模轉(zhuǎn)換器(D/A)轉(zhuǎn)換成模擬信號,經(jīng)放大后由揚聲器輸出。本設計方案系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
3 各部分電路設計
3.1 音頻前置放大器
聲音通過傳聲器轉(zhuǎn)換成微弱的電信號(mV級),必須進行放大才能經(jīng)A/D轉(zhuǎn)換送入單片機。可采用專用的音頻前置放大器。本系統(tǒng)采用頻帶寬、噪聲低、失真小的NE5534芯片,如圖2所示。
3.2 帶通濾波器(BPF)
本系統(tǒng)選用有源帶通濾波器,由運算放大器OP07組成。其中心頻率f0=1 kHz,通帶為300 Hz~3.4 kHz。如圖3所示。
3.3 A/D轉(zhuǎn)換器
帶通濾波器的輸出信號經(jīng)采樣保持(LF398)后送A/D轉(zhuǎn)換電路進行抽樣和量化,將模擬信號轉(zhuǎn)換成8 bit數(shù)字信號。本系統(tǒng)選用AD7820芯片。
AD7820有2種工作模式,由MODE決定:當MODE接高電平時芯片工作在WR模式下;當接低電平時工作在RD模式下。本系統(tǒng)將芯片設置在WR模式的S-A方式(最簡單的方式)下,即:MODE接高電平,RD和CS持續(xù)接低電平。當WR變低時開始轉(zhuǎn)換,在WR上升沿的700 ns后,轉(zhuǎn)換數(shù)據(jù)被輸出。
本系統(tǒng)采樣頻率fs=250 kHz,字長8 bit。 AD7820為高速、微型、單通道A/D轉(zhuǎn)換器,采用逐次比較技術(shù),轉(zhuǎn)換時間1.36μs,轉(zhuǎn)換范圍0~5 V,使用單電源+5 V供電。逐次比較使用31個比較器,1個高4位ADC和1個低4位ADC,輸入信號被抽樣電路追蹤和保持;有專門ADC輸出接口設計,可與任何端口連接而不需要接口路基電路。所有的數(shù)字信號輸出使用鎖存與三態(tài)緩沖電路,使其可直接與微處理器的數(shù)據(jù)總線和系統(tǒng)的輸入端口相連接。
3.4 D/A轉(zhuǎn)換器
語音回放需將存儲的數(shù)字信號通過D/A轉(zhuǎn)換器轉(zhuǎn)換成語音模擬信號。本系統(tǒng)選用DAC0808,其為8 bitD/A集成電路芯片,滿量程輸出需要150 ns,用±5 V電壓供電時功耗僅有33 mW。
3.5 FPGA及存儲器
在一個以FPGA為核心的語音處理系統(tǒng)中,用存儲容量、存儲時間、回放音質(zhì)等指標衡量語音處理系統(tǒng)優(yōu)越性。系統(tǒng)選用FLASH作片外存儲器,實現(xiàn)語音數(shù)據(jù)的數(shù)字錄音和回放,既保證了系統(tǒng)的高性能,又降低了系統(tǒng)成本。三星公司產(chǎn)品K9F1G08UOM具有128 M×8 bit(1 Gbit)存儲容量,采用NAND閃存技術(shù)工藝,工作電壓2.7~3.6 V,功耗低,容量大,數(shù)據(jù)訪問速度高。
此芯片由8 192個塊(block)組成,每塊由32個頁(page)組成,每頁為512×8 bit。如果需要進行字節(jié)級訪問,128 Mbyte容量需要27根地址線,所以需要4個周期的地址輸入,依次是列地址(A0~A7)、低位行地址(A9~A13)、高位行地址(A14~A26),其中A8由00h和01h2種命令分別設置為低和高,以分別選擇每頁的前256Byte和后256Byte。如此設計I/O總線目的為:(1)減少芯片的管腳數(shù)量;(2)當系統(tǒng)需要更大容量的芯片時,可維持系統(tǒng)板級設計的一致性。
系統(tǒng)的A/D采樣速率設置在250 kHz左右,字長8 bit,1 s的語音數(shù)據(jù)需要8 Kbyte的存儲空間,而存儲器容量為128 Mbyte,所以1片可存儲9 min左右的語音數(shù)據(jù)。FPGA與A/D,D/A及存儲器的連接如圖4所示。
4 軟件設計
在錄音按鍵有效時,首先對FLASH 中的1 024進行塊擦除,然后對FLASH進行寫操作,此時才能往存儲器中寫數(shù)據(jù),F(xiàn)LASH的頁編程流程圖如圖5所示。
放音狀態(tài)有一個主要的程序即對FLASH的對操作,圖6為程序編寫流程圖,其中ECC為誤差糾正代碼。另外,程序中通過控制RE的低電平信號頻率來控制輸出數(shù)據(jù)的速率,實際程序中把頻率控制在250 kHz左右,與A/D的采樣頻率相同。
5 結(jié)束語
系統(tǒng)電路簡單,程序簡潔。采用FLASH存儲器保存語音數(shù)據(jù),即使斷電仍能保持數(shù)據(jù)不丟失,保存數(shù)據(jù)安全可靠。如果在軟件中增加數(shù)據(jù)壓縮算法,可節(jié)省存儲空間,是一種實用的電路設計方案。