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