肖姍姍,謝 云,龐海燕
(廣東工業大學 自動化學院,廣東 廣州 510006)
常見的藥片包裝可以分為瓶裝、袋裝和鋁塑泡包裝三種,由于藥征在實際生產過程中要經過填藥、壓封、切割、區分等一系列復雜的流水線作業,難免會產生藥片的漏裝、碎裝等現象。而傳統的檢驗方式依賴人工目測來進行,這種工作方式勞動強度大且檢測效率低,不利于企業在市場中的競爭。因此,本文設計一種基于FPGA和圖像處理技術的檢測系統的前端處理系統,以Xilinx公司的SOPC(System on Programmable Chip)技術為背景,利用Virtex4 FPGA為物理實現載體,采用軟硬件結合的方式設計了基于SOPC的圖像采集存儲系統[1-2]。該設計降低了整個藥片處理系統設計的復雜性,同時提高了系統的穩定性,使藥片檢測的實時性得到極大地提高。
圖1所示為視頻圖像處理系統結構框圖,主要分為:CCD控制采集模塊、DDR-SDRAM讀寫模塊、圖像處理模塊和VGA顯示模塊。系統的處理過程由I2C配置的視頻解碼芯片TVP5150對攝像頭輸出的模擬視頻信號進行解碼,并傳輸給圖像采集模塊。采集模塊對視頻數據進行格式轉換,進行去交織處理,將隔行采集的數據逐行存儲到DDR-SDRAM顯存中,而VGA顯示部分則從DDR-SDRAM中讀取數據顯示。

圖1 系統基本結構
(1)外部存儲擴展
系統圖像數據為:720 bit×625 bit×30 bit=13 500 000 bit,由于要存儲的視頻數據量大,而Virtex4的片內存儲容量有限且掉電即失,因此必須配置大容量的外部儲存器。本設計擴展了 2 MB的 Flash和 16 M×32 bit的 DDRSDRAM,其中Flash在系統中用于存放程序代碼、常量表以及一些在系統掉電后需要保存的用戶數據[3]。而SDRAM掉電數據即失,但其存取速度大大高于Flash且可讀寫[4]。因而在系統中用作程序的運行空間、臨時數據及堆棧區等。圖2所示為基于MicroBlaze處理器構建的嵌入式系統。

圖2 基于MicroBlaze構建的嵌入式系統
(2)視頻采集模塊
TVP5150是TI公司推出的一款超低功耗的高性能混合信號視頻解碼芯片,可自動識別NTSC/PAL/SECAM制式的模擬信號。并將其按照YCbCr4:2:2的格式轉化成數字信號。然后以8位內嵌同步信號的ITU-RBT.656格式輸出。TVP5150具有價格低、體積小、操作簡便等特點。FPGA對TVP5150芯片的操作是通過I2C總線實現的,數據傳輸連接方式采用最簡單的ITU-RBT.656方式。
MicroBlaze處理器對TVP5150控制驅動程序可從驅動程序模版移植而來,可用于實現采集方式的配置,并將采集的視頻信號存儲到環形緩沖區[5]。外部模擬視頻信號經TVP5150轉換為數字視頻信號后,即可進入FPGA并通過視頻接口模塊直接排列到內部環形緩沖區數據隊列的隊尾。當MircoBlaze處理器接收到處理器可用中斷時,系統將檢測環形緩沖區是否為空。非空時,可將數據隊列的頭部數據取出送給處理模塊,同時啟動處理模塊對數據進行處理。視頻信號經過處理模塊后,即可進入FPGA內部二級FIFO緩存。當FIFO先一級滿時,向MircoBlaze處理器發出數據輸出中斷請求。
MircoBlaze處理器響應來自FIFO的中斷后,可將FIFO先一級數據取出并存儲在DDR-SDRAM中。然后清空FIFO先一級。MircoBlaze處理器的采集應用程序包括以下幾部分:
(1)系統復位初始化
即禁止外部中斷。初始化各驅動程序,清空環形緩沖區和二級FIFO,檢測處理模塊,然后啟動對TVP5150的控制并進行數據采集,最后啟用外部中斷。
(2)處理模塊可用中斷服務
處理模塊處理完一幀數據編碼即可向MircoBlaze處理器發出中斷。然后由MircoBlaze處理器控制處理模塊向環形緩沖區提取數據,并在環形緩沖區耗盡時等待一定時間。
(3)數據可輸出中斷服務
當二級FIFO先一級所準備輸出的碼流滿時,可向MircoBlaze處理器發出中斷。然后在MircoBlaze處理器控制下,將數據存儲在DDR-SDRAM,最后再清空FIFO先一級。圖3所示為應用程序流程圖。

圖3 應用程序流程圖
DDR控制器模塊可直接與DDR-SDRAM進行交互,因此在時序控制上要求更精確、更嚴格。在本設計中,使用Xilinx的DDR-SDRAM控制器的IP核來實現。
整個存儲系統控制邏輯可以分為4個模塊,分別是時鐘產生模塊、數據接口模塊、數據輸入輸出緩存模塊、DDR-SDRAM控制模塊。其中,數據接口模塊將來自外部的數據進行緩沖重排、時鐘域的轉換,并且產生寫、讀數據所需要的指令地址信號;數據輸入輸出緩存模塊將來自數據接口模塊的同步數據、地址緩存在FIFO中,隨時供DDR-SDRAM控制器讀取,并將讀出的數據進行緩沖;而DDR-SDRAM控制器利用了FPGA內部的DLL模塊,給系統提供了2個時鐘CLK和CLK2X,改善了時鐘性能,減少時鐘抖動,以產生使DDR-SDRAM按預期方式工作所需要的控制信號。圖4所示為圖像幀存控制模塊的結構圖。

圖4 圖像幀存控制模塊結構圖
DDR-SDRAM控制器主要是在系統上電過程及系統意外復位發生時,對控制器進行初始化設置[6]。在系統正常工作時,進行系統讀、寫請求指令的接受與應答,對系統訪問地址的采樣與同步完成所需的狀態轉換、時序同步等任務,為接口模塊產生相應的控制信號,并為系統提供控制器狀態指示信號,同時調整對應讀寫操作的DQS信號時序。在設計中依據控制器的狀態轉移圖像,可使用Xilinx DDR-SDRAM控制器IP核來實現。
在IP核的生成中,FPGA芯片采用Virtex-4系列的XC4VSX25,DDR-SDRAM型號為 Infineon_DDR_HYB25D2 56800AT_T,連接在OPB總線上,該款內存條支持最高工作頻率為100 MHz,數據位寬為32 bit。13位模式寄存器的設置如下∶0_0100_0011_0010,即 BL(BurstLength)=4,CL(CASLateney)=3,BT(BurstType)=1(順 序 方 式 ),twr(WriteReeove)=3。當所有相關設置完畢之后,點擊“Generate”就能生成DDR-SDRAM接口的IP核。生成的存儲系統配置如圖5所示。

在Xilinx的EDK仿真軟件中,FPGA仿真器將DDR的BIT文件下載到FPGA內運行,如圖6所示。

以藥片作為該系統的檢測對象,在MicroBlaze的控制下,攝像頭讀取圖片并存儲于DDR-SDRAM中,后經圖像處理模塊處理,CCD攝像頭采集到的原始圖像與輪廓跟蹤后圖像對比如圖7、圖8所示。

本文設計了基于SOPC的圖像采集存儲系統,該系統作為基于FPGA的藥片檢測系統的前期設計充分利用了FPGA內部預先嵌入的軟核MicroBlaze,與一般使用“單片機+DSP”的多核圖像處理系統比較,減少了系統所需的器件、縮小了系統的板上面積。采用軟硬件協同設計的方法,明顯降低了系統設計的復雜性,同時提高了系統的穩定性,使藥片檢測的實時性得到極大地提高。
[1]韋存剛,金星.基于FPGA的多路數據采集和控制模塊設 計[J].微 計 算 機 信 息,2008,6(2)∶231-232.
[2]李鶯.DDR SDRAM控制器的設計及 FPGA實現[J].攀枝花學院學報,2007,24(6):33-37.
[3]吳健軍,初建朋,賴宗聲.基于 FPGA的 DDR SDRAM控制器的實現[J].微計算機信息,2006,22(1):164-165.
[4]鄭佳,李永亮,李娜.基于FPGA的DDR控制器的實現[J].無線電工程,2007,37(10):27-29.
[5]薛林.高速 PCI數據采集卡的設計與實現[D].南京:南京理工大學,2006.
[6]劉瑰,朱鴻宇.通用 DDR SDRAM控制器的設計[J].微型機與應用,2004(8):23-24.