分数延时的需求背景
分数延时的需求来源于信号的精确定时需求,例如在使用阵列天线进行波束赋形的情况下,需要对多通道信号进行时间校准,使多路信号同时到达各个天线阵元,校准越精确,颗粒度对齐😊,波束赋形的效果越好。
当前,无论在通信还是雷达领域,数字信号处理已广泛应用于各类信号处理任务。相较于模拟信号处理,数字域处理具备诸多优势(非本文重点,故不赘述)。然而,数字域处理与模拟域处理存在一个根本区别:数字信号是离散的。这种离散性体现在两个方面:
- 时间离散性:信号经过采样后变为离散时间序列。根据奈奎斯特采样定理,采样频率必须高于信号有效带宽的两倍,以避免频谱混叠。
- 幅度离散性:信号经过量化后,其幅度值变为离散数字量。这个过程会引入量化误差,给信号带来量化噪声。
回到延时精度问题。数字信号处理系统通常涉及两个关键参数:时钟频率和采样频率。采样频率的倒数代表了常规数字电路所能达到的最大时间分辨率(即最小延时单位)。然而,这种精度非常有限,难以满足大多数实际应用的需求。
为了追求更高精度,可以对信号进行升采样,使其采样频率等于或接近时钟频率。但鉴于时钟频率通常在1GHz以下(多数情况下低于500MHz),升采样后所能提供的最佳延时精度仅为纳秒量级。
若逻辑资源充足且外部ADC/DAC支持更高采样率,还可以采用并行处理策略,在一个时钟周期内处理多个(如2个或4个)采样点,从而将采样频率进一步提升至时钟频率的2倍或4倍。这种方法以显著增加逻辑资源开销为代价,进一步提升了延时精度,但仍难以实现数量级的提升。
分数延时技术通过算法实现,能以可控的运算资源开销,换取延时精度数个数量级的提升,从而满足更高精度的延时需求,在时钟源精度满足要求的情况下,实测延时精度可以达到飞秒级(低于1皮秒)。
通常可以使用两种技术实现分数延时,一种是重采样,另一种是插值。
通过重采样实现分数延时
通过重采样实现分数延迟是采样定理中信号重建公式的应用。
基本原理
先复习一下采样定理中关于信号重建的光辉论断:在满足采样频率大于信号带宽两倍的前提下,一个带限信号可以完美地由其离散样本点通过 sinc 函数进行插值重建。设信号采样周期为T,原始采样序列为x(nT),则重建的连续信号x(t)可以表达为:
公式 1 带限信号的sinc重建
其中sinc 函数为:
公式 2 sinc函数的定义
图 1 sinc函数的图形
需要注意的是sinc函数的零点位置,所有非零整数位置都是零,这个特性非常重要。
要实现分数延迟,就是在重建后的连续信号上,在原采样点的位置上延迟(或提前)一个d(-T < d < T)重新采样,即新采样位置t=kT+d,代入到信号重建公式后:
公式 3 带限信号的sinc重采样公式用于分数延时的推导
通过上面的公式,就可以从原始采样序列x(nT)计算出延时d/T之后的新采样序列x(kT+d),公式中的d/T,就是分数延时这个术语中的分数。
体现到sinc函数的图形上就是采样点偏离整数位置,n等于0时sinc值不再等于1,n≠0时,sinc值不再等于0。
实现方式
公式中的求和范围理论上需要覆盖整个信号序列(从 -∞ 到 +∞),但实际使用中必须截断为有限长度,一般都是用当前采样点的前后若干个采样点来计算重采样序列。当前采样点为k=0,则延迟后的当前采样点为x(kT+d)=x(d):
公式 4 实际应用中的重采样法分数延时公式
如果d=0,根据sinc函数的零点位置,x(kT)将会和x(nT)完全相同。
观察上面的公式,学过信号与系统的同学会发现它和卷积公式非常相似:
公式 5 卷积的定义
因此,重采样公式可以视为输入序列和sinc系数序列的卷积。提到卷积,学过数字信号处理的同学会再次触及一个灵魂深处的东西:有限冲击响应滤波器(FIR)。逻辑实现时,将原始采样序列作为滤波器输入,根据分数延时值计算的sinc序列作为抽头系数,输出就是经过分数延时的采样序列。
实现效果
用一个16个抽头,系数采用16bit量化的FIR,通过对正弦波的延时,观察分数延时的实际效果:
图 2 重采样法对正弦波的分数延时效果
图中用0延时和1个样点的整数延时作为参考边界,画出了0.25,0.5和0.75三档分数延时的效果。上半部分是FIR抽头归一化系数值,下半部分是0.25,0.5和0.75三条分数延时的归一化正弦波曲线,目测(包括局部放大后目测)这三条曲线所处的位置符合预期,分布合理。
如果对精度有更高的要求,可以增加FIR的阶数并且增加抽头系数的位宽,通过使用更多的逻辑资源换取更好的性能指标。
通过插值实现分数延时
通过插值实现分数延时,是拉格朗日插值定理在数字信号处理中的应用。
基本原理
先复习一下拉格朗日插值多项式:设α1, α2, ……, αL+1是数域P中的L+1个不同的数,β1, β2, ……, βL+1是P中的任意L+1个数(可以是相同的数),求在P上的一个次数至多为L的多项式,使f(αn)= βn,(n=1, 2, ……, L+1)。
公式 6 拉格朗日插值多项式
如果将(αn, βn)视为几何平面上的L+1个点(注意是αn是不能重复的),那么拉格朗日插值多项式的几何解释就是:存在唯一的次数不超过L,并且通过这L+1个点的抛物线。说人话😊就是插值多项式生成了一条通过这L+1个点的拟合曲线,这条拟合曲线是唯一的,并且多项式次数不超过L。
插值多项式拟合出连续信号,在连续信号上做重采样就可以实现分数延时,设信号采样周期为T,原始采样序列为x(nT),即α=nT,β=x(nT),代入到插值多项式,新的采样位置是t=kT+d:
公式 7 拉格朗日插值多项式用于分数延时的推导
通过上面的公式,就可以从原始采样序列x(nT)计算出延时d/T之后的新采样序列x(kT+d),注意公式中又出现了分数延时d/T。
实现方式
公式中n和m的取值范围时1到L+1,现实中一般都是用当前采样点的前后若干个采样点来计算重采样序列。当前采样点为k=0,则延迟后的当前采样点为x(d):
公式 8 实际应用中的插值法分数延时公式
如果d=0,代入公式计算,x(kT)将会和x(nT)完全相同。
这个公式的形状再次让人联想起了卷积,没错,这依然是一个卷积,依然可以通过FIR来完成逻辑实现,只是与重采样方式相比,滤波器抽头系数的计算公式换了一个而已。
实现效果
同样用一个16个抽头,系数采用16bit量化的FIR,通过对正弦波的延时,观察分数延时的实际效果:
图 3 插值法对正弦波的分数延时效果
图中同样用0延时和1个样点的整数延时作为参考边界,画出了0.25,0.5和0.75三档分数延时的效果。上半部分是FIR抽头归一化系数值,下半部分是0.25,0.5和0.75三条分数延时的归一化正弦波曲线,目测(包括局部放大后目测)这三条曲线所处的位置符合预期,分布合理。
使用IQ信号验证分数延时
为了进一步验证分数延时对实际信号的影响,采用了一个64QAM调制的5G符号(Symbol)进行测试,测试延迟分别为0.5,0.1,0.01和1.25,你没看错,就是1.25,一般逻辑设计都用移位寄存器来实现整数延时,不建议在分数延时电路中做超过±1的延时,因为这样浪费资源并且对指标多少有点影响,但只要FIR的阶数够大,做超过±1的延时在理论上是完全没有问题的。
验证使用的是22个抽头的FIR,系数位宽24位,采用重采样法计算系数,当然,通常并不需要那么多抽头和24位的系数。
输入信号是一个带CP的400MHz宽带5G符号(Symbol):
图 4 输入信号
分数延时=0.5
延时0.5个采样周期后,星座图开始旋转,这是相位变化带来的典型效果:
图 5 延时0.5个采样周期
对延时后的信号进一步延时-0.5个采样周期,星座图恢复正常。
图 6 进一步延时-0.5个采样周期
对延时后的信号进一步延时+0.5个采样周期,星座图同样恢复正常。
图 7 进一步延时+0.5个采样周期
分数延时=0.1
延时0.1个采样周期后,星座图同样开始旋转,但旋转的程度明显小于延时0.5个采样周期的情况:
图 8 延时0.1个采样周期
进一步延时-0.1个采样周期,星座图恢复正常:
图 9 进一步延时-0.1个采样周期
进一步延时+0.9个采样周期,星座图同样恢复正常:
图 10 进一步延时+0.9个采样周期
分数延时=0.01
延时0.01个采样周期后,星座图只产生了轻微的旋转:
图 11 延时0.01个采样周期
进一步延时-0.01个采样周期,星座图恢复正常:
图 12 进一步延时-0.01个采样周期
进一步延时+0.99个采样周期,星座图同样恢复正常:
图 13 进一步延时+0.99个采样周期
分数延时=1.25
延时1.25个采样周期后,星座图明显旋转:
图 14 延时1.25个采样周期
进一步延时-1.25个采样周期,星座图恢复正常:
图 15 进一步延时-1.25个采样周期
进一步延时-0.25个采样周期,星座图同样恢复正常:
图 16 进一步延时-0.25个采样周期
进一步延时+0.75个采样周期,星座图依然恢复正常:
图 17 进一步延时+0.75个采样周期
结论
经过分析和测试,用重采样法和插值法实现分数延时,技术上是可行的。
后续打算对分数延时在实际系统应用中的效果进行定量分析,敬请期待本专栏的后续更新,欢迎关注和订阅。