主要内容

带射频损伤和校正的端到端DVB-S2模拟

此示例显示如何测量单流数字视频广播卫星第二代(DVB-S2)的误比特率(BER)和分组错误率(PER)具有恒定编码和调制的链路。该示例详细描述了符号定时和载波同步策略,强调如何在强噪声条件下估计射频前端损伤。单流信号添加射频前端损伤,然后通过加性高斯白噪声传递波形(AWGN)频道。

介绍

DVB-S2接收机受到高达输入符号率20%左右的载波频率误差和大量相位噪声的影响。使用强大的前向纠错(FEC)机制,如Bose-Chaudhuri-Hocquenghem (BCH)和低密度奇偶校验(LDPC)码,使DVB-S2系统工作在非常低的能量/噪声功率谱密度比( E 年代 / N o 值,接近香农极限。

ETSI EN 302 307-1 Section 6[1]总结了AWGN信道在不同调制方案和码率下的准无错误(QEF)性能要求。操作 E 年代 / N o 不同传输模式的范围可被认为是+2或-2 dB E 年代 / N o 观察QEF表现的点。因为操作 E 年代 / N o 距离较低,载波和符号定时同步策略是具有挑战性的设计问题。

此图总结了示例工作流。

主要处理循环

该示例使用 E 年代 / N o 设置为20 dB,然后计算BER和PER。对调制信号施加载波频率偏移、采样时钟偏移和相位噪声损害,并在信号中加入AWGN。

在接收机处,经过匹配滤波后,运行定时和载波恢复操作来恢复发送的数据。为了提取PL帧,通过各种定时和载波恢复策略来处理失真的波形以提取PL帧。载波恢复算法是导频辅助的。为了解码数据帧,物理层从PL报头恢复er传输参数,如调制方案、码率和FEC帧类型。为了重新生成输入比特流,对基带(BB)报头进行解码。

由于DVB-S2标准支持分组和连续传输模式,BB帧可以是金宝app用户包的串接或比特流。恢复BB报头以确定传输模式。如果BB帧是用户数据包的串接,则返回每个数据包的循环冗余检查(CRC)状态和解码位,然后测量PER和BER。

这些框图显示了同步和输入位恢复工作流。

下载DVB-S2 LDPC奇偶校验矩阵数据集

这个例子加载一个带有DVB-S2 LDPC奇偶校验矩阵的mat文件。如果MAT-file在MATLAB®路径上不可用,使用这些命令下载并解压缩MAT-file。

如果~存在(“dvbs2xLDPCParityMatrices.mat”“文件”如果~存在(“s2xLDPCParityMatrices.zip”“文件”) url =“https://ssd.mathworks.com/金宝appsupportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip”; 韦伯萨夫(“s2xLDPCParityMatrices.zip”url);解压缩(“s2xLDPCParityMatrices.zip”);终止目录“s2xLDPCParityMatrices”);终止

DVB-S2在导航辅助模式下的配置

指定cfgDVBS2结构来定义DVB-S2传输配置参数。的ScalingMethod属性适用于当莫德科德在范围[18,28](即仅采用APSK调制方案时)。UPL属性适用于设置StreamFormatGS".

cfgDVBS2。StreamFormat =“TS”; cfgDVBS2.fecsframe=“正常”;cfgDVBS2。莫德科德= 18;% 16 apsk 2/3cfgDVBS2。分= 42960;cfgDVBS2。ScalingMethod =“单位平均功率”; cfgDVBS2.RolloffFactor=0.35;cfgDVBS2.HasPilots=true;cfgDVBS2.SamplesPerSymbol=2
cfgDVBS2 =结构体字段:StreamFormat:“TS”FECFrame:“normal”MODCOD: 18 DFL: 42960 ScalingMethod:“单位平均功率”RolloffFactor: 0.3500 HasPilots: 1 SamplesPerSymbol: 2

模拟参数

DVB-S2标准支持灵活的信道带宽。金宝app使用典型的通道带宽,如36mhz。信道带宽可以改变。在这个例子中实现的粗频同步算法可以跟踪高达输入符号速率20%的载波频率偏移。码元速率计算为B/(1+R),其中B为信道带宽,R为发射滤波器滚动因子。在这个例子中实现的算法可以校正采样时钟偏差高达10ppm。

simParams。年代ps = cfgDVBS2.SamplesPerSymbol;%每个符号的样本数simParams。numFrames = 25;%待处理帧数simParams.chanBW=36e6;%信道带宽,单位为赫兹simParams.cfo=3e6;%以赫兹表示的载波频率偏移simParams.sco=5;部分采样时钟偏差%%百万分之simParams.phNoiseLevel=“低”相位噪声电平提供为%“低”、“中”或“高”simParams。EsNodB= 20;每符号的能量与噪声的比率%的分贝

此表定义了用于生成应用于传输信号的相位噪声的相位噪声掩码(dBc/Hz)。

产生失真的射频干扰DVB-S2波形

要创建DVB-S2波形,请使用HelperDVBS2RxInputGenerate具有simParamscfgDVBS2结构作为输入。该函数返回数据信号、发送和接收波形以及接收器处理结构。接收到的波形受到载波频率、定时相位偏移和相位噪声的影响,然后通过AWGN信道。接收机处理参数结构,rxParams,包括参考引导字段、引导索引、计数器和缓冲区。绘制接收符号的星座和发射和接收波形的频谱。

(数据、txOut rxIn rxParams] = HelperDVBS2RxInputGenerate (cfgDVBS2 simParams);%接收信号星座图rxConst = comm.ConstellationDiagram (“头衔”接收的数据的...“XLimits”[1],“YLimits”[1],...“ShowReferenceTellation”假的,...“SamplesPerSymbol”,simParams.sps);rxConst(rxIn(1:length(txOut)))

%发射和接收信号频谱可视化Rsymb = simParams。chanBW / (1 + cfgDVBS2.RolloffFactor);Fsamp = Rsymb * simParams.sps;specAn = dsp。简介(“SampleRate”,Fsamp,...“ChannelNames”, {传输波形的接收波形的},...“ShowLegend”,真正的);specAn ([txOut rxIn(1:长度(txOut))));

配置接收机参数

在接收端,对接收的数据执行符号定时同步,然后进行帧同步。接收机算法包括粗频和细频减值校正算法。载波频率估计算法可以跟踪高达输入符号速率20%的载波频率偏移。粗频率估计,实现为一个锁频环(FLL),减少频率偏移到一个水平,以精细频率估计器可以跟踪。用于符号定时和粗频率补偿的首选环路带宽取决于 E 年代 / N o 背景

每1476个符号重复一个由36个导频组成的块。粗频误差估计使用36个导频符号中的34个。每个块(34)使用的导频和导频周期(1476)的比率是0.023。使用0.023值作为粗频同步器环路带宽的比例因子是首选。

当你减少 E 年代 / N o ,可以减少环路带宽,以滤除采集过程中的更多噪声。符号同步器和粗FLL收敛所需的帧数取决于环路带宽设置。

帧同步使用PL报头。因为载波同步是数据辅助的,所以帧同步必须准确地检测帧的开始。 E 年代 / N o 在决定帧同步的准确性方面起着至关重要的作用。在恢复QPSK调制帧时 E 年代 / N o 值小于3db时,必须对多帧进行同步才能准确检测。

优良的频率估计可以跟踪载波频率偏移高达4%的输入符号率。精细的频率估计必须处理多个导频块,以便将残余载波频率偏移降低到相位估计算法可接受的水平。该相位估计算法能够处理输入符号率的0.02%以下的载波频率误差。只有在存在明显相位噪声的情况下,才需要进行精细相位补偿。

这些设置在rxParams用于同步处理的结构。详细说明low的设置方法 E 年代 / N o 值,请参阅进一步的探索部分。

rxParams.carrSyncLoopBW= 1e-2*0.023;%粗频估计环路带宽%按符号速率标准化rxParams.symbSyncLoopBW= 8e-3;符号定时同步器环路带宽%按符号速率标准化rxParams.symbSyncLock=6;%符号所需的帧数定时误差收敛rxParams.frameSyncLock = 1;%帧所需的帧数%同步rxParams.freqlock=3;%毛糙所需的帧数%频率采集rxParams.fineFreqLock=6;%罚金所需的帧数%频率估计rxParams。hasFinePhaseCompensation = false;%指示是否为精细阶段的标志%使用补偿rxParams。finePhaseSyncLoopBW = 3.5的军医;%精细相位补偿环路带宽%按符号速率标准化%发生符号定时和粗频锁定的总帧数rxParams.initialTimeFreqSync=rxParams.symbSyncLock+rxParams.frameSyncLock+...rxParams.coarseFreqLock;%用于整体同步的总帧数rxParams。totalSyncFrames = rxParams。initialTimeFreqSync + rxParams.fineFreqLock;%创建时间频率同步系统对象使用%HelperDBS2TimeReqSynchronizer帮助对象timeFreqSync=HelperDVBS2TimeFreqSynchronizer(...“CarrSyncLoopBW”,rxParams.carrSyncLoopBW,...“SymbSyncLoopBW”rxParams.symbSyncLoopBW,...“SamplesPerSymbol”simParams.sps,...“DataFrameSize”rxParams.xFecFrameSize,...“SymbSyncTransitFrames”,rxParams.symbSyncLock,...“FrameSyncAveragingFrames”, rxParams.frameSyncLock);创建精细相位补偿系统对象使用%helperDbs2finephaseCompensator辅助对象。细相%仅16和32 APSK调制帧需要补偿如果cfgDVBS2。莫德科德>= 18 && rxParams.hasFinePhaseCompensation finePhaseSync = HelperDVBS2FinePhaseCompensator(...“DataFrameSize”rxParams.xFecFrameSize,...“正常化环路带宽”, rxParams.finePhaseSyncLoopBW);终止normFlag = cfgDVBS2。莫德科德>= 18 && strcmpi(cfgDVBS2.ScalingMethod,'外半径为1');%初始化错误计算参数[numFramesLost,pktsErr,bitsErr,pktsRec]=deal(0);%初始化数据索引变量stIdx=0;dataSize=rxParams.inputFrameSize;plFrameSize=rxParams.plFrameSize;dataStInd=rxParams.totalSyncFrames+1;isLastFrame=false;symSyncOutLen=零(rxParams.initialTimeFreqSync,1);

定时和载波同步和数据恢复

为了同步接收的数据和恢复输入的比特流,失真的DVB-S2波形样本按照以下步骤一次处理一帧。

  1. 应用匹配滤波,以每个符号两个样本的速率输出。

  2. 使用Gardner定时错误检测器应用符号定时同步,输出按符号速率生成。Gardner TED没有数据辅助,所以它是在载波同步之前执行的。

  3. 应用帧同步以检测帧的开始并识别导频位置。

  4. 估计和应用粗频偏校正。

  5. 估计和应用精细的频率偏移校正。

  6. 估计并补偿剩余载波频率和相位噪声。

  7. 解码PL报头并计算传输参数。

  8. 解调和解码PL帧。

  9. 对BB报头进行CRC检查,如果检查通过,恢复报头参数。

  10. 从BB帧重新生成数据或数据包的输入流。

stIdx <长度(rxIn)%每次迭代使用一个DVB-S2 PL帧。endIdx = stIdx + rxParams.plFrameSize*simParams.sps;%在最后一次迭代中,接收到的所有剩余样本%波形被考虑。isLastFrame = endIdx > length(rxIn);endIdx长度(isLastFrame) = (rxIn);rxData = rxIn (stIdx + 1: endIdx);%在粗频偏环收敛后,FLL与a一起工作减少的环路带宽。如果rxParams.frameCount其他的freqlock=true;终止%检索最后一帧样本。如果isLastFrame resSymb = plFrameSize - length(rxParams.cfBuffer);resSampCnt = resSymb * rxParams。sps -长度(rxData);如果resSampCnt>=0%填充最后一帧的样本数量不足syncIn=[rxData;零(resSampCnt,1)];其他的%剩余样本可填充最后一帧syncIn = rxData (1: resSymb * rxParams.sps);终止其他的syncIn=rxData;终止%应用匹配过滤,符号定时同步,帧%同步,并进行粗频偏补偿。[GrossFreqSyncout,syncIndex,phEst]=timeFreqSync(syncIn,GrossFreqLock);如果rxParams.frameCount < = rxParams。initaltimefreqsync symSyncOutLen(rxParams.frameCount) = length(coarseFreqSyncOut);如果任何(abs(diff(symSyncOutLen(1:rxParams.frameCount))) > 5)错误(['符号定时同步失败。循环不会停止...'收敛。不会恢复任何帧。请更新symbSyncLoopBW'...'参数根据EsNo设置进行适当的循环收敛。']);终止终止rxParams。年代yncIndex = syncIndex;%的PL帧开始索引位于正在处理的块的中间。%从精细频率估计开始,处理作为PL帧进行。%缓冲区用于存储填满一个PL帧所需的符号。如果isLastFrame fineFreqIn = [rxParams.cfBuffer;coarseFreqSyncOut];其他的fineFreqIn=[rxParams.cfBuffer;粗略频率同步输出(1:rxParams.syncIndex-1)];终止%使用HelperDVBS2FineFreqEst估计精细频率误差% helper函数。%向条件检查添加1,因为缓冲区用于获取一个PL%帧为循环计数引入一个延迟。如果(rxParams.frameCount > rxParams。initialTimeFreqSync + 1) &&...(rxParams.frameCount<=rxParams.totalSyncFrames+1)rxParams.fineFreqCorrVal=HelperDVBS2FineFrequest(...fineFreqIn(rxParams.pilotin),rxParams.numPilots,...rxParams.refPilots,rxParams.fineFreqCorrVal);终止如果rxParams.frameCount > = rxParams。totalSyncFrames + 1 fineFreqLock = true;其他的fineFreqLock = false;终止如果细频锁%通过输入符号速率规范化频率估计% freqEst = angle(R)/(pi*(N+1)),其中N(18)为元素个数%用于计算中自相关(R)的平均值% HelperDVBS2FineFreqEst。频率=角(rxParams.fineFreqCorrVal) /(π* (19));%使用frameCount和plFrameSize生成符号索引。%从rxParams.frameCount中减去2,因为缓冲区用来得到1% PL帧对计数引入了1的延迟。印第安纳州= (rxParams.frameCount-2) * plFrameSize: (rxParams.frameCount-1) * plFrameSize-1;phErr = exp (1 j * 2 *π*频率*印第安纳州);fineFreqOut = fineFreqIn。* phErr (:);%使用HelperDVBS2PhaseEst估计相位误差% helper函数。[phEstRes,rxParams.prevPhaseEst]=HelperDBBS2PhaseEst(...fineFreqOut (rxParams.pilotInd)、rxParams.refPilots rxParams.prevPhaseEst);%补偿剩余的频率和相位偏移%%HelperDVBS2PhaseCompensate helper函数。%使用两帧进行初始相位误差估计%秒帧,使用前一帧的相位误差估计和补偿当前帧。%在帧数比较中增加3以考虑延迟:1%帧由于rxParams。cfBuffer延迟和两个用于相位的帧%误差估计。如果rxParams.frameCount > = rxParams。totalSyncFrames + 3 coarsePhaseCompOut = helperdvbs2phasecompout (rxParams.ffBuffer,...rxParams.pilotEst,rxParams.pilotInd,phEstRes(2));% MODCOD >= 18对应APSK调制方案如果cfgDVBS2.MODCOD>=18&&rxParams.hasfinephasecomposition phasecomposut=finePhaseSync(粗相复合);其他的phaseCompOut=粗略的phaseCompOut;终止终止rxParams。ffBuffer = fineFreqOut;rxParams。飞行员= phEstRes;%数据部分上的相位补偿由以下步骤执行:%插值在连续导频上计算的相位估计%块。数据的第二阶段估算不可用%部分位于最后一帧的最后一个导频块之后。因此,%在系统中所有导频块上计算的相位估计斜率最后一帧是外推的,用来补偿相位最终数据部分的%错误。如果isLastFrame pilotBlkLen=36;%符号pilotBlkFreq=1476;%符号avgSlope =意味着(diff (phEstRes(2:结束)));chunkLen = rxParams。plFrameSize - rxParams.pilotInd(end) +...rxParams.pilotInd(pilotbllen);estEndPh=phEstRes(end)+avgSlope*chunkLen/pilotbleqr;粗相复合1=HelperDVBS2PhaseCompensate(rxParams.ffBuffer,...rxParams.pilotEst、rxParams.pilotInd estEndPh);% MODCOD >= 18对应APSK调制方案如果cfgDVBS2。莫德科德>= 18 && rxParams.hasFinePhaseCompensation phaseCompOut1 = finePhaseSync(coarsePhaseCompOut1);其他的phaseCompOut1 = coarsePhaseCompOut1;终止终止终止%恢复输入位流。如果rxParams.frameCount > = rxParams。totalSyncFrames + 3 isValid = true;如果isLastFrame syncOut=[phaseCompOut;phaseCompOut1];其他的syncOut = phaseCompOut;终止其他的isValid=false;同步输出=[];终止%更新缓冲区和计数器。rxParams。cfBuffer = coarseFreqSyncOut (rxParams.syncIndex:结束);rxParams。年代yncIndex = syncIndex; rxParams.frameCount = rxParams.frameCount + 1;如果isValid%数据有效信号%使用HelperDBBS2PLHeaderRecover助手解码PL标头%的功能。帧的起始(SOF)是26个符号,被丢弃头码解码前的%。它们只需要框架%的同步。rxPLSCode=syncOut(27:90);[M,R,fecFrame,pilotStat]=HelperDVBS2PLHeaderRecover(rxPLSCode);xFECFrameLen=fecFrame/log2(M);%验证解码的PL报头。如果M~=rxParams.modOrder | R~=rxParams.codeRate||...fecFrame ~ = rxParams。fprintf(' ')“% s \ n”“PL标头解码失败”其他的%解调与解码对于frameCnt=1:length(syncOut)/plFrameSize rxFrame=syncOut((frameCnt-1)*plFrameSize+1:frameCnt*plFrameSize);估计噪声方差使用%helperDVBS2NoiseValestimate辅助函数。据nVar = HelperDVBS2NoiseVarEstimate (rxFrame rxParams.pilotInd,...rxParams.refPilots normFlag);%数据从符号91开始(在标题符号之后)。rxDataFrame=rxFrame(91:结束);%恢复BB帧。rxBBFrame = satcom.internal.dvbs.s2BBFrameRecover (rxDataFrame, M, R,...fecFrame pilotStat,据nVar、假);使用。%恢复输入的位流%HelperDVBS2StreamRecover helper函数。如果strcmpi (cfgDVBS2。StreamFormat,“GS”)&&&~rxParams.UPL[decBits,isFrameLost] = HelperDVBS2StreamRecover(rxBBFrame);如果~isFrameLost && length(decBits) ~= dataSize isFrameLost = true;终止其他的[decBits,isFrameLost,pktCRC]=HelperDVBS2StreamRecover(rxBBFrame);如果~isFrameLost&&length(decBits)~=dataSize isFrameLost=true;pktCRC=zero(0,1,“合乎逻辑”);终止%计算TS或GS分组的数据包错误率%模式。pktsErr=pktsErr+numel(pktCRC)-sum(pktCRC);pktsRec=pktsRec+numel(pktCRC);终止如果~isframets=sprintf(' % s '“BB报头解码已通过。”);其他的ts = sprintf (' % s ''BB报头解码失败。');终止%计算丢失的帧数。基带头CRC故障%被认为是帧丢失。numFramesLost = isFrameLost + numFramesLost;流('%s(丢失的帧数= %1d)\n',ts,numFramesLost)%计算错误位。bitInd = (dataStInd-1) * dataSize + 1: dataStInd * dataSize;如果isLastFrame && ~isFrameLost bitsErr = bitsErr + sum(data(bitInd) ~= decBits);其他的如果~isFrameLost bitsErr = bitsErr + sum(data(bitInd) ~= decBits);终止终止dataStInd=dataStInd+1;终止终止终止stIdx = endIdx;终止
BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)BB报头解码通过。(丢失帧数= 0)

可视化和错误日志

绘制同步数据的星座图,并计算BER和PER。

%同步数据星座图SyncConsist=通信星座图(“头衔”“同步数据”...“XLimits”,[-2 2],“YLimits”,[-2 2],...“ShowReferenceTellation”、假);syncConst (syncOut)

暂停(0.5)%错误度量显示%对于GS连续流如果strcmpi (cfgDVBS2。StreamFormat,“GS”)&&&~rxParams.UPL如果(simParams.numFrames-rxParams。totalSyncFrames == numFramesLost) fprintf(“所有的帧都丢失了。不能从BB帧中提取比特。”其他的数量= bitsErr / ((dataStInd-rxParams.totalSyncFrames) * dataSize);流(“方方面面:% 1.2 e \ n”, ber)终止其他的%用于GS和TS分组流如果pktsRec == 0“所有帧都丢失。无法从BB帧检索数据包。”其他的如果strcmpi (cfgDVBS2。StreamFormat,“t”)pktLen=1504;其他的pktLen = cfgDVBS2.UPL;%包括同步字节的上行长度终止数量= bitsErr / (pktsRec * pktLen);每= pktsErr / pktsRec;流('每:%1.2e\n',per)fprintf(“方方面面:% 1.2 e \ n”, ber)终止终止
每:0.00 e + 00
误码率:0.00e+00

进一步的探索

操作 E 年代 / N o 由于DVB-S2标准的量程很低,要求码元同步器和粗FLL的归一化环路带宽很小,才能进行精确估计。这些参数是通过rxParams.symbSyncLoopBWrxParams.carrSyncLoopBW

配置符号定时同步参数

尝试使用配置为标准化环路带宽1e-4的符号定时同步器运行模拟。当环路带宽在这个级别时,该表显示了特定调制方案和符号定时环路收敛所需的典型帧数“正常”FEC帧。

因为'FEC帧,用于符号定时同步的帧数是所需帧数的三倍'正常的选举委员会的框架。要实现定时回路的收敛,则其比rxParams.symbSyncLoopBW/simParams.sps必须大于1e-5。如果符号计时循环不收敛,请尝试增加rxParams.carrSyncLoopBW

配置帧同步参数

选择一个rxParams.symbSyncLock中提供的表中的值配置符号定时同步参数部分设置rxParams.frameSyncLock作为一个在[5,15]帧范围内的值 E 年代 / N o 设置。如果输出不符合预期,请增加帧同步所需的帧数。

配置载波同步参数

尝试使用粗略FLL运行模拟,PSK信号的归一化环路带宽为1e-4*0.023,APSK信号的归一化环路带宽为4e-4*0.023。

当你设置FECFrame财产“正常”,设置rxParams.coarseFreqLock属性设置为20。设置FECFrame财产“短”,设置rxParams.coarseFreqLock80年财产。集simParams。EsNodB到最低 E 年代 / N o 对于ETSI EN 302 307-1第6节中选择的调制方案[1].为HelperDvs2TimeReqSynchronizer系统对象,根据所选的配置设置其属性,如前面小节所讨论的。

%timeFreqSync=HelperDVBS2TimeFreqSynchronizer(。。。%’CarrFreqLoopBW’,rxParams。carrSyncLoopBW,……%’SymbTimeLoopBW’,rxParams。symbSyncLoopBW,……%’SamplesPerSymbol’,simParams。sps,……%“DataFrameSize”,rxParams.xFecFrameSize。。。%’SymbSyncTransitFrames’,rxParams。symbSyncLock,……%“FrameSyncAveragingFrames”,rxParams.frameSyncLock)

用这些代码行替换符号定时和粗频同步部分的代码。运行不同载波频率偏移(CFO)值的模拟。在粗频补偿后,查看图和剩余的CFO值(resCoarseCFO),观察粗频估计算法的性能。理想情况下,粗频率补偿将误差降低到符号率的2%。如果粗频补偿没有减少到少于3%的符号率,尝试减少环路带宽和增加rxParams.coarseFreqLock.因为频率误差是用导频符号估计的,验证帧同步器正确地锁定到帧的开始。

%[out,index,phEst]=TimeReqSync(rxData,false);%用符号速率归一化的频偏估计%frequeoffest=diff(phEst(1:simParams.sps:end))/(2*pi);%的阴谋(freqOffEst)% actFreqOff = simParams.cfo/chanBW / (1 + cfgDVBS2.RolloffFactor));% resCoarseCFO = abs(actFreqOff-freqOffEst(end));

当剩余载频偏移值(resCoarseCFO)减少到大约0.02或0.03,设置rxParams.frameCountrxParams.coarseFreqLock价值

对于“正常”FEC帧,设置rxParams.fineFreqLock值为10。对于“短”FEC帧,设置rxParams.fineFreqLock值为40。用此代码替换精细频率误差估计部分的代码。

%rxParams.fineFreqCorrVal=HelperDVBS2FineFreqEst(fineFreqIn(rxParams.pilotInd))。。。% rxParams.numPilots, rxParams.refPilots rxParams.fineFreqCorrVal);% fineFreqEst = angle(rxParams.fineFreqCorrVal)/(pi*(19));% resFineCFO = abs(actFreqOff-freqOffEst(end)-fineFreqEst);

重复模拟过程,观察剩余CFO值(resFineCFO)覆盖每帧。如果良好的频率估计器不能减少剩余载波频率误差到符号率的大约0.01%,尝试增加rxParams.fineFreqLock属性值。

当剩余CFO价值(resFineCFO)减少到大约0.0001或0.0002,设置rxParams.frameCount + 1rxParams.coarseFreqLock价值

精细相位补偿锁相环仅用于16种相位噪声较大的APSK调制方案和32种相位噪声较大的APSK调制方案。

优化中设置的同步参数后rxParams结构,对更新后的配置进行误码率模拟。

附录

这个例子使用了这些辅助函数:

参考书目

  1. ETSI标准EN 302 307-1 V1.4.1(2014-11)。数字视频广播(DVB);广播、交互服务、新闻采集和其他宽带卫星应用的第二代帧结构、信道编码和调制系统(DVB-S2)

  2. ETSI标准TR 102 376-1 V1.2.1(2015-11)。数字视频广播(DVB).广播、交互服务、新闻采集和其他宽带卫星应用(DVB-S2)用第二代系统的实施指南

  3. 蒙加利,翁贝托和阿尔多·n·d 'Andrea。数字接收机的同步技术.纽约:三中全会出版社,1997。

  4. E.Casini、R.De Gaudenzi和Alberto Ginesi.“典型卫星信道上的DVB-S2调制解调器算法设计和性能。”国际卫星通信和网络杂志22,第3号(2004):281-318。

  5. 迈克尔大米,数字通信:一种离散时间方法.纽约:Prentice Hall, 2008。

另见

物体

相关的话题