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