2020年天下研究生数学建模竞赛华为杯
A题 ASIC芯片上的载波恢复DSP算法计划与实现
原题再现:
专用集成电路(ASIC)实现的。比方,接纳7nm芯片工艺制造的光传输芯片容量可以达到800Gbps,相当于单光纤可实现48Tbps的容量,保障了网络流量的爆发型增长。ASIC芯片的DSP算法计划通常包含两个主要步调,第一步是根据信道损伤的物理模型计划补偿算法,此时只需要思量浮点计算;第二步是根据芯片资源和功耗约束,将算法改造成ASIC芯片可实现的定点形式,此时需要将算法细化为芯片上最根本的乘、加等运算,并思量定点量化噪声的影响。怎样衡量性能和资源,实现具体场景下的最优计划,是DSP芯片算法工程范畴恒久不变的课题。本题以oDSP中一种关键的载波恢复算法为例,探讨算法与芯片的最优工程计划。
起首介绍关于根本通讯系统和ASIC芯片上算法计划的根本知识。
一、通讯系统模型
本题思量一个简化的数字通讯系统性能评估模型,如图1所示。发送端编码后的二进制序列映射调制为星座点上的符号并向外发送,每秒发送的符号个数称为波特率fBaud。信号在信道中受到色散和相位噪声的影响,并人为到场加性高斯白噪声,噪声量用信号和噪声功率的比值表现。接收端先补偿色散,再由载波恢复(Carrier Recovery, CR)算法补偿相位噪声,最后信号举行讯断后逆映射为二进制比特序列。受信道中损伤和噪声影响,星座图会发生扩散,从而导致信号判错,使接收到的二进制序列与发端不同等,从而带来误码。错误二进制比特占总二进制比特的比率称为误码率(BER)。只要BER小于某个门限,那么纠错编码后的BER就可以或许小于1e-15次方量级,达到工程意义上的“无误码”传输。本题中不思量纠错编码,BER均指直接讯断后的BER。
算法评估中常用RSNR(Required SNR)代价来评估算法性能。 SNR(Signal-to-Noise Ratio)指的是信号功率和噪声功率的比例。比方图1中,若只有加性高斯白噪声存在时,对于给定的调制格式,SNR和BER存在关系也就确定了。将BER达到门限时信道中施加的SNR定义为Required SNR (RSNR),它可明白为系统可以或许容忍的噪声量。当存在相位噪声、色散等干扰后,雷同纠前门限点对应的SNR值会提高,阐明系统可以或许容忍的噪声量淘汰了,将RSNR的增加部分称为RSNR代价。RSNR代价是衡量系统和算法性能的常用指标。比方CR算法性能越好,那么RSNR代价也应该越低。图1 模型计算RSNR的噪声是“人为”到场的,目标是用于评估系统性能。实际光传输系统中,噪声可能有来自于电器件、光器件、光放大器等各种系统组件。
下面对模型中的术语做进一步表明。

【调制、星座图与误码率BER】
二进制序列通常需要将K个比特作为一个“符号”举行传输,每个符号有2^K个不同状态。光传输使用光波的复振幅承载信号,因此可用复平面上不同的点来对应不同的符号状态,这种将符号状态画在复平面上的图称为“星座图”,图上的点称为“星座点”。如图2(a)所示的QPSK(Quadrature Phase Shift Keying)调制,颠末信道叠加噪声和接收机处置惩罚后,接收端的星座图不再是抱负的四个点,而是会出现扩散。当接收机收到1个符号时,就将发送的符号判定为离该符号最近的星座点。显然,如果噪声过大,接收到的符号可能被判错从而产生误码,如图2(b)中的蓝点。误码率(Bit Error Ratio, BER)定义为错误的比特数占总传输比特数的比例,比方传输了50个符号共100个比特,其中有1个符号被误判为相邻的符号,错误了1个bit,则误码率为0.01。BER是衡量通讯系统性能的最根本指标。



其中LW是一个激光器线宽指标,单位为kHZ。f_b是波特率,而X_k是均值为0,方差为1的随机变量。一个典型的相噪随时间变化的规律如图4所示,相位变化也有可能演化到负值。

如图5所示,典型的CR算法是间隔性地插入已知的导频符号(Pilot),通过比较接收信号和已知符号的相位差,来估算出当前的相位噪声,再将此相位差反乘到接收端受影响的符号上,就实现了相位噪声的补偿。Pilot占总符号的比例称为Pilot开销,比方每N个符号中包含M个Pilot,则开销为M/N。在计划CR算法时可以有各种思量:比方应该尽可能减小Pilot以降低系统开销,因为Pilot本身为已知量并不转达信息;间插Pilot之间净荷的相位可以通过各种插值方法来近似;加性白噪会影响相位估计精度,可以用2个一连的Pilot符号求平均以抑制白噪影响,也可以在间插的Pilot之间求平均。当然,以上仅是举例,实际CR算法不限于此。
二、ASIC芯片上的算法实现
与我们通常在计算机上开展的基于软件的数学计算不同,在ASIC上的计算是基于硬件电路展开的。比方要计算某个公式,通用计算机上是转换为一条条逻辑指令,按时间次序在雷同的CPU中运行,终极输出结果。而在ASIC上开展的计算,则是把计算过程拆分为具体的加法、乘法等根本操纵,每一个根本操纵都对应了不同的专用逻辑电路,在芯片上各自占据了一定的面积。计划ASIC芯片上的DSP算法,需要思量并行实现,定点量化,时序约束,和资源/功耗约束等约束,下面简要叙述。
【并行实现】
芯片上的计算都是在系统时钟下,以一拍一拍的节奏运行的。芯片计算的吞吐量必须要大于信号传输速率,才能确保信息不丢失。如果接纳串行的处置惩罚方式,芯片时钟频率极高,而芯片的功耗与时钟主频率近似呈平方关系,显然不能通过一味提升主频的方式增加处置惩罚流量,必须接纳并行处置惩罚的方法,以资源调换处置惩罚流量的提升。比方图7中所示的求平方操纵,串行情况下1个时钟周期处置惩罚1个符号,100G的波特率至少需要100GHz的时钟主频,远远超出了实际能达到的程度。若付出N倍的资源,每次同时计算N个符号,则时钟主频仅为1/N,功耗大大降低。当前oDSP时钟主频在500MHz~1GHz量级,对应符号的并行度约为100至200量级。
【定点量化】
计算机中常用双精度浮点数来定义参变量,而ASIC通常用定点数来表现参变量的巨细。双精度浮点数在大多数计算情况下险些没有精度丧失,而ASIC定点数因为位数通常较小,舍入偏差增大,带来量化噪声。表现定点数的二进制位数称为定点位宽。定点数常分为有符号和无符号位2种,如下图所示,比方S(8,4)表现有符号的8-bit定点数,其中小数位占4位;u(7,4)代表无符号的7-bit定点数,其中小数位占4位。单个定点数仅能代表实数,复数则用2个定点分别代表实部和虚部。在ASIC中任何计算都应量化为定点数的计算,量化噪声的影响也是算法计划的关键之一。比方CR相噪算法中,收端受影响的符号通常用6~9bit定点数表现,而计算相噪部分的位宽则根据实际情况而变化。

【根本操纵、时序约束和资源/功耗约束】
ASIC上的算法计划,需要将计算拆解为根本的操纵。本题中思量加法、乘法,查表和数据缓存四类操纵,其表现如图9所示。加法和乘法均是对两个数开展,复数运算拆分实部和虚部各自计算。减法可以为是先做一次乘以-1的乘法,再做一次加法。ASIC上由于是二进订定点数表现,乘以或除以2的幂次方相当于对小数点举行移位,不会带来额外的资源代价。查表用于加法和乘法无法直接实现的操纵。比方求sin函数,可以将输入-输出映射关系分别量化为离散输入-输出对应关系,通过查表的方式求得输出。比方求 d=sin((a+b)/2c), 起首一级加法计算a+b, 再通过移位得到(a+b)/2,随后一级乘法得到(a+b)/2c, 最后通过sin查表的方式得到d。每种运算都对应了芯片上的资源。显然,参与运算的数据位宽越大,占用的资源也会更多。

另一方面,芯片是在时钟主频下一拍一拍运行,一拍运行中只能完成有限个一连的根本运算,但通过加缓存的方式,可以实现流水的结构。比方图10中,若运算1结果出来的时候,一拍内剩余的时间无法完成运算2,则需要在运算1的出口到场1级buff缓存以存储运算1的输出数据。每拍运算时,运算2读取buff中存储的运算1的上一拍输出开展计算,而运算1则和当前输入数据开展运算,并将结果在存入buff中,如许一来,每拍运行可以同时开展运算1和运算2,但会造成输出的结果会比运算1和运算2在同一拍完成的情况耽误1拍。

不同的运算路径有着不同的时钟耽误,当算法存在不同的计算路径时,需要包管每个路径的延时对准。比方在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)。
三、ASIC芯片算法计划的典型步调
综合上述内容,芯片上算法计划的通常包含以下具体步调:
1)根据物理模型和系数特性计划算法原型:比方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算法(计算相噪+补偿相噪)相关的资源即可。
整体求解过程概述(摘要)
ASIC 芯片已广泛应用于通讯范畴,其计划时公道均衡性能和资源,实现具体场景下的最优计划是一项紧张工作。本文从题目要求出发,使用 MATLAB 软件构建了信号传输系统仿真框架,包罗数字信号生成器、16-QAM调制和解调、色散效应模拟与补偿、相噪和加性高斯白噪声的模拟。在此框架上对各任务要求分别举行了算法计划与硬件实现。
针对任务一,起首通过傅里叶变换分析了信道中色散效应与相位噪声的耦合机制。然后提出了将色散效应与相位噪声去耦合的方法,即根据色散效应与相位噪声产生的时移和频移举行补偿处置惩罚。对颠末这种补偿处置惩罚后的纯净相位噪声举行了分析,提出了使用分段线性插值算法举行相噪补偿的方法。并经推论和仿真实验验证得到在本算法的假设下接纳符合的傅里叶窗口巨细,能在满足RSNR代价<0.3 dB条件下使Pilot开销最小为2/256。最后举行了ASIC算法计划(硬件计划),根据题意给出了算法的电路结构。
针对任务二,起首确定一种导频最佳的插入方式,即首尾插入方式。然后通过MATLAB响应面实验工具创建色散、线宽与误码率的关系,在公道忽略色散对误码率的影响的前提下,分析不同线宽下误码率与窗口巨细的关系和固定线宽条件下窗口巨细与RSNR代价的关系,从而得到在设定误码率和满足RSNR代价<0.3 dB条件下色散、线宽和Pilot开销的关系。当线宽较大时,相噪对误码率的影响较明显,窗口巨细减小有利于误码率的降低,同时RSNR代价也会减小。
针对任务三,综合思量定点量化对CR算法的性能和资源的影响。在任务二的底子上起首对量化过程中产生的量化噪声举行了建模分析,得到了量化比特数和量化信噪比之间的关系。对算法中的主要运算数据举行了数值统计用以分析量化比特数的分配。并经推论和仿真实验验证得到在不同场景下 Polit 开销最小与芯片资源消耗相对最少的量化模型方案。最后也举行了ASIC 算法计划(硬件计划),根据题意给出了算法的改进电路结构,并对整体芯片资源消耗举行了统计计算。
针对任务四,为了实现位宽自动优化并综合思量性能和资源两种因素,思量到资源与芯片实现面积和功耗有关,起首创建资源使用量化评价函数。然后以RSNR代价作为性能评定指标,以不同位宽向量下的RSNR代价与资源使用评价函数分别赋予权重因子,构成综合评价目标函数。最后提出基于禁忌搜索算法的位宽自动优化方法,以得到性能和代价综合评价目标函数的最优Pareto解集,即最优位宽计划方案。
最后本文对CR算法的相位噪声提取效果以及整个信号传输系统的抗噪声性能举行了检验,检验结果为:该算法能较好地提取出信道中的相位噪声;该算法提高了整个系统的抗噪声性能。
模型假设:
1. 假设本文CR算法中接收端的载波已同步;
2. 假设色散补偿时不思量定点量化的影响;
3. 假设把到场的色散看成已知举行直接补偿。
题目分析(部分):
信号在传输过程中颠末了色散效应,相位噪声,高斯白噪声的乘性或加性的叠加影响。对于每个噪声单独定性分析,色散 Dz 的增大会使得色散效应变强,按照题意接收端的色散补偿处置惩罚可以完全补偿掉色散效应,但是可能会因为色散效应与相位噪声的耦合而使得对于相位噪声的影响变大。同时线宽是直接影响相位噪声的,线宽越大,等价于直接增加相位噪声的系数,一定会使得相位噪声直接增大。本题中要求了RSNR代价的上限,因此为了包管RSNR代价不高于阈值,需要调解CR算法将信噪比再次补偿回来。在雷同的相位补偿处置惩罚下,随着导频间隔减小,即导频密度的增加,相噪补偿的效果应该会提升,即相应的信噪比会增加,即猜测随着色散与线宽的增加,在包管RSNR代价不高出阈值的情况下,Pilot开销会增加。
在任务一与任务二的底子上,为了可以或许让算法更好地在硬件上实现,需要对于计划出的算法模型举行定点量化。但是在量化的过程中肯定会产生偏差,即在数据中引入量化噪声。量化噪声应该与量化间隔成正比,即量化间隔越小,引入的量化噪声就越小,但是随着量化间隔的淘汰,运算中需要的比特位会增加,如许会带来消耗资源的直接增长。同时,算法在计算过程中不可制止会产生小数,所以小数点固定在第几位也是量化过程中很紧张的题目。综上,在定点量化的过程中重点解决两个题目:小数点的位置与量化间隔的选择。与此同时,为了让举行量化后的模型在题目二的场景中同样达到RSNR代价<0.3 dB的要求,需要只管让量化噪声小;为了让算法模型消耗的资源只管少,需要让量化长度只管短,而这两者是相互矛盾的,因此需要根据实际信号情况在性能与资源举行综合考量。
论文缩略图(全部):
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
- function [Ber,pilot_num] = pilot_qam_enhanced_loop(noise,SNR,P_f_inter,P_f_l
- ength,xls_filename,N_fft,LW,is_quantize,qpath)
- % clc
- % clear
- % noise=1;
- % SNR=10:15;
- % P_f_inter=8;
- % P_f_length=1;
- % xls_filename='test.xlsx';
- %% 参数设置
- % LW = 1e5; % 激光宽度
- f_b = 150e9;
- % N_fft=128;
- M=16;
- % SNR=0:1:24;
- % P_f_inter=6;
- % FFT 长度
- %16QAM调制
- %仿真信噪比
- %导频间隔
- %LLength = N_fft*16e3;
- LLength = 256*16;
- Ber=zeros(1,length(SNR));
- Err_n = zeros(1,length(SNR));
- MAX_ERR_N = 1000;
- for jj=1:length(SNR)
- temp_error_n = 0;
- cycle_count = 0;
- while temp_error_n < MAX_ERR_N
- data_station=[];
- %% 基带数据数据产生
- P_data = randi([0 1],1, LLength);
- %% QAM调制
- data_temp1 = reshape(P_data,log2(M),[])';%以每组2比特进行分组,M=4
- data_temp2 = bi2de(data_temp1);
- 制
- modu_data = qammod(data_temp2,M); % 16QAM调制
- %% 插入导频
- if 1
- %二进制转化为十进
- [data,data_col,pilot_num,P_f_station,pilot_seq,data_station] = insert_pilot_2(modu_data,N_fft,P_f_inter,P_f_length);
- else
- data_col = length(modu_data)/N_fft;
- pilot_num=0;
- %% 串并转换
- data=reshape(modu_data,N_fft,[]);
- end
-
- %% FFT-色散-IFFT
- dp_Dz=20000e-3;
- data_disp=dispersion(0,data,data_col,noise,dp_Dz,N_fft,f_b);
-
- %% 相位噪声
- data_pn = phase_noise(data_disp,noise,N_fft,LW,f_b);
-
- %% 并串转换
- Tx_data = reshape(data_pn,[],1);
-
- %% 信道
- rx_channel=awgn(Tx_data,SNR(jj),'measured');%添加高斯白噪声
-
- %% 串并转换
- Rx_data1=reshape(rx_channel,N_fft,[]);
-
- %% 色散补偿
- Rx_data1=dispersion(1,Rx_data1,data_col,noise,dp_Dz,N_fft,f_b);
-
- %% 信道估计与插值(均衡)
- if 1
- %% 信道校正
- data_aftereq = remove_pilot_2(Rx_data1,N_fft,P_f_station,pilot_se
- q,data_station,P_f_length,f_b,dp_Dz,noise,is_quantize,qpath);
- else
- data_aftereq = Rx_data1;
- end
- %% 并串转换
- data_aftereq=reshape(data_aftereq,[],1);
- data_aftereq=data_aftereq(1:length(modu_data));
- %% QAM解调
- data_aftereq_rec = data_aftereq;
- demodulation_data=qamdemod(data_aftereq_rec,M);
- De_data1 = reshape(demodulation_data,[],1);
- De_data2 = de2bi(De_data1);
- %% 补零
- if size(De_data2,2) < log2(M)
- De_data2(:,end+1) = 0;
- end
- De_Bit = reshape(De_data2',1,[]);
- [number, ~] = biterr(De_Bit,P_data);%译码后的误码率
- temp_error_n = temp_error_n + number;
- cycle_count = cycle_count + 1;
- % fprintf("SNR = %d dB, error_n = %d, ber = %.20f \n",SNR(jj),number,Be
- r(jj));
- end
- Ber(jj) = temp_error_n / (cycle_count * LLength);
- Err_n(jj) = temp_error_n;
- % fprintf("SNR=%d dB, cycle = %d, ber = %.10f\n",SNR(jj),cycle_count,Ber(j
- j));
- end
- data_xls = [SNR' Ber' Err_n'];%把数据保存到data中,其中a'的'表示转置
- [m p]=size(data_xls);
- data_cell=mat2cell(data_xls,ones(m,1),ones(p,1));%matrix转变成cell
- title={'SNR','BER','Err_n'};%添加变量名称
- result=[title;data_cell];%归纳变量名称和数据
- s=xlswrite(xls_filename,result);%保存文件
- end
复制代码 全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |