车载FSK信号的2种解调算法及其DSP的应用实现来源:来源:微计算机信息作者:作者:徐晔摘要:基于16位定点运算精度的TMS320C2812DSP芯片,对车载FSK信号进行解调,并提出了2个软件解调算法方案。关键字:DSPTMS320C2812FSK过零计数FFT1引言频移键控FSK(frequency2shiftkeying)信号具有数字通信的诸多优点,同时有效带宽小,铁路中就广泛使用它来传送各种控制信息。但是随着铁路机车的不断提速,老式的铁路信号检测系统已经越来越不适用,因此也需要研究新的快速智能化解调算法来提高检测质量与检测手段。本文提出了2种行之有效的实时高精度检测FSK信号的方法,并利用DSP技术使之成为一种便携检测设备。2FSK频移键控FSK(FrequencyShiftKey)调制是用数字基带信号来控制高频载波频率的变化,调制后的载波信号频率代表了要传送的数字信号。二进制FSK(2FSK)是用2个高频载波f1和f2来表示2个数字信号“1”或“0”,其信号的典型波形如图1所示。由于FSK系统受幅度非线性的影响小,且很容易用软件来实现,所以FSK在中低速数据通信系统中得到了广泛地应用。3DSP芯片介绍TMS320F2812DSP(数字信号处理器)是TI公司最新推出的数字信号处理器,该系列处理器是基于TMS320C2xx内核的定点数字信号处理器。器件上集成了多种先进的外设,而且代码和指令同F24X系列数字信号处理器完全兼容,从而保障了项目或产品设计的可延续性。同F24X系列数字信号处理器相比,F281x系列数字信号处理器提高了运算的精度(32-bit)和系统的处理能力(达到150Mips)。该系列数字信号处理器还集成了128K的Flash存储器,4-K字的引导ROM,数学运算表以及2K字的OTPROM,从而大大改善了应用的灵活性;128-bit的密码保护机制有效的保护了产品的知识产权。和许多其它种类DSP一样,TMS320F2812采用经典的哈佛总线结构,利用多总线在存储器、外围模块和CPU之间转移数据。程序读总线有22根地址线和32根数据线,数据读写线都是32位,这种多总线结构使得它可以在一个周期内并行完成取指令、读数据和写数据,同时它也采用了指令流水线技术,使得信号的处理速度明显提高,完全可以达到我们实时解调处理信号的要求。不仅如此,TMS320F2812还包含多达16路AD转换通道,被分为两组,AD0~AD7为一组,AD8~AD15为一组。每组都有一个专门的输入端。事件管理器可将ADC配置为两个独立的8通道模块,也可串接成为一个16通道的模块。尽管有多个输入通道和两个序列发生器,转换器只有一个。8通道模块会将8路输入自动排序,并按序选择一路输入进行转换,转换完成后的结果保存在对应的结果寄存器中。在串接模式下,自动序列发生器将成为16通道的发生器自动序列发生器允许对同一个通道的信号进行多次转换,这主要用于过采样的算法中。与单采样AD转换模块相比是个进步。这样的多通道高速AD转换器使得我们可以对铁路通信中不同制式的FSK信号进行采样,当制式发生变化时,我们随之变换转换通道,使得我们的采样数据与信号制式保持严格的同步。除此之外,DSP还有许多其他的高速外设及接口,最多可扩展1.5Mx16bit存储器;3个32-bitCPU定时器及一个看门狗定时器;两个事件管理器;两个通用目的16-bit定时器;8个16-bitPWM通道;PWM死区配置;外部可屏蔽保护中断;3个比较单元和个事件捕捉单元;双编码器脉冲接口异步模数转换单元。改进的eCAN2.0B接口模块;多种串行通信接口(2个UART、1个SPI及1个MCBSP);高性能低功耗,采用1.8V内核电压和3.3V外围接口电压。4过零计数解调算法由于铁路上噪音干扰极大,当DSP集成的12-bitADC将信号采入后,虽然硬件部分已经做了很好的滤波,可是为了增加产品可靠性,我们还做了软件滤波。随后将虑过的数字信号进行过零计数,由于AD采样频率恒定,因此,采样数据的个数与时间成正比。我们通过计算载波信号2个相邻零点的内得采样数据个数就可以计算出载频的频率。当载频发生变化时,再次进行记录,从而算出信号频率。最后根据计算出的不同的信号频率推断出信号的含义,从而立即发出指令,保证其实时性。过零计数算法主要流程图如下图2过零计数算法流程其中,为了提高可靠性和抗干扰性,我们在计算载波频率时,往往取多个周期的载波信号后,再判断其频率。允许的频率误差也被设定到一定范围内。同时,我们对没有载波信号或频率出错也做了充分的考虑,一切可能出现的错误都将上报到判决执行状态机内。在频率判决时,由于信号频率种类比较多,因此,在查找信号频率所对应的上下限区时,我们采取折中查找法,大大的提高了算法效率。5FFT算法5.1FFT介绍傅利叶变换是一种将信号从时域变换到频域的变换形式,是声学,语音,电信和信号处理等领域中的一种重要的分析工具。离散傅利叶变换(DFT)是连续傅利叶变换在离散系统中的表示形式。由于DFT的计算量很大,因此在很长一段时间内其应用受到很大的限制。快速傅利叶变换(FFT)是快速计算DFT的一种高效方法,FFT的出现使DFT的运算大大简化,运算时间缩短了一至两个数量级,从而使DFT在实际中得到了广泛的应用。DSP芯片的出现使FFT的实现变得更为方便。由于大多数DSP芯片都能在一个指令周期内完成一次乘法和一次加法,而且提供专门的FFT指令,使得FFT算法在DSP芯片上实现的速度更快。5.2FFT算法原理离散傅里叶变换为:按时间抽取的基2-FFT将输入序列按时间上的次序是偶数还是奇数不断地分解为两个更短的子序列,直到最后的子序列为2点。2点DFT运算称为蝶形运算,而整个FFT就是由若干级迭代的蝶形运算组成,而且这种算法采用原位运算,故只需N个存储单元。5.3通过FFT算法实现FSK解调以下是TI公司为其DSP器件做出了FFT等软件模板库图3FFT软件模板库表1FFT软件模板库根据模板库,首先,对输入的离散数字序列x(n)进行FFT(n=0,1,2,...,N-1),得到频谱序列X(k)(这里k=0,1,2,...,N-1),由于实信号的FFT具有对称性,取X(k)的右半边(k=0,1,2,...,N/2-1),其频谱如左图所示,2FSK信号有两个载波频率f1,f2。显然,可以从频谱中求出一个最大值作为对其中一个载频的估计,假设为f1,但无法确定f2,因为它不一定是次大值。故进一步将频谱序列X(k)离散化,即当X(k)≥VT,X(k)=X(k);当X(k)VT,X(k)=0。其中,VT为离散化时的门限值。离散化后的频谱如右图所示。在f1与f2之间存在若干个0值,因此,可以利用这若干个0值将f1、f2划分在不同的区间内,分别在各自的区间内求出最大值,即为对载频的估计。图4信号频谱估计出载波频率后,根据载波频率的变化,进一步可以算出信号频率。从而根据信号频率发送指令。6算法调试结果分析我们选择最高载频的车载fsk信号(2600hz上下频偏11hz)。AD采样后输入,由于干扰信号的存在,解调出的信号频率并不完全和想象的相同,这就要求我们在判决频率时充分考虑误差,但又不能误判。通过以下三点对信号判决部分算法进行改进。(1)在提取实际信号频率值后,将进行信号分析,判断出信号是具有实效性还是非法信号。(2)对有效的实测数据集进行分析,提取出输入输出映射关系清晰明了的数据集,作为经验知识存入经验知识库。(3)在实际信号数据与经验数据进行映射时,充分考虑据有实效性的测数据的允许误差。不仅根据经验数据库数据,还根据历史实测数据进行信号频率分析判决。之后再进行调试,算法抗干扰性大大增强。7结束语两套算法在实际FSK信号解调中都显示出其可行性。其中,过零计数算法运算效率较高,占用CPU系统资源较少,但是,当信号干扰十分大时,FFT算法又显示出其较强的抗干扰性。