基于DSP的通用型嵌入式語(yǔ)音平臺(tái)的硬件設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
高質(zhì)量、低速率的語(yǔ)音編碼算法在現(xiàn)代通訊系統(tǒng)中地位越來(lái)越重要,被廣泛應(yīng)用于諸如IP電話、語(yǔ)音信箱、軍事無(wú)線通訊等領(lǐng)域。特別是在一些特殊的應(yīng)用領(lǐng)域,信道帶寬很窄而且誤碼率較高,要在這種信道上實(shí)現(xiàn)語(yǔ)音通訊,低速和甚低速語(yǔ)音壓縮編碼技術(shù)是關(guān)鍵。以前由于硬件條件的限制,此類的低速率復(fù)雜編解碼算法往往只能停留在原理和計(jì)算機(jī)實(shí)現(xiàn)階段。近些年來(lái),由于VLSI技術(shù)的蓬勃發(fā)展,尤其是高性能數(shù)字信號(hào)處理芯片的DSP的普及,這些編碼算法開始大規(guī)模的運(yùn)用到了現(xiàn)實(shí)領(lǐng)域。本次設(shè)計(jì)就是為這套軍用語(yǔ)音編碼算法標(biāo)準(zhǔn)設(shè)計(jì)一個(gè)通用編解碼平臺(tái)。該平臺(tái)已經(jīng)做為嵌入式低功耗語(yǔ)音模塊,應(yīng)用到語(yǔ)音編碼和語(yǔ)音合成等領(lǐng)域,并已小規(guī)模量產(chǎn)。
1. 語(yǔ)音硬件平臺(tái)的總體介紹和系統(tǒng)框架
本語(yǔ)音信號(hào)處理平臺(tái)需要考慮以下幾個(gè)方面的設(shè)計(jì)要求。在運(yùn)算量方面,本平臺(tái)上運(yùn)行的幾種語(yǔ)音編碼算法都具有比較高的運(yùn)算復(fù)雜度,經(jīng)過(guò)CCS的仿真測(cè)試結(jié)果表明,至少要求DSP芯片有50MIPS的處理能力。在接口設(shè)計(jì)方面,搭載本聲碼器模塊的通訊平臺(tái)定義了如表1所示的接口管腳,其中VIN和VOUT分別連接到通訊平臺(tái)的話筒和聽筒上的輸入和輸出話音,PTT連接到話筒的按鈕上,按下PTT表示請(qǐng)求通話。TXD和RXD分別是發(fā)送和接收的數(shù)字語(yǔ)音碼流信號(hào),RTS和CD分別是發(fā)送和接收碼流指示,為低電平的時(shí)候表示碼流有效。TXC為系統(tǒng)的同步時(shí)鐘。在功耗方面,由于是手持式設(shè)備,要求采用低功耗設(shè)計(jì),以延長(zhǎng)電池的使用時(shí)間。另外,設(shè)計(jì)系統(tǒng)的安全性也是一個(gè)需要考慮的因素。
如圖所示,當(dāng)PTT被按下則表示請(qǐng)求通話,話筒輸入的模擬話音VIN通過(guò)一個(gè)放大電路放大之后輸入語(yǔ)音CODEC芯片TLV320AIC11,TLV320AIC11內(nèi)的模數(shù)轉(zhuǎn)換器將其轉(zhuǎn)換成16bit的線性PCM格式并通過(guò)DSP的McBSP0口傳送到DSP內(nèi)部接收語(yǔ)音緩沖區(qū),DSP在緩沖區(qū)內(nèi)的數(shù)據(jù)在積累到一定幀長(zhǎng)之后啟動(dòng)編碼算法編成特定碼率的碼流。編好的碼流被送入另一發(fā)送比特流緩沖區(qū)緩沖。該緩沖區(qū)內(nèi)的信號(hào)在同步時(shí)鐘TXC的上升沿被送到MODEM的調(diào)制模塊調(diào)制并發(fā)射出去。同時(shí),DSP檢測(cè)MODEM的CD信號(hào),當(dāng)CD信號(hào)有效(低電平)時(shí),在同步時(shí)鐘TXC的下降沿鎖存RXD上的數(shù)據(jù)并送入DSP內(nèi)的接收比特流緩沖區(qū)。當(dāng)接收比特緩沖區(qū)內(nèi)的數(shù)據(jù)積累到一定長(zhǎng)度時(shí),DSP啟動(dòng)解碼程序?qū)⑵浣獯a成16bit的PCM語(yǔ)音。該語(yǔ)音通過(guò)McBSP0口被送入TLV320AIC11,TLV320AIC11內(nèi)的數(shù)模轉(zhuǎn)換器將其轉(zhuǎn)換成模擬的語(yǔ)音信號(hào)送入聽筒。
語(yǔ)音CODEC芯片和DSP、MCU的硬件連接圖如圖2所示,[5]TLV320AIC11是德州儀器公司生產(chǎn)的一款語(yǔ)音CODEC芯片,其片內(nèi)集成了一個(gè)A/D和一個(gè)D/A模塊,并且有內(nèi)置的運(yùn)算放大器,因此僅需要很少的部件就可以將無(wú)源話筒和聽筒連接到AIC11上。同時(shí),由于它可以和TI公司的DSP無(wú)縫連接。如圖所示,本次設(shè)計(jì)中AIC11工作在主模式下(M/S=1),在這個(gè)模式下,芯片的采樣率為SCLK腳輸入的時(shí)鐘頻率的1/256。SCLK腳輸入的時(shí)鐘來(lái)源于MCU的P5.5,這個(gè)管腳是MCU的副時(shí)鐘輸出為MCU主時(shí)鐘的1/4。由于MCU工作在4.096MHz,因此CODEC的采樣頻率為8KHz。AIC11以8KHz的頻率在FS上發(fā)出同步脈沖,并在DOUT腳上將16bit的PCM數(shù)據(jù)流發(fā)送到DSP。同時(shí)從DIN管腳接收DSP發(fā)送過(guò)來(lái)的經(jīng)過(guò)解碼的16bit PCM語(yǔ)音。由于使用了AIC11,系統(tǒng)的使用“粘合邏輯”部件大大減小,從而有效的縮小了硬件電路板的面積。
2. 硬件系統(tǒng)加密設(shè)計(jì)
有效的保護(hù)知識(shí)產(chǎn)權(quán)是產(chǎn)品開發(fā)必須要考慮的因素。TI的C55x系列DSP芯片是一種開放式的總線結(jié)構(gòu),因此別有用心的人可以通過(guò)JTAG接口和相應(yīng)軟件訪問(wèn)并分析DSP內(nèi)部存儲(chǔ)區(qū)的代碼和數(shù)據(jù),或者僅僅是直接導(dǎo)出并復(fù)制這些信息,就可以輕易竊取產(chǎn)品。針對(duì)這種現(xiàn)實(shí)情況,最好的解決方法是將程序交由芯片的生產(chǎn)商掩模入芯片內(nèi)部的ROM儲(chǔ)存區(qū)內(nèi),再去除DSP芯片中的JTAG邏輯模塊, DSP內(nèi)部的總線與外界隔離,這樣從外部就無(wú)法獲得片內(nèi)的信息。然而當(dāng)產(chǎn)品的產(chǎn)量不大的時(shí)候,掩模ROM在成本上來(lái)說(shuō)是不現(xiàn)實(shí)的,需要另外想辦法。
本次設(shè)計(jì)所提出的是一種基于TI公司MSP430F149單片機(jī)作為硬件加密部件的方法。[6]MSP430F149是TI生產(chǎn)的一款16位RISC結(jié)構(gòu)的Flash型單片機(jī)。不僅功耗極低,其另外一個(gè)特點(diǎn)就是其內(nèi)部的熔斷型Flash儲(chǔ)存單元。當(dāng)開發(fā)過(guò)程結(jié)束,程序?qū)懭隡SP430內(nèi)部的Flash之后,開發(fā)者可以將Flash連接在MSP430總線上的融絲融斷,熔斷之后如果想訪問(wèn)其內(nèi)部的程序和數(shù)據(jù),必須在單片機(jī)的JTAG引腳上加上一定時(shí)序的信號(hào),進(jìn)入單片機(jī)內(nèi)部的一段BOOTSTRAP程序,該BOOTSTRAP程序要求用戶向一個(gè)密碼寄存器內(nèi)寫入一個(gè)32個(gè)字節(jié)的密碼,如果該密碼和事先寫入Flash特定位置的一個(gè)密碼相符,才能訪問(wèn)片內(nèi)的程序和數(shù)據(jù)資源,否則只能允許進(jìn)行擦除整個(gè)Flash的操作。通過(guò)這種機(jī)理達(dá)到保護(hù)用戶程序數(shù)據(jù)代碼的目的。
鑒于MSP430F149的內(nèi)部數(shù)據(jù)無(wú)法復(fù)制和訪問(wèn)的特點(diǎn),我們提出了一種基于MSP430F149的硬件加密方法。
圖3是MSP430和DSP之間的硬件連接示意圖[3]。如圖所示,這種連接方式將DSP和MCU配置成了16位復(fù)用連接模式(HMODE=0),數(shù)據(jù)和地址共享HD總線。HRW、HCNTL0和HCNTL1的不同組合分別表示對(duì)DSP的EHPI口的三個(gè)寄存器HPID(數(shù)據(jù))、HPIA(地址)、HPIC(控制)讀寫,具體的組合方式如表2所示。
1)為每一塊電路板指定一個(gè)128位的密鑰,密鑰的選擇完全隨機(jī),只要不同板子不相同即可。將密鑰和加密算法(DES或是其他的加密算法)燒寫入MSP430的內(nèi)部做為DSP boot程序的一部分。
2)使用該密鑰和加密算法,將加密后的語(yǔ)音編解碼算法的程序和數(shù)據(jù)燒寫入DSP的外部存儲(chǔ)Flash芯片之中。
3)將DSP設(shè)置成工作于HPI口boot模式,在每次重啟之后,主機(jī)將一段BOOT程序裝入起始位置為0x10000程序空間里(該段BOOT程序中包含了解碼程序),并將128位的密鑰load到DSP內(nèi)部的某個(gè)特定位置。主機(jī)將DSP的RST引腳置高表示主機(jī)的load過(guò)程結(jié)束。DSP自動(dòng)從0x10000的位置開始執(zhí)行程序,這段程序從Flash中讀入加密了的程序和數(shù)據(jù),并使用主機(jī)寫入的解密程序并結(jié)合128位的密鑰進(jìn)行解密,解密后的程序和數(shù)據(jù)被裝載入DSP的程序和數(shù)據(jù)段內(nèi)開始正常的運(yùn)行。
由于每塊電路板對(duì)應(yīng)于一個(gè)唯一128位密鑰,因此DSP的外部Flash中加密的程序和數(shù)據(jù)對(duì)于竊密者來(lái)說(shuō)完全沒(méi)有意義。該密鑰和解密程序被保存在MSP430中,因此不可能被竊取或者復(fù)制。他們只有在主機(jī)啟動(dòng)的時(shí)候才被動(dòng)態(tài)的load到DSP中。DSP的程序在開始執(zhí)行正常的解碼程序之前運(yùn)行一段程序覆蓋這段lood區(qū)間,于是,竊密者便無(wú)法獲知啟動(dòng)的具體操作。
4)將比特流打包解包程序放置在MSP430中。編碼時(shí)當(dāng)DSP中的每一幀接收語(yǔ)音編成特定長(zhǎng)度的比特流之后,就向MSP430發(fā)送一個(gè)中斷請(qǐng)求。當(dāng)收到該請(qǐng)求之后,MSP430通過(guò)DSP的EHPI口讀入該比特流,并調(diào)整各個(gè)比特位之間的順序。調(diào)整之后的比特流被回寫入DSP的發(fā)送比特流緩沖區(qū),并根據(jù)同步時(shí)鐘傳送到MODEM。同樣,當(dāng)DSP接收比特流緩沖區(qū)接收滿一幀時(shí),向MSP430發(fā)送中斷,MSP430在接收到這個(gè)中斷之后通過(guò)EHPI口讀入接收比特流緩沖區(qū)內(nèi)的數(shù)據(jù),完成比特位置的重排的恢復(fù)。
這種方式可以有效的保證代碼的安全性以及整個(gè)系統(tǒng)的保密性。對(duì)于基于開放總線的DSP系統(tǒng)來(lái)說(shuō),這種方式不失為一個(gè)很有效的通用的硬件加密方法。
3. 低功耗設(shè)計(jì)
本硬件平臺(tái)的低功耗設(shè)計(jì)的從三方面出發(fā),1)選擇低功耗的器件。2)充分利用芯片的低功耗模式;3)動(dòng)態(tài)的改變芯片的運(yùn)行頻率。
選用低功耗的器件:這是節(jié)省功耗的最直接的方式,現(xiàn)在的芯片大多通過(guò)降低內(nèi)核供電電壓降低功耗,現(xiàn)行的低功耗器件的供電電壓一般都小于2V,TI的DSP大都采用兩種電壓驅(qū)動(dòng),內(nèi)核電壓1.2-1.6V,I/O電壓3.3V,這既能有效的降低內(nèi)核動(dòng)態(tài)功耗,還能兼顧I/O的電平兼容性。TI公司的MSP430系列的MCU也是一款功耗相當(dāng)?shù)偷钠骷?,?.3V下,其正常工作通常只需要十幾個(gè)mW的供電,如果將其設(shè)置成IDLE或者睡眠模式模式,其功耗將會(huì)更低。這些都是我們選擇器件重點(diǎn)考慮到的因素之一。
充分利用芯片的低功耗模式:[4]5510A2芯片內(nèi)部劃出了五個(gè)獨(dú)立的IDLE域(Domain),分別負(fù)責(zé)CPU、DMA、CACHE、外設(shè)、時(shí)鐘生成器、EMIF接口的配置。每個(gè)域可以獨(dú)立的將該域管轄的多個(gè)部件設(shè)置成活動(dòng)模式或IDLE模式以此降低DSP地功耗。針對(duì)本次設(shè)計(jì),由于沒(méi)有使用到DMA、CACHE、時(shí)鐘生成器三個(gè)域中的外設(shè),故將這三個(gè)域設(shè)置成了IDLE模式。EMIF域在DSP和MSP交換數(shù)據(jù)(為了調(diào)整發(fā)送和接收的比特流)時(shí)才被置為活動(dòng),其他時(shí)候被置為IDLE。通過(guò)這樣的處理,避免了空閑的部件白白消耗能量。[5]TLV320AIC11也可以單獨(dú)的將A/D和D/A部分禁用。當(dāng)PTT沒(méi)有按下時(shí),表示沒(méi)有話音輸入,這時(shí)可以將A/D部分置為IDLE狀態(tài)。同樣的,當(dāng)MODEM的CD信號(hào)為高的時(shí)候,表示沒(méi)有有效的數(shù)字碼流輸入聲碼器,故在此時(shí)可以將D/A部分設(shè)為IDLE狀態(tài)。通過(guò)對(duì)著這個(gè)芯片的低功耗模式的操作,進(jìn)一步降低了系統(tǒng)的功耗。
動(dòng)態(tài)頻率控制:這種方法的及根據(jù)預(yù)測(cè)的算法運(yùn)算量的大小,動(dòng)態(tài)的調(diào)整芯片的運(yùn)行頻率,從而達(dá)到節(jié)省功耗的目的。在本文設(shè)計(jì)的平臺(tái)上運(yùn)行的三種低速率語(yǔ)音編解碼算法中,600bps、1200bps、2400bps的峰值運(yùn)算量分別為37.4MIPS、59.2MIPS、44.8MIPS,因此將DSP的工作頻率分別設(shè)置在40.096MHz、65.536MHz、49.152MHz。實(shí)驗(yàn)證明,這樣處理能夠很有效地降低DSP的內(nèi)核功耗。
4. 小結(jié)
該平臺(tái)具有強(qiáng)大的語(yǔ)音信號(hào)處理能力,較低的功耗以及加密等特點(diǎn)。實(shí)踐證明,該平臺(tái)在其應(yīng)用場(chǎng)合完全達(dá)到了原先的這些設(shè)計(jì)目標(biāo),具有廣闊的應(yīng)用前景。