并行外圍接口在紅外視頻處理通用模塊中的應(yīng)用研究
紅外視頻處理系統(tǒng)是典型的實(shí)時(shí)信號(hào)處理系統(tǒng),具有數(shù)據(jù)吞吐量大和運(yùn)算密集度高的特點(diǎn),一般由通用DSP實(shí)現(xiàn)復(fù)雜的視頻處理算法。目前高端通用DSP的主頻已達(dá)到600 MHz以上,內(nèi)部集成多個(gè)運(yùn)算單元,運(yùn)算能力可以滿足大多視頻處理算法的要求。但是一般的通用DSP只有一條數(shù)據(jù)總線,數(shù)據(jù)吞吐能力低,必須在DSP外部進(jìn)行數(shù)據(jù)輸入緩沖和輸出緩沖,需要DSP內(nèi)核參與整個(gè)數(shù)據(jù)吞吐過程,這就大大削弱了DSP的運(yùn)算能力,同時(shí)增加了系統(tǒng)構(gòu)架的復(fù)雜度,因此,數(shù)據(jù)吞吐成為基于通用DSP的紅外視頻處理系統(tǒng)的最大瓶頸。
Blackfin系列DSP專門針對(duì)高速數(shù)據(jù)吞吐集成了并行外圍接口(PPI),在傳統(tǒng)的數(shù)據(jù)總線的基礎(chǔ)上增加了一條數(shù)據(jù)吞吐通道。PPI接口:1)能以最高66 MHz 的頻率接收數(shù)據(jù),以最高60 MHz 的頻率輸出數(shù)據(jù);2)不再需要額外的數(shù)據(jù)輸入/輸出緩沖,直接連接高速AD/DA輸入輸出數(shù)據(jù);3)能夠輸入或輸出ITU-R601/656 格式和帶行場(chǎng)同步時(shí)鐘的RGB格式的數(shù)字視頻。使用PPI接口輸入輸出數(shù)據(jù),輔以強(qiáng)大的DMA流量控制和高速SDRAM,使BlackfinDSP的內(nèi)核獨(dú)立于數(shù)據(jù)吞吐過程,充分發(fā)揮其密集運(yùn)算能力,并簡化了系統(tǒng)構(gòu)架,在紅外視頻處理通用模塊中取得了良好的應(yīng)用。
紅外視頻處理通用模塊數(shù)據(jù)吞吐分析
一個(gè)通用的紅外視頻處理流程如圖1所示,利用高速AD采集探測(cè)器輸出的模擬信號(hào),形成原始視頻數(shù)據(jù)流,再經(jīng)過視頻處理單元的實(shí)時(shí)視頻處理,以特定的視頻格式高速輸出。
紅外視頻處理過程是一個(gè)高速數(shù)據(jù)吞吐和密集運(yùn)算的并發(fā)過程。當(dāng)視頻處理算法復(fù)雜時(shí),視頻處理單元多由高性能通用DSP構(gòu)成。DSP接收AD輸出的原始視頻數(shù)據(jù)是數(shù)據(jù)寫入的過程,DSP輸出處理后視頻是數(shù)據(jù)讀出的過程,DSP進(jìn)行視頻處理運(yùn)算至少需要一次數(shù)據(jù)讀出和一次數(shù)據(jù)寫入,因此數(shù)據(jù)寫入、數(shù)據(jù)讀出和中間的視頻處理三者同時(shí)進(jìn)行,至少包含兩次數(shù)據(jù)讀和兩次數(shù)據(jù)寫。一般的通用DSP只有一條數(shù)據(jù)總線,無法并行進(jìn)行數(shù)據(jù)吞吐和視頻處理運(yùn)算,所以通常在高速AD和DSP之間、在DSP和視頻輸出單元之間,增加FIFO、雙口RAM或雙片SRAM 輪換,構(gòu)成數(shù)據(jù)緩沖環(huán)節(jié),由DSP內(nèi)核控制數(shù)據(jù)緩沖過程。這使得系統(tǒng)構(gòu)架變得非常復(fù)雜,而且數(shù)據(jù)緩沖過程占用了DSP內(nèi)核進(jìn)行數(shù)據(jù)運(yùn)算的時(shí)間,大大降低了DSP的效率。
本文基于Analog Device公司Blackfin系列BF561型通用DSP,利用其特有的PPI接口,提出一種紅外視頻處理通用模塊的構(gòu)架,省略了數(shù)據(jù)緩沖環(huán)節(jié),使數(shù)據(jù)吞吐過程獨(dú)立于DSP內(nèi)核,基本不占用DSP進(jìn)行數(shù)據(jù)運(yùn)算的時(shí)間,充分發(fā)揮了DSP密集運(yùn)算的優(yōu)勢(shì)。系統(tǒng)構(gòu)架如圖2所示。
BF561 內(nèi)部集成了兩個(gè)完全相同的BlackfinDSP內(nèi)核,共有兩個(gè)PPI接口,分別與高速AD和視頻輸出單元直接接口。原始視頻數(shù)據(jù)、最終輸出的視頻數(shù)據(jù)和視頻處理的中間數(shù)據(jù),全部存儲(chǔ)在高速SDRAM中。通過4 條獨(dú)立的DMA通道和BlackfinDSP特有的DMA流量控制,共享SDRAM高達(dá)133MHz×16位的帶寬。DSP內(nèi)核只需要初始化DMA的工作參數(shù),具體的數(shù)據(jù)吞吐由DMA控制器獨(dú)立完成,不再需要DSP內(nèi)核干預(yù)。為進(jìn)一步縮短數(shù)據(jù)等待時(shí)間,提高DSP的運(yùn)算效率,所有的數(shù)據(jù)讀寫都設(shè)置為帶流量控制的乒乓操作,實(shí)現(xiàn)了在DMA吞吐數(shù)據(jù)的同時(shí)進(jìn)行視頻處理運(yùn)算,最大程度上發(fā)揮了DSP的密集運(yùn)算能力。
PPI接口配置
PPI接口是一種可以配置成8~16 位數(shù)據(jù)寬度的多功能并行同步準(zhǔn)雙向接口,包括三條同步信號(hào)線和一個(gè)連接到外部時(shí)鐘的時(shí)鐘線,通過修改相應(yīng)的寄存器設(shè)置PPI接口各種工作模式。
PPI與高速AD硬件接口
如圖3 所示,以CPLD或FPGA實(shí)現(xiàn)控制時(shí)序,為高速AD和PPI_1 提供數(shù)據(jù)時(shí)鐘,根據(jù)探測(cè)器輸出的行同步時(shí)鐘和場(chǎng)同步時(shí)鐘,經(jīng)過一定變換,提供給PPI接口,通過DMA,PPI接口根據(jù)三個(gè)時(shí)鐘信號(hào)將AD輸出的8~16位數(shù)據(jù)寫入SDRAM。本接口支持8~16 位并行輸出的高速AD(例如AD9240),數(shù)據(jù)時(shí)鐘最高66 MHz。
PPI與視頻輸出單元硬件接口
如圖4 所示,通過DMA,PPI_2 讀取SDRAM內(nèi)的視頻數(shù)據(jù),根據(jù)數(shù)據(jù)時(shí)鐘,以ITU-R656 格式,輸出到模擬視頻編碼器(例如ADV7171),以PAL或NTSC 制式輸出到監(jiān)視器。
PPI接口寄存器設(shè)置
PPI接口可以設(shè)置為ITU-R656 輸入模式,ITU-R656 輸出模式,通用輸入模式和通用輸出模式。每種工作模式中又可以設(shè)置數(shù)據(jù)寬度,同步時(shí)鐘工作方式和數(shù)據(jù)打包/解包等多種工作條件。通過寫PPI_CONTROL、PPI_DELAY 和PPI_COUNT 三個(gè)寄存器設(shè)置PPI接口的工作模式。
PPI接口控制寄存器:PPI_CONTROL
PPI接口控制寄存器各位功能定義如圖5 所示,與高速AD輸入和視頻輸出相關(guān)的設(shè)置如下,
1)設(shè)置同步時(shí)鐘極性和設(shè)置數(shù)據(jù)時(shí)鐘極性:FS1FS2polarity,DatAclk polarity 選擇同步時(shí)鐘和數(shù)據(jù)時(shí)鐘上升沿或是下降沿有效。
2)設(shè)置數(shù)據(jù)寬度:DatAbuswidth 設(shè)置數(shù)據(jù)總線寬度,最小8 位,最大16 位。
3)設(shè)置數(shù)據(jù)打包/解包模式:Packing modeenable設(shè)置是否使能數(shù)據(jù)打包/解包模式,若使能,當(dāng)PPI接口處于8 位輸入模式,則將輸入的兩個(gè)8 位數(shù)據(jù)打包為1 個(gè)16 位數(shù)據(jù)存儲(chǔ);當(dāng)PPI接口處于8 位輸出模式,則將1 個(gè)16 位數(shù)據(jù)按低位在前高位在后的順序解包輸出;當(dāng)PPI接口為8 位數(shù)據(jù)寬度,數(shù)據(jù)打包/解包模式能夠降低1 倍數(shù)據(jù)存儲(chǔ)空間和降低1倍數(shù)據(jù)輸入帶寬。
4)設(shè)置同步時(shí)鐘工作模式:Portconfiguration選擇輸入或輸出模式下同步時(shí)鐘工作模式,與高速AD接口輸入原始視頻數(shù)據(jù)需要兩個(gè)同步時(shí)鐘,與模擬視頻編碼器接口輸出ITU-R656格式數(shù)字視頻,不需要同步時(shí)鐘。
5)設(shè)置輸入或輸出子模式:Transfer type與高速AD接口輸入原始視頻數(shù)據(jù)時(shí),使用通用輸入工作模式;與視頻輸出單元接口輸出視頻數(shù)據(jù),使用不帶同步時(shí)鐘的輸出工作模式。
6)選擇輸入或輸出方向:Port direction與高速AD接口輸入原始視頻數(shù)據(jù)時(shí),選擇輸入模式;與視頻輸出單元接口輸出視頻數(shù)據(jù),選擇輸出模式。
7)啟動(dòng)PPI接口:EnablePPI啟動(dòng)PPI接口后,在輸入模式時(shí),當(dāng)PPI接口接收到正確的同步時(shí)鐘信號(hào)才開始輸入數(shù)據(jù);在輸出模式時(shí),當(dāng)相應(yīng)的同步時(shí)鐘開始工作后才開始輸出數(shù)據(jù)。
PPI接口延遲寄存器:PPI_DELAY
在行同步時(shí)鐘有效后,延遲PPI_DELAY 個(gè)數(shù)據(jù)時(shí)鐘,PPI接口開始輸入或輸出行像素。
PPI接口計(jì)數(shù)寄存器:PPI_COUNT
在行同步時(shí)鐘有效期內(nèi),PPI接口輸入或輸出PPI_COUNT 個(gè)行像素。
PPI接口DMA設(shè)置
DMA流量控制
DSP內(nèi)核設(shè)置PPI接口DMA的初始工作參數(shù)后,由DMA控制器獨(dú)立完成PPI接口讀取和寫入SDRAM的操作。SDRAM數(shù)據(jù)總線帶寬為133 MHz×16 位,但只有一條數(shù)據(jù)總線,并且紅外視頻處理過程中數(shù)據(jù)寫入、數(shù)據(jù)讀出和中間的視頻處理三者需要同時(shí)進(jìn)行,至少包含兩次數(shù)據(jù)讀和兩次數(shù)據(jù)寫。如果按時(shí)間進(jìn)程單任務(wù)線性安排PPI接口DMA讀寫SDRAM的操作,不能充分利用SDRAM的帶寬,無法完成并發(fā)讀寫SDRAM 的要求。為了充分利用SDRAM 的帶寬,必須使用BlackfinDSP特有的DMA流量控制。
采用DMA流量控制時(shí),DMA控制器首先分析所有使能的DMA通道,提高與正在運(yùn)行的DMA的讀寫方向一致的DMA通道的優(yōu)先級(jí),例如當(dāng)前DMA正在讀SDRAM,那么所有讀SDRAM 的DMA均比寫SDRAM 的DMA的優(yōu)先級(jí)高,所有讀SDRAM 的DMA按固有優(yōu)先級(jí)排列次序。以預(yù)置的流量時(shí)隙為周期(例如10 字節(jié)),按133 MHz的最大速度,每次發(fā)讀10 字節(jié)數(shù)據(jù)到當(dāng)前DMA通道的FIFO 內(nèi),輪換到下一個(gè)DMA通道。當(dāng)所有讀SDRAM 的DMA執(zhí)行完一遍后,輪換到寫SDRAM 的DMA,執(zhí)行相同過程。這樣,降低了改變SDRAM 讀寫方向耗費(fèi)的時(shí)間,同時(shí)每個(gè)使能的DMA通道在設(shè)定的周期內(nèi)都以最大速度輪換執(zhí)行了一遍,保證了一定時(shí)間內(nèi)對(duì)SDRAM 的并發(fā)讀寫操作,充分利用了SDRAM 接口的最大帶寬。
乒乓操作
由于紅外視頻處理過程中數(shù)據(jù)寫入、數(shù)據(jù)讀出和中間的視頻處理三者同時(shí)進(jìn)行,所以當(dāng)前DMA讀取或?qū)懭氲臄?shù)據(jù),就是DSP內(nèi)核或其他DMA已經(jīng)寫入或?qū)⒁x取的數(shù)據(jù),這是一個(gè)級(jí)聯(lián)的因果系統(tǒng)。如果當(dāng)前DMA正在讀寫的數(shù)據(jù)在時(shí)間或因果關(guān)系上與DSP內(nèi)核或其他DMA發(fā)生沖突,就會(huì)導(dǎo)致數(shù)據(jù)等待或數(shù)據(jù)錯(cuò)誤。
為降低數(shù)據(jù)等待時(shí)間并避免因果錯(cuò)誤,對(duì)每個(gè)DMA操作,在目標(biāo)存儲(chǔ)區(qū)內(nèi)都開辟兩個(gè)緩沖區(qū),設(shè)為BufferA和BufferB。當(dāng)前DMA正在操作的設(shè)為BufferA,這是獨(dú)占性操作,不允許其他DMA或DSP內(nèi)核訪問。當(dāng)前DMA已經(jīng)操作完畢的設(shè)為BufferB,開放給其他DMA或DSP內(nèi)核訪問。當(dāng)前DMA操作在BufferA和BufferB之間切換,通過信號(hào)量標(biāo)志獨(dú)占區(qū)和開放區(qū),于是在任一時(shí)間,當(dāng)前DMA都有一個(gè)可供其他DMA或DSP內(nèi)核訪問的區(qū)域,這樣就降低了數(shù)據(jù)等待時(shí)間,并避免了因果錯(cuò)誤。
結(jié) 論
本文在介紹了PPI接口性能特點(diǎn)的基礎(chǔ)上,提出了一種紅外視頻處理通用模塊的構(gòu)架,省略了數(shù)據(jù)緩沖環(huán)節(jié),使數(shù)據(jù)吞吐過程獨(dú)立于DSP內(nèi)核,提高了DSP的運(yùn)算效率。
評(píng)論