主要内容

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

本例介绍了如何测量空间数据系统协商委员会(CCSDS)遥测系统(TM)端到端链的误码率(BER)。仿真链遵循以下两个标准规定的编码和调制方案:

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

  • 无线电频率和调制系统。第1部分地面站和航天器。调制方案的CCSDS 401.0-B-30[2]

简介

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

这个例子模拟了这些射频损伤:

  • 载波频率偏移(CFO)

  • 载波相位偏移(CPO)

  • 符号定时偏移(STO)

该图显示了接收端操作。

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

  1. 执行相位模糊解决

  2. 正确地将帧同步到附加同步标记(ASM)的开始

  3. 执行同步帧的通道解码以获得恢复的TF

该图显示了这三个任务。首先,形成一个ASM序列库。每个序列对应于引入相位模糊的原始ASM值。将这些序列与解调后的符号关联起来。选择相关峰最高的相位模糊度值。与这个相关进程执行帧同步。执行关联的过程在第9.3.7节中说明[3].本例采用简化的Massey算法进行帧同步。在帧同步过程完成后,解决被解调符号的完整集合上的相位模糊。最后,对这些符号进行信道解码,以获得恢复的tf。

仿真参数

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

seeConstellation = true;标志切换星座的可视化。channelCoding =“卷积”信道编码方案transferFrameLength = 1115;%,单位为字节,对应223*5modScheme =“正交相移编码”%调制方案α= 0.35;根提升余弦滤波器滚离因子sps = 8;每个符号的样本百分比

设置用于产生信号的频率和射频减值。

fSym = 2 e6;符号速率或波特率(以Hz为单位)首席财务官= 2 e5;%在赫兹

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

EbN0 = 10;要查看正确的BER结果,运行3.2:0.2:5的模拟

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

maxNumErrors = 1 e2;maxNumErrors位错误后模拟停止maxNumBits = 1 e5;模拟在处理maxNumBits后停止设置maxNumBits = 1e8以获得更平滑的BER曲线maxFramesLost = 1 e2;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: "convolutional" ConvolutionalCodeRate: "1/2"数字调制和滤波调制:"QPSK" PulseShapingFilter: "root raised cos" RolloffFactor: 0.3500 FilterSpanInSymbols: 10 SamplesPerSymbol: 8使用get显示所有属性

从Eb/N0计算信噪比,初始化计算误码率的相关参数。

率= tmWaveGen.info.ActualCodeRate;M = tmWaveGen.info.NumBitsPerSymbol;numBitsInTF = tmWaveGen.NumInputBits;snr = EbN0 + 10*log10(速率)+...10 * log10 (M) - 10 * log10 (sps);%当信号功率缩放到1,同时引入噪声,%信噪比值应降低一个SPS因子numSNR =长度(信噪比);数量= 0 (numSNR, 1);初始化BER参数bercalc = comm.ErrorRate;

方法创建接收筛选器对象comm.RaisedCosineReceiveFilter系统对象。

b = rcosdesign(α,tmWaveGen.FilterSpanInSymbols, sps);% |H(f)| = 1对于|f| < fN(1-alpha) -[2]中第2.4.17A节附件1获得=和(b);rxFilterDecimationFactor = sps / 2;rxfilter = comm.RaisedCosineReceiveFilter (...“DecimationFactor”rxFilterDecimationFactor,...“InputSamplesPerSymbol”sps,...“RolloffFactor”α,...“获得”,获得);

模型的频率和相位偏移使用comm.PhaseFrequencyOffset系统对象。在接收器上分两步补偿频率和相位偏移。

  1. 补偿粗频偏移使用comm.CoarseFrequencyCompensator系统对象。

  2. 对微小的频率偏移和相位偏移进行补偿comm.CarrierSynchronizer系统对象。

phaseOffset =π/ 8;fqyoffsetobj = comm.PhaseFrequencyOffset (...“FrequencyOffset”首席财务官,...“PhaseOffset”phaseOffset,...“SampleRate”sps * fSym);coarseFreqSync = comm.CoarseFrequencyCompensator (...“调制”modScheme,...“FrequencyResolution”, 100,...“SampleRate”sps * fSym);fineFreqSync = comm.CarrierSynchronizer (“DampingFactor”1 /√(2)...“NormalizedLoopBandwidth”, 0.0007,...“SamplesPerSymbol”, 1...“调制”, modScheme);

方法创建一个可变的分数延迟对象dsp。VariableFractionalDelay系统对象,它在传输波形中引入了分数延迟。方法创建符号同步对象comm.SymbolSynchronizer系统对象,它执行符号定时同步。

varDelay = dsp。VariableFractionalDelay (“InterpolationMethod”“法罗”);fixedDelayVal = 10.2;Kp = 1 /(π*(1 -((α^ 2)/ 4)))* cos(π*α/ 2);symsyncobj = comm.SymbolSynchronizer (...“DampingFactor”1 /√(2)...“DetectorGain”Kp,...“TimingErrorDetector”“加德纳(non-data-aided)”...“调制”“PAM /相移键控/ QAM”...“NormalizedLoopBandwidth”, 0.0001,...“SamplesPerSymbol”sps / rxFilterDecimationFactor);

对接收到的信号进行解调和解码HelperCCSDSTMDemodulator而且HelperCCSDSTMDecoder辅助文件,分别。显示结果对象的属性。

demodobj = HelperCCSDSTMDemodulator (“调制”modScheme,“ChannelCoding”channelCoding)
demodobj = HelperCCSDSTMDemodulator with properties: Modulation: "QPSK" PCMFormat: "NRZ-L" ChannelCoding: "convolutional"
decoderobj = HelperCCSDSTMDecoder (“ChannelCoding”channelCoding,...“NumBytesInTransferFrame”transferFrameLength,...“调制”modScheme)
decoderobj = HelperCCSDSTMDecoder with properties: ChannelCoding: "convolutional" HasRandomizer: true HasASM: true DisableFrameSynchronization: 0 disablephaseanguityresolution: 0 NumBytesInTransferFrame: 1115 ConvolutionalCodeRate: "1/2" ViterbiTraceBackDepth: 60 ViterbiTrellis: [1x1 struct] ViterbiWordLength: 8 Modulation: "QPSK" PCMFormat: "NRZ-L"

方法初始化星座图对象comm.ConstellationDiagram系统对象,以可视化的星座如何演变时,同步器收敛。

costellationobj = comm.ConstellationDiagram;%默认视图是针对QPSK的如果比较字符串(modScheme“BPSK”) costellationobj。ReferenceConstellation = [1, -1]结束

处理链

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

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

  2. 生成TM波形通过TF通过ccsdsTMWaveformGenerator系统对象。

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

  4. 将AWGN加到rf受损信号中。这个噪声信号被认为是接收信号。

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

  6. 使用与应用于发射端相同配置的匹配滤波器(根凸起余弦滤波器)。由于符号定时同步模块工作在高于符号速率的采样速率下,因此滤波后的复杂基带采样不会下采样到符号速率。它向下采样,以便每个符号至少存在两个样本。

  7. 通过使用加德纳计时错误检测器(TED)来去除信号中存在的计时偏移,执行符号计时同步。

  8. 执行载波频率和相位跟踪comm.CarrierSynchronizer系统对象,它具有2型锁相环(PLL)。这个System对象可以跟踪一个固定的载波频率偏移。System对象还引入了相位模糊,然后由帧同步模块消除。

  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) < 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标准。味精= [de2bi numBitsForBER mod (tfidx-1 numMessagesInBlock),“left-msb”)。”;位);inputBuffer(:,国防部(tfidx-1 numMessagesInBlock) + 1) =味精;tx = tmWaveGen(味精);引入射频损伤cfoInroduced = fqyoffsetobj (tx);%介绍首席财务官延迟= varDelay (cfoInroduced fixedDelayVal);%引入定时偏移Rx = awgn(延迟,snr(isnr),“测量”、种子);%增加情况下%接收端处理coarseSynced = coarseFreqSync (rx);应用粗频率同步过滤= rxfilter (coarseSynced);通过RRC过滤器过滤收到的样品TimeSynced = symsyncobj(过滤);%应用符号定时同步fineSynced = fineFreqSync (TimeSynced);跟踪频率和相位%可视化星座如果seeConstellation绘制TF中前1000个符号的星座%的可变大小的fineSynced不妨碍的恒定输入大小的%要求系统对象。costellationobj (fineSynced (1:1000));结束demodData = demodobj (fineSynced);%解调解码= decoderobj (demodData);执行相位模糊解析,帧同步和信道解码计算误码率并相应地调整所有缓冲区dectfidx = bi2de(双(解码(1:8)。'),...“left-msb”) + 1;%见前8位的值如果tfidx > 30%考虑只在处理30个tf后计算BER%,因为前8位的值每个加1%迭代,如果当前解码的差异%前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运行一个完整的误码模拟,并通过设置观察误码maxNumBits1 e8。取消注释此代码以绘制误码率结果。

% semilogy (EbN0 ber);%网格;%包含(“E_b / N_0 (dB) ');% ylabel(“方方面面”);%的标题(“误码率阴谋”);

总是为符号定时和载频同步器保留最初的几个tf来锁定。此示例将丢弃前30个tf。这个数字可以根据接收机工作时的信噪比和同步循环的参数(如循环带宽和阻尼因子)而变化。如果在低信噪比下操作接收器,观察到的初始值有很大的误差tfidx,则同步器尚未锁定。对于给定的模拟参数,适当丢弃初始tf。的第二个输出参数comm.CoarseFrequencyCompensator而且comm.CarrierSynchronizer系统对象包含与估计CFO相关的信息,可用于评估同步循环是否被锁定。

附录

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

参考文献

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

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

TM同步与信道编码-概念与原理综述。空间数据系统标准报告,CCSDS 130.1-G-3。绿色的书。问题3。华盛顿特区:CCSDS, 2020年6月。

另请参阅

对象

相关的话题

Baidu
map