《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于UDA1341和FM1182的嵌入式語音網(wǎng)絡傳輸系統(tǒng)設計
基于UDA1341和FM1182的嵌入式語音網(wǎng)絡傳輸系統(tǒng)設計
來源:微型機與應用2012年第2期
孫 銳, 徐 駿, 李 景, 張紅星, 凌 強, 王 嵩
(中國科學技術大學 信息學院, 安徽 合肥 230027)
摘要: 針對當前語音網(wǎng)絡傳輸系統(tǒng)中存在的環(huán)境噪聲、回波、設備工作不穩(wěn)定等問題,提出了一種新型的嵌入式語音網(wǎng)絡傳輸系統(tǒng)設計方案。該系統(tǒng)以ARM9嵌入式處理器S3C2410為核心,ARM Linux為實時操作系統(tǒng),CS8900為網(wǎng)絡傳輸芯片,UDA1341為音頻編解碼芯片,使用了一種新型的芯片F(xiàn)M1182進行語音處理,能夠很好地實現(xiàn)噪聲抑制和回波抵消。給出了相關硬件的電路設計方案,同時介紹了軟件實現(xiàn)流程,并詳細介紹了語音緩沖區(qū)的算法。
Abstract:
Key words :

摘  要: 針對當前語音網(wǎng)絡傳輸系統(tǒng)中存在的環(huán)境噪聲、回波、設備工作不穩(wěn)定等問題,提出了一種新型的嵌入式語音網(wǎng)絡傳輸系統(tǒng)設計方案。該系統(tǒng)以ARM9嵌入式處理器S3C2410為核心,ARM Linux為實時操作系統(tǒng),CS8900為網(wǎng)絡傳輸芯片,UDA1341為音頻編解碼芯片,使用了一種新型的芯片FM1182進行語音處理,能夠很好地實現(xiàn)噪聲抑制和回波抵消。給出了相關硬件的電路設計方案,同時介紹了軟件實現(xiàn)流程,并詳細介紹了語音緩沖區(qū)的算法。
關鍵詞: 嵌入式系統(tǒng); UDA1341; FM1182; 語音傳輸; 多線程

    近年來,嵌入式音頻系統(tǒng)廣泛應用于手機、PDA、MP3、對講系統(tǒng)等消費電子產(chǎn)品。如今對嵌入式音頻系統(tǒng)的要求不僅僅只是完成通話功能,對語音傳輸?shù)那逦?、實時性、抗干擾性以及系統(tǒng)的穩(wěn)定性、安全性也提出了嚴格的要求[1]。
    本設計應用Samsung公司的S3C2410微處理器,Philips公司的UDA1341音頻編解碼芯片以及Fortemedia公司的FM1182語音處理器,結合SDRAM、Flash存儲電路、CS8900網(wǎng)絡傳輸芯片等其他外圍電路構成了一個嵌入式網(wǎng)絡語音傳輸系統(tǒng)。該系統(tǒng)語音數(shù)據(jù)的采集、編解碼、網(wǎng)絡數(shù)據(jù)包傳輸、播放等過程均為Linux下的多線程操作,實現(xiàn)了網(wǎng)絡實時傳輸功能。該系統(tǒng)還添加了一個加速度傳感器的報警電路,防止系統(tǒng)設備被移動。該系統(tǒng)設計特別適用于公共場所的語音求助,如銀行的ATM柜員機、火車站等。
1 系統(tǒng)總體設計和工作流程
    本語音網(wǎng)絡傳輸系統(tǒng)包括ARM9處理器S3C2410控制模塊,網(wǎng)絡傳輸模塊(包括網(wǎng)絡傳輸芯片CS8900、網(wǎng)卡變壓器和網(wǎng)絡接口等),音頻編解碼模塊UDA1341,語音處理模塊FM1182,存儲器設備和其他外圍設備(包括數(shù)據(jù)緩沖電路、報警電路、RS232串口電路、JTAG接口等),其結構框圖如圖1所示。

    ARM9處理器為整個系統(tǒng)的核心,控制著其他模塊的工作運行。系統(tǒng)通過網(wǎng)口與因特網(wǎng)連接,連入遠端中心,通過網(wǎng)絡進行語音數(shù)據(jù)包的傳送和接收。語音處理模塊FM1182負責麥克風錄入聲音和音箱設備播放語音,并且通過線輸入線輸出與語音編解碼芯片UDA1341相連,進行語音數(shù)據(jù)模擬傳輸。語音編解碼芯片通過IIS總線與ARM9處理相連,語音格式采用線性PCM編碼。
    整個系統(tǒng)的運行流程如下:FM1182的麥克風錄音后,語音數(shù)據(jù)通過線輸出送入UDA1341,線性PCM編碼后通過IIS總線送入ARM9處理器,然后生成網(wǎng)絡數(shù)據(jù)包,經(jīng)過因特網(wǎng)向遠端傳送;從因特網(wǎng)接收到數(shù)據(jù)包后,經(jīng)過IIS總線送入UDA1341進行解碼,然后通過線輸入將語音數(shù)據(jù)送入FM1182,最后通過音箱進行放音。
2 系統(tǒng)硬件設計
    系統(tǒng)硬件主要分為控制模塊、音頻編解碼模塊、存儲模塊、網(wǎng)絡傳輸模塊和語音處理模塊5個模塊。
2.1 控制模塊
     采用Samsung公司的S3C2410微處理器。S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18 μm制造工藝的32 bit微控制器。該處理器擁有:獨立的16 KB指令Cache和16 KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer,I/O口,RTC,8路10 bit ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個USB主機,1個USB設備,SD主機和MMC接口,2路SPI。S3C2410處理器最高可運行在203 MHz[2]。此外,為了調試系統(tǒng),還增加RS232串口電路和JTAG調試接口。
2.2 音頻編解碼模塊
     采用Philips公司的UDA1341音頻編解碼芯片。UDA1341提供2組音頻信號輸入線、1組音頻信號輸出線、1組IIS總線接口信號線和1組L3總線。UDA1341通過IIS-BUS接口與S3C2410傳輸音頻數(shù)據(jù),控制數(shù)據(jù)通過L3接口傳輸。L3總線接口包括微處理器串行數(shù)據(jù)線L3DATA、微處理器接口模式選擇線L3MODE和微處理器接口串行時鐘線L3CLOCK。當UDA1341工作在微處理器輸入模式時,微處理器通過L3總線對UDA1341中的音頻處理參數(shù)和系統(tǒng)控制參數(shù)進行配置。S3C2410中沒有L3總線專用接口,電路中使用I/O口連接L3總線。IIS總線接口信號線包括位時鐘輸入BCK、字選擇輸入WS、數(shù)據(jù)輸入DATAI、數(shù)據(jù)輸出DATA0和音頻系統(tǒng)時鐘SYSCLK信號線。IIS總線接口對FIFO存取提供DMA傳輸模式代替中斷模式,它可以同時發(fā)送數(shù)據(jù)和接收數(shù)據(jù),也可以只發(fā)或只收[3-4]。
2.3 存儲模塊
     存儲模塊分為Nand Flash和SDRAM兩部分,包括一片64 M×8 bit的Flash(K9F1208)和兩片4 M×16 bit×4 Banks的SDRAM(K4S561632C)。S3C2410芯片本身提供了SDRAM接口,只須對存儲器控制器相關的寄存器進行適當?shù)呐渲?。系統(tǒng)上電或復位后從Flash中運行Boot loader, 由Boot loader初始化硬件并將μCLinux 拷貝到SDRAM中運行。
2.4 網(wǎng)絡傳輸模塊
    網(wǎng)絡傳輸模塊包括以太網(wǎng)接口芯片CS8900A、網(wǎng)絡指示燈、網(wǎng)絡變壓器和RJ45接口等,用于實現(xiàn)本系統(tǒng)設計與局域網(wǎng)之間的數(shù)據(jù)交換。硬件電路使用的芯片除了處理器S3C2410和以太網(wǎng)芯片CS8900A,還有網(wǎng)卡變壓器。CS8900A通過數(shù)據(jù)總線和地址總線S3C2410處理器相連接。為了保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性,在S3C2410和CS8900A之間增加了數(shù)據(jù)緩沖芯片SN74LVTH162245。
2.5 語音處理模塊
    FM1182語音處理器是富迪科技公司最新推出的低功耗,高性能的芯片。FM1182提升AEC性能-60 dB (聲學回聲消除), 增強噪聲抑制能力。通過內建支持SAM(迷你陣列麥克風)技術, 采用兩個幾乎靠在一起的麥克風可以達到拾音束形成的效果[5]。
    本設計中,F(xiàn)M1182通過其UART口連接到S3C2410,微處理器通過串口對FM1182進行功能配置。FM1182通過線路輸出LINEOUT和線路輸入LINEIN分別與UDA1341的VIN1和VOUT相連,由于傳輸?shù)臑槟M語音信號,因而電路設計中LINEOUT和LINEIN與UDA1341連接的線應盡量短,以免受到電磁干擾。FM1182的麥克風陣列電路使用一個全向麥克風,一個定向麥克風,形成麥克風拾音束。FM1182的SPEAK接口通過功放連接一個音箱進行語音播放。FM1182、UDA1341和S3C2410的連接圖如圖2所示。

3 系統(tǒng)軟件設計
    本系統(tǒng)采用的是開放源代碼的Linux操作系統(tǒng),允許任何人獲取并修改Linux的源碼。在配置Linux的應用程序時,可以選擇加載然后根據(jù)用戶的需要設計這些軟件的配置文件從而實現(xiàn)系統(tǒng)的各項功能。嵌入式Linux操作系統(tǒng)主要由三個基本部分組成:引導程序、Linux內核(由內存管理、進程管理和中斷處理等構成)和文件系統(tǒng)。系統(tǒng)軟件設計部分主要包括操作系統(tǒng)的裁剪和編譯、驅動程序的編寫和主程序的設計。
3.1 軟件體系結構
    系統(tǒng)的軟件設計架構從下而上分為硬件驅動層、操作系統(tǒng)層、網(wǎng)絡協(xié)議層和應用程序層。硬件驅動層主要包括CS8900和UDA1341的驅動程序設計;操作系統(tǒng)層移植了ARM Linux的操作系統(tǒng)內核;網(wǎng)絡協(xié)議層移植了TCP/IP的網(wǎng)絡通信協(xié)議;應用程序層在嵌入式Linux操作系統(tǒng)上運行應用程序。
    Linux下網(wǎng)絡數(shù)據(jù)傳輸主要利用套接字socket接口進行。套接字socket是一種常用的進程間通信機制,通過它不僅能實現(xiàn)本地機器上的進程間通信,而且通過網(wǎng)絡能夠在不同的機器上的進程間進行通信。常用的套接字socket類型主要有兩種:對應TCP服務的流式套接字socket和對應UDP服務的數(shù)據(jù)報式套接字socket[6]。傳統(tǒng)的語音傳輸一般采用UDP通信協(xié)議,即不保證網(wǎng)絡數(shù)據(jù)包是否在網(wǎng)絡中丟失。針對此語音網(wǎng)絡傳輸系統(tǒng)的應用背景,即主要應用于銀行的ATM柜員機的對講系統(tǒng),要保證語音信號在傳輸過程中不丟失,所以對經(jīng)過編碼后的語音信號采用TCP/IP協(xié)議進行傳輸。本系統(tǒng)的基于TCP協(xié)議的通信流程圖如圖3所示。

 

 


3.2 系統(tǒng)主程序的設計
    系統(tǒng)的主程序分別運行在PC機和ARM嵌入式系統(tǒng)上,主程序建立通信過程如下:
    PC端首先要向ARM端發(fā)起TCP連接,PC端接收到來自ARM的TCP連接請求后,驗證ARM端發(fā)送過來的密碼。密碼驗證通過后,建立TCP連接,然后PC機與ARM嵌入式系統(tǒng)進行雙向語音傳輸。同時,當ARM有中斷請求信號時,TCP連接中斷。PC端主程序的流程圖如圖4(a)所示。

    ARM端語音網(wǎng)絡傳輸系統(tǒng)設備上電后,首先對硬件設備進行初始化操作,然后ARM向PC端發(fā)起TCP連接。TCP連接過程中,首先打開MAC配置文件,然后設置ARM的IP、子網(wǎng)掩碼、服務器的IP、監(jiān)聽端口,以及密碼驗證、設置ARM端的用戶名。以上配置成功后再向服務器發(fā)出連接請求。當ARM端與PC端建立了網(wǎng)絡連接之后,PC端開始和ARM端進行網(wǎng)絡語音傳輸 。ARM端主程序的流程圖如圖4(b)所示。
3.3 語音緩沖區(qū)的算法設計
    由于在網(wǎng)絡協(xié)議層中采用TCP協(xié)議進行語音網(wǎng)絡數(shù)據(jù)包的傳送,網(wǎng)絡環(huán)境容易產(chǎn)生變化,因而,相比較UDP協(xié)議,使用TCP協(xié)議在網(wǎng)絡傳輸中會產(chǎn)生一些時延。由于網(wǎng)絡時延不可避免,如果要取得良好的通話效果,必須保證語音在播放時不會產(chǎn)生斷斷續(xù)續(xù)的情形。基于以上情況,可以在語音信號播放前,設置一個緩沖區(qū)來解決這個問題。但在引入緩沖區(qū)的同時,也導致了語音傳輸時間的滯后。緩沖區(qū)太小,無法克服網(wǎng)絡時延的影響。緩沖區(qū)太大,會嚴重影響語音傳輸?shù)膶崟r性。
    NGB(下一代廣播電視網(wǎng))的語音通信最大時間延遲不應超過150 ms,超過這個極限后,人耳聽到的聲音將會覺得無法接受[7]。因而緩沖區(qū)中數(shù)據(jù)包的總傳輸時間不應超過150 ms。ARM端與PC端(監(jiān)控中心)通信時,采取TCP協(xié)議。所有數(shù)據(jù)以包的形式傳輸。每個包的第一個字節(jié)是命令字,后面緊跟著若干字節(jié)(通過命令字能夠確定出后面有多少字節(jié)),最短的包只包含命令字,即只有一個字節(jié);最長的語音數(shù)據(jù)包,有769 B。由于采取TCP協(xié)議,包中的每一個字節(jié)都能夠確保按序接收。
    在實現(xiàn)語音數(shù)據(jù)傳輸時,使用最長的語音數(shù)據(jù)包,即768 B,加上第一個字節(jié)的命令字,共769 B。語音編碼方式采取線性PCM編碼,每一個PCM碼共32 B。由于聲卡的讀取和播放的采樣率均為8 kHz,由此可得每收發(fā)一個數(shù)據(jù)包需要時間為:
    (768×8/32)/8 000=24 ms
     可以在緩沖區(qū)中存放5個TCP語音數(shù)據(jù)包,這樣總的時間延時為:
    24×5=120 ms<150 ms
    故滿足標準。
    語音緩沖區(qū)的填充數(shù)據(jù)和播放數(shù)據(jù)的流程圖如圖5所示,其算法的設計如下:


   (1)在程序啟動后,先將緩沖區(qū)中裝滿數(shù)據(jù)后,設置好播放標志位、填充指針和播放指針,然后從數(shù)據(jù)包0開始依次循環(huán)通過聲卡播放接收到的聲音數(shù)據(jù),同時,填充指針依次循環(huán)后移,向語音緩沖區(qū)填充語音數(shù)據(jù)包。
   (2)聲卡開始播放語音后,只要緩沖區(qū)中數(shù)據(jù)不為空,就正常播放數(shù)據(jù)。
   (3)如果在播放過程中緩沖區(qū)中沒有數(shù)據(jù),則將播放標志位置零,并停止播放,然后重新開始。
    本文提出了一種基于UDA1341和FM1182的嵌入式語音網(wǎng)絡傳輸系統(tǒng)的設計方法,該方案以ARM9的S3C2410為核心處理器, 利用UDA1341和FM1182構成了語音系統(tǒng),通過CS8900網(wǎng)絡芯片進行網(wǎng)絡數(shù)據(jù)傳輸,基于嵌入式Linux操作系統(tǒng),實現(xiàn)了遠程語音網(wǎng)絡數(shù)據(jù)傳輸。實驗表明,該系統(tǒng)可以很好地實現(xiàn)語音數(shù)據(jù)傳輸功能,并可以對環(huán)境中的噪聲進行有效地抑制,也可以很好地實現(xiàn)回波抵消,該設計工作穩(wěn)定,非常適合ATM柜員機等公共場所旁,用于信息求助對講系統(tǒng)。
參考文獻
[1] 智強,李鵬,董明,等. 基于硬件加速模塊的嵌入式語音識別系統(tǒng)解決方案[J].電子技術應用,2008,34(8):
[2] Samsung Electronics. S3C2410A-200 MHz & 266 MHz 32-Bit RISC Microprocessor. USER’S MANUAL,Revision 1.0,2004.
[3] 李巖,王建衛(wèi),紀穎,等.基于ARM嵌入式μCLinux系統(tǒng)原理及應用[M].北京:清華大學出版社,2009.
[4] Philips Semiconductor. UDA1341TS Economy audio CODEC for Minidisc (MD) home stereo and portable applications, 1998.12.
[5] MEDIA F. FM1182E Low-Power Voice Processor. Preliminary Data Sheet V2.0, 2008.9.
[6] 楊水清,張劍,施云飛,等.ARM嵌入式Linux系統(tǒng)開發(fā)技術詳解[M].北京:電子工業(yè)出版社,2008.11.
[7] 余少波. NGB的語音通信的最大延遲應該小于150 ms[EB/OL].2010-8-9. http://tech.c114.net/166/a531316.html.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。