張海堂
(廣州中智融通金融科技有限公司,廣東 廣州 510663)
隨著國家大力推動政務(wù)信息化工作,智能政務(wù)自助服務(wù)終端機成為了政務(wù)大廳的一種新型設(shè)備,終端機集成了政務(wù)信息化系統(tǒng)的軟件服務(wù)模塊,為辦事群眾提供諸如身份證認證、資料采集、資料回執(zhí)打印等服務(wù)。票據(jù)圖像掃描模塊是終端機的一個關(guān)鍵模塊,它采用CIS(Contact Image Sensor)接觸式圖像傳感器,相比高拍儀有更高的鑒偽能力可保證掃描件的真實性,用于擴展服務(wù)內(nèi)容和范圍、提升服務(wù)質(zhì)量[1]。
票據(jù)圖像掃描模塊傳統(tǒng)實現(xiàn)方法一般是采用DSP+FPGA的技術(shù)平臺,模塊采集兩級CIS圖像傳感器信號,經(jīng)模數(shù)轉(zhuǎn)換后送入FPGA 進行灰度值補償預處理,F(xiàn)PGA 積累到完整一行圖像數(shù)據(jù)后,觸發(fā)一次DSP 中斷接收,然后DSP 中斷觸發(fā)EDMA模式通過EMIF并口總線從FPGA讀取一行圖像數(shù)據(jù)。該方法每次只能接收一行圖像數(shù)據(jù),存在CPU觸發(fā)中斷次數(shù)多和資源使用率高的缺點,一般在老一代圖像處理平臺例如DSP C6000系列有廣泛應(yīng)用,但在新一代圖像處理平臺例如AM5706已淘汰,取而代之的是VIP(Video Input Port)這種高效的圖像數(shù)據(jù)傳輸接口。
本文介紹了一種AM5706通過VIP接口與FPGA實現(xiàn)圖像數(shù)據(jù)傳輸?shù)姆椒?,AM5706 VIP 設(shè)備每接收到一幅完整的圖像數(shù)據(jù),才會觸發(fā)一次CPU 中斷,相比傳統(tǒng)EMIF 并行總線+EMDA 方法的每次只能接收一行圖像數(shù)據(jù),采用VIP 接口傳輸圖像數(shù)據(jù)可極大減少CPU中斷次數(shù)、降低CPU資源使用率,這對提升系統(tǒng)性能和降低硬件成本都具有重要意義。
技術(shù)方案基于TI ARM+DSP 多核AM5706 和XILINX FPGA Spartan-6 XC6SLX25 平臺,AM5706 作為為主處理器負責應(yīng)用軟件的功能實現(xiàn),F(xiàn)PGA ARTIX-6 XC6SLX25 負責CIS 打光時序控制和圖像數(shù)據(jù)預處理。技術(shù)方案總體框圖如圖1所示。
圖1 技術(shù)方案總體框圖
票據(jù)圖像掃描模塊可采集兩個通道CIS 圖像傳感器的模擬信號,模擬信號送入專用ADC 進行模數(shù)轉(zhuǎn)換后輸出原始圖像數(shù)據(jù),然后原始圖像數(shù)據(jù)送入FPGA進行圖像灰度值補償預處理,得到補償后的圖像數(shù)據(jù),補償后的圖像數(shù)據(jù)以一個完整行為基本單位,最后送入AM5706的VIP接口(Video Input Port),AM5706 ARM內(nèi)核驅(qū)動通過VIP 接口被動接收來自FPGA 的補償后CIS 圖像行數(shù)據(jù),當積累到一幅完整的圖像數(shù)據(jù)后,應(yīng)用程序跳出阻塞狀態(tài)并保存這一幅完整的圖像數(shù)據(jù),然后對該幅圖像進行鑒別、OCR識別等操作,最后通過USB 2.0 Device 通信接口把識別結(jié)果和圖像數(shù)據(jù)上傳到上位機。
AM5706 VIP 接口是一個從設(shè)備,在FPGA 連續(xù)發(fā)送圖像數(shù)據(jù)行到AM5706的VIP接口過程中,DMA會自動接收數(shù)據(jù)放入事先配置好的圖像緩沖區(qū)中,完全無需中斷ARM 的當前任務(wù),傳輸效率明顯要高于傳統(tǒng)的DSP圖像處理平臺。
硬件電路采用TI ARM+DSP 多核AM5706 和XILINX Spartan-6 XC6SLX25 作為主芯片。AM5706 外接64MB QSPI FLASH 和512MB DDR3L SDRAM 的 運 行 內(nèi) 存,QSPI FLASH 用來存放ARM Linux 系統(tǒng)鏡像、ARM 應(yīng)用程序、FPGA介質(zhì)程序、灰度值補償參數(shù)和運行日志,DDR3L SDRAM是ARM 的運行內(nèi)存,上電后ARM Linux 系統(tǒng)鏡像、ARM 應(yīng)用程序會搬送到DDR然后運行。AM5706采用GPIO時序模擬來實現(xiàn)FPGA 程序的加載,采用I2C 來配置FPGA 工作參數(shù)。電路設(shè)計了一路USB 2.0 Device,實現(xiàn)和上位機的通信和圖像數(shù)據(jù)上傳[3,4]。
硬件電路設(shè)計有兩路CIS 輸入,每路CIS 支持R、G、B、IRF 光色。兩路CIS 采集使用一片CIS 專業(yè)ADC 芯片HT82V48進行采集,LED打光控制由FPGA輸出控制信號驅(qū)動ULN2003A 進行電流放大。CIS 光色模擬信號經(jīng)過HT82V48模數(shù)轉(zhuǎn)換后輸出2路8-bit數(shù)字信號,數(shù)字信號輸入FPGA 進行圖像緩沖和灰度補償,最后輸出到AM5706 的VIP外設(shè)接口[2]。
圖2 硬件電路框圖
圖3 VIP接口電路
軟件實現(xiàn)首先編寫ARM 端的設(shè)備驅(qū)動FPGACIS,設(shè)備驅(qū)動開發(fā)可參考SDK 目錄/kernel/drivers/media/i2c/下面的CMOS 驅(qū)動源代碼和具體實現(xiàn)思路[4,5],本設(shè)計設(shè)備驅(qū)動FPGACIS描述符為“fpgacis”,設(shè)定輸入分辨率800*480,輸入格式SBGGR8,8-bit數(shù)據(jù)寬度,設(shè)備樹設(shè)備節(jié)點compatible屬性“grg,fpgacis1”,摘取關(guān)鍵代碼如下:
然后對VIP 相關(guān)DTS 設(shè)備樹字段進行配置,需要打開vip1,然后把設(shè)備fpgacis_1 掛載在i2c 總線下面,并與端點vin1a_ep建立連接[4,5],摘取關(guān)鍵配置如下:
FPGACIS 設(shè)備驅(qū)動完成配置和掛載成功后,Linux 系統(tǒng)便會產(chǎn)生設(shè)備節(jié)點如/dev/video0、/dev/video1,編寫應(yīng)用程序通過V4L2 接口采集視頻數(shù)據(jù),因篇幅原因不詳細列舉應(yīng)用程序的源代碼,具體實現(xiàn)過程參考軟件流程圖,如圖4所示。
圖4 軟件流程圖
硬件上電正常后進入Linux系統(tǒng)后,先掛載FPGACIS設(shè)備驅(qū)動,Linux 系統(tǒng)會產(chǎn)生設(shè)備節(jié)點如/dev/video0、/dev/video1,然后運行應(yīng)用程序/run/user/app,app 首先讀取在rootfs存放的FPGA firmware,通過GPIO時序模擬下載到FPGA然后啟動FPGA,下一步繼續(xù)完成對FPGA的采集參數(shù)配置,驅(qū)動通道步進電機,就可以實現(xiàn)對多張票據(jù)的連續(xù)圖像采集了。樣張采集的圖像效果如圖5所示,使用大批量樣張進行壓力測試,圖像采集穩(wěn)定,未出現(xiàn)卡頓、圖像丟失、圖像缺行,圖像亮線等異常現(xiàn)象。在設(shè)定最大采集速度下連續(xù)采集樣張圖像,CPU資源使用率穩(wěn)定在42%左右,如圖6所示,相比老一代圖像處理平臺的CPU資源使用率得到明顯下降。
圖5 采集樣張圖像
圖6 連續(xù)模式下資源使用率
本文介紹了一種AM5706 通過VIP 接口與FPGA 圖像數(shù)據(jù)傳輸?shù)膶崿F(xiàn)方法,該方法是票據(jù)圖像掃描模塊的一個關(guān)鍵技術(shù),票據(jù)圖像掃描模塊可采集兩級CIS 圖像傳感器信號,經(jīng)模數(shù)轉(zhuǎn)換后送入FPGA進行灰度值補償預處理,F(xiàn)PGA積累完整一行圖像數(shù)據(jù)后,輸出到AM5706的VIP接口,實現(xiàn)方法主要技術(shù)難點有:硬件電路圖設(shè)計和PCB設(shè)計,ARM內(nèi)核Linux 系統(tǒng)下VIP 設(shè)備驅(qū)動和配置,ARM 應(yīng)用程序開發(fā),F(xiàn)PGA VIP接口時序?qū)崿F(xiàn)和圖像預處理程序編寫。本文詳細介紹了模塊的硬件電路設(shè)計、ARM內(nèi)核Linux系統(tǒng)下的VIP設(shè)備驅(qū)動編寫和配置,以及應(yīng)用程序從FPGA 接收CIS 圖像數(shù)據(jù)的實現(xiàn)方法。采用VIP 接口傳輸大分辨率圖像數(shù)據(jù)以整張圖像為單位,相比傳統(tǒng)DSP 平臺采用的EMIF 并行總線+EDMA 的圖像傳輸傳輸方法,可極大減少CPU 中斷次數(shù),通過實測數(shù)據(jù)證實了較低的CPU資源使用率,該平臺和數(shù)據(jù)傳輸方法在票據(jù)圖像掃描模塊產(chǎn)品中應(yīng)用,實現(xiàn)了提升性能和降低硬件成本的設(shè)計目標。