天天看点

No.02 色散补偿 TSM算法 时域离散采样方法 MATLAB Python 代码实现

一定先看这篇预备知识全网首篇用人话讲清楚:光纤中的色散

对于单模光纤传输系统,色散补偿按照是否与偏振有关分为两部分,色度色散的补偿在第一部分,称这部分为静态均衡(均衡和补偿是同义词)。

所谓静态就是对于速率一定的光信号,不论调制格式如何,只要光纤长度一定,色散就一定。

色散(本篇专指与偏振无关的色散)对信号包络的影响可以表示成一个偏微分方程 ∂ U ( z , τ ) ∂ z = j D λ 2 4 π c ⋅ ∂ U ( z , τ ) ∂ τ 2 \frac{\partial U(z,\tau)}{\partial z}=j\frac{D\lambda^2}{4\pi c}\cdot \frac{\partial U(z,\tau)}{\partial \tau ^2} ∂z∂U(z,τ)​=j4πcDλ2​⋅∂τ2∂U(z,τ)​求解得频域传输方程 G ( z , w ) = e D λ 2 z j 4 π c ω 2 G(z,w)=e^{\frac{D\lambda^2z}{j4\pi c}\omega^2} G(z,w)=ej4πcDλ2z​ω2

时域冲击响应 g ( z , t ) = c j D λ 2 z e j π c D λ 2 z t 2 g(z,t)=\sqrt{\frac{c}{jD\lambda^2z}}e^{\frac{j\pi c}{D\lambda^2z}t^2} g(z,t)=jDλ2zc​

​eDλ2zjπc​t2

如此便将色散对信号的影响抽象成了信号通过系统的过程。

上述公式是根据光脉冲单模光纤内传输的非线性薛定谔方程导出的,对脉冲包络做了归一化引入了参数 U U U

对于时域均衡算法来说,只需要将色散时域冲击响应中的色散系数 D 取反,就能得到色散时域补偿滤波器的脉冲响应,即 g ( z , t ) = j c D λ 2 z e π c j D λ 2 z t 2 g(z,t)=\sqrt{\frac{jc}{D\lambda^2z}}e^{\frac{\pi c}{jD\lambda^2z}t^2} g(z,t)=Dλ2zjc​

​ejDλ2zπc​t2我们写程序的时候,肯定要把这个连续的脉冲响应,改写成离散的点,即对其进行采样。但是由于此脉冲响应是无限非因果的,采样会导致频率的混叠。 所以要把他截断为有限长度,来克服频率混叠的现象。

假设我们对此脉冲响应的采样时间间隔是 T T T,那么采样频率为 f s = 1 / T f_s=1/T fs​=1/T,奈奎斯特频率 ω n = 2 π f s / 2 = π / T \omega_n=2\pi f_s/2=\pi/T ωn​=2πfs​/2=π/T。如果截断后此均衡系统的频谱超过 ω n \omega_n ωn​,就说明 ω n \omega_n ωn​ 不够大,也就是我们的采样间隔 T T T 不够密集。

对信号截断等价于时域乘一个矩形窗,频域即卷积sinc函数,矩形窗越宽,卷积的sinc函数就越窄。所以也可以通过增加截断长度的方式使得均衡系统的频谱宽度降低,低于 ω n \omega_n ωn​,也能解决频谱混叠的问题。

脉冲响应的角频率 ω = ∂ φ ( t ) ∂ t = 2 π c D λ 2 z t \omega=\frac{\partial\varphi(t)}{\partial t}=\frac{2\pi c}{D\lambda^2z}t ω=∂t∂φ(t)​=Dλ2z2πc​t上面求得为瞬时频率,只需要是瞬时频率的所有瞬时值都满足 ∣ ω ∣ < ω n |\omega|<\omega_n ∣ω∣<ωn​,就能保证均衡系统的频谱都在 ω n \omega_n ωn​ 的范围内。

为了保证 ∣ ω ∣ < ω n |\omega|<\omega_n ∣ω∣<ωn​,就求得了时间t的范围 − ∣ D ∣ λ 2 z 2 c T ⩽ t ⩽ ∣ D ∣ λ 2 z 2 c T -\frac{|D|\lambda^2z}{2cT}\leqslant t\leqslant \frac{|D|\lambda^2z}{2cT} −2cT∣D∣λ2z​⩽t⩽2cT∣D∣λ2z​如此一来时间上的截断工作就做好了,只要 g ( z , t ) g(z,t) g(z,t)在这个时间范围内截断,就不会造成频谱混叠(当然比这个范围更大也没问题)。

下面就要对 g ( z , t ) g(z,t) g(z,t) 采样了(采用非递归结构抽头延迟 FIR 滤波器实现)

No.02 色散补偿 TSM算法 时域离散采样方法 MATLAB Python 代码实现

滤波器的参数如下

  1. 采样点(滤波器抽头)的个数 N = 2 ⌊ ∣ D ∣ λ 2 z 2 c T 2 ⌋ + 1 N=2\lfloor\frac{|D|\lambda^2z}{2cT^2}\rfloor+1 N=2⌊2cT2∣D∣λ2z​⌋+1采用这种形式的表达式是为了保证,截取的 g ( z , t ) g(z,t) g(z,t) 的整数长度 N T NT NT 不小于刚才求得的最小截断长度。
  2. 第 K 个采样点的取值 a k a_k ak​。其中 − ⌊ N 2 ⌋ ⩽ k ⩽ ⌊ N 2 ⌋ -\lfloor \frac{N}{2}\rfloor \leqslant k \leqslant \lfloor \frac{N}{2}\rfloor −⌊2N​⌋⩽k⩽⌊2N​⌋ 将 kT 带入 g ( z , t ) g(z,t) g(z,t) 就得到了 a k a_k ak​ 的取值 a k = T j c D λ 2 z e π c j D λ 2 z k 2 T 2 a_k=T\sqrt{\frac{jc}{D\lambda^2z}}e^{\frac{\pi c}{jD\lambda^2z}k^2T^2} ak​=TDλ2zjc​

    ​ejDλ2zπc​k2T2为什么前面多了 T? 信号通过系统是 x ( t ) ∗ g ( z , t ) x(t)*g(z,t) x(t)∗g(z,t) 有一个相乘再积分的过程。现在你把 g ( z , t ) g(z,t) g(z,t) 变成一组点了,积分是不是得乘个T呢?思考一下~

以上就是色散时域补偿,TSM算法的全部内容了。

这种算法可以看作是对色散脉冲响应的离散采样,故被称为时域离散采样。他在信号处理过程中添加了一个全通性质的色散补偿滤波器,但这种方法没有考虑噪声的影响,所以还有其它更优秀的算法~下次再唠啦。

继续阅读