蔡浩聰 謝云 劉家曉 鄭海成
(廣東工業(yè)大學(xué) 自動(dòng)化學(xué)院)
基于可編程片上系統(tǒng)的SOPC技術(shù)是目前國(guó)內(nèi)外電子領(lǐng)域中的研究熱點(diǎn),它將并行結(jié)構(gòu)和并行計(jì)算集于一體,采用了軟硬件協(xié)同設(shè)計(jì)和 IP復(fù)用的思想,能夠減少產(chǎn)品開(kāi)發(fā)時(shí)間,降低功耗,高效利用FPGA資源,因此可以實(shí)現(xiàn)高速低功耗低成本的實(shí)時(shí)嵌入式機(jī)器視覺(jué)檢測(cè)系統(tǒng)。隨著技術(shù)的不斷進(jìn)步,F(xiàn)PGA的集成度越來(lái)越高,可以實(shí)現(xiàn)的設(shè)計(jì)規(guī)模越來(lái)越大,而功耗越來(lái)越低。因此,基于FPGA的嵌入式視覺(jué)系統(tǒng)將是計(jì)算機(jī)視覺(jué)系統(tǒng)的重要發(fā)展方向[1]。
隨著消費(fèi)類電子產(chǎn)品的增多,各種小型的音響設(shè)備的需求也隨之增多,音響設(shè)備的音質(zhì)主要由揚(yáng)聲器的重要部件音膜決定,而音膜的質(zhì)量主要由其內(nèi)外圓的同心度決定,音膜的生產(chǎn)加工及質(zhì)量檢測(cè)便成為市場(chǎng)競(jìng)爭(zhēng)中的重要因素。對(duì)音膜同心度的求取過(guò)程要解決的重點(diǎn)問(wèn)題是對(duì)音膜內(nèi)外圓邊緣的在線實(shí)時(shí)檢測(cè)。目前國(guó)內(nèi)暫無(wú)成熟的音膜同心度機(jī)器視覺(jué)檢測(cè)系統(tǒng)。
針對(duì)上述情況,本文采用SOPC、可編程邏輯器件、IP復(fù)用等技術(shù),設(shè)計(jì)了一種基于SOPC的實(shí)時(shí)視覺(jué)檢測(cè)系統(tǒng)。主要介紹了該系統(tǒng)中總體設(shè)計(jì)方案,并采用Sobel算子,以音膜的內(nèi)外圓邊緣檢測(cè)為例,證明了該系統(tǒng)的高速實(shí)時(shí)性。本設(shè)計(jì)不僅帶來(lái)一定的實(shí)用價(jià)值,也為高速智能相機(jī)的開(kāi)發(fā)提供了有用的參考。
SOPC技術(shù)是將CPU、存儲(chǔ)器、I/O接口等系統(tǒng)設(shè)計(jì)所必須的模塊封裝為IP核集成在一片F(xiàn)PGA上,是一種新的系統(tǒng)設(shè)計(jì)技術(shù)。這種設(shè)計(jì)方式,有開(kāi)發(fā)周期短、設(shè)計(jì)靈活、可裁減、可擴(kuò)充、可升級(jí)、軟硬件在系統(tǒng)可編程的功能,特別適用于復(fù)雜系統(tǒng)的設(shè)計(jì)[2]。由于SOPC技術(shù)的諸多優(yōu)點(diǎn),本文采用這種技術(shù)設(shè)計(jì)了一種基于SOPC的嵌入式視覺(jué)檢測(cè)系統(tǒng)。系統(tǒng)總體框圖如圖1所示。
本系統(tǒng)采用了北京合眾達(dá)公司的教學(xué)實(shí)驗(yàn)平臺(tái)SEED-XDTK-V4為硬件開(kāi)發(fā)平臺(tái)和Xilinx公司的嵌入式開(kāi)發(fā)工具 EDK 為軟件開(kāi)發(fā)平臺(tái)。SEED-XDTK-V4實(shí)驗(yàn)箱配置了Xilinx公司的Virtex-4系列的FPGA芯片,該芯片擁有23040個(gè)邏輯單元和128 個(gè)信號(hào)處理單元(Xtreme DSP Slices)等豐富資源。EDK開(kāi)發(fā)套件自帶了許多工具和IP,可以用來(lái)設(shè)計(jì)完整的嵌入式處理器系統(tǒng),主要包括Xilinx平臺(tái)工作室XPS和軟件開(kāi)發(fā)套件SDK。本系統(tǒng)工程包括了 MicroBlaze軟核處理器、OPB總線、DDR 控制器、DMA控制器、圖像處理算法模塊等。MicroBlaze軟核是一種針對(duì) Xilinx FPGA 器件而優(yōu)化的功能強(qiáng)大的32位微處理器,支持CoreConnect總線的標(biāo)準(zhǔn)外設(shè)集合,具有較好的兼容性和重復(fù)利用性。各外設(shè)模塊以IP核形式靈活的連接到OPB總線上,使系統(tǒng)的設(shè)計(jì)具有很好的重構(gòu)能力和靈活性。系統(tǒng)的SOPC工程如圖2所示。主要IP核的功能簡(jiǎn)單介紹如下:
UART模塊:I2C 配置視頻解碼芯片TVP5150PBS工作模式;
DMA模塊:內(nèi)存與外設(shè)之間進(jìn)行批量的數(shù)據(jù)傳輸。使用DMA控制器對(duì)圖像數(shù)據(jù)的存儲(chǔ)進(jìn)行操作,這樣可減少CPU的處理負(fù)擔(dān)和功耗,提高圖像處理速度;
CCD_Controllor模塊:采集視頻解碼芯片TVP5150PBS解碼后的視頻數(shù)據(jù),并進(jìn)行圖像格式轉(zhuǎn)換。其中配置了TVP5150PBS為YUV格式輸出,“Y”表示明亮度(Luminance),也就是灰階值;“U”和“V”表示色度(Chrominance)。通過(guò)圖像數(shù)據(jù)采集模塊將接收到的YUV圖像轉(zhuǎn)換為8位灰度圖像格式,將3個(gè)像素點(diǎn)共24位數(shù)據(jù)合并為32位數(shù)據(jù)(高8位補(bǔ)零),然后送OPB總線,因此,每一次總線傳輸相當(dāng)于傳輸了3個(gè)像素的數(shù)據(jù)。這里不采用一次傳輸4個(gè)像素點(diǎn)的灰度數(shù)據(jù)的原因是:3個(gè)像素?cái)?shù)據(jù)的傳輸有利于后面圖像處理算法的實(shí)現(xiàn);
PLC_Ctr模塊:用于與外設(shè) PLC 進(jìn)行通信,控制 PLC進(jìn)行相應(yīng)的操作,例如控制外部傳感器,啟動(dòng)剔除裝置剔除流水線上不合格的產(chǎn)品等;
VGA模塊:產(chǎn)生數(shù)字圖像輸出對(duì)應(yīng)的時(shí)序,若圖像數(shù)據(jù)未經(jīng)MicroBlaze CPU處理,則直接數(shù)據(jù)流輸出;若圖像數(shù)據(jù)經(jīng)CPU處理,則使用乒乓操作的方式,將圖像數(shù)據(jù)轉(zhuǎn)換為27MHz輸出;
Pic_Processing模塊:數(shù)字圖像處理算法的實(shí)現(xiàn)。該模塊可根據(jù)項(xiàng)目的具體要求設(shè)計(jì)相應(yīng)的圖像處理算法IP核,該圖像處理 IP核既可以完全使用硬件設(shè)計(jì)方式完成整個(gè)圖像處理過(guò)程,直接輸出顯示最終結(jié)果,也可以只完成圖像的前期預(yù)處理部分,然后把處理后的關(guān)鍵數(shù)據(jù)送入MicroBlaze軟核 CPU中,通過(guò)軟件處理方式得到最終的處理結(jié)果再進(jìn)行VGA輸出顯示。因此該模塊的設(shè)計(jì)是項(xiàng)目設(shè)計(jì)的重點(diǎn)和難點(diǎn)。下面將以音膜圖像的內(nèi)外圓輪廓檢測(cè)為例,具體介紹該模塊IP的設(shè)計(jì)流程和實(shí)現(xiàn)方法。
圖2 EDK中SOPC工程
由于系統(tǒng)中采用了DMA傳輸技術(shù),圖像處理算法完全由硬件實(shí)現(xiàn),因此MicroBlaze CPU主要完成了系統(tǒng)的初始化、外設(shè)的配置和DMA的控制等簡(jiǎn)單操作。軟件設(shè)計(jì)流程如圖3所示。
圖3 系統(tǒng)軟件設(shè)計(jì)流程
該應(yīng)用中的數(shù)字圖像處理算法的主要思路是:讀取音膜圖像數(shù)據(jù)到圖像處理模塊IP,進(jìn)行數(shù)據(jù)緩存,再進(jìn)行中值濾波處理,濾除干擾噪聲,接著運(yùn)用Sobel算子對(duì)音膜圖像進(jìn)行內(nèi)外圓邊緣檢測(cè),然后對(duì)圖像進(jìn)行二值化處理。由于邊緣檢測(cè)算法的數(shù)據(jù)量較大,為達(dá)到實(shí)時(shí)處理的要求,本文采用了算法全硬件實(shí)現(xiàn)的設(shè)計(jì)方法。
Sobel算子是測(cè)量沿水平方向和垂直方向兩個(gè)方向的灰度差,然后把測(cè)量值合并起來(lái)形成邊緣強(qiáng)度。Sobel的水平方向梯度算子和垂直方向梯度算子分別如圖4(a)和圖4(b)所示,圖4(c) 為圖像的3×3區(qū)域(Z為8位灰度值)[3]。
圖4 Sobel算子和圖像3×3區(qū)域
得到Sobel算子的梯度的模的近似表達(dá)式為:
判斷梯度模的值是否大于或等于設(shè)定的閾值T,若是則置該點(diǎn)為灰度值255,反之置0,即:
Sobel算子的硬件實(shí)現(xiàn)使用了Xilinx公司的高性能 DSP系統(tǒng)的快速建模和實(shí)現(xiàn)工具 System Generator。該工具是Xilinx公司的系統(tǒng)級(jí)建模工具,在很多方面擴(kuò)展了MathWorks公司的Simulink平臺(tái),提供了合適硬件設(shè)計(jì)的數(shù)字信號(hào)處理(DSP)建模環(huán)境,加速、簡(jiǎn)化了FPGA的DSP系統(tǒng)級(jí)硬件設(shè)計(jì)[4]。圖5為在Simulink中使用System Generator工具搭建起的Sobel算子模型。輸入圖像數(shù)據(jù)通過(guò)水平方向和垂直方向兩個(gè)濾波器后,再把兩個(gè)濾波器輸出的值進(jìn)行相加,然后再通過(guò)閾值T相比,進(jìn)行二值化,輸出最終結(jié)果。整個(gè)Sobel算子使用了11個(gè)加減法器和一個(gè)雙口隨機(jī)存取存儲(chǔ)器(Dual Port RAM)等資源。整個(gè)設(shè)計(jì)思路嚴(yán)格按照Sobel的算法步驟進(jìn)行設(shè)計(jì)。
圖5 Sobel算子模型
在 Sobel算子模型上加入中值濾波和二值化模塊,使用 System Generator軟件將算法模型轉(zhuǎn)化為HDL工程,進(jìn)行優(yōu)化和綜合,通過(guò)Modelsim仿真驗(yàn)證算法的正確性,仿真結(jié)果如圖6所示。
圖6 Modelsim中算法仿真結(jié)果
在EDK軟件中,通過(guò)編寫自定義IP中的MPD文件、PAO文件和用戶邏輯(user_logic)模塊,通過(guò)編寫端口轉(zhuǎn)換和時(shí)序調(diào)節(jié)程序,將圖像算法模塊封裝成IP核,掛接到OPB總線上,配合一定的控制時(shí)序,通過(guò)MicroBlaze軟核的軟件程序調(diào)用該IP核模塊,完成整個(gè)系統(tǒng)的運(yùn)行。
圖7 PC和FPGA檢測(cè)結(jié)果
圖7(a)為音膜的原圖像,圖7(b)為PC上在VC++軟件中使用Sobel算子檢測(cè)得到的音膜內(nèi)外圓輪廓,圖7(c)為基于FPGA上檢測(cè)得到的結(jié)果。由兩圖對(duì)比可得,PC上檢測(cè)得到的輪廓比較纖細(xì),在邊緣出現(xiàn)斷裂,需要進(jìn)一步的圓擬合,并且PC檢測(cè)的噪聲較大,而FPGA檢測(cè)得到的輪廓明顯,且無(wú)斷裂部分。
由于PC和SOPC的圖像采集時(shí)間和顯示時(shí)間相差不大,因此對(duì)比PC系統(tǒng)和SOPC系統(tǒng)的處理速度快慢,主要是對(duì)比數(shù)字圖像處理模塊的處理時(shí)間。SOPC系統(tǒng)中圖像處理模塊在Modelsim中的仿真時(shí)間計(jì)算公式為:仿真時(shí)間=一個(gè)仿真周期時(shí)間*仿真周期數(shù)。仿真中設(shè)置了一個(gè)仿真周期時(shí)間為20ns,即系統(tǒng)頻率為50MHz。得到音膜圖片使用基于Sobel算子的圖像處理算法分別在VC++平臺(tái)上和FPGA平臺(tái)上的處理時(shí)間,如表1所示。可見(jiàn)在FPGA上實(shí)現(xiàn)圖像處理算法其處理速度比PC高出約22倍,可以實(shí)現(xiàn)高速在線實(shí)時(shí)檢測(cè)。
表1 PC和FPGA上音膜內(nèi)外圓邊緣檢測(cè)時(shí)間(單位:ms)
本文以30mm以下的黑色音膜為研究對(duì)象,利用SOPC技術(shù),設(shè)計(jì)了一種實(shí)時(shí)檢測(cè)系統(tǒng)。采用了FPGA并行處理和軟硬件協(xié)同設(shè)計(jì),使系統(tǒng)具有實(shí)時(shí)性、可重構(gòu)性強(qiáng)、體積小、低功耗低成本等優(yōu)點(diǎn)。實(shí)驗(yàn)結(jié)果表明,基于SOPC的音膜內(nèi)外圓邊緣檢測(cè)系統(tǒng)功耗低,運(yùn)行穩(wěn)定,檢測(cè)速度快,可實(shí)現(xiàn)音膜的在線實(shí)時(shí)檢測(cè),解決了流水生產(chǎn)線上產(chǎn)品無(wú)法進(jìn)行實(shí)時(shí)檢測(cè)的關(guān)鍵問(wèn)題。
[1]原魁,肖晗等.采用 FPGA 的機(jī)器視覺(jué)系統(tǒng)發(fā)展現(xiàn)狀與趨勢(shì)[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(36):1-5.
[2]黃云,楊尊先.基于 SOPC的數(shù)據(jù)采集與處理系統(tǒng)設(shè)計(jì)[J].電子器件,2010,33(1):68-70.
[3]李明,趙勛杰,毛偉民.Sobel邊緣檢測(cè)的 FPGA 實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,16:44-46.
[4]高展宏,王強(qiáng).多媒體處理FPGA實(shí)現(xiàn)—System Generator篇[M].北京:電子工業(yè)出版社,2010:71-72.
[5]Babu T Chacko, Siddharth Shelly. Real-Time Video Filtering and Overlay Character .Generation on FPGA. 2010 International Conference on Recent Trends in Information,Telecommunication and Computing,2010,26:184-188.
[6]XILINX. Xilinx System Generator Manual[S]. 2008.