基於FPGA+DSP的即時影像處理平台的設計與實現
| [日期:2008-8-7] |
來源:電子技術應用 作者:魯昌華,石洪源,梁銀海,殷 俊 |
[字型:大 中 小] |
藥品灌裝生產前必須對藥用玻璃瓶進行檢測,把不合格品剔除,才能進行藥品的封裝。由於我國藥用管制玻璃瓶大多數規格千差萬別,如瓶高、瓶底和瓶壁的厚度以及藥瓶的垂直度等參數,其指標都有較大差異,使用進口裝置效果又不太理想。所以,急需開發一套符合我國國情的藥用管制瓶檢測裝置實現空瓶的自動化檢測系統。
該系統要求線上檢測速度達到25瓶/s,而且要求對管制瓶的瓶底、瓶口、瓶身、瓶體尺寸等多重專案指標進行檢測和即時處理。因此,對資料擷取、儲存、傳輸速度和處理速度及精度提出了較高的要求。
常用的資料擷取方案往往採用單片機或DSP作為控制器,控制模/數轉換器(ADC)、儲存空間和其他外圍電路的工作[1]。但由於單片機本身的指令周期以及處理速度的影響,難以達到多通道高速資料擷取系統的要求。雖然DSP可以實現較高速的資料擷取,但是頻繁的中斷影響了DSP的效能,同時,也增加了系統的成本;另外,即時影像處理系統中,底層的訊號資料量大,對處理速度的要求高,但運算結構相對比較簡單,很適合採用現場可程式化門陣列(FPGA)以硬體方式來實現;高層處理演算法的特點是處理的資料量相對較少,但演算法、計算公式和控制結構要複雜得多,而DSP能夠滿足要求。
因此,本文採用FPGA+DSP結構的多通道高速資料擷取與即時影像處理系統的設計與實現方案。
1 系統硬體結構設計方案
本文設計的多通道同步高速採集及處理系統結構1所示。該系統由採集、處理、顯示和系統控制四個模組組成。採集的多路類比視頻訊號經A/D陣列轉換後,輸入到處理模組中進行影像處理,處理結果經D/A轉換後,顯示在終端監視裝置上。整個過程(包括採集模組、處理模組、顯示模組)都在系統控制模組協調下進行。
2 採集模組
通常的多路資料擷取方案[2]是:(1)採用多片ADC器件,每路類比輸入對應1片ADC。(2)採用1片高速ADC器件,由多路開關選擇後送給ADC。一般採用CPLD或FPGA控制各ADC或多路開關的方式達到高速採集的目的。但是,採用以上的方案均存在一些問題:相應外圍電路龐大,介面複雜;一般都外掛資料緩衝區,降低了系統的傳輸速度,同時對於高精度、多通道、並行轉換A/D系統,使接入FPGA的管腳數增多,這樣造成FPGA等系統資源的嚴重浪費和成本的增加。
本系統採用了一種共用匯流排、同步採集、分時讀取的方法[3],提高了系統採集和傳輸速度,達到對多通道、高解析度並行A/D同步採集的有效控制,合理利用了FPGA系統資源,降低了硬體成本。匯流排共用、同步採集、分時讀取的方法主要是借鑒了分時作業系統的思想,按照時間片對A/D轉換結果進行輪循讀取。從圖1可知,在硬體設計上,多路A/D轉換器共用採樣時鐘訊號CLK、讀寫控制訊號AD_wr、片選訊號ADC_cs;A/D1、A/D3、A/D5共用一路資料匯流排ADCB14~27,A/D0、A/D2、A/D4共用另一路資料匯流排ADCB0~13;A/D0、A/D1共用輸出使能訊號ADC_OE0,A/D2、A/D3共用輸出使能訊號ADC_OE1,A/D4、A/D5共用輸出使能訊號ADC_
OE2。多路A/D轉換器共用採樣時鐘訊號ADC_clk、片選訊號ADC_CS,保證了採樣的同步問題;共用資料匯流排節約了FPGA管腳,合理利用了FPGA資源,通過分別使能ADC_OE訊號,在A/D轉換完成後資料有效時間內,分時讀取轉換結果,達到了並行採集的目的;不同資料匯流排的二路A/D轉換器共用使能訊號,保證在同一時間片內並行讀取二路A/D轉換結果。
ADC的選擇如下:
該系統要求線上檢測速度達到25瓶/s,也就是每個瓶的檢測時間為40ms。另外,對藥用管制瓶的檢測其精確度是考慮的重要因素。這對ADC的轉換精度和轉換時間要求較高。
本文A/D轉換晶片採用TI公司的ADS8364晶片,它是專為高速同步資料擷取系統設計的高速、低功耗、六通道同步採樣的16位A/D轉換晶片,共有64個引腳,適用於雜訊比較大的環境,其最大採樣率為250KS/s;每個輸入端都有一個ADC保持訊號,用來保證幾個通道能同時進行採樣和轉換,可以對單極性或雙極性輸入電壓進行A/D轉換;三個保持訊號(HOLDA、HOLDB、HOLDC)可以啟動指定通道的轉換。當三個保持訊號同時被選通時,其轉換結果將儲存在六個寄存器中;當ADS8364晶片採用5MHz的外部時鐘來控制轉換時,它的取樣率是250kHz,採樣和轉換可以在20個刻度內完成;對於每一個讀操作,ADS8364晶片均輸出十六位元據;地址/模式訊號(A0、A1、A2)決定如何從ADS8364晶片中讀取資料,可以選擇單通道、周期或FIFO模式;在ADS8364晶片的HOLDX保持至少20ns的低電平時,轉換開始。這個低電平可使各個通道的採樣保持放大器同時處於保持狀態從而使每個通道同時開始轉換。當轉換結果被存人輸出寄存器後,引腳EOC的輸出將保持半個刻度的低電平;ADS8364晶片採用+5V工作電壓,並帶有80dB共模抑制的全差分輸入通道以及六個4Ls連續逼近的模數轉換器、六個差分採樣放大器。另外,在REFIN和REFOUT引腳內部還帶有+2.5V參考電壓以及高速並行介面。ADS8364晶片的差分輸入可在-VREF~+VREF之間變化。在訊號輸入端採用差動運放將類比輸入訊號以差分方式輸入ADS8364晶片,以有效地減少共模雜訊,實現較高的有效採集精度。通過同時置/RD和/CS為低電平可使資料讀出到並行輸出匯流排。
ADS8364晶片轉換過程為:當ADS8364晶片的/HOLDX保持至少20ns的低電平時,轉換開始。當轉換結果被存入輸出寄存器後,引腳/EOC的輸出將保持半個刻度的低電平,以提示資料分析處理器進行轉換結果的接收,處理器通過置/RD和/CS為低電平可使資料通過並行輸出匯流排讀出。在轉換資料的接收過程中,ADS8364晶片各管腳工作的時序安排很重要。
3 FPGA邏輯控制功能的實現
FPGA是整個採集、處理和顯示系統的邏輯控制核心,主要包括A/D陣列採集控制、資料存放區與傳輸控制、映像的預先處理、同步時序產生與控制、映像顯示控制、EMIF匯流排介面邏輯。
根據以上控制要求,系統中採用Altera公司的ACEX1K系列EP1K50晶片。EP1K50晶片是一款適合複雜邏輯以及有儲存、緩衝功能的FPGA晶片,最高工作頻率可達250MHz。該系列晶片具有效率高而又廉價的結構,其特點是將LUT(尋找表)和EAB(嵌入式陣列)相結合。基於LUT的邏輯對資料路徑管理、寄存器強度、數學計算或數字訊號處理的設計提供最佳化的效能和效率。而EBA可實現RAM、ROM、雙口RAM或FIFO(先入先出儲存空間)功能。
3.1 A/D控制[3]
通過上面對A/D控制的分析可以知道,在採樣時鐘CLK為高電平的半個刻度內,讀取轉換結果是可靠和穩定的。由於片選、地址建立時間以及輸出啟用時間的要求,在5MHz時鐘訊號的半個周期內,以共用匯流排方式可以控制三路A/D轉換器。因此,通過兩路匯流排,就可以完成對六路並行資料的採集。圖2為三路A/D轉換器共用資料匯流排的控制時序圖,採用QuartusⅡ模擬工具完成。其中,ADC_OE1、ADC_OE2、ADC_OE3為三路A/D輸出使能訊號,通過分時有效方法,讀取各路A/D轉換結果,每個時間片長度為30ns;ADC_clk為A/D採樣時鐘;In_clk為外接時鐘,經過PLL輸出Main_clk作為系統的主時鐘,刻度為10ns;ADC_cs為A/D片選訊號,該訊號建立需要一定時間,為實現多路A/D並行採樣,將六路A/D片選訊號串連在一起,一直有效;Reset為FPGA複位訊號。
來自CCD感應器的映像訊號經過ADS8364晶片進行轉換,轉換結果連同分離出的行同步訊號、場同步訊號、奇偶場訊號進入FPGA。紅外光電感應訊號也送入FPGA,與同步訊號一起作為系統採集與邏輯控制的依據。
3.2 資料存放區和傳輸控制
藥用管制瓶檢測系統對精度和速度有較高的要求,為了使系統做到高速資料擷取和即時資料處理,即採集與處理並行運行,需要在A/D和DSP之間加入緩衝裝置。一般採用雙連接埠儲存空間或者雙定址儲存空間作為緩衝裝置[4]。利用雙連接埠RAM雖然硬體設計很方便,但價格較高。而雙定址方法對硬體設計要求較高。因此,本系統採用在FPGA內部設計嵌入式緩衝儲存空間的方案。考慮到FIFO具有更快的讀寫速度,同時由於採樣寫FIFO速度與DSP讀FIFO速度不一致,所以選擇非同步FIFO作為緩衝儲器。
非同步FIFO儲存空間具有以下特點:有兩個連接埠分別用於讀寫訪問,讀寫速率可以不同,讀寫操作可同時進行而且不必同步; 資料的寫入與讀出遵循先進先出的原則,讀寫的次序是確定的,讀寫地址完全由FIFO內的地址指標確定,無需提供外部地址。而DSP的EMIF提供了對FIFO的無縫介面能力,從而使得DMA方式的資料轉送支援電路的實現變得較簡單。
本系統在FPGA內部設計兩個嵌入式緩衝儲存空間採集FIFO和顯示FIFO,充分利用了EMIF的資料傳輸頻寬,分別緩衝儲存採集和顯示的映像資料流。大部分視覺處理系統的採集卡均採用擴充的大容量FIFO,或者外擴大量SRAM和擴充SDRAM作為採集幀存的方案,但降低了系統的傳輸速度,同時增加了硬體成本。單個的採集FIFO和顯示FIFO的設計方案體現了本系統的優點。通過測試證明,系統單個的採集行FIFO和顯示行FIFO較好地實現了連續、即時映像的採集和顯示。
本系統中資料的基本流向:多路類比映像訊號輸入到A/D陣列,FPGA控制A/D陣列中的ADC將其轉換為符合ITU-RBT601標準的16bit數位影像流後,經過FPGA硬體實現平滑、去噪等預先處理,進入FPGA內的採集行FIFO進行資料緩衝,然後FIFO的HF等訊號作為啟動DSP中DMA中斷的標誌訊號,請求DSP取走資料,並產生中斷訊號請求DSP取走資料,然後資料通過EMIF介面寫入幀儲存空間(SDRAM)中,由DSP對其進行相應處理,處理完的資料仍放到SDRAM中。另一方面,由FPGA中主控制模組產生顯示邏輯產生行中斷訊號,DSP響應中斷後,由DMA控制器把資料以32bit的寬度寫入顯示行FIFO,在顯示同步時序的控制下,顯示行FIFO輸出到顯示介面,轉換為符合ITU -RBT 標準的8bit數位影像訊號,最後送解碼器解碼和顯示。
4 基於DSP的影像處理模組
基於DSP的影像處理模組是即時影像處理系統的核心。模組主要包括DSP器件、SDRAM映像幀儲存空間、Flash程式儲存空間等。另外,還要有必要的電源控制、JTAG連接埠、複位控制、時鐘系統等。
系統選用的DSP晶片TMS3206201具有高速處理效能及豐富的片內資源,因此在即時影像處理中得到了廣泛的應用。TMS3206201是基於TMS320C6X系列的高速定點數文書處理晶片,主頻為200MHz,峰值效能可以達到2 400MOPS。TMS3206201晶片的結構決定其適合即時影像處理的特點,主要特點[4]有:(1)CPU核由32位通用寄存器及八個功能單元組成,資料在多處理單元之間的傳輸依靠32個32位通用寄存器。(2)修正的哈佛匯流排結構。TMS3206201晶片具有一套256位程式匯流排,兩套32位元據匯流排和一套32位DMA專用匯流排。靈活的匯流排結構緩解了資料轉送瓶頸對系統效能的限制。(3)專用的定址單元。地址的產生不再額外佔用CPU的時間。(4)內部整合有64KB的程式儲存空間和64KB資料存放區器。如果將映像放入記憶體,可以提高CPU讀取資料和處理資料的速度。
本系統不僅實現映像採集功能,而且還有映像顯示功能,因此,對資料的處理和傳輸速度都有較高的要求。DSP的DMA傳輸可以間歇地進行,從而能夠讓DSP有時間執行資料處理等其他任務,從而提高系統效能。DSP晶片C6201DMA控制器具有四個相互獨立的可程式化的傳輸通道,允許進行四個不同內容的DMA操作;一個輔助DMA通道負責與主機通訊,每個DMA通道可以在沒有CPU參與下完成映射空間的資料轉送,資料的傳輸可以在片記憶體儲器、片內外設或外部器件之間進行。
為了保證映像的連續採集和連續顯示,在DSP外擴充的SDRAM中設定了三個幀儲存區;利用DMA通道在採集行FIFO與SDRAM之間和顯示行FIFO與SDRAM之間進行DMA傳輸。圖3為幀儲存調度與DMA事件連結機制原理。在採集行FIFO與SDRAM之間,源地址固定不變,目標地址索引加1,利用通道DMA0執行DMA傳輸,在一幀映像資料存滿以後,利用DMA的事件連結機制,使通道DMA0重載事件B1的連結參數寄存器的值,開始接收來自於採集FIFO新的一幀映像資料,且將資料存入SDRAM的幀2中;在存滿以後,又重載事件C1的連結參數寄存器的值,接收第三幀映像資料到幀3中,最後再次重載事件A1的連結參數寄存器的值。如此迴圈,從而實現連續映像資料的採集。同理,在顯示FIFO與SDRAM之間,源地址索引加1,目標地址不變,利用通道DMA1執行DMA傳輸,從SDRAM的幀1、幀2和幀3中,在中斷事件的觸發下每次讀取一行資料,寫入FPGA內的顯示行FIFO中。利用DMA的事件連結機制,在一幀傳輸完以後,通道DMA1的連結參數寄存器自動重載事件A2、事件B2、事件C2中的連結參數,實現顯示的資料連續傳輸,從而能夠連續顯示。
經過實踐驗證,本系統基本滿足藥用管制瓶檢測系統的精度和速度要求,達到了良好的效果。在應用過程中發現該系統需要進一步研究的工作是:DSP編程需要考慮系統軟、硬體資源,應具有即時作業系統的部分功能。因此,演算法編程要有很大的技巧,以進一步提高系統效能。
另外,硬體設計方面存在以下幾個問題及解決方案:(1)A/D採樣電路參考時鐘所引入的孔徑抖動對系統產生影響,所以考慮選用孔徑抖動更小的ECL或PECL門電路來減少孔徑抖動的問題。(2)由於FPGA的互連是分布式的,其硬體傳輸延遲與系統布局有關,會產生一定的毛刺,直接導致產生許多有害的尖峰脈衝。所以,有害尖脈衝的慮除很重要,簡單的方法就是加D鎖存器。(3)雜訊惡化了映像品質,使原本均勻、連續變化的灰階突然變大或變小,形成一些虛假的物體邊緣或者輪廓,造成映像模糊、淹沒特徵,給映像的分析造成困難。可以考慮通過映像預先處理來完成,只要映像雜訊不是太嚴重,完全可以通過平滑、去噪的手段達到改善映像品質的目的。
參考文獻
[1] 沈蘭蓀.高速資料擷取系統的原理與應用[M].北京:人民郵電出版社,1995.
[2] 張貴清,朱磊.基於FPGA的多路同步即時資料採集方案設計與實現[J].測控技術,2005,24(12).
[3] 張東升,張東來.基於FPGA的高速採集系統設計與實現[J].電子技術應用,2006,32(5).
[4] 李方慧,王飛.TMS320C6000系列DSPs原理與應用[M].北京:電子工業出版社,2003.
[5] Texas Instruments.TMS320C6000 Imaging Developer′s Kit(IDK) User′s Guide[R/OL].2004.