相位生成载波(PGC)调制与解调讲解
相位生成载波(PGC )调制与解调
一、 PGC 调制
干涉型光纤传感器的解调方法目前主要有:相位生成载波解调法、光路匹配差分干涉法、差分时延外差法。由于相位生成载波解调信号有动态范围大、灵敏度高、线性度好、测相精度高等优点,是目前光纤传感干涉领域工程上较为实用的解调方法。[1]
相位生成载波的调制分为外调制和内调制。外调制一般采用压电陶瓷(PZT )作为相位调制器,假设调制信号频率为ω0 ,幅度为C ,调制信号可以表示为(1)式:
0(t)cos(t)C φω= (1)
则光纤干涉仪的输出的信号可表示为(2)式:
00cos[(t)(t)]cos[cos(t)(t)]s s I A B A B C φφωφ=++=++ (2)
式中,A 为直流量, B 为干涉信号幅度。s (t)Dcos(t)(t)s φωψ=+,其中,?s (t) 不仅包含了待测信号D cos ωs t ,还包括了环境噪声引起的相位变化ψ(t)。
将(2)式按 Bessel 函数展开,得到(3)式[2]:
k k 02k 02k 1010J (C)2(1)J (C)cos 2k t cos (t)2(1)J (C)cos(2k 1)t sin (t)s s k k I A B ωφωφ∞
∞+==??????
=++---+??
??????????
∑∑ (3)
二、 PGC 解调
微分交叉相乘(differential and cross —multiply ,DCM )算法和反正切算法是
两种传统的 PGC 解调算法,此外,文献[1]中还介绍了三倍频DCM 算法,基频混频PGC 算法,基于反正切算法和基频混频算法的改进算法,反正切-微分自相乘算法(Arctan-DSM )算法。下面分别介绍DCM 算法和反正切算法。 2.1 微分交叉相乘(DCM )算法 DCM 算法的原理图如图1所示:
图1 DCM 算法原理图
输入的干涉信号I 分别与基频信号10cos S G t ω=和二倍频信号20cos 2S H t ω=进行混频,再通过低通滤波器滤除高频成分,可以得到信号的正弦项(5)式和余弦项(6)
式:
1s (t)(C)sin (t)I BGJ φ=- (5) 2s Q(t)(C)cos (t)BHJ φ=- (6)
I(t) 、Q(t) 含有外界干扰,还不能直接提取待测信号,再通过微分交叉相乘(DCM )方法得到两个正交信号的平方项,利用sin 2?s + cos 2?s = 1消除正交量,得到微分量(7)式:
212s '(C)J (C)'(t)V B GHJ φ= (7)
经过积分运算再通过高通滤波器滤除缓慢变化的环境噪声, 最终得到的解调信号为得到(8)式:
[]2212s 12s (C)J (C)(t)(C)J (C)Dcos(t)(t)V B GHJ B GHJ φωψ==+ (8)
相位噪声项 ψ(t) 通常情况下为缓变信号,将V 通过高通滤波器滤除相位噪声,就可以得到待测信号,实现传感信号的解调(9)式。
212s (C)J (C)Dcos(t)out V B GHJ ω= (9)
由式(8)可以看出,最后的解调输出信号与待测信号成线性关系,因此与后面将要讨论的反正切算法相比,产生的非线性失真要小的多。但是由于输出信号中的干涉幅度B = κA ,而 κ 又与光传输中偏振态的变化有关,A 是与光源光功率的稳定度、光路中各环节光功率的衰减、光纤干涉仪输入的光强等因素有关的量。因此,解调信号幅度受调制深度、光强、光路损耗、耦合器分光比、偏振态等诸多因素的影响。[1] 2.2 反正切算法
反正切算法的原理如图2所示:
图2反正切算法原理图
反正切算法前端部分均与 DCM 法相同,只是该法在两路信号分别通过低通滤波器后,I(t) 、Q(t)进行相除得到(10)式[3]:
12(C)
(t)tan (t)(t)(C)
s GJ I Q HJ φ= (10) 对式(10)进行反正切运算,得到(11)式:
2s 1(t)*(C)
(t)Dcos(t)(t)arctan(
)(t)*(C)
s I HJ Q GJ φωψ=+= (11)
噪声项 ψ(t) 通常情况下为缓变信号,通过高通滤波器滤除环境噪声ψ(t) 即可得到待测信号Vout=D cos ωs t 。
与 DCM 算法相比,反正切算法通过除法运算,消除了B 对解调结果的影响,而且,如果令 G=H ,那么G 、H 对解调结果的影响也会被消除。同时,反正切算法比 DCM 算法原理相对简单,使得其解调算法比较简单,从而缩短了系统信号处理的时间,使系统的实时性得到了显著地提高。但是,由于调制深度(C 值)的偏差,使得J1(C) /J2(C)不等于1,从而使解调结果产生了非线性,同时带来了严重的谐波失真以及总谐波失真。[1]
C 选取的原则是C 的值尽可能小且是的J1(C )J2(C)的变化趋势趋于0。当C=2.37时,J1(C )J2(C)的导数为0,J1(C )J2(C)取得极大值。因此,对于PGC-DCM 算法的最佳调制度C=2.37.
而对于PGC-Arctan 算法来讲,解调的结果是与J1(C )/J2(C)相关。当C=2.63时,J1(C )/J2(C)=1,故对于传统的PGC-Arctan 算法来讲,C=2.63是最佳调制度。无论是PGC-DCM 算法还是PGC-Atctan 算法,C 选取的原则是选取一个恰当的值使得解调结果随着与C 相关的贝塞尔函数想的变化趋于稳定。[4]
根据文献[4],低通滤波器的截止频率应该满足:0/2pass f f <。D 的取值范围应该满足0(1)/2s D ωω+<。
三、 MATLAB 仿真
3.1 PGC 调制
设置采样频率为4MHz ,采样点数为10K 。 调制信号: C=2.37;%调制度
f0=50000;%载波频率50KHz
s1=C*cos(2*pi*f0/Fs*t);%调制信号 待测信号:
D=1.2;%待测信号幅度
fs=1200;%待测信号频率1.2KHz fn=10;%假设噪声频率10Hz sn=0.1;%噪声信号
s2=D*cos(2*pi*fs/Fs*t);%待测信号 调制后的信号: A=1; B=1;
s3=s2+sn;
I=A+B*(cos(C*cos(2*pi*f0/Fs*t)+s3));%调制后的信号
s1,s2,s3,I 对应的波形如图3:
图3 信号波形
3.2 微分交叉相乘(DCM )算法解调信号 分别乘以基频信号和2倍频信号 G=5; H=5;
mod1=G*cos(2*pi*f0/Fs*t); mod2=H*cos(2*pi*f0*2/Fs*t); x1=I.*mod1;%与基频信号相乘 x2=I.*mod2;%与2倍频信号相乘 低通滤波 % x1低通 % x2低通
LP=lowpassfilter;
x1_out=conv(x1,LP.Numerator);%I(t) x2_out=conv(x2,LP.Numerator);%Q(t) 微分
x11=diff(x1_out); x22=diff(x2_out); L=length(x1_out); DCM
x_d=(x2_out(1:L-1)).*x11-(x1_out(1:L-1)).*x22; %积分
for j=1:N-1
2000
4000
6000800010000
12000
-50
5(a)调制信号s1
2000
4000
60008000
10000
12000
-20
2(b)待测信号s2
2000
4000
60008000
10000
12000
-20
2(c)信号s3
500
1000
1500
2000
2500
3000
1
2(d)调制后的信号I
X(j)=0; end
for i=2:L-1
X(i)=X(i-1)+(x_d(i)+x_d(i-1))/2; %积分 end
去除低频信号 for i=2:L-1
XX(i)=X(i)-mean(X); end
解调前后的波形对比如图4所示:
图4 解调前后的波形信号
3.3 反正切算法解调信号 载波信号: C=2.63;%调制度
f0=50000;%载波频率50KHz
s1=C*cos(2*pi*f0/Fs*t);%调制信号
s1,s2,s3,I 对应的波形如图5:
20004000600080001000012000
-1.5-1
-0.5
0.5
1
1.5
图5 信号波形
解调前后的波形对比如图6所示,由于使用卷积运算,信号的前后有失真,长度为滤波器长度的一半Number/2(Number=256)。
图6 解调前后的波形信号
2000
4000
6000
800010000
12000
-50
5(a)调制信号s1
2000
4000
60008000
10000
12000
-20
2(b)待测信号s2
2000
4000
6000
800010000
12000
-20
2(c)信号s3
500
1000
1500
2000
2500
3000
1
2(d)调制后的信号I
20004000600080001000012000
-1.5-1
-0.5
0.5
1
1.5
参考文献:
[1] 张爱玲,王恺晗,等. 干涉型光纤传感器PGC解调算法的研究[J]. 光电技术应用,2013,28 (6):49-52.
[2] 夏东明,娄淑琴,等. 干涉型光纤传感器相位载波解调技术研究[J]. 光电技术应用,2011,26 (5):47-50.
[3] Gaosheng Fang, Tuanwei Xu. Phase-sensitive Optical Time Domain Reflectometer Based on Phase Generated Carrier Algorithm [J]. Journal of Lightwave Technology, 2015.
[4] 王燕. 干涉型光纤传感器及PGC解调技术研究[D]. 天津: 天津理工大学, 2013.
附录:
1. Bessel 函数展开
n 02n 1
cos(zcos )J (z)2(1)J (z)cos(2n )n θθ∞
==+-∑
n 2n 11
sin(zcos )2(1)J (z)cos[(2n 1)]n θθ∞
-==---∑
02n 1
cos(z sin )J (z)2J (z)cos(2n )n θθ∞
==+∑
2n 11
sin(zsin )2J (z)sin[(2n 1)]n θθ∞
-==-∑
2. PGC 调制+ DCM 算法解调信号(MATLAB 程序) %%PGC 调制% clc;
clear all; close all;
Fs=4000000;%采样率4MHz N=10*1024;%采样点数10K t=1:1:N;
C=2.37;%调制度
f0=50000;%载波频率50KHz
s1=C*cos(2*pi*f0/Fs*t);%调制信号
D=1.2;%待测信号幅度
fs=1200;%待测信号频率1.2KHz fn=10;%假设噪声频率10Hz
%sn=0.05*cos(2*pi*fn/Fs);%噪声信号 sn=0.1;%噪声信号
s2=D*cos(2*pi*fs/Fs*t);%待测信号
%调制 A=1; B=1;
s3=s2+sn;
I=A+B*(cos(C*cos(2*pi*f0/Fs*t)+s3));%调制后的信号 figure(1);
subplot(4,1,1),plot(s1);title('(a)调制信号s1'); subplot(4,1,2),plot(s2);title('(b)待测信号s2'); subplot(4,1,3),plot(s3);title('(c)信号s3');
subplot(4,1,4),plot(I),axis([1,3000,-0.2,2.2]);title('(d)调制后的信号I');
%分别乘以基频信号和2倍频信号
G=5;
H=5;
mod1=G*cos(2*pi*f0/Fs*t);
mod2=H*cos(2*pi*f0*2/Fs*t);
x1=I.*mod1;%与基频信号相乘
x2=I.*mod2;%与2倍频信号相乘
% x1低通
% x2低通
LP=lowpassfilter;
x1_out=conv(x1,LP.Numerator);%I(t)
x2_out=conv(x2,LP.Numerator);%Q(t)
%微分
x11=diff(x1_out);
x22=diff(x2_out);
L=length(x1_out);
%DCM
x_d=(x2_out(1:L-1)).*x11-(x1_out(1:L-1)).*x22;
%积分
for j=1:N-1
X(j)=0;
end
for i=2:L-1
X(i)=X(i-1)+(x_d(i)+x_d(i-1))/2; %积分
end
%去除低频信号
for i=2:L-1
XX(i)=X(i)-mean(X);
end
figure(2);
plot(XX./max(XX),'r');hold on;
plot(s3,'b');
legend('解调后的信号','s3');
3. PGC调制+ 反正切算法解调信号(MATLAB程序) %%PGC调制%
clc;
clear all;
close all;
Fs=4000000;%采样率4MHz
N=10*1024;%采样点数10K
t=1:1:N;
C=2.63;%调制度
f0=50000;%载波频率50KHz
s1=C*cos(2*pi*f0/Fs*t);%调制信号
D=1.2;%待测信号幅度
fs=1200;%待测信号频率1.2KHz
fn=10;%假设噪声频率10Hz
%sn=0.05*cos(2*pi*fn/Fs);%噪声信号
sn=0.1;%噪声信号
s2=D*cos(2*pi*fs/Fs*t);%待测信号
%调制
A=1;
B=1;
s3=s2+sn;
I=A+B*(cos(C*cos(2*pi*f0/Fs*t)+s3));%调制后的信号
figure(1);
subplot(4,1,1),plot(s1);title('(a)调制信号s1');
subplot(4,1,2),plot(s2);title('(b)待测信号s2');
subplot(4,1,3),plot(s3);title('(c)信号s3');
subplot(4,1,4),plot(I),axis([1,3000,-0.2,2.2]);title('(d)调制后的信号I');
%分别乘以基频信号和2倍频信号
G=5;
H=5;
mod1=G*cos(2*pi*f0/Fs*t);
mod2=H*cos(2*pi*f0*2/Fs*t);
x1=I.*mod1;%与基频信号相乘
x2=I.*mod2;%与2倍频信号相乘
% x1低通
% x2低通
LP=lowpassfilter;
x1_out=conv(x1,LP.Numerator);%I(t)
x2_out=conv(x2,LP.Numerator);%Q(t)
L=length(x1_out);
for i=1:L
XX(i)=atan(x1_out(i)/x2_out(i));
end
figure(2);
plot(XX./max(XX),'r');hold on;
plot(s3,'b');
legend('解调后的信号','s3');
4. 低通滤波器设计(使用fdatool设计滤波器)
完成之后点击 File->Generate MATLAB code ;生成滤波器lowpassfilter.m文件。.M文件内容:
function Hd = lowpassfilter
%LOWPASSFILTER Returns a discrete-time filter object.
%
% MATLAB Code
% Generated by MATLAB(R) 7.13 and the Signal Processing Toolbox 6.16.
%
% Generated on: 27-Oct-2016 16:10:36
%
% FIR Window Lowpass filter designed using the FIR1 function.
% All frequency values are in Hz.
Fs = 10000000; % Sampling Frequency
N = 512; % Order
Fc = 20000; % Cutoff Frequency
flag = 'scale'; % Sampling Flag
% Create the window vector for the design algorithm. win = hamming(N+1);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, Fc/(Fs/2), 'low', win, flag);
Hd = dfilt.dffir(b);
% [EOF]