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