肖姍姍,謝 云,龐海燕
(廣東工業(yè)大學(xué) 自動化學(xué)院,廣東 廣州 510006)
常見的藥片包裝可以分為瓶裝、袋裝和鋁塑泡包裝三種,由于藥征在實際生產(chǎn)過程中要經(jīng)過填藥、壓封、切割、區(qū)分等一系列復(fù)雜的流水線作業(yè),難免會產(chǎn)生藥片的漏裝、碎裝等現(xiàn)象。而傳統(tǒng)的檢驗方式依賴人工目測來進(jìn)行,這種工作方式勞動強(qiáng)度大且檢測效率低,不利于企業(yè)在市場中的競爭。因此,本文設(shè)計一種基于FPGA和圖像處理技術(shù)的檢測系統(tǒng)的前端處理系統(tǒng),以Xilinx公司的SOPC(System on Programmable Chip)技術(shù)為背景,利用Virtex4 FPGA為物理實現(xiàn)載體,采用軟硬件結(jié)合的方式設(shè)計了基于SOPC的圖像采集存儲系統(tǒng)[1-2]。該設(shè)計降低了整個藥片處理系統(tǒng)設(shè)計的復(fù)雜性,同時提高了系統(tǒng)的穩(wěn)定性,使藥片檢測的實時性得到極大地提高。
圖1所示為視頻圖像處理系統(tǒng)結(jié)構(gòu)框圖,主要分為:CCD控制采集模塊、DDR-SDRAM讀寫模塊、圖像處理模塊和VGA顯示模塊。系統(tǒng)的處理過程由I2C配置的視頻解碼芯片TVP5150對攝像頭輸出的模擬視頻信號進(jìn)行解碼,并傳輸給圖像采集模塊。采集模塊對視頻數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,進(jìn)行去交織處理,將隔行采集的數(shù)據(jù)逐行存儲到DDR-SDRAM顯存中,而VGA顯示部分則從DDR-SDRAM中讀取數(shù)據(jù)顯示。
圖1 系統(tǒng)基本結(jié)構(gòu)
(1)外部存儲擴(kuò)展
系統(tǒng)圖像數(shù)據(jù)為:720 bit×625 bit×30 bit=13 500 000 bit,由于要存儲的視頻數(shù)據(jù)量大,而Virtex4的片內(nèi)存儲容量有限且掉電即失,因此必須配置大容量的外部儲存器。本設(shè)計擴(kuò)展了 2 MB的 Flash和 16 M×32 bit的 DDRSDRAM,其中Flash在系統(tǒng)中用于存放程序代碼、常量表以及一些在系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)[3]。而SDRAM掉電數(shù)據(jù)即失,但其存取速度大大高于Flash且可讀寫[4]。因而在系統(tǒng)中用作程序的運行空間、臨時數(shù)據(jù)及堆棧區(qū)等。圖2所示為基于MicroBlaze處理器構(gòu)建的嵌入式系統(tǒng)。
圖2 基于MicroBlaze構(gòu)建的嵌入式系統(tǒng)
(2)視頻采集模塊
TVP5150是TI公司推出的一款超低功耗的高性能混合信號視頻解碼芯片,可自動識別NTSC/PAL/SECAM制式的模擬信號。并將其按照YCbCr4:2:2的格式轉(zhuǎn)化成數(shù)字信號。然后以8位內(nèi)嵌同步信號的ITU-RBT.656格式輸出。TVP5150具有價格低、體積小、操作簡便等特點。FPGA對TVP5150芯片的操作是通過I2C總線實現(xiàn)的,數(shù)據(jù)傳輸連接方式采用最簡單的ITU-RBT.656方式。
MicroBlaze處理器對TVP5150控制驅(qū)動程序可從驅(qū)動程序模版移植而來,可用于實現(xiàn)采集方式的配置,并將采集的視頻信號存儲到環(huán)形緩沖區(qū)[5]。外部模擬視頻信號經(jīng)TVP5150轉(zhuǎn)換為數(shù)字視頻信號后,即可進(jìn)入FPGA并通過視頻接口模塊直接排列到內(nèi)部環(huán)形緩沖區(qū)數(shù)據(jù)隊列的隊尾。當(dāng)MircoBlaze處理器接收到處理器可用中斷時,系統(tǒng)將檢測環(huán)形緩沖區(qū)是否為空。非空時,可將數(shù)據(jù)隊列的頭部數(shù)據(jù)取出送給處理模塊,同時啟動處理模塊對數(shù)據(jù)進(jìn)行處理。視頻信號經(jīng)過處理模塊后,即可進(jìn)入FPGA內(nèi)部二級FIFO緩存。當(dāng)FIFO先一級滿時,向MircoBlaze處理器發(fā)出數(shù)據(jù)輸出中斷請求。
MircoBlaze處理器響應(yīng)來自FIFO的中斷后,可將FIFO先一級數(shù)據(jù)取出并存儲在DDR-SDRAM中。然后清空FIFO先一級。MircoBlaze處理器的采集應(yīng)用程序包括以下幾部分:
(1)系統(tǒng)復(fù)位初始化
即禁止外部中斷。初始化各驅(qū)動程序,清空環(huán)形緩沖區(qū)和二級FIFO,檢測處理模塊,然后啟動對TVP5150的控制并進(jìn)行數(shù)據(jù)采集,最后啟用外部中斷。
(2)處理模塊可用中斷服務(wù)
處理模塊處理完一幀數(shù)據(jù)編碼即可向MircoBlaze處理器發(fā)出中斷。然后由MircoBlaze處理器控制處理模塊向環(huán)形緩沖區(qū)提取數(shù)據(jù),并在環(huán)形緩沖區(qū)耗盡時等待一定時間。
(3)數(shù)據(jù)可輸出中斷服務(wù)
當(dāng)二級FIFO先一級所準(zhǔn)備輸出的碼流滿時,可向MircoBlaze處理器發(fā)出中斷。然后在MircoBlaze處理器控制下,將數(shù)據(jù)存儲在DDR-SDRAM,最后再清空FIFO先一級。圖3所示為應(yīng)用程序流程圖。
圖3 應(yīng)用程序流程圖
DDR控制器模塊可直接與DDR-SDRAM進(jìn)行交互,因此在時序控制上要求更精確、更嚴(yán)格。在本設(shè)計中,使用Xilinx的DDR-SDRAM控制器的IP核來實現(xiàn)。
整個存儲系統(tǒng)控制邏輯可以分為4個模塊,分別是時鐘產(chǎn)生模塊、數(shù)據(jù)接口模塊、數(shù)據(jù)輸入輸出緩存模塊、DDR-SDRAM控制模塊。其中,數(shù)據(jù)接口模塊將來自外部的數(shù)據(jù)進(jìn)行緩沖重排、時鐘域的轉(zhuǎn)換,并且產(chǎn)生寫、讀數(shù)據(jù)所需要的指令地址信號;數(shù)據(jù)輸入輸出緩存模塊將來自數(shù)據(jù)接口模塊的同步數(shù)據(jù)、地址緩存在FIFO中,隨時供DDR-SDRAM控制器讀取,并將讀出的數(shù)據(jù)進(jìn)行緩沖;而DDR-SDRAM控制器利用了FPGA內(nèi)部的DLL模塊,給系統(tǒng)提供了2個時鐘CLK和CLK2X,改善了時鐘性能,減少時鐘抖動,以產(chǎn)生使DDR-SDRAM按預(yù)期方式工作所需要的控制信號。圖4所示為圖像幀存控制模塊的結(jié)構(gòu)圖。
圖4 圖像幀存控制模塊結(jié)構(gòu)圖
DDR-SDRAM控制器主要是在系統(tǒng)上電過程及系統(tǒng)意外復(fù)位發(fā)生時,對控制器進(jìn)行初始化設(shè)置[6]。在系統(tǒng)正常工作時,進(jìn)行系統(tǒng)讀、寫請求指令的接受與應(yīng)答,對系統(tǒng)訪問地址的采樣與同步完成所需的狀態(tài)轉(zhuǎn)換、時序同步等任務(wù),為接口模塊產(chǎn)生相應(yīng)的控制信號,并為系統(tǒng)提供控制器狀態(tài)指示信號,同時調(diào)整對應(yīng)讀寫操作的DQS信號時序。在設(shè)計中依據(jù)控制器的狀態(tài)轉(zhuǎn)移圖像,可使用Xilinx DDR-SDRAM控制器IP核來實現(xiàn)。
在IP核的生成中,F(xiàn)PGA芯片采用Virtex-4系列的XC4VSX25,DDR-SDRAM型號為 Infineon_DDR_HYB25D2 56800AT_T,連接在OPB總線上,該款內(nèi)存條支持最高工作頻率為100 MHz,數(shù)據(jù)位寬為32 bit。13位模式寄存器的設(shè)置如下∶0_0100_0011_0010,即 BL(BurstLength)=4,CL(CASLateney)=3,BT(BurstType)=1(順 序 方 式 ),twr(WriteReeove)=3。當(dāng)所有相關(guān)設(shè)置完畢之后,點擊“Generate”就能生成DDR-SDRAM接口的IP核。生成的存儲系統(tǒng)配置如圖5所示。
在Xilinx的EDK仿真軟件中,F(xiàn)PGA仿真器將DDR的BIT文件下載到FPGA內(nèi)運行,如圖6所示。
以藥片作為該系統(tǒng)的檢測對象,在MicroBlaze的控制下,攝像頭讀取圖片并存儲于DDR-SDRAM中,后經(jīng)圖像處理模塊處理,CCD攝像頭采集到的原始圖像與輪廓跟蹤后圖像對比如圖7、圖8所示。
本文設(shè)計了基于SOPC的圖像采集存儲系統(tǒng),該系統(tǒng)作為基于FPGA的藥片檢測系統(tǒng)的前期設(shè)計充分利用了FPGA內(nèi)部預(yù)先嵌入的軟核MicroBlaze,與一般使用“單片機(jī)+DSP”的多核圖像處理系統(tǒng)比較,減少了系統(tǒng)所需的器件、縮小了系統(tǒng)的板上面積。采用軟硬件協(xié)同設(shè)計的方法,明顯降低了系統(tǒng)設(shè)計的復(fù)雜性,同時提高了系統(tǒng)的穩(wěn)定性,使藥片檢測的實時性得到極大地提高。
[1]韋存剛,金星.基于FPGA的多路數(shù)據(jù)采集和控制模塊設(shè) 計[J].微 計 算 機(jī) 信 息,2008,6(2)∶231-232.
[2]李鶯.DDR SDRAM控制器的設(shè)計及 FPGA實現(xiàn)[J].攀枝花學(xué)院學(xué)報,2007,24(6):33-37.
[3]吳健軍,初建朋,賴宗聲.基于 FPGA的 DDR SDRAM控制器的實現(xiàn)[J].微計算機(jī)信息,2006,22(1):164-165.
[4]鄭佳,李永亮,李娜.基于FPGA的DDR控制器的實現(xiàn)[J].無線電工程,2007,37(10):27-29.
[5]薛林.高速 PCI數(shù)據(jù)采集卡的設(shè)計與實現(xiàn)[D].南京:南京理工大學(xué),2006.
[6]劉瑰,朱鴻宇.通用 DDR SDRAM控制器的設(shè)計[J].微型機(jī)與應(yīng)用,2004(8):23-24.