目前,大多數(shù)數(shù)字對(duì)講機(jī)方案都是基于通用芯 片平臺(tái),集成度低,功耗較高,價(jià)格昂貴,調(diào)試復(fù) 雜,不利于產(chǎn)業(yè)化。隨著集成電路技術(shù)的發(fā)展,基 于聲碼器與微控制器的對(duì)講機(jī)方案得到了較快的發(fā) 展,聲碼器通常使用專用語(yǔ)音編解碼芯片完成語(yǔ)音 收稿日期:2012-05-11。
男,碩士研究生,主要研究方向?yàn)闊o(wú)線通信系 統(tǒng)、語(yǔ)音信號(hào)處理、FPGA開發(fā);楊驍(1978-), 男,講師,博士,主要研究方向?yàn)槟M集成電 路設(shè)計(jì)、混合信號(hào)集成電路設(shè)計(jì)、射頻集成電 路設(shè)計(jì)、信號(hào)處理。
數(shù)字化處理。為了簡(jiǎn)化系統(tǒng)維護(hù),方便使用操作, 采用通用數(shù)字信號(hào)處理器作為基帶處理核心,實(shí)現(xiàn) 聲碼器功能,使語(yǔ)音處理靈活,具有更好的通用性和 擴(kuò)展性。
1系統(tǒng)的硬件設(shè)計(jì)
根據(jù)該基帶系統(tǒng)在功耗、成本及擴(kuò)展性等方面 考慮,需要完成模擬語(yǔ)音信號(hào)數(shù)字化轉(zhuǎn)換及處理, 無(wú)線信道傳輸。系統(tǒng)總體結(jié)構(gòu)方案如圖1所示。
圖1系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)主要由AIC23數(shù)模轉(zhuǎn)換模塊、DSP語(yǔ)音處
理模塊、微控制單元(MCU)模塊和CC1101射頻模 1^4部分構(gòu)成。
1. 1 DSP處理模塊
基帶系統(tǒng)處理核心是基于通用DSP形成的數(shù)字 語(yǔ)音處理單元,實(shí)現(xiàn)數(shù)模轉(zhuǎn)換模塊AIC23的控制, 完成MELP聲碼器。選擇TMS320VCM10作為基帶系 統(tǒng)處理核心,它有如下特點(diǎn)⑴:雙乘加器(MAC)結(jié)構(gòu), 代碼執(zhí)行效率高;320KWord的RAM,可以減少擴(kuò)展功 耗較大的片外存儲(chǔ)芯片;豐富的片上外設(shè),如:外部 存儲(chǔ)器接口(EMIF,External Memory Interface)、 直接內(nèi)存存取(DMA, Direct Memory Access)控制 器、多通道緩沖串行口(McBSP,Multi-channel Buffered Serial Port)等;先進(jìn)的電源管理技術(shù) 降低系統(tǒng)功耗。通過(guò)EMIF接口擴(kuò)展256KWord的 Flash存儲(chǔ)器,用于上電后系統(tǒng)程序的加載,和電 源、時(shí)鐘管理、JTAG模塊構(gòu)成DSP的最小系統(tǒng)。
1.2數(shù)模轉(zhuǎn)換模塊
TLV320AIC23是H公司推出的一款高性能、低 功耗立體聲音頻編解碼器[a。它可以和TI的DSP無(wú) 縫連接,通過(guò)DSP的McBSP接口與其進(jìn)行連接, McBSP 1用于配置工作參數(shù),McBSP2用于傳送模數(shù) (A/D)、數(shù)模(D/A)轉(zhuǎn)換的數(shù)據(jù)。AIC23和DSP的 輸入輸出接口(I/O)電壓兼容,使系統(tǒng)設(shè)計(jì)簡(jiǎn)單。
1. 3 MCU模塊
控制器MCU主要實(shí)現(xiàn)對(duì)外圍器件的控制和設(shè) 置,進(jìn)行按鍵掃描檢測(cè)、基帶信號(hào)的發(fā)送與接收、 與DSP之間數(shù)據(jù)的交換和實(shí)現(xiàn)通信協(xié)議。選擇 MSP430F149作為主控制器 ' 其通用同步/異步接 收/發(fā)送器(USART)串口與DSP進(jìn)行通信。USART1 與DSP的McbspO接口連接,通過(guò)串行外設(shè)接口 (SPI) 進(jìn)行數(shù)據(jù)通信;USART0與射頻模塊進(jìn)行連接通信。 1. 4射頻模塊
射頻模塊主要完成數(shù)字基帶信號(hào)調(diào)制解調(diào),規(guī) 定比特符號(hào)和碼元之間的關(guān)系,并建立頻率同步和 碼元同步。射頻模塊采用TI的CC1101芯片,集 成了一個(gè)高度可配置的基帶調(diào)制解調(diào)器,支持四進(jìn) 制頻移鍵控(4FSK)、高斯頻移鍵控(GFSK)、最小 移頻鍵控(MSK)等調(diào)制方式。單片機(jī)通過(guò)SPI方式 實(shí)現(xiàn)對(duì)CC1101運(yùn)行參數(shù)和64字節(jié)發(fā)送/接收先入先 出隊(duì)列(FIFO)的控制[3]。
2系統(tǒng)軟件的設(shè)計(jì)
軟件主要是DSP與MSP430的程序設(shè)計(jì),包括數(shù) 據(jù)采集、語(yǔ)音處理、MCU控制處理。接收時(shí),CC1101 接收無(wú)線傳輸來(lái)的調(diào)制信號(hào),解調(diào)后送到MSP430完 成數(shù)據(jù)組幀恢復(fù),得到數(shù)字編碼碼流。與DSP進(jìn)行 通信,DSP對(duì)其進(jìn)行解碼恢復(fù)成數(shù)字語(yǔ)音碼流,送到
AIC23進(jìn)行D/A轉(zhuǎn)換為話音信號(hào)。發(fā)送時(shí),由麥克 風(fēng)輸入的語(yǔ)音經(jīng)AIC23進(jìn)行A/D采樣,由DSP進(jìn)行數(shù) 字壓縮編碼,再送到單片機(jī)進(jìn)行填充組幀,最后由 射頻模塊進(jìn)行調(diào)制后發(fā)射出去。
2. 1數(shù)據(jù)采集
DSP與AIC23之間的數(shù)據(jù)交換采用DMA的工作 方式減輕數(shù)據(jù)采集時(shí)DSP的負(fù)擔(dān),同時(shí)進(jìn)行聲碼 器處理。采用兵兵(Ping-Pong)存儲(chǔ)結(jié)構(gòu),每當(dāng)串 口 Mcbsp2發(fā)送/接收到一個(gè)單元數(shù)據(jù),自動(dòng)觸發(fā)DMA 將其存入一個(gè)存儲(chǔ)塊中,例如Ping存儲(chǔ)區(qū),當(dāng)存儲(chǔ) 滿時(shí)會(huì)中斷CPU進(jìn)行數(shù)據(jù)處理。同時(shí),DMA會(huì)自動(dòng) 去操作Pong存儲(chǔ)區(qū),繼續(xù)采集數(shù)據(jù)。這樣可以有效 防止數(shù)據(jù)在處理時(shí)被新數(shù)據(jù)覆蓋的情況,而且 Ping-Pong之間自動(dòng)切換,可以不間斷對(duì)數(shù)據(jù)進(jìn)行 采集,適合流水線式處理,完成數(shù)據(jù)的無(wú)縫緩沖與 實(shí)時(shí)處理。
2. 2語(yǔ)音處理
語(yǔ)音處理模塊主要實(shí)現(xiàn)MELP聲碼器算法5]。 語(yǔ)音幀長(zhǎng)22. 5 ms,每幀數(shù)據(jù)用54 bit進(jìn)行編碼。 MELP聲碼器分為分析器和合成器兩部分。分析器實(shí) 現(xiàn)對(duì)原始語(yǔ)音信號(hào)進(jìn)行幀分析處理,其流程圖如圖 2所示。首先經(jīng)過(guò)高通濾波器進(jìn)行預(yù)處理,濾除直流 工頻干擾,然后完成各個(gè)語(yǔ)音段的特征參數(shù)(基音 周期、帶通清/濁音強(qiáng)度、非周期脈沖標(biāo)志、線譜 對(duì)(LSF, Linear Spectrum Pairs)參數(shù)、增益估計(jì) 和傅里葉譜幅度等)的提取,最后進(jìn)行量化編碼和 組幀。
圖2 MELP聲碼器分析流程
合成器用于對(duì)接收到的碼流進(jìn)行解碼恢復(fù),首 先進(jìn)行解包、排列,然后譯碼生成混合激勵(lì)信號(hào), 先后經(jīng)過(guò)自適應(yīng)譜增強(qiáng),線性預(yù)測(cè)編碼參數(shù)(LPC, Linear Predictive Coding)合成濾波,增益控 制,脈沖離散濾波等步驟處理,在接收端重構(gòu)輸入 的語(yǔ)音信號(hào)[5]。合成器的流程圖如圖3所示。
聲碼器模塊采用MELP標(biāo)準(zhǔn)的C程序開源代 碼。在DSP移植過(guò)程中,需要對(duì)其進(jìn)行優(yōu)化,以滿 足實(shí)時(shí)性要求。主要從以下幾個(gè)方面對(duì)MELP的定 點(diǎn)C代碼進(jìn)行優(yōu)化。
圖3 MELP聲碼器合成流程
(1)編譯器優(yōu)化選項(xiàng)和inline函數(shù)方法優(yōu)化[6]
采用優(yōu)化選項(xiàng)的優(yōu)化級(jí)別-02,得到較高的代碼
優(yōu)化效率。對(duì)小函數(shù)用inline關(guān)鍵字限定,當(dāng)函數(shù) 較常被調(diào)用時(shí),可以減少調(diào)用的時(shí)間開銷,獲得較好 優(yōu)化效果。
(2)使用ETSI函數(shù)m
調(diào)用mathhalf文件中基本運(yùn)算函數(shù)非常頻繁, 運(yùn)行效率低。將這些函數(shù)用ETSI函數(shù)代替,當(dāng)代碼 中調(diào)用了這些函數(shù)時(shí),編譯器會(huì)自動(dòng)把優(yōu)化過(guò)的匯 編代碼嵌入到程序中,可以節(jié)省很多時(shí)鐘周期,優(yōu)化 效果很好。
(3)數(shù)據(jù)內(nèi)存的優(yōu)化
對(duì)存儲(chǔ)器進(jìn)行合理規(guī)劃,將程序代碼和常量系 數(shù)分配到單訪問(wèn)隨機(jī)存儲(chǔ)器(SARAM,Single Access RAM)中,把頻繁訪問(wèn)的變量、堆棧等放在雙訪問(wèn)隨 機(jī)存儲(chǔ)器(DARAM,Dual-Access RAM)中,充分利用 片內(nèi)內(nèi)存,提尚程序的執(zhí)行效率。
(4)對(duì)程序結(jié)構(gòu)進(jìn)行簡(jiǎn)化
對(duì)代碼結(jié)構(gòu)進(jìn)行優(yōu)化,減少一些不必要的代碼 的運(yùn)行,比如logicO;等測(cè)試函數(shù)。將算法中用到 MEM—ALL0C0等動(dòng)態(tài)分配內(nèi)存的函數(shù),根據(jù)運(yùn)行時(shí)所 需的空間大小在函數(shù)中直接給出,減少庫(kù)函數(shù)的調(diào) 用,防止破壞軟件流水執(zhí)行。
(5)循環(huán)優(yōu)化[8]
對(duì)算法中循環(huán)部分進(jìn)行優(yōu)化。利用其硬件結(jié)構(gòu)、 尋址方式進(jìn)行修改,減少分支和調(diào)用等指令,合理 安排代碼處理流程。充分利用其指令執(zhí)行時(shí)的流水 線特點(diǎn),提局執(zhí)行效率。
DSP程序的控制流程如圖4所示。程序中設(shè)置 兩個(gè)長(zhǎng)度為180字編碼和解碼緩沖塊。當(dāng)接收緩沖 區(qū)滿180樣點(diǎn)時(shí),DMA中斷CPU進(jìn)行處理,把數(shù)據(jù) 復(fù)制到編碼緩沖塊中并進(jìn)行MELP編碼,處理得到的 數(shù)據(jù)通過(guò)DMA復(fù)制到發(fā)送緩沖存儲(chǔ)器,送到MCU進(jìn) 行后續(xù)處理。解碼過(guò)程是將MCU發(fā)來(lái)的幀比特?cái)?shù)據(jù), 經(jīng)過(guò)MELP解碼后存儲(chǔ)解碼數(shù)據(jù)到解碼緩沖塊中,然 后將合成語(yǔ)音數(shù)據(jù)發(fā)送到AIC23進(jìn)行話音的回放。