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