孫佳帝
(長春職業技術學院信息分院,長春 130033)
?
基于SOPC的圖像采集及傳輸系統設計
孫佳帝*
(長春職業技術學院信息分院,長春 130033)
基于SOPC技術設計了一種軟硬件結合的圖像采集及傳輸系統,針對以往緩存在SDRAM中的圖像數據對Nios Ⅱ的不可見性,提出在FPGA上采用SOPC技術實現圖像采集、格式轉換、圖像緩存,通過設計基于DMA的高速緩存IP核,實現Nios Ⅱ對圖像數據的實時、準確讀取及傳輸。實驗結果表明,該系統克服了以往緩存在SDRAM中的圖像數據對Nios Ⅱ的不可見性,實現了對任意位置的圖像數據準確、高效地讀取,有利于擴充各種軟件算法。
FPGA;圖像傳輸設計;SOPC;Nios Ⅱ;WinPcap
隨著半導體市場的迅猛發展,產品面市的時間壓力及市場對產品設計的快捷性和靈活性要求的提升,這使得基于片上系統(System On Chip)設計的產品面臨一些亟待解決的問題:比如生產成本高,開發周期長,設計不靈活以及芯片出廠后很難再加以修改等[1]。這樣,SOPC(System On Programmable Chip)可編程片上系統概念應運而生[2-3]。
隨著第3代視頻監控技術的發展,要求視頻監控系統的前端具備預處理、網絡化以及在線升級等功能,而基于SOPC技術設計的系統,可以靈活根據實際需要添減其系統內部的各種模塊,外設以及部件等,而且能很好的繼承前代產品的特性,在當前,能夠非常好的為視頻監控系統提供嵌入式設計方案[4]。
SOPC技術作為嵌入式設計的熱門領域,已經做了很多研究。邵應昭[4]、劉向[5]利用Verilog硬件描述語言在FPGA內部實現SDRAM存儲器作為緩存采集的視頻數據,自定義一個視頻壓縮模塊隔行隔列讀取數據到SRAM中以供Nios Ⅱ讀取,實現網絡傳輸功能;張磊等[6-8]也是在FPGA內部實現SDRAM控制器緩存采集的視頻數據,Nios Ⅱ通過自定義一個數據通道讀取圖像數據。
上面所采用的方法由于Nios Ⅱ對視頻數據不可見,都是通過間接方法進行讀取,這些方法不僅在讀取速度上實時性不高,而且復雜度高,不利于擴展軟件算法。本文通過將采集到的視頻數據通過基于DMA自定義IP核緩存到Nios Ⅱ可見的SDRAM中,實現了Nios Ⅱ對任意位置的視頻數據準確、高效讀取,并設計了基于該結構的圖像傳輸系統,驗證了該結構具有準確性、易擴展性、實時性等特點。
本系統采用友晶公司的DE2開發板為開發原型,選用Altera公司CycloneⅡ系列的EP2C35FPGA芯片[1]。FPGA芯片外面連接美光公司MT9M011型號130萬像素的CMOS圖像傳感器、海力士公司的HY57V641620HG型號的SDRAM等。
本系統主要包括5大模塊:功能分別為圖像采集、格式轉換、圖像緩存、圖像存儲以及網絡發送,詳細的系統硬件架構請參考圖1。其工作流程大致為:(1)系統上電啟動以后,FPGA芯片經由I2C總線配置CMOS圖像傳感器;(2)通過圖像采集功能和格式轉換功能的模塊,得到有效的RGB三色圖像數據;(3)使用帶有FIFO的緩存IP核(自定義),將圖像數據緩存在FIFO,同時,DMA一旦檢測到FIFO里面有數據進入,在沒有CPU的協助下,將數據傳輸至幀存儲器SDRAM中。Nios Ⅱ CPU讀取幀存在SDRAM中的數據,并將RGB圖像數據封裝成UDP格式的數據包,通過DM9000A網絡芯片,發送到網絡中,接收端通過基于WinPcap的C++編程技術,獲取發送的數據包,將數據重組成一幀圖像,完成真正意義上的基于SOPC圖像傳輸。

圖1 系統硬件構架圖
2.1 圖像采集和格式轉換模塊
目前嵌入式系統大部分還是采用CCD攝像頭,CCD作為比較成熟的成像器件,成像質量比較高,然而其價格昂貴。相比較CCD是以行為單位的電流信號,CMOS攝像頭以點為單位的電荷信號,后者更為敏感,速度更快,更為省電[9]。本設計采用130萬像素MT9M011的CMOS圖像傳感器芯片,其輸出品質非常好,幾乎與CCD傳感器無異。其結構簡單、內部集成度高,僅需要很少的外部控制信號即可完成視頻圖像的采集輸出。MT9M011具備I2C接口,其初始化非常方便,可以通過Verilog語言來模擬I2C總線,進而配置內部各個寄存器。在像素時鐘信號(Pixclk)的驅動下,每一個幀有效信號(Frame_valid)上升沿后開始新一幀數據的傳輸,每一個行有效信號(Line_valid)上升沿后開始傳輸新一行數據。輸出有效圖像數據的條件是—幀有效信號和行有效信號同時有效。表1為本設計所配置的寄存器,如下。

表1 寄存器設置值
MT9M011輸出的圖像數據格式為Bayer,偶數行只有紅色和綠色兩種像素,奇數行只有綠色和藍色兩種像素。為了得到每個像素點的RGB圖像,在此設計中采用雙線性差值算法[10]。
2.2 自定義緩存IP核設計
本系統采用了Altera公司目前最為成熟Avalon-MM bus總線,該總線將SOPC系統的外設地址映射到存儲器上,通過對存儲器空間的訪問進而訪問和控制外設。根據這種訪問方式,Avalon-MM總線將總線上的設備端口分為主端口和從端口—Master和Slave端口,主端口用來發出控制信號,控制其他外設;從端口處于被控制地位,接受主端口發來的控制信號。
本IP核的設計是由Nios Ⅱ CPU來控制完成對圖像數據的緩存和傳輸,需要有Avalon總線所有從端口信號,才可以集成在SOPC系統中,達到圖像數據緩存的目的。該設計的IP核主要實現以下功能:控制圖像傳感器采集的開始和停止,緩存固定大小的圖像數據,方便于DMA傳輸至SDRAM中。
控制圖像傳感器采集的開啟或停止的工作原理如圖2所示。當軟件中要求寫入開始或停止信號時,本模塊根據軟件傳入的偏移地址,判定是開始或停止信號。如果偏移地址為2′h0時,則寫入開始信號,如果偏移地址為2′h1時,則寫入停止信號。

圖2 開啟和停止采集結構原理圖

圖3 自定義緩存IP核結構圖
緩存有效數據工作原理如圖3所示,在該IP核中定義了一個大小為16×1024的先入先出FIFO,如果有效圖像數據到來而且FIFO沒滿,也就是當Dval&&wrfull有效的時候,RGB三色數據在像素時鐘的驅動只下,便會寫入到緩存FIFO內;而當FIFO不為空時,DMA不需要CPU的協助,開啟Avalon總線的讀傳輸。

圖4 SOPC硬件搭建圖
為了匹配讀寫時鐘不一致,采用了兩個控制信號。在寫FIFO時,當wrfull有效時,停止寫FIFO;當rdempty有效時,即FIFO為空時,立即置Avalon接口的等待信號有效,掛起Avalon總線,停止所有的Avalon總線傳輸。通過上面兩種方法,不僅解決了采集時鐘和緩存時鐘的匹配問題,而且保證了數據的完整性。
2.3 SOPC系統搭建
通過Altera提供的SOPC Builder可以很方便、高效地搭建整個系統[11],圖4為SOPC系統硬件搭建圖。其中組件包括Nios Ⅱ CPU、JTAG_UART、PIO接口、PLL(鎖相環)、CMOS_Capture(自定義IP核包含其中)、DMA控制器、SDRAM控制器、DM9000A網卡芯片控制器等。
3.1 發送端Nios Ⅱ軟件設計
軟件運行環境選用Nios Ⅱ軟件開發工具(SBT),它是下一代的Nios Ⅱ集成開發環境。此開發環境具有功能強大的命令工具和腳本等,有效的利用可以高效管理各種應用程序、軟件庫的編譯選項以及電路板支持包等[12]。
在建立SBT工程時,不需要知道SOPC系統的底層驅動是如何工作,只需要編寫C語言代碼就可以。
編寫的C語言流程圖如圖5所示。

圖5 發送端軟件流程圖
第1步完成圖像完整采集一幀工作。首先調用DM9000A的初始化函數DM9000_init()初始化網卡芯片;初始化成功之后,開啟DMA接收通道,如果開始失敗,則返回錯誤;配置開啟的DMA接收通道,由于我們使用的RGB數據為565的16 bit數據寬度,這里我們配置DMA的傳輸數據寬度為16 bit,并指定接收的數據源為之前自定義的IP核(CMOS_Capture);通過寫入開始信號,控制CMOS圖像傳感器開始采集數據,同時,DMA接收通道開始接收數據;如果沒有接受完一幀圖像,則繼續接收,接受完一幀圖像之后,關閉圖像采集,防止圖像覆蓋,同時關閉DMA通道,這樣保證緩存在SDRAM中的數據是完整的一幀圖像。
第2步完成網絡發送部分的工作。這里由于需要發送出去,就需要封裝數據包,這里我們采用基于無連接的UDP協議的數據封裝格式,這種數據包封裝格式簡單并且傳輸速度快。首先填寫數據包頭信息,具體填寫內容如表2所示,包頭信息的順序為:傳輸目的地的MAC地址、源MAC地址、協議類型、Ip版本號、包頭長度、一個數據包長度、數據包的分組信息、IP校驗、源IP、目標IP、發送端端口號、目的端口號等;由于UDP協議最大一個數據包長度為1514 byte,去掉包頭的46 byte,只有1468 byte,所以這里我們每一個數據包只傳輸一行數據640×2=1280 byte,這樣便于調試和復原圖像;進入while循環,判斷是否傳輸完一幀數據,如果沒有,則繼續傳輸,如果傳輸完一幀,則程序結束。

表2 UDP包頭信息設置值
3.2 接收端PC機軟件設計
作為接收端的PC機,我們選用基于WinPcap的應用程序,WinPcap(Windows Packet capture)是window是平臺下一個免費的、公共的網絡訪問庫,能夠使應用程序捕獲和發送數據包。本文采用的就基于C++和WinPcap的應用程序設計。工作流程圖如圖6所示,在應用程序打開時,打開網卡適配器,設置適配器捕獲屬性;設置子網掩碼,只考慮C類子網;設置和編譯過濾器,只接受IP和UDP協議的數據,之后就開啟一個新線程捕獲之前打開的適配器上的數據。接收到一包數據之后,解析數據包,直到接收到一幀圖像時,給主線程發送一個繪圖的消息,主線程繪制bmp位圖,并顯示出來,接受完成。

圖6 接收端軟件流程圖

圖7 接收客戶端截圖
在實驗室環境下,用文中設計的傳輸系統,成功進行了圖像傳輸實驗。在傳輸640×480×2B的數據圖像時,傳輸速率為5.9 Mbit/s。而在接收端,利用C++編寫的客戶端,進行數據重組顯示時,圖像清晰并完整,如圖7所示。
本文所設計的基于SOPC的圖像傳輸系統,采用DMA的高速緩存IP核技術,實現視頻數據的采集緩存,使得Nios Ⅱ能夠便捷、準確的讀取視頻數據,并能穩定傳輸數據,為嵌入式視頻采集前端提供了一個很好的解決方案。在滿足通信實時性要求的前提下,擴展任意基于C語言的軟件算法,完成特定功能,適用于智能視頻監控、嵌入式系統設計等領域。
[1]張志剛. 基于FPGA與SOPC設計教程——DE2實踐[M]. 西安:西安電子科技大學出版社,2007:4-17.
[2]Liu Limin. A Reconfigurable SoPC Based on HW-SW Co-design[C]//IEEE International Conference on Industrial Technology. 2008:1-4.
[3]邵應昭,任愛峰,初秀琴. 基于FPGA的視頻監控系統[J]. 電子技術應用,2008(5):20-22.
[4]劉向. 基于SOPC的智能視頻監控技術研究[D]. 大連:大連理工大學,2010.
[5]Zhang Weijun,Dun Yujie,Shi Weixiang. The Design and Implementation of a Networked Real-Time Video Surveillance System Based on FPGA[C]//5th International Conference on Visual Information Engineering,2008:508-512.
[6]李瑞林. 在FPGA中實現基于Nios Ⅱ的遠程目標的控制[D]. 哈爾濱:哈爾濱工業大學,2008.
[7]張磊. 基于FPGA的輕量化網絡監控系統設計[D]. 昆明:昆明理工大學,2010.
[8]康厚俊. CMOS圖像傳感器與CCD的比較及發展現狀[J]. 才智,2008(9):323-325.
[9]胡志海,王德君,朱巧智. 基于SoPC的自感知運動圖像采集系統設計[J]. 現代電子技術,2009(18):153-157.
[10]陳春寧,王延杰. 利用信號相關對BAYER格式圖像色彩復原[J]. 電子器件,2007,30(4):1417-1419.
[11]陳東明,葉玉堂. 基于SOPC可重構的圖像采集與處理系統設計[J]. 電子器件,2011,34(2):232-236.
[12]The WinPcap Team[R]. WinPcap中文技術文檔. 4.0.1. July 23,2007:437-439.

孫佳帝(1981-),男,漢族,吉林長春人,碩士,講師,主要研究方向為基于FPGA的嵌入式數字視頻監控系統設計。
DesignofAnImageAcquisitionandTransmissionSystemBasedonSOPC
SUNJiadi*
(Changchun Vocational Institute of Technology Information Branch,Changchun 130033,China)
An image acquisition and transmission system based on SOPC(System On Programmable Chip),which is a combination of hardware and software,is designed in this paper. Adopting SOPC technology,realize image acquisition,format conversion,and image cache on the FPGA,through the design of cache IP core based on DMA(Direct Memory Access),realize image data real-time accurate reading and transmission by Nios Ⅱ. The system proposed overcomes the previous cache image data in SDRAM is not visible for Nios Ⅱ,realizes reading the image data at any position accurately and effectively,is available to expand various software algorithms.
FPGA;image transmission design;SOPC;Nios Ⅱ;WinPcap
2014-04-14修改日期:2014-05-08
TN919.8
:A
:1005-9490(2014)06-1116-05
10.3969/j.issn.1005-9490.2014.06.022