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