合成孔径雷达成像系统逆存储转置器的DSP设计与实现
摘要: 逆存储转置器(ICTM)是合成孔径雷达(SAR)实时成像处理系统的一个重要模块。本文设计的ICTM模块以TI的一款高性能定点DSP芯片TMS320C6415为核心处理器,两条大容量SDRAM作为外部存储器,实现输入数据的逆存储转置操作。软件编程采用并行处理方式,提高了代码执行效率。实际运行表明,模块能充分满足成像系统的实时性要求,同时其强大的处理能力也为今后处理更多的数据预留了空间。
关键字: TMS320C6415;合成孔径雷达;逆存储转置器
1.引言
合成孔径雷达成像系统是一种全天时、全天候的高分辨率主动微波遥感成像系统,在地理遥感、地形测绘、灾情预测和军事侦察等领域有着重要应用。逆存储转置器(ICTM)是合成孔径雷达成像系统的一个重要模块,它需要将上位机方位压缩模块输出的图像数据以方位线的形式依次写入外部存储器,通过数据的逆转置处理,以距离线的形式将图像数据依次输出。此外,ICTM的输出数据将经过数据I/O节点发送到下位机图像显示模块,使图像显示模块能实时的以距离线形式滚动显示雷达图像。ICTM以TI的一款高性能定点DSP芯片TMS320C6415为核心处理器,两条大容量SDRAM作为外部存储器,实现输入数据的逆存储转置操作,同时其强大的处理能力也为今后处理更多的数据提供了升级空间。
2.TMS320C6415芯片简介
TMS320C6415是TI公司生产的高性能定点DSP C6000系列中的一款,该系列的DSP都是基于VelociTITM架构的VLIW DSP,在每个时钟周期内可以执行8条32bit的指令。C6415的核心工作频率最高可以达到720MHz,峰值工作速率为5.76GIPS。C6415提供与SDRAM的无缝接口,可以有效的简化硬件设计开发难度,利用C6415的片选空间映射管理SDRAM,最多可以支持1GB的外部存储空间,完全可以满足逆存储转置处理所需的192M存储要求。
TMS320C6415的CPU结构具有2个通道,每个通道有4个功能单元(1个乘法器和3个算术逻辑单元),16个32位通用寄存器,每个通道的功能单元可以随意访问本通道的寄存器。CPU还有2个交叉单元,通过它们,一个通道的功能单元可以访问另一个通道的寄存器。另外,CPU还具有256bit宽的数据和程序通道,可以使程序寄存器在每个时钟周期提供8条并行执行指令,这种CPU结构是DSP具有VLIW结构的基本条件。
DSP的存储空间映射为内部存储器、内部外设及外部扩展存储器,其中内部存储器由64KB内部程序存储器和数据存储器构成。内部程序存储器可以映射到CPU地址空间或者作为Cache操作。内部和外部数据存储器均可以通过CPU、DMA或HPI(Host Interface)方式访问,HPI接口使上位机可以访问DSP的存储空间。
3.ICTM工作原理
ICTM模块的主要功能是将上位机方位压缩模块输出的数据重新排列顺序,使得依次沿方位向排列的数据变换成沿距离向排列,使下位机图像显示模块能实时滚动显示图像。
ICTM模块的工作原理可用图1来表示。整个SDRAM存储空间划分为BANKA和BANKB两块存储区,两块BANK的列深度为输入的方位向点数2048点,行深度为输出的距离向点数4096点,为使两块BANK的读/写数据量平衡,需要在每个工作周期内输入两条方位线(2×2048点)数据,同时输出一条距离线(1×4096点)数据。两块存储区采用“乒乓”操作的读写方式,即如果等间隔读BANKA区域,则连续写BANKB区域,反之如果连续写BANKA区域,则等间隔读BANKB区域,读完一块存储区的同时,另一块存储区也刚好写满。这样两块存储区交替工作,充分节约了读/写SDRAM的时间开销,有利于满足整个系统的实时性要求。
4.ICTM硬件电路设计
ICTM模块的硬件电路设计框图如图2所示。根据ICTM模块的工作需要,主存储器采用两页式工作结构,每页集成256MBytes大小的SDRAM,分别配置在C6415的两个CE空间。SDRAM和作为输入/输出缓存的同步FIFO都连接在C6415 64Bit位宽的EMIFA接口,以保证较高的数据传输带宽。
4.1 SDRAM存储电路
主存储器类型选择为SDRAM,即标准的144pin笔记本内存条(标准SODIMM封装),目前选用256M容量大小。由于ICTM模块的SDRAM接口采用可扩充接法,因此可以扩充到512MB容量。即如果SDRAM Module的容量为256MB,则列地址为A0~A8 ,如果SDRAM Module容量为512MB,则列地址为A0~A9。DSP的EMIFA口CE0、CE1输出信号分别接SDRAM的BANK选择管脚S0、S1。即如果SDRAM的BANK只有一个,则只有S0有效,这样SDRAM只占用DSP的EMIFA口CE0空间,如果SDRAM的BANK有两个,则占用DSP的EMIFA口CE0、CE1空间。
4.2 输入/输出FIFO
DSP的EMIFA口CE2/CE3空间分别控制输入FIFO和输出FIFO。输入FIFO采用IDT公司的IDT72V3670(8K×36Bit),输出FIFO采用IDT72V3680(16K×36 Bit),封装形式为TQFP,128pin。FIFO的设计采用同步方式读写,但是利用0Ω电阻等效的短接线设计方式,也可以工作在异步模式下,FIFO控制信号通过CPLD做译码。
ICTM模块用于读写操作的64bit FIFO采用用两个32bit的FIFO并连实现,利用FIFO深度来做等效的输入、输出“乒乓”操作。其中输出只用到一片FIFO,另外一片为将来大数据量的处理预留空间。
4.3 CPLD和HPI
ICTM模块各功能单元的电路状态、时序控制以及I/O接口控制都由CPLD完成。此外,通过C6415的主机接口(HPI)可以直接访问DSP映射管理下的所有片内和片外存储单元。因此,在电路设计中将DSP的HPI接口通过CPLD与系统控制总线相连,从而使主控能够直接访问DSP的HPI接口,进而满足处理程序实时下载和指令数据实时传输的要求。
ICTM模块的硬件设计充分考虑了结构化的设计要求,为合成孔径雷达实时成像处理系统提供了高性能的逆存储转置硬件平台,结合配置的控制软件就可以实现实时成像处理所需的逆存储转置功能。
5.软件设计与实现
TMS320C6415是面向C结构的DSP芯片,支持标准C/C++编程,其开发工具Code Composer Studio(CCS2.21)内嵌C编译器的编译效率可达汇编的85%。另外,C编程可提高DSP程序的可维护性、可移植性、可继承性,便于缩短软件开发周期,因此本DSP程序选择采用C语言编写。
5.1软件模块划分
软件层次结构和模块划分如图3所示。DSP软件的主要部分是底层的四个功能模块,这四个功能模块分别完成以下操作:1. 从输入FIFO中读取两条方位线数据(每条方位线2048点,每点数据类型为短整型)到DSP内存中;2. 将读入的数据按顺序存储到SDRAM中;3. 把SDRAM中的数据沿距离线顺序读到DSP内存中,即完成转置操作;4. 把转置后的数据送至输出FIFO。
5.2软件各模块间关系
上电初始化模块:在DSP上电后,完成与硬件工作有关的各控制寄存器的初始化,以及与软件工作有关的各内部变量和存储区的初始化;
主处理模块:调用其它功能模块,完成整个逆存储转置流程;
数据输入模块:受主处理模块调用,利用EDMA完成数据输入;
写SDRAM模块:受主处理模块调用,利用EDMA完成数据写操作;
读SDRAM模块:受主处理模块调用,利用EDMA完成数据读操作;
数据输出模块:受主处理模块调用,利用EDMA完成数据输出。
5.3 C6415的EDMA控制寄存器
EDMA是C621x/671x/641x特有的数据存取方式。在C621x/671x/641x中,EDMA控制寄存器负责片内二级存储器与其它外设之间的数据传输。EDMA控制寄存器和DMA控制寄存器在结构上有很大不同。其增强之处包括:
提供了64个传输通道;
通道间优先级可设置;
支持不同结构数据传输的链接。
EDMA控制寄存器主要由事件(中断)处理寄存器、事件编码器、参数RAM以及硬件地址发生器构成。其中,事件(中断)处理寄存器负责对EDMA事件进行捕获。一个事件相当于一个同步信号,由它触发一个EDMA通道开始数据传输。如果多个事件同时发生,则由事件编码器对它们进行分辨,将同时发生的事件进行排序,并决定事件的处理顺序。EDMA的参数RAM中存放了有关的传输参数,这些参数会被送往硬件地址发生器,进而产生读写操作所需的地址。
5.4 ICTM软件设计流程
ICTM模块软件设计流程可用图4来表示。首先完成上电复位,初始化EMIFA和EMIFB配置寄存器、中断控制寄存器和EDMA控制寄存器,之后在主程序中完成各常量和变量的定义及初始化。完成上述初始化定义后就可以使能外部中断控制寄存器和EDMA控制寄存器,等待外部中断INT4的触发。INT4的触发源来自脉冲PRF,该脉冲的到来说明两条待输入的方位线数据已送至输入FIFO,此时CPU可以将这两条方位线数据读到DSP内存,并送至SDRAM的相应存储区。
由于输入/输出数据结构相对简单,读输入FIFO、写SDRAM、读SDRAM以及写输出FIFO四个过程可以采用“EDMA链(EDMA Chain)”的方式进行。即第一个EDMA传输完成后,紧接着启动第二个EDMA传输,直到最后一个EDMA传输完成,这样可以在不受CPU干预的情况下完成数据的搬移,有利于提高数据传输效率。
5.5 软件并行设计问题
由于EDMA不受CPU干预,因此在使用EDMA传输数据的同时,CPU可并行执行其它指令,这样可极大提高代码的执行效率。举例如下:
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<64;i++)
{
headwriteaddr=inputa;
}
WORD_ALIGNED(inputb);
WORD_ALIGNED(inputc);
WORD_ALIGNED(inputa);
#pragma MUST_ITERATE(64,,8);
for(i=0;i<4096;i++)
{
inputb=inputa[2*i+64];
inputc=inputa[2*i+65];
}
}
其中EDMA_setChannel(hEdmaCha25)语句用来启动EDMA25通道的传输,完成从SDRAM读取转置数据的任务。EDMA在进行数据传输的同时,CPU则继续执行之后的三条语句headwriteaddr=inputa、inputc=inputa[2*i+65]、inputb=inputa[2*i+64],直到EDMA传输完成并发出中断,CPU才响应EDMA中断。
显然,采用上述并行处理的方式,CPU工作周期得到充分利用,提高了代码的执行效率,有利于满足系统的实时性要求。
6.结束语
逆存储转置器(ICTM)是合成孔径雷达(SAR)实时成像处理系统的一个重要模块。本文选择TI的一款高性能定点DSP芯片TMS320C6415为核心处理器,两条大容量SDRAM作为外部存储器,实现输入数据的逆存储转置操作。软件编程采用并行处理方式,提高了代码执行效率。单板测试和系统联调表明,设计的逆存储转置器满足各项性能指标,已通过项目组验收,即将投入实际应用。 |