1 引言
紅外圖像處理系統(tǒng)的數(shù)據(jù)吞吐量大.處理算法復(fù)雜。由高速數(shù)字處理器和復(fù)雜可編程邏輯器件(CPLD)構(gòu)成的紅外圖像處理系統(tǒng)是當(dāng)前紅外圖像處理系統(tǒng)的一種發(fā)展趨勢。將高速處理器從繁重的數(shù)據(jù)傳輸中解脫出來,專注于從事圖像處理,是解決速度瓶頸的重要手段。
直接內(nèi)存存取(DMA)是在CPU無需干預(yù)的情況下自動進(jìn)行數(shù)據(jù)傳輸?shù)姆绞。它對于浮點(diǎn)DSP進(jìn)行實(shí)時信號處理有著非常重要的作用。一方面.為了發(fā)揮DSP核心運(yùn)算單元的高速運(yùn)算能力.必須首先把程序和數(shù)據(jù)傳輸?shù)紻SP的內(nèi)存中.這通常需要DMA操作來實(shí)現(xiàn);另一方面.DSP系統(tǒng)總要跟外部信號通信,不論是數(shù)據(jù)的輸入還是輸出,都需要DMA來完成。否則會影響DSP核的高速運(yùn)算能力。
ADSP-TSlOl是AD公司推出的新型浮點(diǎn)DSP之一。其內(nèi)部有專門的DMA控制器。還提供了多個DMA通道.不同的通道對應(yīng)不同的外部口操作。本文首先概括介紹由ADSP一TPSl01和EPM3256型CPLD構(gòu)成的紅外處理系統(tǒng)。然后對系統(tǒng)中的幾種典型DMA操作進(jìn)行詳細(xì)的分析。
2 系統(tǒng)結(jié)構(gòu)
本文介紹的紅外處理系統(tǒng)主要用于320x240像素紅外圖像的處理.對背景中的目標(biāo)進(jìn)行檢測、跟蹤和識別。系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。該系統(tǒng)采用2個ADSP-TS101作為處理器,2個的FIFO作為輸入輸出緩存,1個SDRAM作為外部存儲器,1個:EPM3256型CPLD作為邏輯控制。
在此系統(tǒng)之前的處理是紅外圖像的采集過程。采集到的紅外圖像數(shù)據(jù)經(jīng)過外部連接首先傳輸?shù)捷斎刖彌_FIFO中。當(dāng)某一幀圖像數(shù)據(jù)傳輸完畢,使用TSl01特有的FLYBY傳輸方式將數(shù)據(jù)由輸入緩沖FIFO傳輸?shù)絊DRAM中,然后DSP對圖像數(shù)據(jù)進(jìn)行目標(biāo)檢測等處理。處理結(jié)果先存儲在DSP內(nèi)的RAM中,最后輸入到輸出緩沖FIFO。其中包括FIFO到SDRAM、SDRAM到DSP及DSP間的數(shù)據(jù)傳輸,由于都采用了DMA傳輸,不占用DSP資源,大大提高了系統(tǒng)的處理能力。
3 ADSP—TSl01的DMA描述
ADSP-TSl01是TigerSharc系列DSP的首個成員,具有極高的運(yùn)算能力。它片內(nèi)的DMA控制器允許將數(shù)據(jù)傳輸作為后臺任務(wù)執(zhí)行,從而將處理器內(nèi)核釋放出來。其內(nèi)部具有14個DMA通道,如圖2所示,分別對應(yīng)著不同類型的傳輸操作。4個通道專用于外部存儲器設(shè)備,8個。DMA通道用于鏈路口,還有2個通道用于自動。DMA操作。多樣的傳輸手段使得ADSP—TSl01傳輸數(shù)據(jù)非常方便。利用DMA控制器,DSP處理器可以執(zhí)行以下幾種類型的數(shù)據(jù)傳輸:
(1)內(nèi)部存儲器到外部存儲器或與存儲器映射的外設(shè)設(shè)備之間的數(shù)據(jù)傳遞;
(2)外部存儲器與外部外設(shè)之間的飛躍式數(shù)據(jù)傳輸;
(3)外部存儲器到鏈路口I/O的數(shù)據(jù)傳輸;
(4)鏈路口I/O到處理器內(nèi)部存儲器的數(shù)據(jù)傳輸:
(5)鏈路口I/O到外部存儲器的數(shù)據(jù)傳輸;
(6)鏈路口I/O之間的閉環(huán)數(shù)據(jù)傳輸。
TSl01的DMA控制器由專用的控制器核、發(fā)送端TCB寄存器與接收端TCB寄存器等構(gòu)成。DMA傳送的數(shù)據(jù)流具有方向性,即從發(fā)送端(源)到接收端(目的)。若發(fā)送端或接收端是存儲器,則需通過TCB寄存器來描述。TCB寄存器是128 bit寄存器,如圖3所示.包括啟動DMA所必需的信息。例如,1個傳送TCB包括數(shù)據(jù)源的地址、傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)、地址的增量、控制信息。若啟動DMA操作,需對TCB寄存器進(jìn)行編程。
TCB寄存器由4個32位寄存器組成:DI寄存器、DX寄存器、DX寄存器和DP寄存器。DI寄存器是32 bit索引寄存器,它包含傳送的源地址或者接受的目的地地址,可以指向內(nèi)存、外存或者LINK口。DX寄存器包含了1個16 bit的計(jì)數(shù)值和1個16 bit的修正值,分別存儲在DX的前16位(前者)和后16位。如果一個二維DMA被使能,該寄存器包含的值僅僅代表X方向。例如:如果要傳輸4個128 bit的字.計(jì)數(shù)值將被設(shè)置為0X10,而修正值與DP寄存器中的操作數(shù)長度相對應(yīng)。如果操作數(shù)長度是長字.那么修正值將會被設(shè)置為0X2。DY寄存器與DX寄存器相對應(yīng),只有啟動二維DMA時才會用到。DP寄存器包括DMA所有的控制信息,分為控制信息和DMA鏈信息。
4 系統(tǒng)中的典型DMA操作
在本文介紹的紅外圖像系統(tǒng)中,主要使用以下幾種DMA操作:內(nèi)存與外存(內(nèi)存與SDRAM間的數(shù)據(jù)傳輸)、內(nèi)存與LINK口間的數(shù)據(jù)傳輸、外設(shè)與外存的數(shù)據(jù)傳輸(FIFO與SDRAM間的數(shù)據(jù)傳輸)。
4.1 內(nèi)存與外存間的DMA操作
TSl01處理器有4個專用DMA通道,用于內(nèi)部存儲器與外部存儲器之間的數(shù)據(jù)傳輸。每個通道有2個TCB DP寄存器、1個發(fā)送TCB和1個接收。TCB.其中發(fā)送端用來驅(qū)動數(shù)據(jù),接收端用來接收數(shù)據(jù)。DP寄存器的TY域指定了要執(zhí)行的DMA傳送的類型。
實(shí)現(xiàn)外部存儲器與內(nèi)部存儲器的數(shù)據(jù)傳輸有2種途徑:一是對4個DMA通道中的1個進(jìn)行編程,將數(shù)據(jù)塊從一個存儲器移人另一個存儲器。此時.發(fā)送和接收TCB都需要進(jìn)行配置:二是使用2個AutoDMA通道中的一個,此時,外設(shè)首先對通道的2個TCB寄存器編程,然后向目標(biāo)AutoDMA數(shù)據(jù)寄存器寫人數(shù)據(jù)。向這個地址進(jìn)行寫操作,激活相應(yīng)的DMA。
下面以在紅外處理系統(tǒng)中的應(yīng)用為例說明第一種用法。如要將SDRAM內(nèi)地址為0x400000~
Ox4003FF中的1024個數(shù)用DMA通道0傳送到內(nèi)存地址0xS0000~0x803FF中.可用下面的
編程來實(shí)現(xiàn):
XR0=0x400000:← DI Register
XRl=OxO4D00004:← DX Register
XR2=0x00000000;← DY Register
XR3=Ox87000000:←DP Register
DCS0=XR3:0:
XR8=0x80000; ← DI Rester
XR9=ox04000004;←DX ReRister
XRl0=0x0000000;← DY Re西sler
XRll=ox47000000;← DP Register
DCD0=XRll:8:
4.2 內(nèi)存與LINK口間的DM_A操作
TSl01的鏈路口為處理器內(nèi)部或外部的數(shù)據(jù)傳輸提供了快速、獨(dú)立的通信機(jī)制,它為系統(tǒng)中的DSP之間提供了點(diǎn)對點(diǎn)的通信方法。每個DSP有4個鏈路口,每個鏈路口都由8位雙向數(shù)據(jù)線和另外3條控制線構(gòu)成。鏈路口的結(jié)構(gòu)如圖4所示。每個鏈路口有2個端口(發(fā)送端和接收端)和2個緩沖區(qū)。緩沖區(qū)用于打包或解包鏈路口數(shù)據(jù),與內(nèi)部存儲器進(jìn)行數(shù)據(jù)交換。
TSl01的4個鏈路口均可使用DMA方式發(fā)送或接收數(shù)據(jù),可以實(shí)現(xiàn)鏈路口與內(nèi)部存儲器、外部存儲器或其他鏈路口之間的雙向數(shù)據(jù)傳送。處理器為每個鏈路口提供了2個專用的DMA通道,1個用于發(fā)送數(shù)據(jù),1個用于接收數(shù)據(jù)。兩個DMA通道均可以與內(nèi)部或外部存儲器接口。當(dāng)接收端寄存器空且鏈路DMA通道使能時,鏈路口向發(fā)送DMA通道發(fā)出DMA請求,鏈路1:3可以繼續(xù)向緩存區(qū)寫數(shù)據(jù)。當(dāng)接收寄存器滿且DMA通道使能時,鏈路口向接收DMA通道發(fā)出DMA請求。
以紅外處理系統(tǒng)中的應(yīng)用為例,如圖l所示.DSPO通過LINK口0與DSPl的LINK口1相連。如果將DSP0內(nèi)存中的數(shù)組data_tx中N個數(shù)通過鏈路口傳輸?shù)紻SPl內(nèi)存中的數(shù)組data_rx中.首先要對DSPl的LINK口l的接收DMA通道進(jìn)行編程,然后對DSP0的LINK口O的發(fā)送DMA通道進(jìn)行編程。
DSPl中的程序:
TCB_temp.DI=data_rx;
TCB_temp.DX=4 I(N<<16);
TCB_temp.DY=O:
TCB_temp.DP=0x47000000;
q=_buihin_compose_128((1ong long)TCB_temp.DI │
(10ng long)TCB_temp.DX<<32.(10ng ions)
(TCB_temp.DY│(10ng long)TCB_temp.DP<<321);
builtin_sysreg_write(LCTLl.0x000004D2);//設(shè)定
鏈路口的控制寄存器
builtin_sysreg_write4(DC9,cO;
DSPO中的程序:
TCB_temp.DI:data_tx;
TCB_temp.DX=4 I(N<<16);
TCB_temp.DY=0:
TCB_temp.DP=0x47000000;
q= builtin_eompose_128((10ng long)TCB_temp.DI │
(10ng long)TCB_temp.DX<<32,(1ong 1ong)
(TCB_temp.DY I(1ong long)TCB_temp.DP<<32));
buihin_sysreg_write(LCTL0,0x000004D2);
。,設(shè)定鏈路口的控制寄存器
builtin_sysreg_write4(DC4,q);
在以上編程中,將鏈路口時鐘配置成1/3核時鐘。當(dāng)處理器核工作在300 MHz和鏈路口工作在100 MHz時鏈路口的吞吐率可以達(dá)到200 MB。
4.3 外存與外設(shè)間的DMA操作(飛躍傳輸)
在程序設(shè)計(jì)中,要實(shí)現(xiàn)外部存儲器與其他外部設(shè)備之間的數(shù)據(jù)傳輸,通常都需要通過處理器內(nèi)核將數(shù)據(jù)傳輸?shù)教幚砥鲀?nèi)部。在這種情況下.TSl01處理器支持全新的數(shù)據(jù)傳輸即飛躍傳(上接第60頁)輸方式.此時不必對內(nèi)部存儲器進(jìn)行訪問,數(shù)據(jù)直接在外部存儲器和外部其他設(shè)備之間傳輸。在飛躍傳輸方式下?砂裈Sl01看作獨(dú)立的DMA控制器。飛躍傳輸方式與標(biāo)準(zhǔn)的DMA傳輸方式類似,程序設(shè)計(jì)也基本相同,但是數(shù)據(jù)寬度必須與外部10設(shè)備匹配。而且只能使用DMA通道0。
5 結(jié)束語
充分利用DSP的DMA功能是解決高速圖像處理器速度瓶頸的重要手段。ADSP一TS101的DMA操作功能強(qiáng)大,形式多樣。它可以在不中斷信號處理器算法處理工作的同時完成圖像數(shù)據(jù)的傳輸,提高處理系統(tǒng)的性能。本文分析的幾種操作在紅外圖像處理系統(tǒng)中得到具體的實(shí)踐,獲得良好的效果。
|