-1-
分布式光纤传感检测在 DSP下的设计与实现
李辉,李蔚,张慧娟
北京邮电大学信息光子学与光通信研究院,北京 (100876)
摘 要:本文给出了一种光纤振动传感检测在 TI C6416 DSP下实现的方法。传感器在朝着
灵敏、精确、适应性强的方向发展的过程中,光纤传感器因其抗电磁干扰、无电感应、耐受
性好等因素倍受青睐。分布式光纤传感系统是利用光线作为传感敏感元件和传输信号介质,
采用 OTDR 技术,探测出沿着光线不同位置的温度和应变的变化。DSP 主要是用于大量的
FFT、IFFT数值运算比较方便,本文将结合二者来阐述一个实现过程,最终实现光纤振动检
测的功能,也为传感器的 DSP的数值运算方面起到一个抛砖引玉的作用。
关键词:分布式光纤传感器;DSP 库函数;快速傅里叶变换;数字信号处理器/基本输入输
出系统-实时操作系统
中图分类号:
1 引 言
近年来,光纤干涉测量学成功应用于商业框架下的测量。其应用领域很广,几乎各行各
业有温度和形变的测量都可以采用光纤干涩测量学进行分析、检测和后续的处理[1]。光纤干
涉测量学在形变上的测量主要应用于与安防等领域。本文开头简要介绍了光纤传感系统的原
理,着重介绍了具体的算法在 TI C6416 DSP 下的实现和效率分析。
2 光纤传感系统的简要介绍
光纤传感振动检测原理
用单模光纤做干涉仪的光路,同时也是相位调制原件,贝尔物理量作用于光纤传感器,
导致光纤中光相位的变化或者光的相位调制,再用干涉技术把相位变化变换为振幅变化,从
而还原所检测的物理量。具体在安防设备上,传感光纤上产生的扰动,导致光信号相位变化,
如果将扰动信号看做一种对传感区域的入侵,对这些信号进行检测和识别,即可实现对入侵
信号的报警。
所以对于安防上的振动检测,主要就是两点,一是检测,二是模式识别,也就是采样到
的数据和模版数据的比较。
光纤传感振动检测算法
光纤振动传感检测的最核心的原理还是随机信号功率谱的估计。
所谓谱估计或者功率谱估值,就是用已观测到得一定数量的样本数据估计一个平稳随机
信号的功率谱。这是因为功率谱在随机信号的分析和变换中起着类似于频谱在确定性信号的
作用。随机信号是一种无始无终,能量无限的信号,其傅里叶变换不收敛,所以不能像确定
性信号那样获得此信号的频谱,随机信号一般都是功率受限信号,所以对于随机信号一般使
用功率谱来描述其频率特性。
功率谱估计分为 2 大类,一类是非参数化方法,另一类是参数化方法。非参数化方法又
叫做经典谱估计法,实质上依赖于传统的傅里叶变换法。经典法的缺点是估计方差大,谱分
辨率差(分辨率大约是数据长度的倒数),而且除了能够得到的值以外,认为其余的值都是
0,这是和事实情况严重不相符合的。参数化方法主要能够改进分辨能力,比较常用的是自
中国科技论文在线
-2-
回归模型法,最大熵法和最大似然估计等等。但是也有一个问题,就是在信噪比很小的时候
估计得不太好。
本实验中采用自回归(AR)模型方法去解决功率谱估计得问题。
3 实验所有的软硬件简介
C6000 是 TI 公司于 1997 年推出的 DSP 芯片。C6000 片内有 8 个并行处理单元,分为
相同的两组,其体系结构采用甚长指令字(VLIW)结构,单指令字长为 32bit,8 个指令组
成一个指令包,总字长为 8*32=256bit。芯片内部设置了专门的指令分配模块,可以将每个
256bit 的指令包同时分配到 8 个处理单元,并由 8 个单元同时运行。C6416 具有四个版本,
分别是 600MHz、720M、850M 和 1GHz,当 8 个单元同时运行时,对 600MHz 版本而言,
其最大处理能力可以达到 600*8=4800MIPS,本项目中使用的 CPU 的主频是 720MHz。采用
的开发环境是 [2]。
片上有 1024KB的可用内存,本实验所用的板卡片外使用的是 64MB的 SDRAM存储器,
使用 2 片 Micron(美光)MT48LC8M32B2 颗粒,构成 8MegaBit×32M×2=64MB 结构。还有
1MB Flash 存储器,使用 1 片 AMD-Fijitsu 生产的 AM29LV400B Flash 芯片[3]。
其中 SDRAM 是连接在 EMIFA 上,Flash 是连接在 EMIFB 上。
在使用板卡之前必须先配置 EMIF 口,参考的文档是:-spra433a-TMS320C6000 EMIF to
External SDRAM_SGRAM Texas Instruments 和-spru266a-TMS320C6000 DSP
EMIF , Texas Instruments。如下配置:
表 1 美光芯片定时和寻址参数[4]
Speed Grade Clock Frequency Access Time CL=3 Setup time Hold Time
-6 166MHz 1ns
-7 143MHz 2ns 1ns
Configuration 2Meg×32×4Banks Row Addressing 4K(A0-A11)
Refresh Count 4K Bank Addressing 4(BA0,BA1)
Column Addressing 512(A0-A8)
通过以上参数表对照 EMIF 文档,即可设定好 EMIF 连接参数[5][6]。
EMIFA_Config emifaConfig = {
0x000000A0, /* Global Control Reg. (GBLCTL) */
0xFFFFFFD3, /* CE0 Space Control Reg. (CECTL0) */
0x00000000, /* CE1 Space Control Reg. (CECTL1) */
0x00000000, /* CE2 Space Control Reg. (CECTL2) */
0x00000000, /* CE3 Space Control Reg. (CECTL3) */
0x53126000, /* SDRAM Control Reg.(SDCTL) */
0x025DC5DC, /* SDRAM Timing Reg.(SDTIM) */
0x00054529, /* SDRAM Extended Reg.(SDEXT) */
0x00000002,/*CE0 Space Secondary Control Reg.(CESEC0) */
0x00000002, /*CE1 Space Secondary Control Reg. (CESEC1)*/
0x00000002, /*CE2 Space Secondary Control Reg. (CESEC2)*/
0x00000002 /*CE3 Space Secondary Control Reg.(CESEC3) */
};
EMIFA_config(&emifaConfig);
中国科技论文在线
-3-
EMIFB 可与 EMIFA 同样的连接参数。
另外 EDMA 也需要配置,才能通过 EMIF 与外部的 SDRAM 传输数据,当然,只要配
置了 EMIF 就能够对片外地址进行操作,也可以使用 memcpy 等函数进行访问,但是速度上
是很慢的。EDMA的配置参考:-spru234b-TMS320C6000 DSP EDMA Controller Ref ,
Texas Instruments.和-spraa36-External Programming of the TMS320C64x 以及示例
代码, Texas Instruments。在此就不一一说明了,根据需要参照示例代码自己设置一个
EDMA_OPT_RMK 的值即可[7[8]。
4 DSP/BIOS 实时操作系统程序实现
程序流程
本程序使用的是 DSP/BIOS RTOS,程序流程图如下页图所示:
在程序进入主程序前需要对程序参数进行必要的设定:
toleranceRange = 50; // 容忍范围,指定程序最后定位的搜索区间是在多大的范围内搜
索最大相关值。processLength = _32K; // 处理长度,指明一次处理的长度是 32K 还是 64K。
在定点 DSP 上处理浮点数据的时候,需要将数据先定点化处理才行。即将数据扩大一
定的倍数形成所谓的 Qint,如果浮点数乘以 65536(即 216),则就是 Q16 小数表示法,以此
类推。
DSP 芯片在处理 FFT,自相关等运算的时候,最好使用 TI 公司提供的 DSPLIB,主要
参考资料是: -spru565b-TMS320C64x DSP Library Programmer's [9], Texas
Instruments.和-spra884a-Signal Process Examples Using C64x [10]以及示例代码,
Texas Instruments.本程序在模式识别过程中使用的是 1K 点的 FFT,在定位的过程中使用的
是 32K 点 FFT。函数的原型是:void DSP_fft32×32(const int * restrict w, int nx, int * restrict x,
int * restrict y)。其中 w[2*nx]是复数的 FFT 旋转因子,使用 DSPLIB 附带的程序
tw_fft32× 生成,scale factor(标度因子)为 ;nx 是 FFT 点数,必须是 2
或者 4 的幂,值必须介于 16 和 32768 之间(包括 16 和 32768);x[2*nx]是交替存放的 nx
个复数输入值;y[2*nx]是交替存放的 nx 个复数输入值。
另外,本函数是不带防溢出功能的,使用本函数的时候必须将输入的数值进行缩小,否
则计算的时候会溢出,输入数据必须除以 2^log2(nx),从而完全防止计算溢出。
注意事项和程序优化
由于片内运算速度快,所以一般地都会将片外数据导入到片内使用,这样机会涉及到堆
空间的分配。一般地 1MB 空间对于大数据量的 FFT 运算是比较少的,所以一定要注意分配。
程序在分配空间的过程中可能会遇到分配顺序不对导致分配失败的例子。
表 2 分配堆空间不同顺序举例
关于表 2,如果按照第一种开辟空间的方法,如果 Free 掉 2×32766 Bytes 空间再分配
2×32768Bytes 空间,会失败。原因是找不到这样大的空间,所以在有限的堆空间中分配,
我们需要按照合理的顺序分配空间。
1 堆空间(768KB) 2×32768Bytes 2×32766 Bytes 2×32768 Bytes 4 Bytes
2 堆空间(768KB) 2×32768Bytes 2×32768Bytes 2×32766 Bytes 4 Bytes
中国科技论文在线
-4-
图 1 程序流程图
关于程序的优化,有一个原则,编译器是保守的,尽量告诉编译器我们确定的事实。
(1)用#pragma DATA_SECTION 预编译指令告诉编译器我们在什么地方分配空间。
(2)用#pragma DATA_ALIGN 预编译指令告诉编译器分配空间的对齐方式。
(3)用 restrict 关键字表明传入指针的空间是独立的。
(4)#define WORD_ALIGNED(A) (_nassert(((unsigned int)(A) & 0x3) == 0)) 用
此自定义宏告诉编译器内存字节对齐方式。
(5)循环尽量写成 2 的 N 次方,这样编译器会进行流水优化。
信号处理主循环
信号处理主循环前
系统加电
板卡启动
DSP/BIOS
系统初始化
主函数 main()
(1)CSL_init()系统初始化片级支持库
(2)cslCfgInit()初始化片级支持库的配置
(3)自定义程序的运行特征值设定
Return
启动任务START
调用start_calculate
DSP/BIOS
接管系统控制权
While ( FOREVER )
片内堆空间分配+
搬移数据+定点化
大于门限?
基础运算 fundmentalCalculation
减抽样
获取模式数据
模式数据基本
量值运算
对比模版
进行模式识别
否
定位处理 locationProcessReady
计算采样数据的偶数单元FFT结果
是
计算采样数据的奇数单元FFT结果
求解采样数据的互功率谱密度
互功率谱密度求解IFFT得到互相关值
在容忍范围内求解互相关峰值信号
得到定位结果
中国科技论文在线
-5-
(6)其它诸如小而常用的函数申请为 inline,for 循环减计数,C 编译器使用-o2 优化等
等。
效率分析
表 3 处理 32K 点和 64K 点的效率分析(比例为 64K 耗费周期数/32K 耗费周期数)
项目 32K 耗时周期 64K 耗时周期 比例
EDMA 传 65536 个 32Bit 522991 定浮点同 同左,相差无几 1
float2QInt 定点化函数 5473242 无此函数 N/A
基础量值计算(和与平均值) 定点 66067 浮点 6738708 100
计算模式模版均值和方差 定点 58272 浮点 225297 4
不同间隔的自相关值计算 定点 3538728 浮点 154179951 43
YuleWalker AR 系数计算 浮点 4798806 浮点 3491001
FFT 计算结束后除/移位 移位 2006 除法 150210 75
Px[i]值计算 定点 363446 浮点 1922815 6
样值处理后均值和方差 定点 1041 浮点 105975 100
定位中互功率谱密度运算 定点 254032 浮点 14307763 56
表 4 处理 32K 定点、64K 定点、64K 浮点的数据耗时表(周期/时间 ms)
项目 32K 定点 64K 定点 64K 浮点
总耗时 28489753/ 87153395/121 217883488/
5 结论
本文给出了一种在 DSP 上处理分布式光纤振动传感的方法,并给出了结论数据。总结
如下:
EDMA① 搬移数据是比较耗周期的,所以将长度缩小之后耗时缩短大约 60%,原因是
减少了 EDMA 搬移数据的次数。
② 定点 DSP 不具备浮点运算单元,故必须进行定点化,效率提升是非常明显的,大约
在 60%左右。
③ 当数据从 64K 进一步减少到 32K 之后,由于 FFT 运算和 IFFT 运算都变得简单,无
需进行复 FFT 结果拆分为实数 FFT 结果和重排的操作,因此进一步节省了周期数。
综上所述:程序由 64K 浮点优化到 64K 定点,继而更改 32K 定点是正确的方向,尤其
是 64K 定点到 32K 定点的处理,数据减少一半,时间减少了 67%,是非常划算的,如果 16Bit
的精度够的话,下一步应该考虑处理 16Bit 的 32K 数据来看看是否可行,本文没有实现这一
点了。
中国科技论文在线
-6-
参考文献
[1] , , and Interferometric distance sensors. Optical Sensors and Microsystems: New
Concepts, Materials, Technologies. 2000, 15-30
[2] 李方慧,王飞,何佩琨 TMS320C6000 系列 DSPs 原理与应用(第 2 版)电子工业出版社 2002 年 9 月
[3] AM29LV400B KGD DataSheet AMD-Fujitsu Inc.
[4] 10/04 EN 文档编号:09005aef8140ad6d, Micron Inc.
[5] -spra433a-TMS320C6000 EMIF to External SDRAM_SGRAM Texas Instruments.
[6] -spru266a-TMS320C6000 DSP EMIF , Texas Instruments.
[7] -spru234b-TMS320C6000 DSP EDMA Controller Ref , Texas Instruments.
[8] -spraa36-External Programming of the TMS320C64x 以及示例代码, Texas Instruments.
[9] -spru565b-TMS320C64x DSP Library Programmer's , Texas Instruments.
[10] -spra884a-Signal Process Examples Using C64x 以及示例代码, Texas Instruments.
Distributed Optical Sensor Detect Implementation in DSP
Li Hui, Li Wei, Zhang Huijuan
Institute of Photonics Information and Optical Communications, Beijing University of Post and
Telecommunications, Beijing(100876)
Abstract
In this paper, we give a method to implemented the distributed optical sensor detected in dsp platform.
The development direction of sensor has been towards the sensitive, accurate, strong adaptable
direction. The optical sensor has so many characteristics such as anti-electromagnetic interference,
no-electric induction, well-tolerated. Distributed optical sensor system use the optical fiber as the
light-sensitive element and signal transmission medium, it can detect the temperature and strain
changes along different locations of the is mainly used for large number of FFT, IFFT, and
correlation calculation. This paper will illustrated the implemented procedure by combine both DSP
and sensor algorithm and implemented the optical fiber vibration detection function. Also hope it play a
role in attraction valuable opinion in the value calculation on DSP platform.
Keywords: Distributed Optical Fiber Sensor System, DSPLIB, FFT, DSP/BIOS-RTOS
作者简介:李辉,男,1985 年生,硕士研究生,网络工程师,软件设计师,主要研究方向
是光纤传感,软件设计。
中国科技论文在线