摘要:基于ARM+DSP的汽車視頻黑匣子(即汽車行駛記錄儀)除了按國家有關標準對汽車的基本行駛狀態數據進行實時保存外,與市場上同類產品相比,具有視頻方面的功能優勢。通過ARM+DSP協調工作的方式,實現了視頻圖像的壓縮和存儲,能夠循環存儲十分鐘的視頻圖像。本系統的應用可為分析#65380;判斷汽車行駛狀態和交通事故提供可靠的科學依據,在監督司機疲勞駕駛和違章駕駛等方面也有著重要作用。主要按照功能模塊劃分介紹了汽車視頻黑匣子系統的各個基本功能,并給出基本的設計流程圖。
關鍵詞:汽車視頻黑匣子; ARM; S3C2410A; 數字信號處理器
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2008)02-0628-04
汽車黑匣子是用于監測#65380;記錄汽車在行駛中各種狀態和數據的智能裝置。本汽車視頻黑匣子系統是信息產業部2004年電子生產發展基金項目,該系統在傳統汽車黑匣子的基礎上增加了圖像#65380;語音等功能。系統能夠記錄汽車發生事故前后一段時間內的車內外圖像和其他重要數據;同時還會記錄車內的聲音信息,幫助有關部門迅速準確地分析事故發生原因。同時針對駕駛員行車#65380;倒車#65380;停車過程中有諸多不便這些情況,又在系統設計中加入了一個顯示屏。系統通過顯示屏為駕駛員提供路況和車周圍情況,方便駕駛員行車#65380;倒車和停車。
本系統是一個可以記錄事故發生前后的圖像#65380;聲音以及其他行駛數據相結合的視頻黑匣子。在事故處理時比傳統黑匣子的記錄更有說服力和可信度。因而,該儀器將具有廣闊的市場環境,研制此系統將具有很高的實用價值。
1系統原理圖
當駕駛員通過IC卡進行身份驗證后,該系統啟動。三個攝像頭(車內#65380;車前#65380;車后)將采集到的3路視頻模擬信號經A/D轉換器變成數字視頻流后,再將其送入DSP中。由于采集的視頻數據量相當驚人,在很短時間內就會達到幾百兆字節,給存儲造成很大麻煩,必須在存儲前進行壓縮。采用H.263算法來壓縮送入DSP的數據流。在S3C2410A的控制下,DSP實時地對送來的多路數據流進行分時壓縮,壓縮后的流媒體送入CF卡中保存。CF卡不斷接收壓縮的音/視頻數據流,循環覆蓋最早進來的數據所占的空間,音/視頻流分別以流媒體文件形式進行保存。一旦發生事故,CF卡會保存事故發生前后幾分鐘的數據,然后把這部分數據做好標志而不被后來的數據覆蓋,以后只有被授權的執法人員才能將這些信息從CF卡中刪除。另外當某攝像頭攝取的1路數據流經視頻解碼芯片A/D轉換后,可再送入視頻編碼芯片中進行D/A轉換,并在監視器中播放出來。駕駛員還可以通過按鍵從監視器中實時地觀察車周圍的情況,便于退車#65380;倒車。
音頻數據的處理與視頻數據一樣,經DSP壓縮后保存在CF卡中。其他汽車行駛的數據參數,如2路模擬量以及14路數字開關量,經濾波處理后直接送入S3C2410A中,在規定的時間內保存在板上的flash芯片中。與保存音/視頻流一樣,把這些數據放在一個記錄文件中,這個記錄文件采用后到記錄覆蓋先到記錄方式,可保存連續360 h的數據。事故發生前后一段時間內的數據做好標志而不被后來數據覆蓋。
駕駛員在行駛過程中同時也可以通過LCD液晶屏來查看某些數據特征,如時間#65380;車速#65380;疲勞駕駛時間等。該系統的原理如圖1所示。
為了確保整個項目順利進行以及降低整個設計的難度,本系統設計了兩塊PCB板:一塊是ARM核心板,它是主控制板,主要負責行駛數據的采集和保存并控制DSP板操作;另一塊是DSP板,它主要負責音/視頻流的采集#65380;壓縮,在S3C2410A的控制下將壓縮視頻流存入CF卡中保存起來。
2控制模塊
根據汽車行駛記錄儀的國家標準GB/T 19056—2003,一個汽車行駛記錄儀必須要有很多對外通信的接口。同時為了方便以后的擴展,如加入GPS或GPRS模塊,選擇了目前市面上通用的一款ARM9的CPU:韓國三星公司的S3C2410A作為主控制器。S3C2410A具有很多優點:首先它具有很多通用I/O,并且有許多標準接口,可以很方便地與外界通信;其次,它使用RISC指令集,支持操作系統能力比較強。
在整個過程中,CPU需要實時處理多達3路的視頻數據,其數據流量是相當大的,同時還要處理音頻數據流。這對S3C2410A來說,既要處理對外接口任務,又要在很短的時間內處理完大量的視頻流是很困難的。因此為減輕S3C2410A的負擔,采用了TI公司所生產的專用于處理通信數據的TMS320C6000系列的CPU來專門處理視頻流。TMS320C6000是目前公認的最有超強數據處理能力的CPU,它在以下幾方面比ARM有一定的優勢:DSP的處理速度比ARM快,最高可達700 MHz,而且主頻較高;DSP適合于專業的數據處理,數據處理的指令效率較高; DSP可以同時處理的事件較多,這使得系統成本有可能較低;DSP的靈活性較好,大多數算法均可以通過軟件實現。選擇DSP DM642專門用于壓縮大量的音/視頻數據流,用S3C2410A作為主控制器,協調處理各個接口操作,同時控制DSP的操作,使DSP將壓縮的數據流存入CF卡中。
2.1ARM9主控制模塊
S3C2410A是主控制CPU,它可以提供豐富的接口來與外界通信。通過它提供的接口,可以直接外接許多器件,如USB#65380;微型打印#65380;網口#65380;SD卡#65380;4×2的小鍵盤#65380;點陣液晶屏#65380;IC卡#65380;串口RS-232等。整個系統所需要的2路模擬信號與14路數字信號也是通過連接到ARM的GPIO(通用I/O)口來獲取的。
S3C2410A處理的事務主要有:
a)通過IC卡確認駕駛員身份是否合法;
b)從GPIO口獲取溫度與速度模擬信號及14路數字信號;
c)處理駕駛員的按鍵操作;
d)通過點陣顯示屏,駕駛員可看到有關行車數據;
e)通過微打印接口打印出駕駛員有關疲勞駕駛的記錄;
f)將汽車的行駛特征數據循環保存到flash芯片中;
g)控制DSP的操作,并向其發送事故發生信號;
h)將CF卡中的事故發生視頻數據及flash芯片中的行車特征數據通過USB接口提供給執法機關。
2.2DSP功能子模塊
DSP板的主要任務就是采集#65380;壓縮并保存音/視頻流。三個攝像頭分別將所攝的3路視頻信號送到視頻解碼芯片,經模/數轉換后送入DM642中對應的視頻接口進行壓縮處理。其中1路轉換后的信號可以再經過視頻編碼芯片SAA7121H進行D/A轉換后,轉換為模擬信號送到監視器,駕駛員可實時觀看圖像。聲音采集后送入音頻編/解碼芯片,再送入DM642的音頻接口。DM642收到采集的多路音/視頻信號后,用H.263壓縮算法分時對每路信號進行壓縮;然后將壓縮的信號送入CF卡保存起來。按照后到數據覆蓋最先到數據的方式,CF卡不斷地保存送來的數據,一旦接收到2410A傳來的事故信號,就將出事前后一段時間的數據做標記,使這段數據以后再不會被覆蓋,除非由執法部門清除。音/視頻編/解碼芯片在啟動時,DM642通過IIC總線對它們進行配置。在本系統中采用的是100 kbps的速率對音/視頻編/解碼芯片進行配置。DM642的內部模塊原理如圖2所示。
3采集模塊
3.1視頻采集
視頻信號先由三個攝像頭來攝取,所獲得的模擬視頻信號直接送入視頻解碼芯片進行模/數(A/D)轉換。視頻解碼芯片采用的是TI公司的TVP5150PBS。TVP5150是TI專門生產的一款高性能視頻解碼器,可將攝像頭采集的NTSC或PAL視頻信號轉換成數字色差信號(YUV4∶2∶2),并支持一兩路復用視頻CVBS或一個S(super-video)端子輸入,輸出格式為ITU-R BT.656;同時它也支持MacrovisionTM復制保護以及高級的VBI功能。不僅如此,TVP5150還具備了封裝小(32腳的TQFP)#65380;功耗小的特點(正常工作模式下最多需要150 mW),非常適用于本系統。TVP5150將攝像頭傳送的信號快速A/D轉換處理后,立即送入DSP的VP三個視頻接口,讓DSP進行壓縮處理。
3.2音頻采集
音頻信號由Microphone來獲取,然后送入音頻編/解碼器進行處理。音頻編/解碼器采用的是TI公司推出的TLV320AIC23B(AIC23B),它內置耳機輸出放大器,支持MIC和LINE IN兩種輸入方式(二選一),并且輸入和輸出均具有可編程增益調節。AIC23B的ADC#65380;DAC部分高度集成在芯片內部,并采用了先進的sigma-delta采樣技術,可在8~96K采樣率范圍內提供16#65380;20#65380;24和32位采樣。ADC和DAC的信噪比分別可達90和100 dB。同時,AIC23B功耗低,回放模式下功率僅為23 mV,省電模式下更是小于15 μW,是一款高性能的立體聲頻編/解碼芯片。被采集到的音頻信號經過AIC23B作A/D轉換后立即送入DSP的音頻接口McASP中進行壓縮處理,也可以再送入D/A轉換,變成聲音信號送出。
3.3模擬和數字信號量的采集
2路模擬量(速度#65380;溫度),尤其是速度是整個系統中的關鍵。與時鐘一起,它可以用來判斷一個可疑事故是否是真實事故。速度首先從速度傳感器中采集,經過OP07運放,送入主控CPU S3C2410A的模/數轉換單元,轉換為數字脈沖,再由計數器計算出在片刻時間內的脈沖數,從而計算出汽車此刻的實時速度。溫度從溫度傳感器中獲得,經CPU處理后保存起來。
14路數字開關量,如方向燈#65380;倒燈#65380;車門#65380;遠光燈#65380;近光燈#65380;剎車#65380;鳴號#65380;車輛啟動等,這些信號是汽車行駛過程中很重要的數據特征,這些數據有助于在事后分析事故的原因,所以應當把它們采集并保存下來。但這些信號可能是高壓信號,直接接到ARM板上可能會損壞CPU。于是采用了光耦芯片TP521-4來隔離這些高壓信號,避免CPU受損。
4存儲模塊
存儲模塊主要由兩部分組成,即汽車行駛的特征數據和音/視頻數據流。汽車行駛的特征數據包括實時時間#65380;速度#65380;車輛累計行駛里程#65380;開關量信號#65380;駕駛員駕駛證號等。汽車行駛的特征數據以文件的形式保存在板上的flash中。執法機關通過授權將CF卡中的音/視頻數據流和flash中的特征數據,通過USB以文件的方式把它們拷出,在PC機上觀看,調查事故發生的原因。
經DSP壓縮后的視頻數據量仍然很大,通常會在很短時間內達到幾百兆字節以上。所以需要能重復利用有限存儲空間且寫速度很快的大容量存儲盤。可以考慮使用閃存(flash memory)作為非易失性數據存儲設備。根據系統的這些需求,選擇2 GB的CF卡,速度可達8 Mbps。按普通攝像頭一幀圖像320×240的YUV4∶2∶2格式,30 fps,H.263按最低壓縮比為1∶50計算,整個視頻流的大小約0.5 Mbps。可見,用CF卡存儲整個過程中大量的音/視頻數據的效果相當理想。
5顯示模塊
從實際運用和成本考慮,顯示模塊被分成兩部分,即模擬監視器和點陣液晶屏。當1路攝像頭所錄的視頻流經過視頻解碼器進行A/D轉換后,可以先直接進入視頻編碼器SAA7121H進行D/A轉換;最后還原回模擬信號,通過監視器顯示出來。駕駛員可以通過監視器實時觀察車周身狀況。
操作小鍵盤,駕駛員可在點陣顯示屏上查看當前時間#65380;速度#65380;所走里程#65380;駕駛員疲勞駕駛記錄等一些行車數據。此處只需顯示一些文字,所以選用了成本相對較低的128×64點陣液晶屏。
6系統流程設計
6.1主流程圖
整個系統在駕駛員通過IC驗證后就進入無盡循環中,系統周期性地采集數據并保存,只會在駕駛員拔除IC卡(拔除IC卡后還是會進行采集與保存,只是不記錄駕駛員的代碼了)或斷電時才會停止。主流程如圖3所示。
DSP作為功能相對獨立的子模塊,其程序設計流程與主流程思路一致,均是不停地在采集#65380;壓縮,并存儲壓縮數據流。下面所提到的任務由Posix線程(也稱做Pthreads)實現。
6.2采集任務與正常保存任務
為了方便設計,在采集任務中定義了一個數據結構體,將每次采集的行駛數據全放在這個結構體中(除音/視頻數據外),每采集一次作為一個記錄,將先采集的數據暫放到內存的一個容量為3 000個struct COLL的循環隊列中(假設該循環隊列名稱為ram_coll),然后根據要求(是保存正常行駛數據還是保存事故疑點數據)選擇其中一部分寫入flash中。這個結構體如下:
struct COLL
{
采集時間;
速度;
車輛累計行駛里程(從記錄儀第一次工作時開始累計);
機動車駕駛證證號(最后一次通過IC卡認證的駕駛員機動車駕駛證證號);
14路數字信號;
}
;
國標規定,記錄儀至少每0.2 s采集一次,故1 min會采集300次,10 min則為3 000次,每一次采集的數據對應一個struct COLL,稱做一條記錄。
正常保存任務每過10 min從循環隊列ram_coll中每間隔300條記錄抽取1條記錄(故共抽取了10條記錄,對應為10 min(平均每分鐘一條記錄)的行駛數據。其中:抽取回來的速度項原本是采集時的及時速度,而系統需要的是每分鐘內300條記錄中速度項的算術平均值),用速度的算術平均值替換掉原來的及時速度后再將這10條記錄一次性寫入到flash的一個文件中。如果該文件寫滿了21 600條記錄則下次寫入從文件頭開始。21 600條記錄對應360 h(21 600/(1次/min)/(60 min) = 360 h)的正常行駛數據。采集任務如圖4所示。正常保存任務流程如圖5所示。
6.3事故疑點數據保存任務
國標規定:記錄儀應能以不大于0.2 s的時間間隔持續記錄并存儲停車前20 s實時時間對應的車輛行駛速度值及車輛制動狀態信號。記錄次數至少為10次。
事故疑點數據保存任務的執行過程與正常保存任務類似:從采集任務中的struct ram_coll結構中提取出相應的需要寫入flash的數據項,然后追加寫入到flash中的一個文件中。此記錄儀能保存500次的事故疑點數據,也即是到達500次寫入后新的事故疑點數據會從文件頭開始重新寫入。所不同的主要是兩點:
a)保存的數據種類與正常保存任務不同。事故疑點數據保存任務的種類如下:
struct URGDATA
{
采集時間;
速度;
機動車駕駛證證號(最后一次通過IC卡認證的駕駛員的機動車駕駛證證號);
14路數字信號;
};
同樣是從采集任務中的struct ram_coll結構中提取出來
b)由阻塞態轉入運行態的條件不同:事故疑點數據與正常保存任務由阻塞態轉入運行態的條件同樣都是因為采集任務發送信號引起的。但是前者被喚醒的條件是停駛狀態(國標規定:當車速傳感器輸出的脈沖信號超過1脈沖/s并且持續5 s以上時,可認為車輛是在行駛狀態;否則認為車輛是在停駛狀態)。
7結束語
本文介紹了自行研制的汽車視頻黑匣子的總體設計。目前本系統是在Linux環境下,采用H.263來進行音/視頻流數據壓縮,取得了較理想的效果。下一步的目標是用H.264來進行壓縮,以期求更高的壓縮效果;在硬件上采用更大容量的SDRAM,使它可以同時暫存更長時間的壓縮數據流,然后再一次性地寫入CF卡中,減少CF卡的寫次數,從而延長CF卡的使用壽命。隨著以后研究的深入,勢必將本系統其他模塊(如GPS#65380;GPRS#65380;故障診斷等)相結合,使之在市場上具有更大優勢。
參考文獻:
[1]GB/T 19056—2003,中華人民共和國國家標準——汽車行駛記錄儀[S].2003.
[2]S3C2410A 32-bit RIST microprocessor user’s manual[EB/OL].[2006-03-10]. http://www.21icsearch.com.
[3]TMS320DM642 video/imaging fixed-point digital signal processor[EB/OL].[2006-06-01].http://www.ti.com.
[4]TMS320C6000 DSP external memory interface (EMIF) reference guide[EB/OL].[2006-06-02]. http://www.ti.com.
[5]TI TVP5150APBS data manual[EB/OL].[2006-06-02]. http://www.21icse arch. com.
[6]SEED-VPM642用戶指南 TMS320DM642視頻DSP處理模板[EB/OL].[2006-05-20]. http://www.seeddsp.com.
[7]劉斌,李仲陽. ARM/DSP雙核系統的通信接口設計[J].單片機及嵌入式系統應用,2005(5):22-24.
[8]王健,陳啟美,章德.基于DSP和ARM的嵌入式多媒體通信終端的設計與實現[J].電子測量技術,2006,29(2):56-57,80.
[9]田澤.嵌入式系統開發與應用教程[M].北京:北京航空航天大學出版社,2005.
[10]江思敏,劉暢.TMS320C600 DSP應用開發教程[M].北京:機械工業出版社,2005.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”