摘 要: 介紹了一種應(yīng)用MPEG算法的新型列車音頻、語(yǔ)音監(jiān)控記錄設(shè)備的系統(tǒng)架構(gòu)、特點(diǎn)和硬軟件的實(shí)現(xiàn)方法。運(yùn)用DSP技術(shù)對(duì)音頻、語(yǔ)音信號(hào)" title="語(yǔ)音信號(hào)">語(yǔ)音信號(hào)進(jìn)行處理、壓縮和記錄,從而實(shí)現(xiàn)了列車當(dāng)前狀態(tài)信息的記錄和機(jī)車語(yǔ)音聯(lián)控,進(jìn)而協(xié)同監(jiān)控裝置分析行車故障并規(guī)范乘務(wù)員的工作用語(yǔ)。
關(guān)鍵詞: 音頻/語(yǔ)音處理器 音頻/語(yǔ)音數(shù)據(jù)編碼 循環(huán)冗余校驗(yàn)
列車運(yùn)行監(jiān)控記錄裝置已在鐵路的安全運(yùn)輸過(guò)程中發(fā)揮了巨大的作用,其不足之處是沒(méi)有音頻、語(yǔ)音記錄功能。為了解決這個(gè)問(wèn)題,按照鐵道部的技術(shù)要求,研究開(kāi)發(fā)了一種新型列車音頻、語(yǔ)音記錄設(shè)備。該設(shè)備主要用于協(xié)同監(jiān)控裝置分析行車事故,運(yùn)用相關(guān)技術(shù)記錄設(shè)備運(yùn)行的狀態(tài)信息,以及對(duì)乘務(wù)員機(jī)車聯(lián)控進(jìn)行錄音,為機(jī)務(wù)部門和運(yùn)輸部門的科學(xué)管理提供新的技術(shù)手段。鑒于常見(jiàn)設(shè)備的技術(shù)指標(biāo)及技術(shù)標(biāo)準(zhǔn),對(duì)于音頻的數(shù)字化,以44.1kHz的采樣頻率" title="采樣頻率">采樣頻率、16bit的量化精度進(jìn)行采樣,在編碼方面,采用MPEGI-LayerⅡ壓縮編碼" title="壓縮編碼">壓縮編碼方式;對(duì)于語(yǔ)音的數(shù)字化,以16kHz的采樣頻率、16bit量化精度進(jìn)行采樣,在編碼方面,采用MPEG-2壓縮編碼方式。
1 硬件系統(tǒng)組成
該監(jiān)控記錄設(shè)備總體結(jié)構(gòu)如圖1所示,整個(gè)系統(tǒng)由 A/D" title="A/D">A/D轉(zhuǎn)換芯片、數(shù)字信號(hào)處理器DSP、CPLD控制器、Flash大容量" title="大容量">大容量存儲(chǔ)器及LCD顯示屏等組成。
在本系統(tǒng)中A/D轉(zhuǎn)換芯片用來(lái)完成信號(hào)的轉(zhuǎn)換,數(shù)據(jù)格式在16、18、20bit之間可選;數(shù)字信號(hào)處理器(DSP)為系統(tǒng)的核心數(shù)字處理器,功能強(qiáng)大,完成數(shù)字信號(hào)的壓縮編碼;CPLD用于數(shù)據(jù)傳送的控制以及對(duì)A/D轉(zhuǎn)換器、Flash存儲(chǔ)器和LCD顯示屏等器件的初始化檢測(cè)設(shè)置;Flash大容量存儲(chǔ)器用來(lái)進(jìn)行數(shù)據(jù)的存儲(chǔ);LCD顯示屏用來(lái)顯示當(dāng)前系統(tǒng)所處的狀態(tài),如運(yùn)行等待、數(shù)據(jù)處理等。系統(tǒng)上電后,若有音頻/語(yǔ)音信號(hào)輸入A/D轉(zhuǎn)換器,通過(guò)中斷、查詢判斷輸入的信號(hào)類別,之后進(jìn)行音頻/語(yǔ)音信號(hào)的模擬/數(shù)字格式轉(zhuǎn)換,得到的一串?dāng)?shù)字信號(hào)送入DSP進(jìn)行數(shù)據(jù)壓縮編碼后,經(jīng)由CPLD存儲(chǔ)到Flash大容量存儲(chǔ)器中。整個(gè)系統(tǒng)以流水線的方式工作,數(shù)據(jù)的采集、壓縮編碼、存儲(chǔ)同時(shí)進(jìn)行。
1.1 音頻/語(yǔ)音處理器UDA1341TS
UDA1341TS是由Philips公司生產(chǎn)的一款單片立體聲A/D、D/A轉(zhuǎn)換器,低功耗,工作電壓3.0V,信噪比為97dB,具有雙通道輸入功能,采樣頻率在16kHz、32kHz和44.1kHz之間可選。
UDA1341TS與DSP構(gòu)成音頻/語(yǔ)音信號(hào)采集系統(tǒng),主要涉及到位采樣時(shí)鐘(BCK)、字同步時(shí)鐘(WS)、采樣數(shù)據(jù)輸出(DATAO)、系統(tǒng)時(shí)鐘輸入(SYSCLK)這幾個(gè)對(duì)時(shí)序有要求的引腳。系統(tǒng)中,DATAO作為輸出引腳,與DSP的BDR0引腳相連;BCK、WS、SYSCLK作為輸入引腳,其時(shí)序由DSP供給。UDA1341TS的系統(tǒng)時(shí)鐘只能是256Fs、384Fs、512Fs,通過(guò)對(duì)狀態(tài)寄存器的SC0位和SC1位編程可實(shí)現(xiàn)系統(tǒng)時(shí)鐘的選擇設(shè)置。這里Fs是音頻/語(yǔ)音信號(hào)的采樣頻率。在數(shù)據(jù)采樣時(shí),WS用來(lái)指明UDA1341TS的DATAO輸出的有效數(shù)據(jù)。當(dāng)系統(tǒng)對(duì)VINL(左聲道)端口進(jìn)行采樣時(shí),WS的上升沿表明一幀數(shù)據(jù)的起始,下降沿表明一幀數(shù)據(jù)的結(jié)束;當(dāng)系統(tǒng)對(duì)VINR(右聲道)端口進(jìn)行采樣時(shí),WS的下降沿表明一幀數(shù)據(jù)的起始,上升沿表明一幀數(shù)據(jù)的結(jié)束。
UDA1341TS提供了一個(gè)L3端口,利用CPLD控制器對(duì)L3的L3DATA、L3MODE、L3CLOCK三個(gè)引腳進(jìn)行編程,可以設(shè)置其內(nèi)部的寄存器。當(dāng)L3MODE引腳為低電平時(shí),通過(guò)L3DATA引腳輸入寄存器地址信息;當(dāng)L3MODE引腳為高電平時(shí),通過(guò)L3DATA引腳輸入有關(guān)寄存器設(shè)置的數(shù)據(jù)信息(如設(shè)置芯片系統(tǒng)時(shí)鐘頻率、數(shù)據(jù)輸入格式、芯片工作模式等)。UDA1341TS與DSP的McBSP(多通道緩沖同步串口)相連,各種同步信號(hào)由DSP產(chǎn)生,這樣就保證了新數(shù)據(jù)的正常接收以及已接收數(shù)據(jù)的正常處理。UDA1341TS與DSP的硬件連接圖如圖2所示。
1.2 音頻/語(yǔ)音編碼器TMS320VC5402
數(shù)字音頻/語(yǔ)音信號(hào)的壓縮需要大量的數(shù)字信號(hào)處理,一般單片機(jī)是無(wú)法完成的,所以本系統(tǒng)中選用TI公司的DSP芯片TMS320VC5402(以下簡(jiǎn)稱‘C5402)對(duì)音頻/語(yǔ)音信號(hào)進(jìn)行壓縮處理?!瓹5402是TI 公司于1999年10月推出的54X系列定點(diǎn)DSP,操作速率達(dá)100MIPS,具有增強(qiáng)的多總線結(jié)構(gòu),三條獨(dú)立的16位數(shù)據(jù)存儲(chǔ)器總線和一條程序存儲(chǔ)器總線;40位的算術(shù)邏輯單元,包括兩個(gè)獨(dú)立的40位累加器、17位×17位的并行乘法器和一個(gè)40位的桶形移位器;支持單指令循環(huán)和塊循環(huán),存儲(chǔ)塊移動(dòng)指令提供了高效的程序和數(shù)據(jù)存儲(chǔ)器管理,支持并行存儲(chǔ)和并行加載的算術(shù)指令、條件存儲(chǔ)指令和中斷快速返回,支持定點(diǎn)DSP C語(yǔ)言編譯器。
‘C5402通過(guò)它的多通道緩存串行口(McBSP)與音頻/語(yǔ)音處理器UDA1341TS通信。McBSP提供了全雙工的通信機(jī)制以及雙緩存的發(fā)送寄存器和三緩存的接收寄存器,允許連續(xù)的數(shù)據(jù)流傳輸,數(shù)據(jù)寬度在8、12、16、20、24、32比特之間可選;McBSP與音頻/語(yǔ)音處理器的通信通過(guò)BDR0引腳實(shí)現(xiàn),通信過(guò)程的控制則由BCLKR0、BCLKR1、BFSR0等三條引腳實(shí)現(xiàn)。
1.3 CPLD低速控制
DSP作為高速的運(yùn)算處理器不適合低速的控制應(yīng)用。本系統(tǒng)中對(duì)UDA1341TS檢測(cè)、初始化,對(duì)液晶顯示LCD的控制以及對(duì)Flash的存儲(chǔ)控制都是一些低速的控制。本系統(tǒng)采用Altera公司的EPM7128S CPLD來(lái)完成這些工作,這樣就給系統(tǒng)的編程調(diào)試帶來(lái)了極大的方便,縮短了開(kāi)發(fā)周期。
2 運(yùn)行軟件開(kāi)發(fā)
軟件設(shè)計(jì)方面主要包括音頻/語(yǔ)音數(shù)據(jù)的壓縮編碼以及音頻/語(yǔ)音數(shù)據(jù)的差錯(cuò)校驗(yàn)。
2.1音頻/語(yǔ)音數(shù)據(jù)編碼
音頻編碼算法方面采用了目前通用的MPEGI-LayerII壓縮編碼算法,該算法是幀數(shù)據(jù)結(jié)構(gòu)編碼,一幀的樣點(diǎn)值是1152,以處理器件UDA1341TS 的44.1kHz采樣頻率計(jì)算,一幀數(shù)據(jù)的編碼要求在26ms內(nèi)完成。語(yǔ)音編碼算法方面采用了MPEG-2壓縮編碼算法。MPEG-2算法是MPEG-I算法的擴(kuò)展,一幀的樣點(diǎn)值是576,以處理器件UDA1341TS 的16kHz采樣頻率計(jì)算,一幀數(shù)據(jù)的編碼要求在72ms內(nèi)完成。而‘C5402的指令周期是10ns,對(duì)于這里的MPEG算法,在滿足算法要求的情況下,進(jìn)行雙通道的實(shí)時(shí)編碼最多需要15ms,所以‘C5402可以完成算法的實(shí)時(shí)編碼。其算法流程如圖3所示,主要包括以下幾方面:(1)濾波器組的運(yùn)算。(2)心理聲學(xué)模型的運(yùn)算。(3)量化編碼。(4)幀數(shù)據(jù)格式化。
濾波器組的作用是完成信號(hào)從時(shí)域到頻域的映射。心理聲學(xué)模型的計(jì)算是利用1024點(diǎn)的FFT,對(duì)輸入的音頻/語(yǔ)音信號(hào)進(jìn)行頻譜分析,再結(jié)合時(shí)頻映射的結(jié)果,計(jì)算出各子帶人耳的掩蔽特性。量化編碼是由各子帶人耳的掩蔽特性和輸出比特率的要求,計(jì)算出各子帶編碼所需的比特分配信息,并且對(duì)各子帶數(shù)據(jù)進(jìn)行線性量化編碼的過(guò)程。程序的后續(xù)工作是按照MPEG標(biāo)準(zhǔn)對(duì)數(shù)據(jù)進(jìn)行格式化,其目的是為了使數(shù)據(jù)編碼后能被正確地解碼。系統(tǒng)主程序流程圖如圖4所示。
幀內(nèi)編碼是DSP按照MPEG標(biāo)準(zhǔn)把A/D轉(zhuǎn)換器傳來(lái)的數(shù)字音頻/語(yǔ)音信號(hào)進(jìn)行壓縮編碼。其流程如圖5所示。
?
?
2.2數(shù)據(jù)的差錯(cuò)校驗(yàn)
2.2.1 校驗(yàn)原理
音頻/語(yǔ)音數(shù)據(jù)的差錯(cuò)校驗(yàn)采用循環(huán)冗余 CRC-16校驗(yàn)方式,即被處理的數(shù)據(jù)塊可以被看作是一個(gè)N階的二進(jìn)制多項(xiàng)式D(X),如一個(gè)16位二進(jìn)制數(shù)1010010110100101可以表示為:X15+X13+X10+X8+X7+X5+X2+1。多項(xiàng)式乘除法與普通代數(shù)多項(xiàng)式的乘除法運(yùn)算相同,多項(xiàng)式的加減法以2為模,進(jìn)行邏輯異或運(yùn)算。采用CRC校驗(yàn)時(shí),發(fā)送方和接收方采用同一個(gè)生成多項(xiàng)式S(X),并且S(X)的首位和最后一位的系數(shù)必須為1,本算法中S(X)采用多項(xiàng)式。CRC的處理方法是:發(fā)送方以生成多項(xiàng)式S(X)去除待處理的數(shù)據(jù)D(X),得到余數(shù)作為CRC校驗(yàn)碼。校驗(yàn)時(shí),以計(jì)算的校正結(jié)果是否為0來(lái)判斷數(shù)據(jù)幀是否出錯(cuò)。
2.2.2 校驗(yàn)算法實(shí)現(xiàn)
用‘C5402來(lái)進(jìn)行CRC校驗(yàn)的關(guān)鍵是運(yùn)用其40位的累加器A作為移位寄存器,實(shí)現(xiàn)CRC碼的模2多項(xiàng)式除法。此時(shí)CRC-16碼占用累加器A的高16位,其余位補(bǔ)0。運(yùn)算中利用SFTA(算術(shù)移位)和XOR(異或)指令完成編碼過(guò)程中碼的移位和異或操作,利用XC指令完成條件語(yǔ)句的判斷執(zhí)行?!瓹5402提供了特殊指令BITT,BITT利用寄存器T取出一個(gè)16位數(shù)據(jù)中的第(15-T)位,并送入TC(TC是特殊寄存器中的一位)。具體算法步驟如圖6所示。
(1)首先將CRC移位寄存器A (即余數(shù)寄存器)的高16位初始化為全0,其余位清0。
(2)將CRC移位寄存器A中的值左移一位,即最高位移入C中,然后利用指令BITT取出輸入校驗(yàn)數(shù)據(jù)的最高位送入寄存器B,判斷C中移入的最高位與輸入校驗(yàn)數(shù)據(jù)的最高位異或之后是否為1。
?。?)若為1,則將寄存器A中的值與輸入寄存器B中的生成多項(xiàng)式X16+X15+X2+1進(jìn)行異或后再跳到步驟(2)處理下一位;若不為1,直接跳到步驟(2)處理下一位。重復(fù)上述的數(shù)值左移和異或判斷,直到輸入的數(shù)據(jù)位全部處理完為止,則寄存器A的最高16位即為進(jìn)行多項(xiàng)式除法后所得的余數(shù),此時(shí)寄存器A的最高16位就是CRC校驗(yàn)碼[2]。
系統(tǒng)上電運(yùn)行后,經(jīng)多次實(shí)驗(yàn)測(cè)試,運(yùn)行情況穩(wěn)定。目前該設(shè)備已經(jīng)進(jìn)行現(xiàn)場(chǎng)調(diào)試運(yùn)用,開(kāi)始部分裝車運(yùn)行,滿足了列車監(jiān)控記錄的實(shí)際要求。
參考文獻(xiàn)
1 UDA1341TS Product specification[Z].Netherlands: Philips Semiconductors,2002
2尹冬元,梁松海.40位以內(nèi)任意長(zhǎng)度的CRC計(jì)算及校驗(yàn)的實(shí)現(xiàn)[J]. 電子工程師,2003;(2):17~18