端到端CCSDS遥测同步和信道编码模拟与射频损伤和校正
本示例展示了如何测量空间数据系统咨询委员会(CCSDS)遥测(TM)系统端到端链的误码率(BER)。仿真链遵循以下两个标准指定的编码和调制方案:
简介
来自各种仪器的数据在卫星上生成。这些数据统称为TM数据.CCSDS规定了从卫星向地面站传输TM数据的编码和调制方案。本例模拟了卫星到地面站的端到端通信链路。该示例演示了如何从随机生成的传输帧(tf)生成复杂基带CCSDS TM波形,将射频(RF)损伤引入基带信号,并向受损信号添加加性高斯白噪声(AWGN)。然后,该示例演示了该受损噪声信号的同步、解调和解码,以tf形式得到最终比特。该示例还展示了如何测量CCSDS TM信号的一种配置的误码率与信噪比(SNR)的关系。该图显示了端到端模拟链。
这个例子模拟了这些射频损伤:
载波频率偏移(CFO)
载波相位偏移(CPO)
符号定时偏移(STO)
该图显示了接收端操作。
帧同步和信道解码处理步骤执行这三个任务。
执行相位模糊解析
正确地将帧同步到附加的同步标记(ASM)的开始
执行同步帧的信道解码以获得恢复的TF
该图显示了这三个任务。首先,形成一个ASM序列库。每个序列对应于引入相位模糊的原始ASM值。将这些序列与解调符号关联起来。选择具有最高相关峰值的相位模糊度值。使用这个相关进程执行帧同步。执行相关性的过程在第9.3.7节中进行了说明[3].本例采用简化的Massey算法进行帧同步。在帧同步过程完成后,解决解调符号的完整集上的相位模糊。最后,对这些符号进行信道解码,得到恢复的tf。
仿真参数
本例使用正交相移键控(QPSK)调制方案进行信号生成和接收,使用速率-1/2卷积编码方案进行信道编码。中指定的通道编码方案也可以使用此示例显示的端到端链[1]: RS (Reed-Solomon)码和级联码。对于卷积码和级联码,本例支持1/2和2/3的速率以及不返回零线(NRZ-L)的脉冲码调制(PCM)格式。本例中支持的调制方案是二进制相移键控(BPSK)和QPSK。
seeConstellation = true;标志来切换星座的可视化channelCoding =“卷积”;%信道编码方案transferFrameLength = 1115;%,单位为字节,对应223*5modScheme =“正交相移编码”;调制方案Alpha = 0.35;%根提升余弦滤波器滚脱因子SPS = 8;每个符号的样本百分比
设置用于信号产生的频率和射频损伤值。
fSym = 2e6;%符号速率或波特率,单位为HzCfo = 2e5;% (Hz)
初始化每比特能量与噪声功率比(Eb/N0),用于使用系统参数计算信噪比。
EbN0 = 10;要查看正确的误码率结果,请运行3.2:0.2:5的模拟
初始化参数以终止模拟。在本例中,参数设置为较小的值,以便快速得到结果。增大这些参数值可以得到更平滑的误码率曲线。
maxNumErrors = 1e2;maxNumErrors位错误后停止模拟maxNumBits = 1e5;处理maxNumBits后停止模拟设置maxNumBits = 1e8为更平滑的误码率曲线maxFramesLost = 1e2;maxFramesLost帧丢失后模拟停止
系统参数
初始化端到端链正常运行所需的所有对象。
函数创建具有这些参数的CCSDS TM波形发生器ccsdsTMWaveformGenerator
系统对象™。显示对象的属性。
tmWaveGen = ccsdsTMWaveformGenerator(“ChannelCoding”channelCoding,...“NumBytesInTransferFrame”transferFrameLength,...“调制”modScheme,...“RolloffFactor”α,...“SamplesPerSymbol”, sps);disp (tmWaveGen)
ccsdsTMWaveformGenerator with properties: WaveformSource:“同步和通道编码”NumBytesInTransferFrame: 1115 HasRandomizer: true HasASM: true PCMFormat:“NRZ-L”通道编码ChannelCoding:“卷积”ConvolutionalCodeRate:“1/2”数字调制和滤波器调制:“QPSK”PulseShapingFilter:“根提高余弦”RolloffFactor: 0.3500 FilterSpanInSymbols: 10 SamplesPerSymbol: 8使用get显示所有属性
根据Eb/N0计算信噪比,初始化与误码率计算相关的参数。
rate = tmWaveGen.info.ActualCodeRate;M = tmWaveGen.info.NumBitsPerSymbol;numBitsInTF = tmWaveGen.NumInputBits;信噪比= EbN0 + 10*log10(速率)+...10*log10(M) - 10*log10(sps);在引入噪声的同时,将信号功率缩放为1,信噪比应降低一个SPS因子numSNR =长度(信噪比);ber = 0 (numSNR,1);初始化BER参数bercalc = com . errorrate;
属性创建接收筛选器对象comm.RaisedCosineReceiveFilter
系统对象。
b = rcosdesign(alpha,tmWaveGen.FilterSpanInSymbols,sps);% |H(f)| = 1 for |f| < fN(1-alpha) -[2]第2.4.17A节附录1增益= sum(b);rxFilterDecimationFactor = sps/2;rxfilter = com . raisedcosinereceivefilter (...“DecimationFactor”rxFilterDecimationFactor,...“InputSamplesPerSymbol”sps,...“RolloffFactor”α,...“获得”,获得);
模型的频率和相位偏移使用comm.PhaseFrequencyOffset
系统对象。在接收机上分两步补偿频率和相位偏移。
补偿粗频偏移使用
comm.CoarseFrequencyCompensator
系统对象。对细微的频率偏置和相位偏置进行补偿
comm.CarrierSynchronizer
系统对象。
phaseOffset = pi/8;fqyoffsetobj = com . phasefrequencyoffset (...“FrequencyOffset”首席财务官,...“PhaseOffset”phaseOffset,...“SampleRate”sps * fSym);coarseFreqSync = com . coarsefrequency compensator (...“调制”modScheme,...“FrequencyResolution”, 100,...“SampleRate”sps * fSym);fineFreqSync = com . carriersynchronizer (“DampingFactor”1 /√(2)...“NormalizedLoopBandwidth”, 0.0007,...“SamplesPerSymbol”,1,...“调制”, modScheme);
属性创建可变分数延迟对象dsp。VariableFractionalDelay
系统对象,它在传输波形中引入分数延迟。方法创建符号同步对象comm.SymbolSynchronizer
执行符号定时同步的系统对象。
varDelay = dsp。VariableFractionalDelay (“InterpolationMethod”,“法罗”);fixedDelayVal = 10.2;Kp = 1/(*(1-(²)/4))*cos(* /2);symsyncobj = com . symbolsynchronizer (...“DampingFactor”1 /√(2)...“DetectorGain”Kp,...“TimingErrorDetector”,“加德纳(non-data-aided)”,...“调制”,“PAM /相移键控/ QAM”,...“NormalizedLoopBandwidth”, 0.0001,...“SamplesPerSymbol”sps / rxFilterDecimationFactor);
对接收信号进行解调和解码HelperCCSDSTMDemodulator
而且HelperCCSDSTMDecoder
分别为辅助文件。显示结果对象的属性。
demodobj = helperccsdstm解调器(“调制”modScheme,“ChannelCoding”channelCoding)
demodobj = HelperCCSDSTMDemodulator with properties:调制:“QPSK”PCMFormat:“NRZ-L”ChannelCoding:“卷积”
decoderobj = helpccsdstmdecoder (“ChannelCoding”channelCoding,...“NumBytesInTransferFrame”transferFrameLength,...“调制”modScheme)
decoderobj = HelperCCSDSTMDecoder with properties: ChannelCoding: "convolutional" HasRandomizer: true HasASM: true disableframesynization: 0 DisablePhaseAmbiguityResolution: 0 NumBytesInTransferFrame: 1115 ConvolutionalCodeRate: "1/2" ViterbiTraceBackDepth: 60 ViterbiTrellis: [1x1 struct] ViterbiWordLength: 8 Modulation: "QPSK" PCMFormat: "NRZ-L"
方法初始化星座图对象comm.ConstellationDiagram
系统对象来可视化同步器收敛时星座如何演变。
costellationobj = com .星座图;%默认视图为QPSK如果比较字符串(modScheme“BPSK”) costellationobj。ReferenceConstellation = [1, -1]结束
处理链
要模拟端到端链并测量CCSDS TM系统的误码率,请遵循以下步骤。
生成随机位来形成TF。
产生TM波形通过传递TF通过
ccsdsTMWaveformGenerator
系统对象。介绍射频损伤,如CFO和符号延迟。
将AWGN添加到rf受损信号中。这个噪声信号被认为是接收信号。
对接收到的信号进行粗频校正,粗频校正完成初始粗载频同步。粗频率估计使用“基于fft”算法。
使用一个匹配的滤波器(根凸起余弦滤波器),具有与应用于发送端相同的配置。由于符号定时同步模块工作在高于符号速率的采样速率下,滤波后的复杂基带样本不会下降到符号速率。它是向下采样,以便每个符号存在至少2个样本。
通过使用加德纳计时错误检测器(TED)来执行符号定时同步,以消除信号中存在的定时偏移。
执行载波频率和相位跟踪使用
comm.CarrierSynchronizer
系统对象,具有2型锁相环(PLL)。该系统对象可以跟踪静止载波频率偏移。System对象还引入了相位模糊,然后由帧同步模块去除。在符号计时和载波频率同步完成后,可视化星座。观察星座如何在多次迭代中演化。
解调接收到的信号,并验证信号的符号速率(即每个符号的样本为1)。
通过帧同步和信道解码来解决相位模糊,将帧同步到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) < maxNumErrors) &&...(berinfo(3) < maxNumBits) &&...(numFramesLost < maxFramesLost)) seed = randi([0 2^32-1],1,1);生成可重复模拟的种子发射机端处理bits = int8(randi([0 1],numBitsInTF-numBitsForBER,1));前8位对应TF索引对256求模。当%同步模块包括在内,可以有几个帧%,其中同步暂时丢失,然后再次锁定。在这种情况下,要计算误码率,这8位是有用的%标识哪个TF被解码。如果这8位出现错误%存在,则通过查看差异来检测此错误%之间的连续解码位。如果检测到错误,则%该帧被认为丢失。即使数据链路层是超出本例范围的,数据链路层也有类似的%的机制。在本例中,仅用于计算误码率,此采用%机制。采用的机制% example与CCSDS数据链路层中指定的不一致%的标准。这个机制在物理上是没有规定的%层的CCSDS标准。msg = [de2bi(mod(tfidx-1,numMessagesInBlock),numBitsForBER,“left-msb”)。”;位);inputBuffer(:,mod(tfidx-1,numMessagesInBlock)+1) = msg;tx = tmWaveGen(msg);引入射频损伤cfoimported = fqyoffsetobj(tx);介绍CFOdelay = varDelay(cfoimported,fixedDelayVal);%引入定时偏移Rx = awgn(延迟,信噪比(isnr),“测量”、种子);添加AWGN接收端处理coarsynced = coarseFreqSync(rx);%应用粗频率同步filtered = rxfilter(coarseSynced);通过RRC过滤器对接收样品进行过滤TimeSynced = symsyncobj(过滤);应用符号定时同步fineSynced = fineFreqSync(TimeSynced);跟踪频率和相位%可视化星座如果seeConstellation绘制TF中前1000个符号的星座%说明fineSynced的可变大小不会妨碍的恒定输入大小的要求系统对象。costellationobj (fineSynced (1:1000));结束demodData = demodobj(fineSynced);%解调decoded = decoderobj(demodData);执行相位模糊度解析,%帧同步,和信道解码计算误码率并相应地调整所有缓冲区Dectfidx = bi2de(double(decoded(1:8).'),...“left-msb”) + 1;查看前8位的值如果Tfidx > 30%考虑在处理30个tf后才计算误码率由于前8位的值每增加1%迭代,如果当前解码的差值前8位的十进制值不等于前8位%解码一个,那么它表示帧丢失。如果dectfidx - prevdectfidx ~= 1 numFramesLost = numFramesLost + 1;disp ([帧丢失在tfidx:num2str (tfidx)...”。丢失的总帧数:'num2str (numFramesLost)]);其他的berinfo = bercalc(inputBuffer(:,dectfidx),已解码);如果nnz (inputBuffer (:, dectfidx)解码)disp (['错误发生在tfidx: 'num2str (tfidx)...”。Num错误:'num2str(nnz(inputBuffer(:,dectfidx) -已解码))])结束结束结束Prevdectfidx = dectfidx;%更新tfidxTfidx = Tfidx + 1;结束流(“\ n”);currentBer = berinfo(1);ber(isnr) = currentBer;disp ([“Eb / N0:”num2str (EbN0 (isnr))”。数量:num2str (currentBer)...”。丢失的帧数:'num2str (numFramesLost)]);%重置对象重置(tmWaveGen);重置(fqyoffsetobj);重置(varDelay);重置(coarseFreqSync);重置(rxfilter);重置(symsyncobj);重置(fineFreqSync);重置(demodobj);重置(decoderobj);结束
Eb / N0: 10。数量:0。丢失帧数:0
进一步的探索
本例演示了在几种射频损伤存在的情况下,使用QPSK调制的卷积码的误码率仿真。为了观察不同场景下的端到端仿真链,可以修改与信道编码和调制方案相关的属性。本例中接收机支持的调制方案是BPSK和QPSK。本例中接收方支持的信道编码方案是none(即无信道编码)、RS、卷积和级联码。
通过将Eb/N0值设置为3.2:0.2:5来运行完整的误码模拟,并通过设置来观察误码maxNumBits
1 e8。取消注释此代码以绘制误码率结果。
% semilogy (EbN0 ber);%网格打开;% xlabel('E_b/N_0 (dB)');% ylabel(“方方面面”);% title('BER plot');
始终为符号定时和载频同步器锁定保留最初的几个tf。本例将丢弃前30个tf。这个数字可以根据接收机工作时的信噪比和同步环路的参数(如环路带宽和阻尼因子)而变化。如果您在低信噪比下操作接收机,并观察到的初始值有较大误差tfidx
,则同步器尚未锁定。对于给定的模拟参数,适当地丢弃初始tf。的第二个输出参数comm.CoarseFrequencyCompensator
而且comm.CarrierSynchronizer
系统对象包含与估计CFO相关的信息,这些信息可用于评估同步循环是否被锁定。
附录
本例使用了以下helper文件:
HelperCCSDSTMDemodulator.m-对CCSDS TM中指定的信号进行解调[2]
HelperCCSDSTMDecoder.m-对指定的编码进行相位模糊解析、帧同步和信道解码[1]
参考文献
[1] TM同步和信道编码。空间数据系统标准建议书。蓝色的书。问题3。华盛顿特区:CCSDS, 2017年9月。
无线电频率和调制系统——第1部分:地面站和航天器。空间数据系统标准建议书。蓝色的书。30个问题。华盛顿特区:CCSDS, 2020年2月。
TM同步和信道编码-概念和原理概述。关于空间数据系统标准的报告,CCSDS 130.1-G-3。绿色的书。问题3。华盛顿特区:CCSDS, 2020年6月。