馬軼男,陳 鵬,代東林,郭查清,沈志熙
(重慶大學(xué) 自動化學(xué)院,重慶 400044)
現(xiàn)代化交通的迅猛發(fā)展,在帶給人們極大便利的同時也導(dǎo)致了交通事故的不斷增多。這些事故大部分都是由于非規(guī)范行駛、超車、超速等造成的。然而,由于缺乏事故發(fā)生時的相關(guān)有效信息,使得事故責(zé)任的鑒定十分困難。為此,設(shè)計開發(fā)一種能夠記錄車輛行駛狀態(tài)信息的車輛行駛記錄儀,對于有效監(jiān)督駕駛?cè)藛T的駕駛行為,判斷交通事故責(zé)任具有重要意義。
從技術(shù)上講,目前汽車行駛記錄儀多采用單片機來實現(xiàn),主要記錄汽車本身的運行參數(shù)。文獻[1]提出了基于單片機的汽車行駛記錄儀的設(shè)計,以實現(xiàn)對速度、加速度和開關(guān)量的測量,并產(chǎn)生對應(yīng)的時間信息。文獻[2]提出了一種多功能汽車行駛記錄儀的系統(tǒng)設(shè)計方案,能夠?qū)r間、日期、車輛行駛速度、行駛里程等數(shù)據(jù)進行測量、記錄和存儲。但這些數(shù)據(jù)大多為文本格式,缺乏直觀性。為此,文獻[3]提出了一種基于ARM7的車載圖像記錄儀的設(shè)計方案。該方案采用ARM7作為系統(tǒng)核心芯片,用CMOS圖像傳感器實時采集圖像數(shù)據(jù),大容量圖像信息數(shù)據(jù)的存儲采用SDRAM與NAND型Flash雙存儲器結(jié)構(gòu)來完成。文獻[4]采用了 ARM9+DSP的系統(tǒng)結(jié)構(gòu),以ARM9作為主控制器,DSP實時地對送來的多路數(shù)據(jù)流進行分時壓縮,但ARM由于計算速度和成本上的限制,更適合做事務(wù)處理和科研應(yīng)用。
本文在學(xué)習(xí)和借鑒已有設(shè)計的基礎(chǔ)上,對比和分析圖像應(yīng)用領(lǐng)域的主流核心處理器方案,提出了一種基于FPGA的車載圖像記錄儀實現(xiàn)方案,通過記錄車輛行駛過程中的圖像資料,為交通事故的責(zé)任判定提供了直觀信息。
車載圖像記錄儀主要由控制模塊、采集模塊、存儲模塊和通信模塊4個部分組成,其中:采集模塊以SAA7113H作為A/D轉(zhuǎn)換芯片,負責(zé)將模擬圖像數(shù)據(jù)轉(zhuǎn)換成數(shù)字圖像數(shù)據(jù)后送入FPGA中;存儲模塊采用了SDRAM+Flash的存儲結(jié)構(gòu),主要任務(wù)是將轉(zhuǎn)換后的數(shù)字圖像數(shù)據(jù)完整地保存;通信模塊采用CY7C68013作為 USB接口芯片,將Flash中的數(shù)據(jù)傳輸?shù)絇C機中以便后續(xù)處理。整個系統(tǒng)以Altera公司的型號為EP2C20F484C8的FPGA芯片作為控制核心。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)
記錄儀的工作原理為:記錄儀啟動后,首先對SDRAM和SAA7113H進行初始化;初始化成功后,SAA7113H將CCD傳感器采集的模擬視頻信號轉(zhuǎn)換成數(shù)字信號傳送給FPGA,此時,F(xiàn)PGA控制SDRAM實現(xiàn)圖像數(shù)據(jù)的緩存;當存完一幀圖像以后,F(xiàn)PGA發(fā)出控制信號,將SDRAM中的數(shù)據(jù)轉(zhuǎn)存入FLASH中,完成實時圖像的采集;FPGA在檢測到啟動數(shù)據(jù)傳輸信號后自動將數(shù)據(jù)通過USB接口傳送給計算機。
此外,該記錄儀還包括為各芯片、外圍設(shè)備、I/O接口等供電的電源電路,為芯片內(nèi)外時鐘控制器提供工作時鐘的晶振電路,以及芯片的復(fù)位電路等。
控制模塊采用FPGA作為核心處理器,型號是 Altera公司的 cycloneII系列芯片EP2C20F484C8。FPGA擁有豐富的寄存器資源,適合于同步時序電路較多的數(shù)字系統(tǒng),具有高速、高可靠性、功耗低等優(yōu)點,不但可以使系統(tǒng)的集成化大為提高,而且還可以根據(jù)后期現(xiàn)場的需要進行現(xiàn)場編程,使得設(shè)計開發(fā)過程和后期現(xiàn)場調(diào)試都比較靈活[5-8]。這些優(yōu)點使FPGA在數(shù)字圖像系統(tǒng)中有著極為廣泛的應(yīng)用。控制模塊是整個系統(tǒng)邏輯控制的核心,它的主要任務(wù)有:①實現(xiàn)虛擬I2C總線對SAA7113H進行正確的初始化;② 初始化SDRAM并控制SDRAM和FLASH對圖像數(shù)據(jù)進行正確存儲;③控制USB接口芯片將數(shù)據(jù)傳輸?shù)絇C機上;④ 控制圖像數(shù)據(jù)的提取并作為數(shù)據(jù)在各模塊中傳遞的通道;⑤ 保證各模塊之間的時序匹配等。
采集模塊負責(zé)將模擬圖像信號轉(zhuǎn)換成數(shù)字信號并輸入到FPGA中。設(shè)計采用Philips公司型號為SAA7113H的視頻解碼芯片。它是一款功能強大且操作簡單的9位視頻輸入處理芯片,采用CMOS工藝,通過I2C總線與控制模塊相連構(gòu)成應(yīng)用系統(tǒng),實現(xiàn)將CCD傳感器輸出的模擬信號轉(zhuǎn)換成數(shù)字圖像信號[5]。它具有低功耗(<0.5 W)、低電壓(3.3 V)、小封裝(QFP44)的特點,非常適用于本系統(tǒng)。
需要注意的是,系統(tǒng)上電后,芯片不是立即采集模擬視頻信號進行A/D轉(zhuǎn)換處理輸出數(shù)字信號,它必須由前端處理器通過I2C串行總線對其內(nèi)部寄存器進行初始化配置后,才能正常工作。因此,對采集模塊的控制,一個主要的任務(wù)就是完成對SAA7113H的初始化,也就是對其寄存器的正確配置,即首先是對I2C總線上的SAA7113H進行尋址,然后再將初始化值寫到SAA7113H的寄存器中。根據(jù)設(shè)計要求SAA7113H的器件讀寫尋址字節(jié)SLA分別為4BH、4AH。利用虛擬I2C總線接口,將地址為12H、13H和58H的寄存器分別配置為7AH、01H和40H,其余寄存器保留默認值。詳細的內(nèi)部寄存器控制位的功能含義見文獻[9]。初始化成功后,SAA7113H將CCD攝像頭傳送的模擬圖像信號進行A/D轉(zhuǎn)換,送入FPGA中。
圖2為SAA7113H與FPGA的硬件連接,其主要引腳有視頻信號輸入引腳AI11、24.567MHz晶振輸入引腳XTAL1、SCL和SDA組成的I2C總線接口、同步信號RST0和RST1以及解碼后的數(shù)據(jù)輸出引腳VPO[7:0]。
圖2 SAA7113H與FPGA的硬件連接
存儲模塊負責(zé)將解碼后的數(shù)字圖像信號完整地保存下來。為了盡量減少對圖像質(zhì)量的影響,采用直接將圖像數(shù)據(jù)進行完整保存的方式,而不進行壓縮處理,因此,記錄儀存儲的圖像數(shù)據(jù)量非常龐大。考慮到現(xiàn)有的非易失性Flash存儲器無法滿足圖像采集的實時性要求,而DRAM具有數(shù)據(jù)掉電易失性,存儲模塊采用了SDRAM與Flash共同組成的二次存儲結(jié)構(gòu)以保證圖像數(shù)據(jù)的正確存儲。SDRAM選用Micron公司的高速 CMOS同步動態(tài)隨機存儲器,型號為 MT48LC4M16A2。FLASH選用的是 SamSung公司的NANDFLASH,型號為K9F2G08U0M。
Micron公司的SDRAM的控制邏輯復(fù)雜,命令種類多樣,在使用時需要考慮到周期性刷新、行列管理以及初始化等操作,因此需要設(shè)定1個SDRAM控制器來屏蔽掉SDRAM嚴格的狀態(tài)機存儲單元管理和刷新操作,提供1個類似于靜態(tài)SDRAM的存儲訪問接口。SDRAM的主要引腳有A0~A11(地址輸入引腳)、DQ0~DQ15(數(shù)據(jù)輸入輸出引腳)、CLK(時鐘信號輸入引腳)、CKE(時鐘使能)、/CS(芯片選擇)、/RAS(行地址選擇)、/CAS(列地址選擇)、/WE(寫使能)、BA0-BA1(Bank地址輸入信號引腳)等。
SDRAM在工作之前,需要進行初始化。初始化SDRAM和SDRAM控制器的流程為:上電之后需要一個100 μs的延遲以穩(wěn)定內(nèi)部電源和時鐘電路,然后進入初始化操作:①預(yù)充電所有Bank;②至少執(zhí)行2次自動刷新操作;③ 配置SDRAM模式寄存器;④ 配置SDRAM控制器內(nèi)部寄存器2(REG2);⑤ 配置SDRAM控制器內(nèi)部寄存器1(REG1)。此時,SDRAM和SDRAM控制器初始化完畢。SDRAM的模式寄存器一般被用于定義SDRAM的運行模式,在配置模式寄存器命令有效時由地址線A11~A0載入,其中:A0~A2用來定義突發(fā)長度(burst length);A3定義突發(fā)類型;A4~A6定義cas延遲;A7~A8定義運行模式;A9定義寫入突發(fā)模式;A10和A11目前保留。根據(jù)設(shè)計要求,SDRAM模式寄存器的設(shè)定值為37H,REG1的設(shè)定值為12FH,REG2的設(shè)定值為5F6H。
SDRAM沒有讀寫次數(shù)的限制,并且可以實現(xiàn)實時存儲。但是,SDRAM存在掉電易失性,因而需要在完整存完一幀圖片后將SDRAM中的圖像信號及時轉(zhuǎn)入Flash中。NAND型Flash具有讀寫速度快、存儲密度大、可擦除、非易失以及命令、地址、數(shù) 據(jù) 線 復(fù) 用 和 接 口 便 利 等 特 點[10]。K9F2G08U0M的數(shù)據(jù)寄存器寫入速度可達33 MB/s,但考慮到設(shè)計的可靠性,在設(shè)計時選擇使用25MH的時鐘設(shè)計,并在FPGA中開辟2個雙口RAM作為數(shù)據(jù)緩沖區(qū),大小為2 048×8 bit。當RAM1寫滿時,將RAM1中的數(shù)據(jù)加載到Flash的數(shù)據(jù)寄存器,同時將下一頁的數(shù)據(jù)寫入RAM2中。Flash設(shè)置為最大編程時間700 μs。
存儲模塊與FPGA的硬件連接圖如圖3所示,其中K9F2G08U0M的主要引腳有CLE(命令鎖存允許)、ALE(地址鎖存允許)、CE(片選)、WE(寫允許)、RE(讀允許)、WP(寫保護)、R/B(準備好/忙)、PRE(上電讀使能)、I/O0 ~I/O7(輸入/輸出)。
通信模塊負責(zé)將Flash中的圖像數(shù)據(jù)傳輸?shù)絇C機中以便后續(xù)處理。USB芯片選擇的是Cypress公司的 CY7C68013。CY7C68013芯片屬于Cypress公司的FX2系列產(chǎn)品[11],在數(shù)據(jù)傳輸時主要利用了 4 kB的 FIFO,分為 7個端點:EP0、EP1IN、EP1OUT、EP2、EP4、EP6 和 EP8,其中 EP0、EP1IN和EP1OUT是3個64 B的緩存,只能被固件訪問。EP0是一個默認的數(shù)據(jù)輸入輸出端口緩存,只能配置為控制傳輸;EP1IN和EP1OUT是單獨的64 B緩存,可以配置這些端點為中斷傳輸或批量傳輸;端點2、4、6、8是大容量高帶寬的數(shù)據(jù)傳輸端點,可以配置為各種帶寬以滿足實際需要,端點2、4是輸出端點,端點 6、8是輸入端點。內(nèi)部的傳輸控制是通過空和滿2個控制信號來完成的,當端點為滿時不能再寫數(shù)據(jù),當端點為空時不能再對FIFO進行讀。
圖3 存儲模塊與FPGA的硬件連接
在本系統(tǒng)中,USB的接口模式采用的是Slave FIFO模式,即FX的CPU不直接參與 USB數(shù)據(jù)處理,而只是作為USB和外部數(shù)據(jù)處理邏輯之間的通道,數(shù)據(jù)流通過FX的FIFO直接傳輸。設(shè)計采用異步讀、寫方式,由FPGA芯片作外部的主控制器,對端點2和端點6進行異步方式的讀、寫控制。圖4是USB芯片與FPGA的接線圖,其中:IFCLK為接口時鐘,由芯片內(nèi)部產(chǎn)生30 MHz時鐘,接入FPGA芯片,用以產(chǎn)生頻率較高的SLRD信號和SLWR信號;FLAGA-FLAGD為FIFO標志管腳,用于映射FIFO的當前狀態(tài),系統(tǒng)中分別用來標志端點2和端點6中FIFO的空、滿標志,由寄存器PINFLAGSAB和PINFLAGSCD配置;FD[15:0]為16位雙向數(shù)據(jù)總線,在系統(tǒng)中作為傳遞控制字和數(shù)據(jù)的通道;FIFOADR[1:0]用于選擇當前操作的端點緩沖區(qū),如表1所示;SLOE用于使能數(shù)據(jù)總線FD的輸出,當SLOE信號有效時,才能開始從端點2讀入數(shù)據(jù);SLRD和SLWR分別作為FIFO的異步讀、寫選通信號。
圖4 USB芯片與FPGA硬件連接
表1 端點配置
為測試記錄儀圖像采集效果,在汽車上進行了實際的調(diào)試實驗,并將記錄儀采集到的圖像數(shù)據(jù)傳輸?shù)絇C機上分析實驗結(jié)果。記錄儀每秒鐘能夠存儲約13幀大小為320×240字節(jié)的圖片,最大存儲容量為2 000幀。圖5為將數(shù)據(jù)上傳到PC機后,經(jīng) Matlab 還原后的第 310、320、330、340、350、360 幀圖像。
圖5 實驗結(jié)果圖像
實驗結(jié)果表明,本記錄儀能夠有效存儲汽車行駛過程中的前方圖像數(shù)據(jù),保證了系統(tǒng)實時性與可靠性的要求。
在FPGA的控制下,圖像信號通過SAA7113H轉(zhuǎn)換為數(shù)字信號,存儲到由SDRAM與Flash組成的二次存儲結(jié)構(gòu)中。最后通過USB接口傳輸?shù)絇C機上供后續(xù)處理。該記錄儀將圖像技術(shù)應(yīng)用到汽車電子方面,以圖像的方式記錄了交通事故發(fā)生的過程,為交通事故的責(zé)任判定提供了直觀的材料,對解決目前交通事故責(zé)任判定的困難提供了一條比較有效的途徑。
[1]蘇曉東.基于單片機的汽車行駛記錄儀的設(shè)計[J].信息技術(shù),2009(8):2 -4.
[2]彭李明,連迅.多功能汽車行駛記錄儀的系統(tǒng)設(shè)計[J].電子測量技術(shù),2009(3):2 -4.
[3]葉林,李凌,張洪,等.新型車載圖像記錄儀[J].儀表技術(shù)與傳感器,2005(10):1-2.
[4]余水,鄧振,蔡洪斌,等.基于ARM+DSP的汽車視頻黑匣子系統(tǒng)的總體設(shè)計術(shù)[J].計算機應(yīng)用研究,2008(2):628-631.
[5]鄭千洪,王黎,高曉蓉.基于FPGA的圖像采集卡的設(shè)計[J].現(xiàn)代電子技術(shù),2007(20):2-3.
[6]黃軍友.基于OFDM技術(shù)FFT的FPGA研究[J].重慶三峽學(xué)院學(xué)報,2010,26(3):50 -54.
[7]邱震,靳世紅,王曉東.基于FPGA的某型雷達視頻采集預(yù)處理模塊設(shè)計[J].四川兵工學(xué)報,2010,31(5):33-35.
[8]于亞萍,劉源,衛(wèi)勇等.基于FPGA農(nóng)村泵站遠程監(jiān)控系統(tǒng)的設(shè)計[J].安徽農(nóng)業(yè)科學(xué),2010,28(22):12117- 12118.
[9]Philps Corporation.SAA7113H datasheet[Z].Holand:Philps Corporation,1999.
[10]張元凱,靳世久,李一博,等.超大容量存儲器K9F2G08U0M及其在管道通徑儀中的應(yīng)用[J].電子技術(shù)應(yīng)用,2007(1):1 -4.
[11]譚安菊,龔彬.USB2.0控制器 CY7C68013與 FPGA接口的 Verilog HDL實現(xiàn)[J].電子工程師,2007(7):52-54.