《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LPC4357的數(shù)字對(duì)講機(jī)終端設(shè)計(jì)
基于LPC4357的數(shù)字對(duì)講機(jī)終端設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2013年第10期
馮 杰, 謝曉明
(北京化工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,北京 100029)
摘要: LPC4357是NXP推出的基于ARM Cotex-M4核心的MCU,介紹了基于該MCU的低成本、低復(fù)雜度數(shù)字對(duì)講機(jī)方案,詳細(xì)闡述了一種軟件設(shè)計(jì)方法,并針對(duì)實(shí)現(xiàn)中的問(wèn)題與難點(diǎn)做了說(shuō)明。
Abstract:
Key words :

摘   要: LPC4357是NXP推出的基于ARM Cotex-M4核心的MCU,介紹了基于該MCU的低成本、低復(fù)雜度數(shù)字對(duì)講機(jī)方案,詳細(xì)闡述了一種軟件設(shè)計(jì)方法,并針對(duì)實(shí)現(xiàn)中的問(wèn)題與難點(diǎn)做了說(shuō)明。
關(guān)鍵詞: LPC4357;Cotex-M4;UDA1380;數(shù)字對(duì)講機(jī)

    在通信設(shè)備全面數(shù)字化的今天,對(duì)講機(jī)是少數(shù)還沒(méi)有被數(shù)字化的設(shè)備之一。數(shù)字對(duì)講機(jī)與傳統(tǒng)模擬對(duì)講機(jī)相比,其頻譜利用率更高,通信質(zhì)量更好,安全性更有保證,業(yè)務(wù)也更廣泛。這些特點(diǎn)對(duì)應(yīng)對(duì)緊張的頻譜資源狀況有重要意義,同時(shí)給數(shù)字對(duì)講機(jī)的應(yīng)用帶來(lái)更大的市場(chǎng)空間。2009年,工信部頒發(fā)了666號(hào)文件[1],文件規(guī)定2010年不再批發(fā)25 kHz帶寬對(duì)講機(jī)的型號(hào)核準(zhǔn),2011年停止模擬對(duì)講機(jī)的型號(hào)核準(zhǔn),2016年中國(guó)市場(chǎng)禁止使用模擬對(duì)講機(jī),專網(wǎng)無(wú)線通信將全面進(jìn)入數(shù)字時(shí)代。
    從目前的市場(chǎng)形勢(shì)來(lái)分析,除了國(guó)家政策的支持外,推動(dòng)數(shù)字化進(jìn)程的關(guān)鍵因素是降低數(shù)字終端的價(jià)格。一個(gè)低復(fù)雜度、低成本的數(shù)字對(duì)講機(jī)方案對(duì)設(shè)備生產(chǎn)商和使用者都有積極意義。本文提出了一種基于單片通用處理器的dPMR數(shù)字對(duì)講機(jī)解決方案,該方案通用性強(qiáng),成本低,非常適合設(shè)備廠商二次開(kāi)發(fā)和擴(kuò)展。
1 芯片選擇
    本文提出的方案中,語(yǔ)音CODEC選用飛利浦公司的UDA1380[2],該芯片片內(nèi)集成兩組ADC和DAC,支持雙聲道全雙工通信。聲碼器由用戶根據(jù)需要進(jìn)行選擇,可以使用ASIC硬件實(shí)現(xiàn),也可使用軟件實(shí)現(xiàn)。MCU選用NXP公司的LPC4357。LPC43xx系列芯片基于ARM公司推出的Cortex-M4核心,另有Cortex-M0作為協(xié)處理器[3],同時(shí)Cortex-M4支持?jǐn)U展的數(shù)字信號(hào)處理加速指令,如SIMD指令、MAC指令、飽和運(yùn)算指令等[4],這使得MCU不僅可以用于控制,還可以用于小規(guī)模數(shù)字信號(hào)處理。
    UDA1380的ADC支持8 kHz~55 kHz的采樣率,DAC支持8 kHz~100 kHz的采樣率,由于調(diào)頻數(shù)字對(duì)講機(jī)對(duì)話音質(zhì)量的要求并不高,滿足正常、清晰的通話即可,因此不需要立體聲采樣,只需用一路A/D和D/A,另一路A/D和D/A可以當(dāng)做通用ADC和DAC??傮w上來(lái)看, UDA1380在數(shù)據(jù)輸入/輸出方面支持模擬、數(shù)字間的各種組合,這種特性給應(yīng)用者帶來(lái)了很大的靈活性; 閑置A/D和D/A增加了系統(tǒng)可擴(kuò)展性,并進(jìn)一步降低硬件復(fù)雜度和成本。芯片內(nèi)部結(jié)構(gòu)如圖1所示。

    MCU需要完成系統(tǒng)的控制工作和聲碼器、數(shù)字濾波等數(shù)字信號(hào)處理任務(wù)。為了充分發(fā)揮芯片的性能,瑣碎的控制工作可以交給Cortex-M0處理,Cortex-M4完成數(shù)字信號(hào)處理算法。綜合考慮代碼量、內(nèi)存開(kāi)銷、運(yùn)算速度以及擴(kuò)展需求,選用NXP的LPC4357作為MCU。LPC4357最高主頻可達(dá)204 MHz;片內(nèi)有兩組512 KB的Flash,總共136 KB的SRAM,16 KB的EEPROM;豐富的片內(nèi)外設(shè)和接口可以滿足各種擴(kuò)展需求。經(jīng)過(guò)前期的方案驗(yàn)證,該芯片完全可以滿足目前的需求,而且還有足夠的可擴(kuò)展空間。
    除上述主要芯片外,系統(tǒng)還需要一個(gè)射頻前端。為了突出系統(tǒng)的可擴(kuò)展性,本文并不對(duì)射頻前端做具體規(guī)定,按照前述硬件選擇,射頻前端可以根據(jù)需要靈活選擇支持4FSK的專用芯片或者成本更低廉的FM模塊。
2 系統(tǒng)總體方案
    系統(tǒng)框圖如圖2所示。MCU與UDA1380通過(guò)I2S和I2C接口連接,其中I2S用于語(yǔ)音數(shù)據(jù)傳輸,I2C用于控制字傳輸。

    圖2中,根據(jù)不同的射頻前端選擇,可以有兩種具體的方案: (1)如果射頻芯片選用帶有4FSK調(diào)制解調(diào)功能的收發(fā)器芯片,可以采用圖2(a)所示方案。MCU讀取被UDA1380數(shù)字化的語(yǔ)音信號(hào),經(jīng)過(guò)聲碼器壓縮、協(xié)議棧打包等操作后,可以直接按照2.4 kHz的符號(hào)率將數(shù)據(jù)發(fā)送至射頻收發(fā)芯片進(jìn)行調(diào)制并發(fā)射。接收的過(guò)程是發(fā)射的逆過(guò)程。(2)如果需要進(jìn)一步降低成本,射頻前端可以選用更簡(jiǎn)單的FM收發(fā)器,在MCU內(nèi)使用軟件實(shí)現(xiàn)基帶調(diào)制解調(diào)(如圖2(b))。這樣MCU從UDA1380讀取數(shù)據(jù)后,除了(1)中所述的處理外,還要做4FSK調(diào)制,然后再通過(guò)I2S接口發(fā)送回UDA1380,使用UDA1380的另一路D/A將數(shù)據(jù)轉(zhuǎn)變?yōu)槟M信號(hào)再做模擬FM調(diào)制并發(fā)射。接收過(guò)程同樣是發(fā)送的逆過(guò)程。

 


3 軟件需求分析與設(shè)計(jì)
    本方案中,軟件需要完成的任務(wù)主要包括系統(tǒng)控制、數(shù)據(jù)通信、協(xié)議棧和數(shù)字信號(hào)處理算法。
3.1 系統(tǒng)控制
    系統(tǒng)控制包括對(duì)音量調(diào)節(jié)、頻道選擇、按鍵解析等操作。系統(tǒng)啟動(dòng)后,完成必要的初始化和全局緩沖區(qū)內(nèi)存申請(qǐng)等工作后,進(jìn)入主循環(huán)。主循環(huán)中需要處理的每項(xiàng)工作可以看做一個(gè)任務(wù),每個(gè)任務(wù)都各自的觸發(fā)條件。軟件順序地執(zhí)行每個(gè)任務(wù),沒(méi)有一定的優(yōu)先級(jí),但是某些任務(wù)的返回值可能會(huì)影響其他任務(wù)的執(zhí)行狀態(tài),所以整個(gè)主循環(huán)也是一個(gè)狀態(tài)機(jī)。主循環(huán)內(nèi)的宏觀流程圖如圖3所示。

 

 

    為了提升方案的功耗表現(xiàn),增加了節(jié)能模式,在正常發(fā)送或接收模式下,也應(yīng)該根據(jù)需要盡可能讓不工作的模塊處于關(guān)閉狀態(tài),以進(jìn)一步延長(zhǎng)設(shè)備的工作時(shí)間。經(jīng)測(cè)量,加入電源管理后,功耗降低了。
3.2 數(shù)據(jù)通信
3.2.1 語(yǔ)音數(shù)據(jù)采集與播放

    本文使用的MELP聲碼器對(duì)20 ms語(yǔ)音幀進(jìn)行編碼,UDA1380被配置為16 kHz的采樣率,16 bit量化、立體聲采樣(右聲道傳輸其他數(shù)據(jù))。所以在MCU內(nèi)一個(gè)20 ms語(yǔ)音幀所需緩沖區(qū)大小為1 280 B。為了保證數(shù)據(jù)的連續(xù)性,使用兩片1 280 B大小的緩沖區(qū)進(jìn)行交替使用。為了使收發(fā)獨(dú)立,互不干擾,除了兩片發(fā)送緩沖區(qū),還需要為接收也開(kāi)辟兩塊1 280 B的緩沖區(qū)。綜上所述,MCU中用于語(yǔ)音數(shù)據(jù)的靜態(tài)緩沖區(qū)為5 KB,出于對(duì)RAM資源節(jié)省的考慮,將這些靜態(tài)緩沖區(qū)通過(guò)分散加載[5]放置于片內(nèi)Flash中的固定位置。聲碼器對(duì)一個(gè)語(yǔ)音幀的編解碼操作必須在接下來(lái)的20 ms內(nèi)完成,以保證整個(gè)系統(tǒng)的正常運(yùn)行。
    由于語(yǔ)音數(shù)據(jù)量大,為了在數(shù)據(jù)通信上不占用過(guò)多資源,MCU中I2S接口數(shù)據(jù)的收發(fā)使用DMA來(lái)控制,如圖4所示。采集時(shí),UDA1380將數(shù)據(jù)傳輸?shù)組CU中I2S模塊的緩沖隊(duì)列中,當(dāng)緩沖隊(duì)列的數(shù)據(jù)深度達(dá)到預(yù)設(shè)的DMA觸發(fā)深度時(shí),DMA控制器將I2S緩沖隊(duì)列中的數(shù)據(jù)搬移至Flash中的數(shù)據(jù)緩沖區(qū),等待后續(xù)的聲碼器壓縮處理;播放時(shí),聲碼器解碼數(shù)據(jù)后存放在Flash中的數(shù)據(jù)緩沖區(qū)中,此時(shí)DMA控制器被啟動(dòng),從Flash數(shù)據(jù)緩沖區(qū)搬移數(shù)據(jù)到I2S模塊的發(fā)送緩沖隊(duì)列中,隊(duì)列中的數(shù)據(jù)會(huì)連續(xù)發(fā)送至UDA1380進(jìn)行播放。

3.2.2 同步
    系統(tǒng)工作時(shí),MCU中對(duì)數(shù)據(jù)的處理一定要與已接收或者待發(fā)送的有效數(shù)據(jù)保持一定的同步關(guān)系,這種同步通過(guò)DMA控制器的中斷來(lái)實(shí)現(xiàn)。設(shè)置DMA使其每搬移1 280 B中斷一次,即每20 ms中斷一次。雙緩沖區(qū)方案不是唯一的,也可以使用一個(gè)較大的隊(duì)列來(lái)替代??紤]到此處時(shí)間控制十分嚴(yán)格且數(shù)據(jù)量一定,所以選用雙緩沖區(qū)交替使用的方法不但節(jié)省內(nèi)存,軟件實(shí)現(xiàn)也十分簡(jiǎn)單,在對(duì)應(yīng)的中斷處理函數(shù)中只需切換數(shù)據(jù)緩沖區(qū)索引并重啟DMA即可達(dá)到同步的目的。
    另一個(gè)對(duì)定時(shí)要求十分嚴(yán)格的地方就是MCU與射頻前端的通信部分。只有此處嚴(yán)格定時(shí),才能保證空中數(shù)據(jù)的連續(xù)與正確。由于本文給出的方案偏向于通用方案,所以該處的定時(shí)針對(duì)不同射頻前端推薦幾種處理方式:(1)如果射頻收發(fā)器選用支持4FSK的專用芯片,可以從接口和中斷的角度考慮解決方案。常用于此處的接口有SPI、McBSP等,這種同步接口通過(guò)嚴(yán)格的控制時(shí)鐘可以達(dá)到準(zhǔn)確定時(shí)的目的。此外,專用芯片通常會(huì)將收發(fā)結(jié)束的信號(hào)引出到管腳,用戶可用此信號(hào)觸發(fā)MCU的外部中斷,使用異步方式通信。(2)如果通過(guò)MCU軟件完成4FSK基帶調(diào)制解調(diào),可以使用定時(shí)器中斷滿足定時(shí)需求,或者使用DMA搬移定量數(shù)據(jù)并中斷,既可以節(jié)省MCU資源,又可以達(dá)到定時(shí)目的。
3.3 數(shù)字信號(hào)處理算法
    方案中的信號(hào)處理算法主要指數(shù)字濾波、聲碼器和基帶調(diào)制解調(diào)。這部分軟件占用MCU資源最多,其中聲碼器是對(duì)系統(tǒng)性能影響最大的模塊。
    實(shí)現(xiàn)上述數(shù)字信號(hào)處理算法的方法是使用匯編或者編譯器支持的固有函數(shù),也可以使用廠商提供的DSP庫(kù)[6]。為了避免過(guò)多地依賴編譯器又能充分發(fā)揮Cortex-M4的性能,選擇C內(nèi)嵌匯編的方式實(shí)現(xiàn)。實(shí)驗(yàn)表明,采用ADF7021為射頻前端,在未使用M0做輔助操作時(shí),LPC4357完成一個(gè)20 ms語(yǔ)音幀的編解碼操作需要10 ms左右的時(shí)間,該延遲不會(huì)影響系統(tǒng)正常運(yùn)行。
3.4 需要注意的問(wèn)題
    實(shí)現(xiàn)過(guò)程中需要注意:(1)由于目前沒(méi)有使用操作系統(tǒng),因此軟件設(shè)計(jì)時(shí)要使用非阻塞操作,除了滿足實(shí)時(shí)響應(yīng)的需求,也避免了不必要的系統(tǒng)癱瘓;(2)該方案的靈活性是建立在簡(jiǎn)化硬件、充分利用軟件實(shí)現(xiàn)各種功能的基礎(chǔ)上,軟件設(shè)計(jì)時(shí)要盡可能地模塊化、部件化,以方便功能擴(kuò)展和二次開(kāi)發(fā)。
    本文設(shè)計(jì)的方案已經(jīng)應(yīng)用于樣機(jī)設(shè)計(jì)并投入小批量試產(chǎn),在成本、話音質(zhì)量、功耗等方面有顯著的優(yōu)勢(shì);而且由于在設(shè)計(jì)之初充分考慮了二次開(kāi)發(fā)問(wèn)題,所以該方案有著良好的可擴(kuò)展性,應(yīng)用前景十分廣闊。
參考文獻(xiàn)
[1] 工業(yè)和信息化部.工業(yè)和信息化部關(guān)于150 MHz 400 MHz頻段專用對(duì)講機(jī)頻率規(guī)劃和使用管理有關(guān)事宜的通知[S].2009-12-12.
[2] Philips Semiconductors. UDA1380, stereo audio coder-decoder  for MD, CD and MP3[Z]. 2004.
[3] NXP Semiconductors. LPC43xx user manual Rev. 1.1[Z]. 2012.
[4] ARM. Cortex-M4 devices generic user guide[Z]. 2010.
[5] ARM. RealView編譯工具4.0-鏈接器用戶指南[Z].2008.
[6] IAR Systems. Designing advanced DSP applications on the  Kinetis ARM Cortex-M4 MCU-Part 1[Z]. 2011.

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