新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA+DSP的實(shí)時(shí)圖像處理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)

基于FPGA+DSP的實(shí)時(shí)圖像處理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2008-08-07 來源:網(wǎng)絡(luò) 收藏
藥品灌裝生產(chǎn)前必須對藥用玻璃瓶進(jìn)行檢測,把不合格品剔除,才能進(jìn)行藥品的封裝。由于我國藥用管制玻璃瓶大多數(shù)規(guī)格千差萬別,如瓶高、瓶底和瓶壁的厚度以及藥瓶的垂直度等參數(shù),其指標(biāo)都有較大差異,使用進(jìn)口設(shè)備效果又不太理想。所以,急需開發(fā)一套符合我國國情的藥用管制瓶檢測裝置空瓶的自動(dòng)化檢測系統(tǒng)。
該系統(tǒng)要求在線檢測速度達(dá)到25瓶/s,而且要求對管制瓶的瓶底、瓶口、瓶身、瓶體尺寸等多個(gè)項(xiàng)目指標(biāo)進(jìn)行檢測和處理。因此,對數(shù)據(jù)采集、存儲(chǔ)、傳輸速度和處理速度及精度提出了較高的要求。
常用的數(shù)據(jù)采集方案往往采用單片機(jī)或作為控制器,控制模/數(shù)轉(zhuǎn)換器(ADC)、存儲(chǔ)器和其他外圍電路的工作[1]。但由于單片機(jī)本身的指令周期以及處理速度的影響,難以達(dá)到多通道高速數(shù)據(jù)采集系統(tǒng)的要求。雖然可以較高速的數(shù)據(jù)采集,但是頻繁的中斷影響了的性能,同時(shí),也增加了系統(tǒng)的成本;另外,系統(tǒng)中,底層的信號數(shù)據(jù)量大,對處理速度的要求高,但運(yùn)算結(jié)構(gòu)相對比較簡單,很適合采用現(xiàn)場可編程門陣列()以硬件方式來;高層處理算法的特點(diǎn)是處理的數(shù)據(jù)量相對較少,但算法、計(jì)算公式和控制結(jié)構(gòu)要復(fù)雜得多,而DSP能夠滿足要求。
因此,本文采用+DSP結(jié)構(gòu)的多通道高速數(shù)據(jù)采集與系統(tǒng)的與實(shí)現(xiàn)方案。
1 系統(tǒng)硬件結(jié)構(gòu)方案
本文的多通道同步高速采集及處理系統(tǒng)結(jié)構(gòu)如圖1所示。該系統(tǒng)由采集、處理、顯示和系統(tǒng)控制四個(gè)模塊組成。采集的多路模擬視頻信號經(jīng)A/D陣列轉(zhuǎn)換后,輸入到處理模塊中進(jìn)行,處理結(jié)果經(jīng)D/A轉(zhuǎn)換后,顯示在終端監(jiān)視設(shè)備上。整個(gè)過程(包括采集模塊、處理模塊、顯示模塊)都在系統(tǒng)控制模塊協(xié)調(diào)下進(jìn)行。


2 采集模塊
通常的多路數(shù)據(jù)采集方案[2]是:(1)采用多片ADC器件,每路模擬輸入對應(yīng)1片ADC。(2)采用1片高速ADC器件,由多路開關(guān)選擇后送給ADC。一般采用CPLD或控制各ADC或多路開關(guān)的方式達(dá)到高速采集的目的。但是,采用以上的方案均存在一些問題:相應(yīng)外圍電路龐大,接口復(fù)雜;一般都外掛數(shù)據(jù)緩沖區(qū),降低了系統(tǒng)的傳輸速度,同時(shí)對于高精度、多通道、并行轉(zhuǎn)換A/D系統(tǒng),使接入FPGA的管腳數(shù)增多,這樣造成FPGA等系統(tǒng)資源的嚴(yán)重浪費(fèi)和成本的增加。
本系統(tǒng)采用了一種共享總線、同步采集、分時(shí)讀取的方法[3],提高了系統(tǒng)采集和傳輸速度,達(dá)到對多通道、高分辨率并行A/D同步采集的有效控制,合理利用了FPGA系統(tǒng)資源,降低了硬件成本??偩€共享、同步采集、分時(shí)讀取的方法主要是借鑒了分時(shí)操作系統(tǒng)的思想,按照時(shí)間片對A/D轉(zhuǎn)換結(jié)果進(jìn)行輪循讀取。從圖1可知,在硬件設(shè)計(jì)上,多路A/D轉(zhuǎn)換器共享采樣時(shí)鐘信號CLK、讀寫控制信號AD_wr、片選信號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共享輸出使能信號ADC_OE0,A/D2、A/D3共享輸出使能信號ADC_OE1,A/D4、A/D5共享輸出使能信號ADC_
OE2。多路A/D轉(zhuǎn)換器共享采樣時(shí)鐘信號ADC_clk、片選信號ADC_CS,保證了采樣的同步問題;共享數(shù)據(jù)總線節(jié)約了FPGA管腳,合理利用了FPGA資源,通過分別使能ADC_OE信號,在A/D轉(zhuǎn)換完成后數(shù)據(jù)有效的時(shí)間內(nèi),分時(shí)讀取轉(zhuǎn)換結(jié)果,達(dá)到了并行采集的目的;不同數(shù)據(jù)總線的二路A/D轉(zhuǎn)換器共享使能信號,保證在同一時(shí)間片內(nèi)并行讀取二路A/D轉(zhuǎn)換結(jié)果。
ADC的選擇如下:
該系統(tǒng)要求在線檢測速度達(dá)到25瓶/s,也就是每個(gè)瓶的檢測時(shí)間為40ms。另外,對藥用管制瓶的檢測其精確度是考慮的重要因素。這對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保持信號,用來保證幾個(gè)通道能同時(shí)進(jìn)行采樣和轉(zhuǎn)換,可以對單極性或雙極性輸入電壓進(jìn)行A/D轉(zhuǎn)換;三個(gè)保持信號(HOLDA、HOLDB、HOLDC)可以啟動(dòng)指定通道的轉(zhuǎn)換。當(dāng)三個(gè)保持信號同時(shí)被選通時(shí),其轉(zhuǎn)換結(jié)果將保存在六個(gè)寄存器中;當(dāng)ADS8364芯片采用5MHz的外部時(shí)鐘來控制轉(zhuǎn)換時(shí),它的取樣率是250kHz,采樣和轉(zhuǎn)換可以在20個(gè)時(shí)鐘周期內(nèi)完成;對于每一個(gè)讀操作,ADS8364芯片均輸出十六位數(shù)據(jù);地址/模式信號(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之間變化。在信號輸入端采用差動(dòng)運(yùn)放將模擬輸入信號以差分方式輸入ADS8364芯片,以有效地減少共模噪聲,實(shí)現(xiàn)較高的有效采集精度。通過同時(shí)置/RD和/CS為低電平可使數(shù)據(jù)讀出到并行輸出總線。
  ADS8364芯片轉(zhuǎn)換過程為:當(dāng)ADS8364芯片的/HOLDX保持至少20ns的低電平時(shí),轉(zhuǎn)換開始。當(dāng)轉(zhuǎn)換結(jié)果被存入輸出寄存器后,引腳/EOC的輸出將保持半個(gè)時(shí)鐘周期的低電平,以提示數(shù)據(jù)分析處理器進(jìn)行轉(zhuǎn)換結(jié)果的接收,處理器通過置/RD和/CS為低電平可使數(shù)據(jù)通過并行輸出總線讀出。在轉(zhuǎn)換數(shù)據(jù)的接收過程中,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é)合。LUT的邏輯對數(shù)據(jù)路徑管理、寄存器強(qiáng)度、數(shù)學(xué)計(jì)算或數(shù)字信號處理的設(shè)計(jì)提供優(yōu)化的性能和效率。而EBA可實(shí)現(xiàn)RAM、ROM、雙口RAM或FIFO(先入先出存儲(chǔ)器)功能。
3.1 A/D控制
[3]
通過上面對A/D控制的分析可以知道,在采樣時(shí)鐘CLK為高電平的半個(gè)時(shí)鐘周期內(nèi),讀取轉(zhuǎn)換結(jié)果是可靠和穩(wěn)定的。由于片選、地址建立時(shí)間以及輸出激活時(shí)間的要求,在5MHz時(shí)鐘信號的半個(gè)周期內(nèi),以共享總線方式可以控制三路A/D轉(zhuǎn)換器。因此,通過兩路總線,就可以完成對六路并行數(shù)據(jù)的采集。圖2為三路A/D轉(zhuǎn)換器共享數(shù)據(jù)總線的控制時(shí)序圖,采用QuartusⅡ仿真工具完成。其中,ADC_OE1、ADC_OE2、ADC_OE3為三路A/D輸出使能信號,通過分時(shí)有效的方法,讀取各路A/D轉(zhuǎn)換結(jié)果,每個(gè)時(shí)間片長度為30ns;ADC_clk為A/D采樣時(shí)鐘;In_clk為外接時(shí)鐘,經(jīng)過PLL輸出Main_clk作為系統(tǒng)的主時(shí)鐘,時(shí)鐘周期為10ns;ADC_cs為A/D片選信號,該信號建立需要一定時(shí)間,為實(shí)現(xiàn)多路A/D并行采樣,將六路A/D片選信號連接在一起,一直有效;Reset為FPGA復(fù)位信號。


來自CCD傳感器的圖像信號經(jīng)過ADS8364芯片進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換結(jié)果連同分離出的行同步信號、場同步信號、奇偶場信號進(jìn)入FPGA。紅外光電感應(yīng)信號也送入FPGA,與同步信號一起作為系統(tǒng)采集與邏輯控制的依據(jù)。
3.2 數(shù)據(jù)存儲(chǔ)和傳輸控制
藥用管制瓶檢測系統(tǒng)對精度和速度有較高的要求,為了使系統(tǒng)做到高速數(shù)據(jù)采集和實(shí)時(shí)數(shù)據(jù)處理,即采集與處理并行運(yùn)行,需要在A/D和DSP之間加入緩存設(shè)備。一般采用雙端口存儲(chǔ)器或者雙尋址存儲(chǔ)器作為緩沖設(shè)備[4]。利用雙端口RAM雖然硬件設(shè)計(jì)很方便,但價(jià)格較高。而雙尋址方法對硬件設(shè)計(jì)要求較高。因此,本系統(tǒng)采用在FPGA內(nèi)部設(shè)計(jì)嵌入式緩沖存儲(chǔ)器的方案??紤]到FIFO具有更快的讀寫速度,同時(shí)由于采樣寫FIFO速度與DSP讀FIFO速度不一致,所以選擇異步FIFO作為緩存儲(chǔ)器。
異步FIFO存儲(chǔ)器具有以下特點(diǎn):有兩個(gè)端口分別用于讀寫訪問,讀寫速率可以不同,讀寫操作可同時(shí)進(jìn)行而且不必同步; 數(shù)據(jù)的寫入與讀出遵循先進(jìn)先出的原則,讀寫的次序是確定的,讀寫地址完全由FIFO內(nèi)的地址指針確定,無需提供外部地址。而DSP的EMIF提供了對FIFO的無縫接口能力,從而使得DMA方式的數(shù)據(jù)傳輸支持電路的實(shí)現(xiàn)變得較簡單。
本系統(tǒng)在FPGA內(nèi)部設(shè)計(jì)兩個(gè)嵌入式緩沖存儲(chǔ)器采集FIFO和顯示FIFO,充分利用了EMIF的數(shù)據(jù)傳輸帶寬,分別緩沖存儲(chǔ)采集和顯示的圖像數(shù)據(jù)流。大部分視覺處理系統(tǒng)的采集卡均采用擴(kuò)充的大容量FIFO,或者外擴(kuò)大量SRAM和擴(kuò)充SDRAM作為采集幀存的方案,但降低了系統(tǒng)的傳輸速度,同時(shí)增加了硬件成本。單個(gè)的采集FIFO和顯示FIFO的設(shè)計(jì)方案體現(xiàn)了本系統(tǒng)的優(yōu)點(diǎn)。通過測試證明,系統(tǒng)單個(gè)的采集行FIFO和顯示行FIFO較好地實(shí)現(xiàn)了連續(xù)、實(shí)時(shí)圖像的采集和顯示。
本系統(tǒng)中數(shù)據(jù)的基本流向:多路模擬圖像信號輸入到A/D陣列,F(xiàn)PGA控制A/D陣列中的ADC將其轉(zhuǎn)換為符合ITU-RBT601標(biāo)準(zhǔn)的16bit數(shù)字圖像流后,經(jīng)過FPGA硬件實(shí)現(xiàn)平滑、去噪等預(yù)處理,進(jìn)入FPGA內(nèi)的采集行FIFO進(jìn)行數(shù)據(jù)緩沖,然后FIFO的HF等信號作為啟動(dòng)DSP中DMA中斷的標(biāo)志信號,請求DSP取走數(shù)據(jù),并生成中斷信號請求DSP取走數(shù)據(jù),然后數(shù)據(jù)通過EMIF接口寫入幀存儲(chǔ)器(SDRAM)中,由DSP對其進(jìn)行相應(yīng)處理,處理完的數(shù)據(jù)仍放到SDRAM中。另一方面,由FPGA中主控制模塊產(chǎn)生顯示邏輯生成行中斷信號,DSP響應(yīng)中斷后,由DMA控制器把數(shù)據(jù)以32bit的寬度寫入顯示行FIFO,在顯示同步時(shí)序的控制下,顯示行FIFO輸出到顯示接口,轉(zhuǎn)換為符合ITU -RBT 標(biāo)準(zhǔn)的8bit數(shù)字圖像信號,最后送解碼器解碼和顯示。
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ù)傳輸瓶頸對系統(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)圖像采集功能,而且還有圖像顯示功能,因此,對數(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通道可以在沒有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ù)寄存器的值,開始接收來自于采集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)過實(shí)踐驗(yàn)證,本系統(tǒng)基本滿足藥用管制瓶檢測系統(tǒng)的精度和速度要求,達(dá)到了良好的效果。在應(yīng)用過程中發(fā)現(xiàn)該系統(tǒng)需要進(jìn)一步研究的工作是:DSP編程需要考慮系統(tǒng)軟、硬件資源,應(yīng)具有實(shí)時(shí)操作系統(tǒng)的部分功能。因此,算法編程要有很大的技巧,以進(jìn)一步提高系統(tǒng)性能。
另外,硬件設(shè)計(jì)方面存在以下幾個(gè)問題及解決方法:(1)A/D采樣電路參考時(shí)鐘所引入的孔徑抖動(dòng)對系統(tǒng)產(chǎn)生影響,所以考慮選用孔徑抖動(dòng)更小的ECL或PECL門電路來減少孔徑抖動(dòng)的問題。(2)由于FPGA的互連是分布式的,其硬件傳輸延遲與系統(tǒng)布局有關(guān),會(huì)產(chǎn)生一定的毛刺,直接導(dǎo)致產(chǎn)生許多有害的尖峰脈沖。所以,有害尖脈沖的慮除很重要,簡單的方法就是加D鎖存器。(3)噪聲惡化了圖像質(zhì)量,使原本均勻、連續(xù)變化的灰度突然變大或變小,形成一些虛假的物體邊緣或者輪廓,造成圖像模糊、淹沒特征,給圖像的分析造成困難。可以考慮通過圖像預(yù)處理來完成,只要圖像噪聲不是太嚴(yán)重,完全可以通過平滑、去噪的手段達(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].測控技術(shù),2005,24(12).
[3] 張東升,張東來.基于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.



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉