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