基于DSP的合成孔徑雷達(dá)成像系統(tǒng)的設(shè)計(jì)
1.引言
合成孔徑雷達(dá)成像系統(tǒng)是一種全天時(shí)、全天候的高分辨率主動(dòng)微波遙感成像系統(tǒng),在地理遙感、地形測繪、災(zāi)情預(yù)測和軍事偵察等領(lǐng)域有著重要應(yīng)用。逆存儲(chǔ)轉(zhuǎn)置器(ICTM)是合成孔徑雷達(dá)成像系統(tǒng)的一個(gè)重要模塊,它需要將上位機(jī)方位壓縮模塊輸出的圖像數(shù)據(jù)以方位線的形式依次寫入外部存儲(chǔ)器,通過數(shù)據(jù)的逆轉(zhuǎn)置處理,以距離線的形式將圖像數(shù)據(jù)依次輸出。此外,ICTM的輸出數(shù)據(jù)將經(jīng)過數(shù)據(jù)I/O節(jié)點(diǎn)發(fā)送到下位機(jī)圖像顯示模塊,使圖像顯示模塊能實(shí)時(shí)的以距離線形式滾動(dòng)顯示雷達(dá)圖像。ICTM以TI的一款高性能定點(diǎn)DSP芯片TMS320C6415為核心處理器,兩條大容量SDRAM作為外部存儲(chǔ)器,實(shí)現(xiàn)輸入數(shù)據(jù)的逆存儲(chǔ)轉(zhuǎn)置操作,同時(shí)其強(qiáng)大的處理能力也為今后處理更多的數(shù)據(jù)提供了升級空間。
2.TMS320C6415芯片簡介
TMS320C6415是TI公司生產(chǎn)的高性能定點(diǎn)DSP C6000系列中的一款,該系列的DSP都是基于VelociTITM架構(gòu)的VLIW DSP,在每個(gè)時(shí)鐘周期內(nèi)可以執(zhí)行8條32bit的指令。C6415的核心工作頻率最高可以達(dá)到720MHz,峰值工作速率為5.76GIPS。C6415提供與SDRAM的無縫接口,可以有效的簡化硬件設(shè)計(jì)開發(fā)難度,利用C6415的片選空間映射管理SDRAM,最多可以支持1GB的外部存儲(chǔ)空間,完全可以滿足逆存儲(chǔ)轉(zhuǎn)置處理所需的192M存儲(chǔ)要求。
TMS320C6415的CPU結(jié)構(gòu)具有2個(gè)通道,每個(gè)通道有4個(gè)功能單元(1個(gè)乘法器和3個(gè)算術(shù)邏輯單元),16個(gè)32位通用寄存器,每個(gè)通道的功能單元可以隨意訪問本通道的寄存器。CPU還有2個(gè)交叉單元,通過它們,一個(gè)通道的功能單元可以訪問另一個(gè)通道的寄存器。另外,CPU還具有256bit寬的數(shù)據(jù)和程序通道,可以使程序寄存器在每個(gè)時(shí)鐘周期提供8條并行執(zhí)行指令,這種CPU結(jié)構(gòu)是DSP具有VLIW結(jié)構(gòu)的基本條件。
DSP的存儲(chǔ)空間映射為內(nèi)部存儲(chǔ)器、內(nèi)部外設(shè)及外部擴(kuò)展存儲(chǔ)器,其中內(nèi)部存儲(chǔ)器由64KB內(nèi)部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器構(gòu)成。內(nèi)部程序存儲(chǔ)器可以映射到CPU地址空間或者作為Cache操作。內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器均可以通過CPU、DMA或HPI(Host Interface)方式訪問,HPI接口使上位機(jī)可以訪問DSP的存儲(chǔ)空間。
3.ICTM工作原理
ICTM模塊的主要功能是將上位機(jī)方位壓縮模塊輸出的數(shù)據(jù)重新排列順序,使得依次沿方位向排列的數(shù)據(jù)變換成沿距離向排列,使下位機(jī)圖像顯示模塊能實(shí)時(shí)滾動(dòng)顯示圖像。
圖1 ICTM模塊工作原理示意圖
ICTM模塊的工作原理可用圖1來表示。整個(gè)SDRAM存儲(chǔ)空間劃分為BANKA和BANKB兩塊存儲(chǔ)區(qū),兩塊BANK的列深度為輸入的方位向點(diǎn)數(shù)2048點(diǎn),行深度為輸出的距離向點(diǎn)數(shù)4096點(diǎn),為使兩塊BANK的讀/寫數(shù)據(jù)量平衡,需要在每個(gè)工作周期內(nèi)輸入兩條方位線(2×2048點(diǎn))數(shù)據(jù),同時(shí)輸出一條距離線(1×4096點(diǎn))數(shù)據(jù)。兩塊存儲(chǔ)區(qū)采用“乒乓”操作的讀寫方式,即如果等間隔讀BANKA區(qū)域,則連續(xù)寫B(tài)ANKB區(qū)域,反之如果連續(xù)寫B(tài)ANKA區(qū)域,則等間隔讀BANKB區(qū)域,讀完一塊存儲(chǔ)區(qū)的同時(shí),另一塊存儲(chǔ)區(qū)也剛好寫滿。這樣兩塊存儲(chǔ)區(qū)交替工作,充分節(jié)約了讀/寫SDRAM的時(shí)間開銷,有利于滿足整個(gè)系統(tǒng)的實(shí)時(shí)性要求。
4.ICTM硬件電路設(shè)計(jì)
圖2 ICTM模塊硬件電路結(jié)構(gòu)示意圖
ICTM模塊的硬件電路設(shè)計(jì)框圖如圖2所示。根據(jù)ICTM模塊的工作需要,主存儲(chǔ)器采用兩頁式工作結(jié)構(gòu),每頁集成256MBytes大小的SDRAM,分別配置在C6415的兩個(gè)CE空間。SDRAM和作為輸入/輸出緩存的同步FIFO都連接在C6415 64Bit位寬的EMIFA接口,以保證較高的數(shù)據(jù)傳輸帶寬。
4.1 SDRAM存儲(chǔ)電路
主存儲(chǔ)器類型選擇為SDRAM,即標(biāo)準(zhǔn)的144pin筆記本內(nèi)存條(標(biāo)準(zhǔn)SODIMM封裝),目前選用256M容量大小。由于ICTM模塊的SDRAM接口采用可擴(kuò)充接法,因此可以擴(kuò)充到512MB容量。即如果SDRAM Module的容量為256MB,則列地址為A0~A8 ,如果SDRAM Module容量為512MB,則列地址為A0~A9。DSP的EMIFA口CE0、CE1輸出信號分別接SDRAM的BANK選擇管腳S0、S1。即如果SDRAM的BANK只有一個(gè),則只有S0有效,這樣SDRAM只占用DSP的EMIFA口CE0空間,如果SDRAM的BANK有兩個(gè),則占用DSP的EMIFA口CE0、CE1空間。
4.2 輸入/輸出FIFO
DSP的EMIFA口CE2/CE3空間分別控制輸入FIFO和輸出FIFO。輸入FIFO采用IDT公司的IDT72V3670(8K×36Bit),輸出FIFO采用IDT公司的IDT72V3680(16K×36 Bit),封裝形式為TQFP,128pin。FIFO的設(shè)計(jì)采用同步方式讀寫,但是利用0Ω電阻等效的短接線設(shè)計(jì)方式,也可以工作在異步模式下,F(xiàn)IFO控制信號通過CPLD做譯碼。
ICTM模塊用于讀寫操作的64bit FIFO采用用兩個(gè)32bit的FIFO并連實(shí)現(xiàn),利用FIFO深度來做等效的輸入、輸出“乒乓”操作。其中輸出只用到一片F(xiàn)IFO,另外一片為將來大數(shù)據(jù)量的處理預(yù)留空間。
4.3 CPLD和HPI
ICTM模塊各功能單元的電路狀態(tài)、時(shí)序控制以及I/O接口控制都由CPLD完成。此外,通過C6415的主機(jī)接口(HPI)可以直接訪問DSP映射管理下的所有片內(nèi)和片外存儲(chǔ)單元。因此,在電路設(shè)計(jì)中將DSP的HPI接口通過CPLD與系統(tǒng)控制總線相連,從而使主控能夠直接訪問DSP的HPI接口,進(jìn)而滿足處理程序?qū)崟r(shí)下載和指令數(shù)據(jù)實(shí)時(shí)傳輸?shù)囊蟆?
ICTM模塊的硬件設(shè)計(jì)充分考慮了結(jié)構(gòu)化的設(shè)計(jì)要求,為合成孔徑雷達(dá)實(shí)時(shí)成像處理系統(tǒng)提供了高性能的逆存儲(chǔ)轉(zhuǎn)置硬件平臺(tái),結(jié)合配置的控制軟件就可以實(shí)現(xiàn)實(shí)時(shí)成像處理所需的逆存儲(chǔ)轉(zhuǎn)置功能。
5.軟件設(shè)計(jì)與實(shí)現(xiàn)
TMS320C6415是面向C結(jié)構(gòu)的DSP芯片,支持標(biāo)準(zhǔn)C/C++編程,其開發(fā)工具Code Composer Studio(CCS2.21)內(nèi)嵌C編譯器的編譯效率可達(dá)匯編的85%。另外,C編程可提高DSP程序的可維護(hù)性、可移植性、可繼承性,便于縮短軟件開發(fā)周期,因此本DSP程序選擇采用C語言編寫。
圖3 程序?qū)哟谓Y(jié)構(gòu)和模塊劃分
5.1軟件模塊劃分
軟件層次結(jié)構(gòu)和模塊劃分如圖3所示。DSP軟件的主要部分是底層的四個(gè)功能模塊,這四個(gè)功能模塊分別完成以下操作:1. 從輸入FIFO中讀取兩條方位線數(shù)據(jù)(每條方位線2048點(diǎn),每點(diǎn)數(shù)據(jù)類型為短整型)到DSP內(nèi)存中;2. 將讀入的數(shù)據(jù)按順序存儲(chǔ)到SDRAM中;3. 把SDRAM中的數(shù)據(jù)沿距離線順序讀到DSP內(nèi)存中,即完成轉(zhuǎn)置操作;4. 把轉(zhuǎn)置后的數(shù)據(jù)送至輸出FIFO。
5.2軟件各模塊間關(guān)系
l 上電初始化模塊:在DSP上電后,完成與硬件工作有關(guān)的各控制寄存器的初始化,以及與軟件工作有關(guān)的各內(nèi)部變量和存儲(chǔ)區(qū)的初始化;
l 主處理模塊:調(diào)用其它功能模塊,完成整個(gè)逆存儲(chǔ)轉(zhuǎn)置流程;
l 數(shù)據(jù)輸入模塊:受主處理模塊調(diào)用,利用EDMA完成數(shù)據(jù)輸入;
l 寫SDRAM模塊:受主處理模塊調(diào)用,利用EDMA完成數(shù)據(jù)寫操作;
l 讀SDRAM模塊:受主處理模塊調(diào)用,利用EDMA完成數(shù)據(jù)讀操作;
l 數(shù)據(jù)輸出模塊:受主處理模塊調(diào)用,利用EDMA完成數(shù)據(jù)輸出。
5.3 C6415的EDMA控制寄存器
EDMA是C621x/671x/641x特有的數(shù)據(jù)存取方式。在C621x/671x/641x中,EDMA控制寄存器負(fù)責(zé)片內(nèi)二級存儲(chǔ)器與其它外設(shè)之間的數(shù)據(jù)傳輸。EDMA控制寄存器和DMA控制寄存器在結(jié)構(gòu)上有很大不同。其增強(qiáng)之處包括:
l 提供了64個(gè)傳輸通道;
l 通道間優(yōu)先級可設(shè)置;
l 支持不同結(jié)構(gòu)數(shù)據(jù)傳輸?shù)逆溄印?
EDMA控制寄存器主要由事件(中斷)處理寄存器、事件編碼器、參數(shù)RAM以及硬件地址發(fā)生器構(gòu)成。其中,事件(中斷)處理寄存器負(fù)責(zé)對EDMA事件進(jìn)行捕獲。一個(gè)事件相當(dāng)于一個(gè)同步信號,由它觸發(fā)一個(gè)EDMA通道開始數(shù)據(jù)傳輸。如果多個(gè)事件同時(shí)發(fā)生,則由事件編碼器對它們進(jìn)行分辨,將同時(shí)發(fā)生的事件進(jìn)行排序,并決定事件的處理順序。EDMA的參數(shù)RAM中存放了有關(guān)的傳輸參數(shù),這些參數(shù)會(huì)被送往硬件地址發(fā)生器,進(jìn)而產(chǎn)生讀寫操作所需的地址。
5.4 ICTM軟件設(shè)計(jì)流程
圖4 ICTM軟件設(shè)計(jì)流程
ICTM模塊軟件設(shè)計(jì)流程可用圖4來表示。首先完成上電復(fù)位,初始化EMIFA和EMIFB配置寄存器、中斷控制寄存器和EDMA控制寄存器,之后在主程序中完成各常量和變量的定義及初始化。完成上述初始化定義后就可以使能外部中斷控制寄存器和EDMA控制寄存器,等待外部中斷INT4的觸發(fā)。INT4的觸發(fā)源來自脈沖PRF,該脈沖的到來說明兩條待輸入的方位線數(shù)據(jù)已送至輸入FIFO,此時(shí)CPU可以將這兩條方位線數(shù)據(jù)讀到DSP內(nèi)存,并送至SDRAM的相應(yīng)存儲(chǔ)區(qū)。
由于輸入/輸出數(shù)據(jù)結(jié)構(gòu)相對簡單,讀輸入FIFO、寫SDRAM、讀SDRAM以及寫輸出FIFO四個(gè)過程可以采用“EDMA鏈(EDMA Chain)”的方式進(jìn)行。即第一個(gè)EDMA傳輸完成后,緊接著啟動(dòng)第二個(gè)EDMA傳輸,直到最后一個(gè)EDMA傳輸完成,這樣可以在不受CPU干預(yù)的情況下完成數(shù)據(jù)的搬移,有利于提高數(shù)據(jù)傳輸效率。
5.5 軟件并行設(shè)計(jì)問題
由于EDMA不受CPU干預(yù),因此在使用EDMA傳輸數(shù)據(jù)的同時(shí),CPU可并行執(zhí)行其它指令,這樣可極大提高代碼的執(zhí)行效率。舉例如下:
if(EDMA_intTest(22))
{
*ifoeoff=0;
EDMA_intClear(22);
EDMA_setChannel(hEdmaCha25);// trigger EDMA to reading data from SDRAM
#pragma MUST_ITERATE(32,,8);
for(i=0;i {
headwriteaddr[ i]=inputa[ i];
}
WORD_ALIGNED(inputb);
WORD_ALIGNED(inputc);
WORD_ALIGNED(inputa);
#pragma MUST_ITERATE(64,,8);
for(i=0;i {
inputb[ i]=inputa[2*i+64];
inputc[ i]=inputa[2*i+65];
}
}
其中EDMA_setChannel(hEdmaCha25)語句用來啟動(dòng)EDMA25通道的傳輸,完成從SDRAM讀取轉(zhuǎn)置數(shù)據(jù)的任務(wù)。EDMA在進(jìn)行數(shù)據(jù)傳輸?shù)耐瑫r(shí),CPU則繼續(xù)執(zhí)行之后的三條語句headwriteaddr[ i]=inputa[ i]、inputc[ i]=inputa[2*i+65]、inputb[ i]=inputa[2*i+64],直到EDMA傳輸完成并發(fā)出中斷,CPU才響應(yīng)EDMA中斷。
顯然,采用上述并行處理的方式,CPU工作周期得到充分利用,提高了代碼的執(zhí)行效率,有利于滿足系統(tǒng)的實(shí)時(shí)性要求。
6.結(jié)束語
逆存儲(chǔ)轉(zhuǎn)置器(ICTM)是合成孔徑雷達(dá)(SAR)實(shí)時(shí)成像處理系統(tǒng)的一個(gè)重要模塊。本文選擇TI的一款高性能定點(diǎn)DSP芯片TMS320C6415為核心處理器,兩條大容量SDRAM作為外部存儲(chǔ)器,實(shí)現(xiàn)輸入數(shù)據(jù)的逆存儲(chǔ)轉(zhuǎn)置操作。軟件編程采用并行處理方式,提高了代碼執(zhí)行效率。單板測試和系統(tǒng)聯(lián)調(diào)表明,設(shè)計(jì)的逆存儲(chǔ)轉(zhuǎn)置器滿足各項(xiàng)性能指標(biāo),已通過項(xiàng)目組驗(yàn)收,即將投入
評論