图4 典型相位噪声演化曲线
如图5所示,典型的CR算法是间隔性地插入已知的导频符号(Pilot),通过比较接收信号和已知符号的相位差,来估算出当前的相位噪声,再将此相位差反乘到接收端受影响的符号上,就实现了相位噪声的补偿。Pilot占总符号的比例称为Pilot开销,例如每N个符号中包含M个Pilot,则开销为M/N。在设计CR算法时可以有各种考虑:例如应该尽可能减小Pilot以降低系统开销,因为Pilot本身为已知量并不传递信息;间插Pilot之间净荷的相位可以通过各种插值方法来近似;加性白噪会影响相位估计精度,可以用2个连续的Pilot符号求平均以抑制白噪影响,也可以在间插的Pilot之间求平均。当然,以上仅是举例,实际CR算法不限于此。
图5 Pilot的载波恢复算法
【色散与色散补偿算法】
光纤中色散的效应,可认为是对信号直接做傅里叶变换后的频域数据施加1个随频点平方关系变化的相位,如式8所示。
(8)
其中是波长,取1550nm,Dz是色散值,c是光速,f则是频点。本题中,信道中施加色散和算法中补偿色散如图6所示,假设色散值已知,则先FFT将接收到的数据转换到频域,再乘上式中的频域响应,随后再IFFT转换回时域即可。信道中色散的频域响应和算法中补偿色散的频域响应呈共轭关系。
图6 色散和色散补偿方法
二、ASIC芯片上的算法实现
与我们通常在计算机上开展的基于软件的数学计算不同,在ASIC上的计算是基于硬件电路展开的。例如要计算某个公式,通用计算机上是转换为一条条逻辑指令,按时间顺序在相同的CPU中运行,最终输出结果。而在ASIC上开展的计算,则是把计算过程拆分为具体的加法、乘法等基本操作,每一个基本操作都对应了不同的专用逻辑电路,在芯片上各自占据了一定的面积。设计ASIC芯片上的DSP算法,需要考虑并行实现,定点量化,时序约束,和资源/功耗约束等约束,下面简要叙述。
【并行实现】
芯片上的计算都是在系统时钟下,以一拍一拍的节奏运行的。芯片计算的吞吐量必须要大于信号传输速度,才能确保信息不丢失。如果采用串行的处理方式,芯片时钟频率极高,而芯片的功耗与时钟主频率近似呈平方关系,显然不能通过一味提升主频的方式增加处理流量,必须采用并行处理的方法,以资源换取处理流量的提升。例如图7中所示的求平方操作,串行情况下1个时钟周期处理1个符号,100G的波特率至少需要100GHz的时钟主频,远远超出了现实能达到的水平。若付出N倍的资源,每次同时计算N个符号,则时钟主频仅为1/N,功耗大大降低。当前oDSP时钟主频在500MHz1GHz量级,对应符号的并行度约为100200量级。
图7 ASIC芯片并行运算示意图
【定点量化】
计算机中常用双精度浮点数来定义参变量,而ASIC通常用定点数来表示参变量的大小。双精度浮点数在大多数计算情况下几乎没有精度损失,而ASIC定点数因为位数往往较小,舍入误差增大,带来量化噪声。表示定点数的二进制位数称为定点位宽。定点数常分为有符号和无符号位2种,如下图所示,例如S(8,4)表示有符号的8-bit定点数,其中小数位占4位;u(7,4)代表无符号的7-bit定点数,其中小数位占4位。单个定点数仅能代表实数,复数则用2个定点分别代表实部和虚部。在ASIC中任何计算都应量化为定点数的计算,量化噪声的影响也是算法设计的关键之一。例如CR相噪算法中,收端受影响的符号往往用6~9bit定点数表示,而计算相噪部分的位宽则根据实际情况而变化。
图8 定点表示法
【基本操作、时序约束和资源/功耗约束】
ASIC上的算法设计,需要将计算拆解为基本的操作。本题中考虑加法、乘法,查表和数据缓存四类操作,其表示如图9所示。加法和乘法均是对两个数开展,复数运算拆分实部和虚部各自计算。减法可认为是先做一次乘以-1的乘法,再做一次加法。ASIC上由于是二进制定点数表示,乘以或除以2的幂次方相当于对小数点进行移位,不会带来额外的资源代价。查表用于加法和乘法无法直接实现的操作。例如求sin函数,可以将输入-输出映射关系分别量化为离散输入-输出对应关系,通过查表的方式求得输出。例如求 d, 首先一级加法计算a+b, 再通过移位得到,随后一级乘法得到, 最后通过sin查表的方式得到d。每种运算都对应了芯片上的资源。显然,参与运算的数据位宽越大,占用的资源也会更多。
图9 ASIC芯片基本运算操作
另一方面,芯片是在时钟主频下一拍一拍运行,一拍运行中只能完成有限个连续的基本运算,但通过加缓存的方式,可以实现流水的结构。例如图10中,若运算1结果出来的时候,一拍内剩余的时间无法完成运算2,则需要在运算1的出口加入1级buff缓存以存储运算1的输出数据。每拍运算时,运算2读取buff中存储的运算1的上一拍输出开展计算,而运算1则和当前输入数据开展运算,并将结果在存入buff中,这样一来,每拍运行可以同时开展运算1和运算2,但会造成输出的结果会比运算1和运算2在同一拍完成的情况延迟1拍。
图10 缓存实现流水结构
不同的运算路径有着不同的时钟延迟,当算法存在不同的计算路径时,需要保证每个路径的延时对准。例如在CR算法中,计算出的相位噪声差需要反乘回数据,但相噪计算通常无法在1拍内完成,从而导致相位和数据有延时,需要用buffer将延时对准。本题中,假设1个时钟周期最多完成1级乘法,4级加法,以及1级查表操作。
加法、乘法、查表和缓存均需要占用资源,在算法设计也应有所考虑。加法和乘法均是两两操作,加法资源近似与最大位宽呈正比,乘法资源近似与位宽乘积成正比,延时资源和位宽以及延时深度近似呈正比。对于一个M-N的查表,资源与(2^M)
N呈正比。M代表输入位宽,N代表输出位宽,例如:已知信号求相位的查表操作,信号位宽s(10,1),相位位宽s(9,1),此时的M=20,N=9。在查表时候的输入为信号的【实部 虚部】组合,需要遍历的地址有2^20,每个地址对应的相位值的位宽为s(9,1)。
表1
基本操作 8+8bit
加法器 88 bit
乘法器 8bit-8bit查表 8bit,
每2048符号延时
资源 1 U 8 U 128 U 1 U
三、ASIC芯片算法设计的典型步骤
综合上述内容,芯片上算法设计的通常包含以下具体步骤:
- 根据物理模型和系数特性设计算法原型:例如CR算法中,采用Pilot估计相位差,并利用插值等方法计算出净荷的相噪,最终将估计的相位差乘回数据以补偿相噪。
2)在考虑并行度和时序约束的基础上,将算法细化为可实现的基本操作,并大致考虑算法的实现复杂度对算法实现的影响。此时可假设为浮点数,不需要考虑定点量化噪声。例如CR算法中,可能需要考虑净荷相噪的插值如何由基本操作实现,计算噪声路径的延时如何与补偿噪声路径的延时相匹配等。
3) 进一步考虑定点量化噪声的影响,尽量以更低的资源实现,此时位宽优化是一个关键步骤。
----------------------------------------问题---------------------------------------------
问题1:考虑波特率为150Gbaud的标准16QAM信号,令线宽为100kHz,色散值为2万ps/nm,算法的并行度固定为128,不考虑定点量化。请以基本的加法、乘法、查表和缓存为基础,并以RSNR代价<0.3dB为目标,设计一套CR算法,使得Pilot开销最小?
问题2:考虑线宽从10kHz10MHz,色散Dz从010,000 ps/nm变化场景,以RSNR代价<0.3dB为目标,定量挖掘色散、线宽与Pilot开销的关系。
问题3:在问题2的场景上,进一步将芯片实现的资源纳入考察,此时需考虑定点量化对性能和资源的影响,且导频开销可任意变化(但必须确保净荷的流量为>145Gbaud),如何设计资源最低的CR算法?
问题4:现实中性能和资源的权衡与具体场景有关。例如长距干线传输对性能要求往往比短距离要求更高,长距传输可付出更多的资源以降低RSNR代价。并选出问题3中你队认为有代表性的1种场景,给出统筹性的“性能-资源”综合考虑下的算法设计思路,构造性能和资源的综合代价函数,尝试给出一套自动优化位宽和实现性设计的方案,并给出定量结果,用以指导算法开发。
注:本题中均不考虑色散补偿和误码率计算的复杂度和资源,只需考虑CR算法(计算相噪+补偿相噪)相关的资源即可。