孫佳帝
(長春職業(yè)技術(shù)學(xué)院信息分院,長春 130033)
?
基于SOPC的圖像采集及傳輸系統(tǒng)設(shè)計(jì)
孫佳帝*
(長春職業(yè)技術(shù)學(xué)院信息分院,長春 130033)
基于SOPC技術(shù)設(shè)計(jì)了一種軟硬件結(jié)合的圖像采集及傳輸系統(tǒng),針對以往緩存在SDRAM中的圖像數(shù)據(jù)對Nios Ⅱ的不可見性,提出在FPGA上采用SOPC技術(shù)實(shí)現(xiàn)圖像采集、格式轉(zhuǎn)換、圖像緩存,通過設(shè)計(jì)基于DMA的高速緩存IP核,實(shí)現(xiàn)Nios Ⅱ?qū)D像數(shù)據(jù)的實(shí)時(shí)、準(zhǔn)確讀取及傳輸。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)克服了以往緩存在SDRAM中的圖像數(shù)據(jù)對Nios Ⅱ的不可見性,實(shí)現(xiàn)了對任意位置的圖像數(shù)據(jù)準(zhǔn)確、高效地讀取,有利于擴(kuò)充各種軟件算法。
FPGA;圖像傳輸設(shè)計(jì);SOPC;Nios Ⅱ;WinPcap
隨著半導(dǎo)體市場的迅猛發(fā)展,產(chǎn)品面市的時(shí)間壓力及市場對產(chǎn)品設(shè)計(jì)的快捷性和靈活性要求的提升,這使得基于片上系統(tǒng)(System On Chip)設(shè)計(jì)的產(chǎn)品面臨一些亟待解決的問題:比如生產(chǎn)成本高,開發(fā)周期長,設(shè)計(jì)不靈活以及芯片出廠后很難再加以修改等[1]。這樣,SOPC(System On Programmable Chip)可編程片上系統(tǒng)概念應(yīng)運(yùn)而生[2-3]。
隨著第3代視頻監(jiān)控技術(shù)的發(fā)展,要求視頻監(jiān)控系統(tǒng)的前端具備預(yù)處理、網(wǎng)絡(luò)化以及在線升級等功能,而基于SOPC技術(shù)設(shè)計(jì)的系統(tǒng),可以靈活根據(jù)實(shí)際需要添減其系統(tǒng)內(nèi)部的各種模塊,外設(shè)以及部件等,而且能很好的繼承前代產(chǎn)品的特性,在當(dāng)前,能夠非常好的為視頻監(jiān)控系統(tǒng)提供嵌入式設(shè)計(jì)方案[4]。
SOPC技術(shù)作為嵌入式設(shè)計(jì)的熱門領(lǐng)域,已經(jīng)做了很多研究。邵應(yīng)昭[4]、劉向[5]利用Verilog硬件描述語言在FPGA內(nèi)部實(shí)現(xiàn)SDRAM存儲(chǔ)器作為緩存采集的視頻數(shù)據(jù),自定義一個(gè)視頻壓縮模塊隔行隔列讀取數(shù)據(jù)到SRAM中以供Nios Ⅱ讀取,實(shí)現(xiàn)網(wǎng)絡(luò)傳輸功能;張磊等[6-8]也是在FPGA內(nèi)部實(shí)現(xiàn)SDRAM控制器緩存采集的視頻數(shù)據(jù),Nios Ⅱ通過自定義一個(gè)數(shù)據(jù)通道讀取圖像數(shù)據(jù)。
上面所采用的方法由于Nios Ⅱ?qū)σ曨l數(shù)據(jù)不可見,都是通過間接方法進(jìn)行讀取,這些方法不僅在讀取速度上實(shí)時(shí)性不高,而且復(fù)雜度高,不利于擴(kuò)展軟件算法。本文通過將采集到的視頻數(shù)據(jù)通過基于DMA自定義IP核緩存到Nios Ⅱ可見的SDRAM中,實(shí)現(xiàn)了Nios Ⅱ?qū)θ我馕恢玫囊曨l數(shù)據(jù)準(zhǔn)確、高效讀取,并設(shè)計(jì)了基于該結(jié)構(gòu)的圖像傳輸系統(tǒng),驗(yàn)證了該結(jié)構(gòu)具有準(zhǔn)確性、易擴(kuò)展性、實(shí)時(shí)性等特點(diǎn)。
本系統(tǒng)采用友晶公司的DE2開發(fā)板為開發(fā)原型,選用Altera公司CycloneⅡ系列的EP2C35FPGA芯片[1]。FPGA芯片外面連接美光公司MT9M011型號130萬像素的CMOS圖像傳感器、海力士公司的HY57V641620HG型號的SDRAM等。
本系統(tǒng)主要包括5大模塊:功能分別為圖像采集、格式轉(zhuǎn)換、圖像緩存、圖像存儲(chǔ)以及網(wǎng)絡(luò)發(fā)送,詳細(xì)的系統(tǒng)硬件架構(gòu)請參考圖1。其工作流程大致為:(1)系統(tǒng)上電啟動(dòng)以后,FPGA芯片經(jīng)由I2C總線配置CMOS圖像傳感器;(2)通過圖像采集功能和格式轉(zhuǎn)換功能的模塊,得到有效的RGB三色圖像數(shù)據(jù);(3)使用帶有FIFO的緩存IP核(自定義),將圖像數(shù)據(jù)緩存在FIFO,同時(shí),DMA一旦檢測到FIFO里面有數(shù)據(jù)進(jìn)入,在沒有CPU的協(xié)助下,將數(shù)據(jù)傳輸至幀存儲(chǔ)器SDRAM中。Nios Ⅱ CPU讀取幀存在SDRAM中的數(shù)據(jù),并將RGB圖像數(shù)據(jù)封裝成UDP格式的數(shù)據(jù)包,通過DM9000A網(wǎng)絡(luò)芯片,發(fā)送到網(wǎng)絡(luò)中,接收端通過基于WinPcap的C++編程技術(shù),獲取發(fā)送的數(shù)據(jù)包,將數(shù)據(jù)重組成一幀圖像,完成真正意義上的基于SOPC圖像傳輸。
圖1 系統(tǒng)硬件構(gòu)架圖
2.1 圖像采集和格式轉(zhuǎn)換模塊
目前嵌入式系統(tǒng)大部分還是采用CCD攝像頭,CCD作為比較成熟的成像器件,成像質(zhì)量比較高,然而其價(jià)格昂貴。相比較CCD是以行為單位的電流信號,CMOS攝像頭以點(diǎn)為單位的電荷信號,后者更為敏感,速度更快,更為省電[9]。本設(shè)計(jì)采用130萬像素MT9M011的CMOS圖像傳感器芯片,其輸出品質(zhì)非常好,幾乎與CCD傳感器無異。其結(jié)構(gòu)簡單、內(nèi)部集成度高,僅需要很少的外部控制信號即可完成視頻圖像的采集輸出。MT9M011具備I2C接口,其初始化非常方便,可以通過Verilog語言來模擬I2C總線,進(jìn)而配置內(nèi)部各個(gè)寄存器。在像素時(shí)鐘信號(Pixclk)的驅(qū)動(dòng)下,每一個(gè)幀有效信號(Frame_valid)上升沿后開始新一幀數(shù)據(jù)的傳輸,每一個(gè)行有效信號(Line_valid)上升沿后開始傳輸新一行數(shù)據(jù)。輸出有效圖像數(shù)據(jù)的條件是—幀有效信號和行有效信號同時(shí)有效。表1為本設(shè)計(jì)所配置的寄存器,如下。
表1 寄存器設(shè)置值
MT9M011輸出的圖像數(shù)據(jù)格式為Bayer,偶數(shù)行只有紅色和綠色兩種像素,奇數(shù)行只有綠色和藍(lán)色兩種像素。為了得到每個(gè)像素點(diǎn)的RGB圖像,在此設(shè)計(jì)中采用雙線性差值算法[10]。
2.2 自定義緩存IP核設(shè)計(jì)
本系統(tǒng)采用了Altera公司目前最為成熟Avalon-MM bus總線,該總線將SOPC系統(tǒng)的外設(shè)地址映射到存儲(chǔ)器上,通過對存儲(chǔ)器空間的訪問進(jìn)而訪問和控制外設(shè)。根據(jù)這種訪問方式,Avalon-MM總線將總線上的設(shè)備端口分為主端口和從端口—Master和Slave端口,主端口用來發(fā)出控制信號,控制其他外設(shè);從端口處于被控制地位,接受主端口發(fā)來的控制信號。
本IP核的設(shè)計(jì)是由Nios Ⅱ CPU來控制完成對圖像數(shù)據(jù)的緩存和傳輸,需要有Avalon總線所有從端口信號,才可以集成在SOPC系統(tǒng)中,達(dá)到圖像數(shù)據(jù)緩存的目的。該設(shè)計(jì)的IP核主要實(shí)現(xiàn)以下功能:控制圖像傳感器采集的開始和停止,緩存固定大小的圖像數(shù)據(jù),方便于DMA傳輸至SDRAM中。
控制圖像傳感器采集的開啟或停止的工作原理如圖2所示。當(dāng)軟件中要求寫入開始或停止信號時(shí),本模塊根據(jù)軟件傳入的偏移地址,判定是開始或停止信號。如果偏移地址為2′h0時(shí),則寫入開始信號,如果偏移地址為2′h1時(shí),則寫入停止信號。
圖2 開啟和停止采集結(jié)構(gòu)原理圖
圖3 自定義緩存IP核結(jié)構(gòu)圖
緩存有效數(shù)據(jù)工作原理如圖3所示,在該IP核中定義了一個(gè)大小為16×1024的先入先出FIFO,如果有效圖像數(shù)據(jù)到來而且FIFO沒滿,也就是當(dāng)Dval&&wrfull有效的時(shí)候,RGB三色數(shù)據(jù)在像素時(shí)鐘的驅(qū)動(dòng)只下,便會(huì)寫入到緩存FIFO內(nèi);而當(dāng)FIFO不為空時(shí),DMA不需要CPU的協(xié)助,開啟Avalon總線的讀傳輸。
圖4 SOPC硬件搭建圖
為了匹配讀寫時(shí)鐘不一致,采用了兩個(gè)控制信號。在寫FIFO時(shí),當(dāng)wrfull有效時(shí),停止寫FIFO;當(dāng)rdempty有效時(shí),即FIFO為空時(shí),立即置Avalon接口的等待信號有效,掛起Avalon總線,停止所有的Avalon總線傳輸。通過上面兩種方法,不僅解決了采集時(shí)鐘和緩存時(shí)鐘的匹配問題,而且保證了數(shù)據(jù)的完整性。
2.3 SOPC系統(tǒng)搭建
通過Altera提供的SOPC Builder可以很方便、高效地搭建整個(gè)系統(tǒng)[11],圖4為SOPC系統(tǒng)硬件搭建圖。其中組件包括Nios Ⅱ CPU、JTAG_UART、PIO接口、PLL(鎖相環(huán))、CMOS_Capture(自定義IP核包含其中)、DMA控制器、SDRAM控制器、DM9000A網(wǎng)卡芯片控制器等。
3.1 發(fā)送端Nios Ⅱ軟件設(shè)計(jì)
軟件運(yùn)行環(huán)境選用Nios Ⅱ軟件開發(fā)工具(SBT),它是下一代的Nios Ⅱ集成開發(fā)環(huán)境。此開發(fā)環(huán)境具有功能強(qiáng)大的命令工具和腳本等,有效的利用可以高效管理各種應(yīng)用程序、軟件庫的編譯選項(xiàng)以及電路板支持包等[12]。
在建立SBT工程時(shí),不需要知道SOPC系統(tǒng)的底層驅(qū)動(dòng)是如何工作,只需要編寫C語言代碼就可以。
編寫的C語言流程圖如圖5所示。
圖5 發(fā)送端軟件流程圖
第1步完成圖像完整采集一幀工作。首先調(diào)用DM9000A的初始化函數(shù)DM9000_init()初始化網(wǎng)卡芯片;初始化成功之后,開啟DMA接收通道,如果開始失敗,則返回錯(cuò)誤;配置開啟的DMA接收通道,由于我們使用的RGB數(shù)據(jù)為565的16 bit數(shù)據(jù)寬度,這里我們配置DMA的傳輸數(shù)據(jù)寬度為16 bit,并指定接收的數(shù)據(jù)源為之前自定義的IP核(CMOS_Capture);通過寫入開始信號,控制CMOS圖像傳感器開始采集數(shù)據(jù),同時(shí),DMA接收通道開始接收數(shù)據(jù);如果沒有接受完一幀圖像,則繼續(xù)接收,接受完一幀圖像之后,關(guān)閉圖像采集,防止圖像覆蓋,同時(shí)關(guān)閉DMA通道,這樣保證緩存在SDRAM中的數(shù)據(jù)是完整的一幀圖像。
第2步完成網(wǎng)絡(luò)發(fā)送部分的工作。這里由于需要發(fā)送出去,就需要封裝數(shù)據(jù)包,這里我們采用基于無連接的UDP協(xié)議的數(shù)據(jù)封裝格式,這種數(shù)據(jù)包封裝格式簡單并且傳輸速度快。首先填寫數(shù)據(jù)包頭信息,具體填寫內(nèi)容如表2所示,包頭信息的順序?yàn)?傳輸目的地的MAC地址、源MAC地址、協(xié)議類型、Ip版本號、包頭長度、一個(gè)數(shù)據(jù)包長度、數(shù)據(jù)包的分組信息、IP校驗(yàn)、源IP、目標(biāo)IP、發(fā)送端端口號、目的端口號等;由于UDP協(xié)議最大一個(gè)數(shù)據(jù)包長度為1514 byte,去掉包頭的46 byte,只有1468 byte,所以這里我們每一個(gè)數(shù)據(jù)包只傳輸一行數(shù)據(jù)640×2=1280 byte,這樣便于調(diào)試和復(fù)原圖像;進(jìn)入while循環(huán),判斷是否傳輸完一幀數(shù)據(jù),如果沒有,則繼續(xù)傳輸,如果傳輸完一幀,則程序結(jié)束。
表2 UDP包頭信息設(shè)置值
3.2 接收端PC機(jī)軟件設(shè)計(jì)
作為接收端的PC機(jī),我們選用基于WinPcap的應(yīng)用程序,WinPcap(Windows Packet capture)是window是平臺(tái)下一個(gè)免費(fèi)的、公共的網(wǎng)絡(luò)訪問庫,能夠使應(yīng)用程序捕獲和發(fā)送數(shù)據(jù)包。本文采用的就基于C++和WinPcap的應(yīng)用程序設(shè)計(jì)。工作流程圖如圖6所示,在應(yīng)用程序打開時(shí),打開網(wǎng)卡適配器,設(shè)置適配器捕獲屬性;設(shè)置子網(wǎng)掩碼,只考慮C類子網(wǎng);設(shè)置和編譯過濾器,只接受IP和UDP協(xié)議的數(shù)據(jù),之后就開啟一個(gè)新線程捕獲之前打開的適配器上的數(shù)據(jù)。接收到一包數(shù)據(jù)之后,解析數(shù)據(jù)包,直到接收到一幀圖像時(shí),給主線程發(fā)送一個(gè)繪圖的消息,主線程繪制bmp位圖,并顯示出來,接受完成。
圖6 接收端軟件流程圖
圖7 接收客戶端截圖
在實(shí)驗(yàn)室環(huán)境下,用文中設(shè)計(jì)的傳輸系統(tǒng),成功進(jìn)行了圖像傳輸實(shí)驗(yàn)。在傳輸640×480×2B的數(shù)據(jù)圖像時(shí),傳輸速率為5.9 Mbit/s。而在接收端,利用C++編寫的客戶端,進(jìn)行數(shù)據(jù)重組顯示時(shí),圖像清晰并完整,如圖7所示。
本文所設(shè)計(jì)的基于SOPC的圖像傳輸系統(tǒng),采用DMA的高速緩存IP核技術(shù),實(shí)現(xiàn)視頻數(shù)據(jù)的采集緩存,使得Nios Ⅱ能夠便捷、準(zhǔn)確的讀取視頻數(shù)據(jù),并能穩(wěn)定傳輸數(shù)據(jù),為嵌入式視頻采集前端提供了一個(gè)很好的解決方案。在滿足通信實(shí)時(shí)性要求的前提下,擴(kuò)展任意基于C語言的軟件算法,完成特定功能,適用于智能視頻監(jiān)控、嵌入式系統(tǒng)設(shè)計(jì)等領(lǐng)域。
[1]張志剛. 基于FPGA與SOPC設(shè)計(jì)教程——DE2實(shí)踐[M]. 西安:西安電子科技大學(xué)出版社,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]邵應(yīng)昭,任愛峰,初秀琴. 基于FPGA的視頻監(jiān)控系統(tǒng)[J]. 電子技術(shù)應(yīng)用,2008(5):20-22.
[4]劉向. 基于SOPC的智能視頻監(jiān)控技術(shù)研究[D]. 大連:大連理工大學(xué),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中實(shí)現(xiàn)基于Nios Ⅱ的遠(yuǎn)程目標(biāo)的控制[D]. 哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[7]張磊. 基于FPGA的輕量化網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計(jì)[D]. 昆明:昆明理工大學(xué),2010.
[8]康厚俊. CMOS圖像傳感器與CCD的比較及發(fā)展現(xiàn)狀[J]. 才智,2008(9):323-325.
[9]胡志海,王德君,朱巧智. 基于SoPC的自感知運(yùn)動(dòng)圖像采集系統(tǒng)設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù),2009(18):153-157.
[10]陳春寧,王延杰. 利用信號相關(guān)對BAYER格式圖像色彩復(fù)原[J]. 電子器件,2007,30(4):1417-1419.
[11]陳東明,葉玉堂. 基于SOPC可重構(gòu)的圖像采集與處理系統(tǒng)設(shè)計(jì)[J]. 電子器件,2011,34(2):232-236.
[12]The WinPcap Team[R]. WinPcap中文技術(shù)文檔. 4.0.1. July 23,2007:437-439.
孫佳帝(1981-),男,漢族,吉林長春人,碩士,講師,主要研究方向?yàn)榛贔PGA的嵌入式數(shù)字視頻監(jiān)控系統(tǒng)設(shè)計(jì)。
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