×
FPGA/DSP > DSP系统 > 详情

基于DSP的数据处理模块的设计

发布时间:2020-06-30 发布时间:
|

  在TWS雷达系统中,对跟踪目标的数据进行处理常常要进行卡尔曼滤波。卡尔曼滤波是一种最优估计的递推滤波算法,具有实时性好和精度高的特点。但是由于其算法中多为矩阵运算,所以较其它算法如最小二乘法、α-β算法等的运算量要大。为了减小运算量以满足系统反应时间的要求,应用中往往采用简化的卡尔曼滤波算法,但这样又会带来滤波精度的降低。在设计卡尔曼滤波数据处理模块时,为了解决该矛盾,采用了高速浮点型DSP TMS320C31。TMS320C31是美国TI公司的第三代DSP产品,其内部采用程序和数据分开的哈佛结构、流水线操作以及并发I/O和CPU操作。芯片内含有专用硬件乘法器和桶形移位寄存器,具有32位的浮点精度,特别适合类似卡尔曼滤波这样运算量大、实时性和计算精度要求高的场合。

  1 卡尔曼滤波算法

  卡尔曼滤波器的状态方程和量测方程如下:

  

  ρ(K),分别为距离和径向速度的估值

   θ(K)、分别为方位角和方位角速度的估值

   U1(K)表示T时间内径向速度的变化量

   U2(K)表示T时间内方位角速度的变化量

   V1(K)为距离量测噪声

  V2(K)为方位角量测噪声

   Z1(K)和Z2(K)分别为距离和角度的测量值[page]

  滤波器递推方程为:

  其中, G(K)为卡尔曼增益矩阵

  Q(K)、R(K)分别为状态噪声协方差矩阵和量测噪声协方差矩阵

    

  2 基于TMS320C31的数据处理模块的工作原理

  2.1 多处理器工作模式下主机和TMS320C31数据通信的设计

  数据处理模块由双口RAM IDT7134、TMS320C31(以下简称C31)、EEROM 28F010和高速RAM CY7C199组成,通过ISA总线和主计算机连接起来,构成主从式多处理器工作模式,如图1所示。主从式处理器系统的设计关键在于处理器之间的数据交换,主从处理器间的数据交换主要有串行、并行、DMA及双口RAM四种交换方式。本方案采用IDT公司的双口RAM IDT7134实现主计算机和C31间的数据交换。IDT7134内部含有4KB的存储器资源,具有两组地址、数据总线及读写控制线。主计算机和C31可同时对其进行读写操作。在对其内部同一存储单元访问时,要考虑写入和读出数据的完整性。IDT7134没有单独的主从处理器访问控制引脚,设计时需用软件方式来保证主计算机和C31之间数据交换的正确性。本方案中采用了在IDT7134中设置输入输出semaphore的方案,即主计算机在将跟踪雷达的测量数据写入双口RAM后,设置输入semaphore,通知C31读取测量数据。C31进行卡尔曼滤波后,将滤波结果写入双口RAM,设置输出semaphore,通知主计算机读取。双口RAM的数据宽度为8位,C31数据总线宽度为32位。双口RAM的数据总线和C31低8位数据总线相接。为了提高数据处理的精度,双口RAM中的跟踪数据和C31的滤波结果都以字(32位)为单位进行存储,C31作卡尔曼滤波时,首先按字节读取跟踪数据,然后进行移位,拼接成32位整形数,再将整形数转换为浮点数,进行滤波运算。输出时,则将浮点型的结果转为整形数,按字节写入双口RAM中。双口RAM空间分配如图2所示。

  [page]

  2.2 C31的系统装入和管理

  C31有两种工作模式,即微处理器和微计算机方式,本方案中,C31的MCBL/MP脚接高电平,C31工作于微计算机方式。C31具有程序引导功能,其内部固化有引导程序(BOOT),可将来自其它处理器、低速EPROM或其它标准的存储器件的程序和数据装入到高速静态RAM中以全速运行。C31有两种装入方式可供用户选择:串行装入方式和存储器装入方式。存储器装入方式根据地址的不同又分为三种:BOOT1、BOOT2、BOOT3。C31通过查询四个中断引脚确定装入方式,引脚低电平有效。在本方案中,C31的INT脚接低电平。C31采取BOOT2的引导方式,将从0x400000处开始的程序存储器中的卡尔曼滤波程序以8位字节方式引导到首地址为0x100000的高速RAM中。采用外部存储器装入时,需在程序前加装程序头。程序头包括下列信息:

  (1)外部存储器的宽度(8/16/32位);

  (2)程序代码块的长度;

  (3)装入的目的起始地址;

  (4)存储器访问的定时控制。

  程序头内容安排见表1。

  

  本方案中程序头配置如下:“08 00 00 00 F8 10 00 00 FF 20 00 00 00 00 10 00”,包含以下信息:①外部程序存储器宽度为8位;②EPROM需要7个等待状态;③装入的目的起始地址为0X100000;④程序代码块长度为20FF。程序头在存储器的0X400000开始存放。[page]

  C31的EMU0~EMU3为4个仿真引脚,H3为时钟引脚,按照MPSD仿真头的定义将其和仿真器相连。C31的仿真器没有采用传统的电路仿真器,而是采用先进的扫描仿真器,扫描仿真器通过DSP芯片上提供的仿真引脚和时钟引脚实现仿真功能。用户程序存储在目标系统的片内或片外存储器中,可实时运行,而不会因仿真器引入额外的等待状态。

  3 数据处理模块的软件设计方法

  数据处理模块的软件设计是在TI公司的DSP集成开发环境CCS下进行的。它有C2000CC、C3000CC、CCS5000、CCS6000等4个不同版本。对于C31来讲,可采用C3000CC版本的软件。编程语言既可选择C31的汇编语言也可使用C语言。汇编语言在低层的初始化和I/O控制编程方面效率高,但对于类似卡尔曼滤波这类复杂控制算法的编程却不如C语言简捷,且汇编语言的可读性和移植性差。因此这里采用C语言进行程序设计。设计过程如下:

  (1)在CCS下用C语言编辑卡尔曼滤波源程序;

  (2)编写链接命令文件,即扩展名为·cmd文件;

  (3)建立扩展名为·mak的工程文件,将卡尔曼滤波源程序、链接命令文件以及支持库RTS30·LIB加入到所建立的工程中去;

  (4)对该工程进行build,若无错误,即生成扩展名为·out的文件。

  生成的·out文件可通过仿真器进行调试。调试完成后,将·out文件保存为·out(coff)格式文件。在编程器中对该文件进行修改,把程序头加到卡尔曼滤波程序的前面,一起写入EPROM。

  图3和图4给出了数据处理模块的流程图,主计算机和C31可并行工作,通过双口RAM中的semaphone进行查询和设置,完成它们之间的数据交换,进而对跟踪目标实现数据处理。

  

  本文介绍了卡尔曼滤波以及基于DSP的卡尔曼滤波器数据处理模块的原理,该模块具有运算能力强和实时性好的特点。在对跟踪目标进行卡尔曼滤波时,其处理周期仅有几十个μs,能很好地满足TMS雷达系统中数据处理任务的需要。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机程序的三种方式介绍