一种2FSK解调算法的DSP实现
摘 要:详细地介绍了一种2FSK非相干解调算法,算法涉及到接收信号的相位延迟,因为在用DSP实现时,与相位延迟对应的时间延时不可能恰是采样周期的整数倍,所以算法借助一个单零点的FIR滤波器来解决非整数延时问题。**重点推导了单零点FIR滤波器系数的求解公式,并给出了用DSP软件实现的算法流程图。
关键词:2FSK解调;数字信号处理(DSP);数字滤波;群延时
频移键控FSK(Frequency ShiftKey)调制是用数字基带信号来控制高频载波频率的变化,调制后的载波信号频率代表了要传送的数字信号。二进制FSK(2FSK)是用2个高频载波f1和f2来表示2个数字信号“1”或“0”,其信号的典型波形如图1所示。
由于FSK系统受幅度非线性的影响小,且很容易用软件来实现,所以FSK在中低速数据通信系统中得到了广泛地应用。
FSK解调有相干解调和非相干解调,虽然相干解调抗干扰性能好,但他要求设置与发送设备中的高频载波 同频同相的本地参考载波,使设备复杂,因此一般数字调频系统都采用非相干解调。常用的非相干解调算法有过零检测法和包络检测法。过零检测法的基本原理是根据频移键控过零率的大小来检测已调信号中频率的变化。 输入已调信号经过限幅、微分、整流后形成与频率变化相应的脉冲序列,由此形成一定宽度的矩形波,然后经 过低通滤波滤除高次谐波后再进行抽样判决,即可得到原始的调制信号。过零检测法多用硬件电路实现。包络检测法的原理如图2所示,输入信号先经过一对窄带的带通滤波器滤波,得到代表数字信号的高频载波f1和f2,经过包络检波器后分别取出他们的包络,最后将2路输出同时送到抽样判决器进行比较,从而判决出基带数字信号。 下面介绍一种新的可用DSP软件实现的FSK非相干解调算法,他不需要经过2路窄带带通滤波。
1 正交自延时FSK解调算法
算法的基本思想是已调信号和他的pi/2的延时信号相乘,然后经过低通滤波,根据滤波结果的符号判断发送信号的值,从而实现信号的解调。
算法原理图如图3所示。
设已调FSK信号表达式为: 其中:ωc为载波角频率;δω为其频偏(设δω>0);φ为初始相位;ωc+δω表示发送信号0;ωc-δω表示发送信号1。
R(t)的τ延时信号为:
求原信号R(t)与其自延时信号R(t-τ)的乘积:
(3)这里系数2只是为了抵消乘法结果的系数。
设ωc·τ=π/2,则式(3)经过低通滤波后为:
这样根据滤波结果的符号就可判断发送信号的值:负号表示发送信号0,正号表示发送信号1。
由ωcτ=π/2,得τ=π/(2ωc)=1/(4fc)(fc为载频),如果在模拟系统中,这个τ比较容易实现,但是在数字系统中,信号一般先以一定的采样率进行数字化,然后才进行解调等处理。显然数字信号的τ延时不可能恰是采样周期的整数倍,对于信号的整数倍延迟比较容易实现,比如在各种单片处理器系列中,可使用数据移动指令来实现,而对于小数倍延时,可用一个单零点的FIR滤波器来实现。
2 π/2相位延迟的实现
我们不仅要用单零点FIR滤波器来实现分数延时,而且利用FIR滤波器群延时的概念,使得这个分数延时对应的就是总的相位延迟。
单零点FIR滤波器的差分方程为:
其中:
设计该滤波器的目的就是给接收信号引进精确的群延时τ,这时分数倍延时α代表的是总的相位延迟π/2,τ定义为:
将式(13)带入式(14),得: 其中:归一化角频率ω=2πf,f=fc/fs,fc和fs分别是载波和采样频率。
在用DSP软件实现FSK信号的解调处理时,设INPUT,DELYT是连续存储器位置变量,且令:
则有:
解调变量说明:
设FSK信号的采样率为9 600 Hz,波特率为300 Hz,则每个波特率周期内的样点数为32。
LPFOUT 低通滤波输出;
DZONE 包络检波器的判决门限;
SAPDAT 当前波特率周期内采样点的数据估计;
BAUDCT 当前波特率周期内采样点的计数;
BFDAT 前一个波特率周期(码元)的数据估计;
STWD DSP送入MCU的状态字;
TRANCNT 设定的数据转变发生的条件;
CNTR 当SAPDAT与BFDAT不同时,CNTR加1。若在BAUDCT达到32之前,CNTR已经达到了TRANCNT,就认为数据转变发生了,对BFDAT取反。
解调算法流程如图4所示。
3 结 语
本文给出的FSK解调算法结构简单,用DSP软件实现容易。应用该算法前,通常数字化后的FSK信号先要通过一个中心频率为载频的FIR数字滤波器进行窄带滤波,然后才进行信号的解调接收处理。算法中的低通滤波器可以采用IIR滤波器,其阶数比较低,对DSP来讲,运算量不大。用DSP软件实现数字滤波和FSK解调,可以简化数字系统的硬件电路,提高系统的可靠性和灵活性。
|