主要内容

带射频损伤和校正的端到端CCSDS遥测同步和信道编码模拟

此示例显示了如何测量空间数据系统协商委员会(CCSDS)遥测(TM)系统端到端链的误码率(BER)。模拟链遵循这两个标准规定的编码和调制方案:

  • TM同步和信道编码 - 用于信道编码方案的CCSDS 131.0-B-3[1]

  • 射频和调制系统 - 第1部分地球站和航天器 - 用于调制方案的CCSDS 401.0-B-30[2]

介绍

来自各种仪器的数据在卫星上产生。这些数据统称为TM数据.CCSDS规定了将TM数据从卫星传输到地球站的编码和调制方案。此示例显示了卫星到地球站通信链路的端到端模拟。该示例显示了如何从随机生成的传输帧(TFs)生成复杂基带CCSDS TM波形,将射频(RF)损伤引入基带信号,并添加加性高斯白噪声(AWGN)然后,该示例显示了该受损噪声信号的同步、解调和解码,以获得TFs形式的最终比特。该示例还显示了如何根据信噪比(SNR)测量误码率用于CCSDS TM信号的一种配置。此图显示了端到端模拟链。

本示例对这些射频损伤进行了建模:

  • 载波频率偏移(CFO)

  • 载波相位偏移(CPO)

  • 符号定时偏移(STO)

该图显示了接收器侧操作。

帧同步和信道解码处理步骤执行这三项任务。

  1. 执行相位模糊度解析

  2. 将帧与连接的同步标记(ASM)的起始点正确同步

  3. 对同步帧进行信道解码,得到恢复的TF

这个数字显示了这三个任务。要启动,请形成一组ASM序列。每个序列对应于引入相位模糊的原始ASM值。将每个序列与解调的符号相关联。选择具有最高相关峰值的相位歧义值。使用此相关过程执行帧同步。执行相关性的过程在第9.3.7节中说明[3].本例采用简化的Massey算法进行帧同步。在帧同步过程完成后,解决整套解调符号上的相位模糊。最后,对这些符号执行信道解码以获得恢复的TFs。

模拟参数

该示例使用正交相移键控(QPSK)调制方案用于信号生成和接收,使用速率1/2卷积编码方案用于信道编码。本例所示的端到端链也可用于中指定的信道编码方案[1]:Reed-Solomon(RS)码和级联码。对于卷积码和级联码,本示例支持1/2和2/3的速率以及脉冲编码调制(PCM)-非归零线(NRZ-L)格式。本示例中支持的调制方案为二进制相移键控(BPSK)和QPS万博1manbetxK。

see=true;%切换星座可视化的标志信道编码=“卷积”;%信道编码方案transferFrameLength=1115;%以字节表示,对应于223*5modScheme=“QPSK”;%调制方案α=0.35;%根升余弦滤波器衰减因子sps=8;%每个符号的样本数

设置用于信号生成的频率和射频损伤值。

fSym=2e6;%符号速率或波特率(以Hz为单位)cfo=2e5;%以赫兹为单位

初始化每比特能量与噪声功率比(Eb/N0),用于使用系统参数计算SNR。

EBN0 = 10;%要查看正确的误码率结果,请运行3.2:0.2:5的模拟

初始化参数以终止模拟。在本例中,参数被设置为较小的值以获得快速结果。增加这些参数值以获得更平滑的BER曲线。

最大数值误差=1e2;MaxNumerRors位错误后%模拟停止maxNumBits = 1 e5;%处理maxNumBits后,模拟停止%设置maxNumBits=1e8以获得更平滑的BER曲线maxFramesLost=1e2;%maxFramesLost帧丢失后,模拟停止

系统参数

初始化端到端链正常运行所需的所有对象。

使用以下参数创建CCSDS TM波形发生器:CCSDSTM波形发生器系统对象™. 显示对象的属性。

tmWaveGen=CCSDSTMSWaveFormGenerator(“频道码”,信道编码,......“传输帧中的Numbytes”,传输帧长度,......“调制”,modScheme,......“滚动系数”,α,......“samplespersymbol”, sps);disp (tmWaveGen)
具有属性的CCSDSTMWaveFormGenerator:WaveformSource:“同步和频道编码”NumByTesIntransferframe:1115 HasRandomizer:True哈斯队:真正的PCMFormat:“NRZ-L”通道编码频道码:“卷积”卷大竞技寄存器:“1/2”数字调制和滤波调制:“QPSK“脉冲砍伐Filter:”根升余弦“Rollofffactor:0.3500 FiltersPaninsymbols:10 Samplespersymbol:8使用可以显示所有属性

从Eb/N0计算SNR,并初始化与BER计算相关的参数。

速率=tmWaveGen.info.Actual减额;M=tmWaveGen.info.NumBitsPerSymbol;numBitsInTF=tmWaveGen.NumInputBits;信噪比=EbN0+10*log10(速率)+......10*log10(M)-10*log10(sps);%当引入噪声时,信号功率被缩放为1,%snr值应减少SPS的一倍numSNR=长度(snr);ber=零(numSNR,1);%初始化BER参数bercalc=通信错误率;

通过使用comm.RaisedCoSinerReceiveFilter系统对象。

b=rcosdesign(alpha、tmWaveGen.FilterSpanInSymbols、sps);%| H(f)|= 1 for | f |增益=总和(b);rxFilterDecimationFactor=sps/2;rxfilter=comm.RaisedCoSinerReceiveFilter(......“决策因素”,RxFilterDecisionFactor,......“inputsamplespersymbol”,sps,......“滚动系数”,α,......“收益”,获得);

通过使用comm.phasefrequencyoffset.系统对象。分两步补偿接收机的频率和相位偏移。

  1. 通过使用通信频率补偿器系统对象。

  2. 通过使用comm.carriersynchronizer系统对象。

相位偏移=π/8;fqyoffsetobj=通信相位频率偏移量(......“频率偏移”,首席财务官,......“相位偏移”,相位偏移,......“采样器”,sps*fSym);粗略频率同步=通信粗略频率补偿器(......“调制”,modScheme,......“频率分辨率”,100,......“采样器”,sps * fsym);finefreqsync = comm.carriersynchronizer(“阻尼系数”,1/平方米(2),......“标准化环路带宽”,0.0007,......“samplespersymbol”1.......“调制”,计划);

通过使用可变分馏层系统对象,它引入了传输波形中的分数延迟。通过使用使用符号同步对象通信符号同步器系统对象,执行符号定时同步。

varDelay=dsp.VariableFractionalDelay(“插值法”,“法罗”);Mateddelayval = 10.2;kp = 1 /(pi *(1  - ((alpha ^ 2)/ 4)))* cos(pi * alpha / 2);symsyncobj = comm.symbolsynchronizer(......“阻尼系数”,1/平方米(2),......“检测器增益”,Kp,......“timingerrordetector”,“加德纳(非数据辅助)”,......“调制”,“pam / psk / qam”,......“标准化环路带宽”,0.0001,......“samplespersymbol”,sps / rxfilterdecimationfactor);

使用helperccsdstmdemodulator.helpercsdstmd解码器助手文件。显示结果对象的属性。

Demodobj = HelperccsdstmdeModulator(“调制”,modScheme,“频道码”,信道编码)
DemoObj=HelperCSDSTMDemogrator,具有以下属性:调制:“QPSK”PCM格式:“NRZ-L”信道编码:“卷积”
decoderobj=helpercsdstmdecoder(“频道码”,信道编码,......“传输帧中的Numbytes”,传输帧长度,......“调制”,计划)
decoderobj=HelperCSDSTMDecoder,具有以下属性:信道编码:“卷积”HasRandomizer:true HasASM:true DisableFrameSynchronization:0 DisablePhaseAmbiguityResolution:0 Numbytes传输帧:1115卷积编码率:“1/2”ViterbiTraceBackDepth:60 Viterbitrallis:[1x1结构]ViterbiWordLength:8调制:“QPSK”PCM格式:“NRZ-L”

使用通信星座图系统对象可视化星座的方式如何随着Synchronizers收敛而发展的。

costellationobj = comm.constellationDiagram;%默认视图是用于QPSK的如果strcmp(MODMP)方案,“BPSK”)costellationobj.referenceConstellation = [1,-1]终止

加工链

要模拟端到端链并测量CCSDS TM系统的误码率,请执行以下步骤。

  1. 生成随机位以形成TF。

  2. 通过将TF通过CCSDSTM波形发生器系统对象。

  3. 引入射频损伤,如CFO和符号延迟。

  4. 将AWGN添加到射频受损信号中。该噪声信号被视为接收信号。

  5. 将接收信号通过粗频校正,粗频校正执行初始粗载波频率同步。粗频估计使用“基于FFT的”算法完成。

  6. 使用与变送器端相同配置的匹配滤波器(根升余弦滤波器)。由于符号定时同步模块在高于符号速率的采样速率下工作,因此在滤波之后,复基带样本不被下采样到符号速率。对其进行下采样,以便每个符号至少存在2个样本。

  7. 使用加德纳定时误差检测器(TED)执行符号定时同步,以消除信号中存在的定时偏移。

  8. 利用该方法实现载波频率和相位跟踪comm.carriersynchronizer系统对象,具有类型2锁相环(PLL)。该系统对象可以跟踪静止载波频率偏移。系统对象还引入了相模糊,然后通过帧同步模块删除。

  9. 在符号定时和载波频率同步完成后,可视化星座。观察星座如何在多次迭代中演变。

  10. 解调接收到的信号并验证信号是否处于符号速率(即,每个符号的采样数为1)。

  11. 执行帧同步和信道解码以解决相位模糊,将帧同步到ASM的开始,然后解码同步帧以恢复TF。

numBitsForBER=8;%用于检测同步的帧numMessagesInBlock=2^numBitsForBER;对于isnr=1:numSNR rng违约;%重置以获得可重复的结果重置(bercalc);berinfo=bercalc(int8(1),int8(1));%在计算BER之前初始化berinfotfidx=1;numFramesLost=0;prevdectfidx=0;inputBuffer=0(numBitsInTF,256,“int8”);虽然((berinfo(2)......(berinfo(3)......(numFramesLost%生成可重复模拟的种子%发射机端处理位=int8(randi([0 1],numBitsInTF numBitsForBER,1));%前8位对应于TF索引模256.何时%包括同步模块,可以有几个帧%同步暂时丢失,然后再次锁定。%在这种情况下,为了计算误码率,这8位有助于%识别解码的TF。如果这8位中有错误%存在,则通过查看差异来检测此错误%在连续解码位之间。如果检测到错误,则%该帧被视为丢失。即使数据链路层%在本例的范围之外,数据链路层具有类似的%在本例中,仅用于计算误码率%采用的机制。本文件中采用的机制%示例不符合CCSDS数据链路层的规定%标准。而这一机制在物理模型中没有具体说明%CCSDS标准层。msg=[de2bi(mod(tfidx-1,numMessagesInBlock),numBitsForBER,“左手毫秒”)。”;位);inputBuffer(:,国防部(tfidx-1 numMessagesInBlock) + 1) =味精;tx = tmWaveGen(味精);%介绍射频损伤cfoinroduced = fqyoffsetobj(tx);%介绍首席财务官延迟=可变延迟(C产生,固定延迟);%介绍定时偏移量Rx = AWGN(延迟,SNR(ISNR),“测量”,种子);%添加AWGN%接收器侧处理粗同步=粗同步频率(rx);%应用粗频同步过滤=rxfilter(粗同步);%过滤器通过RRC滤波器接收样本Timesynced = Symsyncobj(过滤);%应用符号定时同步Finesynced = FineFreqsync(跨越);%轨道频率和相位%可视化星座如果星座%绘制TF so中前1000个符号的星座图ineSynce的变量大小不会阻碍%对系统的恒定输入大小的要求%comm.ConstellationDiagram系统对象。costellationobj(精细同步(1:1000));终止解调数据=解调对象j(精同步);%解调解码= Decoderobj(Demoddata);%执行相位歧义分辨率,%帧同步和信道解码%计算误码率并相应地调整所有缓冲区dectfidx=bi2de(双精度(解码(1:8)),......“左手毫秒”)+1;%看到前8位的值如果tfidx>30%考虑在30个TFS处理之后才计算BER。%由于前8位的值每增加一位%迭代,如果当前解码的前8位的%十进制值不等于先前%解码一个,则表示帧丢失。如果dectfidx-prevdectfidx~=1 numFramesLost=numFramesLost+1;disp(['在tfidx处丢失帧:'num2str(tfidx)......“.丢失的总帧数:”num2str(numFramesLost)];其他的Berinfo = Bercalc(InputBuffer(:,dectfidx),解码);如果nnz(输入缓冲区(:,dectfidx)-解码)显示(['TFIDX发生错误:'num2str(tfidx)......'。num错误:'num2str(nnz(输入缓冲区(:,dectfidx)-解码)))终止终止终止prevdectfidx = dectfidx;%更新tfidxTfidx = Tfidx + 1;终止fprintf(“\n”); currentBer=berinfo(1);误码率(isnr)=当前误码率;disp([“Eb/N0:”num2str(EbN0(isnr))'。BER:'num2str(当前错误)......“.Num帧丢失:”num2str(numFramesLost)];%重置对象重置(tmwavegen);重置(fqyoffsetobj);重置(Vardelay);重置(coarsefreqsync);重置(RxFilter);重置(symsyncobj);重置(FineFreqsync);重置(Demodobj);重置(Decoderobj);终止

Eb/N0:10.误码率:0.丢失帧数:0

进一步探索

该示例演示了在存在几个RF损伤的情况下具有QPSK调制的卷积码的BER模拟。要观察不同方案的端到端仿真链,请更改与信道编码和调制方案相关的属性。在该示例中由接收器支持的调制方案是BPSK和QPSK。万博1manbetx在该示例中由接收器支持的信道编码方案不是(即,没有信道编码),RS,卷积万博1manbetx和连接代码。

通过将Eb/N0值设置为3.2:0.2:5来运行完整的误码率模拟,并通过设置来观察误码率马克斯努比茨到1e8。取消注释此代码以绘制BER结果。

%semilogy(ebn0,ber);%网格化;%xlabel('E_b/N_0(dB)');%ylabel(‘BER’);%标题(“BER地块”);

始终保留符号时序和载波频率同步器的初始少量TFS以锁定。此示例丢弃了前30个TFS。该数字可以基于接收器运行的SNR和同步环的参数,例如环路带宽和阻尼因子。如果在低SNR处操作接收器并在初始值中观察大错误tfidx,则同步器尚未锁定。对于给定的模拟参数,根据需要丢弃初始TFs。的第二个输出参数通信频率补偿器comm.carriersynchronizer系统对象包含与估计的CFO相关的信息,可用于评估同步循环是否锁定。

附录

该示例使用以下帮助文件:

参考文献

[1] TM同步和信道编码。《空间数据系统标准建议》,CCSDS 131.0-B-3。蓝皮书。问题3。华盛顿特区:CCSDS,2017年9月。

无线电频率和调制系统。第1部分:地面站和航天器。空间数据系统标准建议,CCSDS 401.0-B-30。蓝色的书。30个问题。华盛顿特区:CCSDS, 2020年2月。

[3] TM同步和信道编码-概念和基本原理摘要。关于空间数据系统标准的报告,CCSDS 130.1-G-3。绿皮书。第3期。华盛顿特区:CCSDS,2020年6月。

另见

物体

相关话题