主要内容

DVB-S.2链路,包括LDPC编码

本例展示了低密度奇偶校验(LDPC)码在美国DIRECTV公司部署的第二代数字视频广播标准(dvb .2)中的应用。该示例使用通信系统对象来模拟包含LDPC编码和解码的发射器-接收器链。

简介

ETSI(欧洲电信标准协会)EN 302 307广播、互动服务、新闻采集和其他宽带卫星应用标准(dvb .2) [1]使用最先进的编码方案来增加信道容量。低密度奇偶校验码(LDPC)和BCH码的串接是该编码方案的基础。LDPC码是Gallager在1960年的开创性博士论文中发明的,通过使用低复杂度的迭代译码算法,可以在信道容量附近实现极低的错误率[2].外部BCH码用于纠正LDPC解码器产生的零星错误。

DVB-S的频道码。2provide a significant capacity gain over DVB-S under the same transmission conditions. Depending on the transmission mode, DVB-S.2 provides Quasi-Error-Free operation (packet error rate below 10^ -7) at about 0.7 dB to 1 dB from the Shannon limit.

本例根据DVB-S模拟了BCH编码器、LDPC编码器、交织器、调制器以及它们在接收机中的对应物。2标准。该示例收集解调器、LDPC解码器和BCH解码器输出的错误率,确定LDPC解码器执行的迭代次数的分布,并显示接收到的符号星座。有关本示例中使用的系统结构、简化和假设的更多信息,请参见DVB-S.2Link,包括Simulink中的LDPC编码万博1manbetx的例子。

看到带射频损伤和校正的端到端DVB-S2模拟(卫星通讯工具箱)对单个流DVB-S2链路使用恒定编码和调制的示例。

初始化

configureDVBS2Demo.m脚本初始化一些模拟参数并生成一个结构dvb。该结构的字段是DVB-S的参数。2系统在手。它还创建了组成DVB-S的系统对象。2系统。

subsystemType =“16 apsk 2/3”星座码率和LDPC码率EsNodB = 9;每个符号能量与噪声PSD比的%,单位为dBnumFrames = 20;要模拟的帧数%初始化configureDVBS2Demo显示系统参数dvb
dvb = struct with fields: CodeRate: '2/3' EsNodB: 9 ModulationType: '16APSK' NumBytesPerPacket: 188 NumBitsPerPacket: 1504 BCHCodewordLength: 43200 BCHMessageLength: 43040 BCHGeneratorPoly:[1 0 1 1 1 00 00 00 00 00 00 00 00 00 00 1 1…] BCHPrimitivePoly: [1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1] NumPacketsPerBBFrame: 28 NumInfoBitsPerCodeword: 42112 BitPeriod: 2.3746 e-05 LDPCCodewordLength: 64800 LDPCParityCheckMatrix: [21600 x64800逻辑]LDPCNumIterations: 50 InterleaveOrder: [64800 x1双]星座:x1双[16]SymbolMapping: [12 14 15 13 4 0 8 10 2 6 7 3 11 9 1 5] PhaseOffset: [0.7854 - 0.2618] BitsPerSymbol: 4 ModulationOrder: 16 SequenceIndex: 2 NumSymsPerCodeword: 16200 NoiseVar: 0.1259 NoiseVarEst:0.3227 RecDelayPreBCH: 43040

本例使用这些System对象和函数。

模拟对象:

enc - BCH编码器dec - BCH解码器intrlvr -块交错器deintrlvr -块交错器pskModulator - PSK modulator pskDemodulator - PSK解调器chan - AWGN信道

性能测量对象:

PER -包错误率计算器BERLDPC - LDPC解码器输出错误率计算器BERMod -解调器输出错误率计算器constDiag -信道输出散点图meanCalc -噪声方差的平均值

仿真功能:

dvbsapskmod - DVBSAPSK调制器dvbsapskdemod - DVBSAPSK解调器ldpcEncode - LDPC编码器ldpcDecode - LDPC解码器

LDPC编码器和解码器配置对象

根据DVB-S第5.3.1节的奇偶校验矩阵,创建LDPC编解码器配置对象。2标准[1].

encldpcCfg = ldpcEncoderConfig(dvb.LDPCParityCheckMatrix);decldpcCfg = ldpcDecoderConfig(dvb.LDPCParityCheckMatrix);

流处理循环

这部分代码调用DVB-S的处理循环。2系统。主循环逐帧处理数据,其中系统参数dvb。NumPacketsPerBBFrame决定每个BB帧的数据包数。for循环的第一部分模拟系统。该模拟器分别使用BCH和LDPC编码器作为内码和外码对每帧进行编码。编码的比特通过交织器。调制器将交错的位映射到来自预定义星座的符号。调制符号通过AWGN信道。解调器采用近似对数似然算法来获得软位估计。LDPC解码器解码去交错的软位值并生成硬决策。BCH解码器在这些艰难的决定上工作,以创建接收到的帧的最终估计。

for循环的第二部分收集性能度量,如误码率和散点图。它还估计接收到的信噪比值。

bbFrameTx = false(encbch.MessageLength,1);numIterVec = 0 (numFrames,1);(dvb.NumPacketsPerBBFrame,1);frameCnt = 1: numFrames发射机、信道和接收机bbFrameTx (1: dvb.NumInfoBitsPerCodeword) =...逻辑(randi ([0 1] dvb.NumInfoBitsPerCodeword 1));bchEncOut = encbch(bbFrameTx);ldpcEncOut = ldpcEncode(bchEncOut,encldpcCfg);intrlvrOut = intrlv(ldpcEncOut,dvb.InterleaveOrder);如果dvb。ModulationOrder == 4 || dvb。ModulationOrder == 8 modOut = pskModulator(intrlvrOut);其他的modOut = dvbsapskmod(intrlvrOut,dvb。ModulationOrder,“s2”...dvb。CodeRate,“InputType”“一点”“UnitAveragePower”,真正的);结束chanOut = chan(modOut);如果dvb。ModulationOrder == 4 || dvb。ModulationOrder == 8 demodOut = pskDemodulator(chanOut);其他的demodOut = dvbsapskdemod(chanOut,dvb. demod)ModulationOrder,“s2”...dvb。CodeRate,“OutputType”“approxllr”“NoiseVar”...dvb。NoiseVar,“UnitAveragePower”,真正的);结束deintrlvrOut = deintrlv(demodOut,dvb.InterleaveOrder);默认情况下,当所有奇偶校验完成时,ldpcDecode停止迭代%满足,减少解码时间[ldpcDecOut, numIter] = ldpcDecode(deintrlvrOut,decldpcCfg,dvb.LDPCNumIterations);bchDecOut = decbch(ldpcDecOut);bbFrameRx = bchDecOut(1:dvb.NumInfoBitsPerCodeword,1);%错误统计comparedBits = xor(bbFrameRx,bbFrameTx(1:dvb.NumInfoBitsPerCodeword));packketerr = any(重塑(comparedBits,dvb.)NumBitsPerPacket,...dvb.NumPacketsPerBBFrame));per = per (falseVec,packetErr');berMod = berMod (demodOut<0,intrlvrOut);berLDPC = berLDPC (logical(ldpcDecOut),bchEncOut);% LDPC解码器迭代numIterVec(frameCnt) = numIter;噪声方差估计noiseVar = meanCalc(var(chanOut - modOut));%散点图constDiag (chanOut);结束

执行错误率测量对象(惠普hBERMod,hBERLDPC),输出一个3乘1的向量,其中包含测量错误率值、错误数和传输总数(包或位)的更新。显示解调器输出的误码率,LDPC解码器输出的误码率,端到端系统的包错误率以及接收机输入的测量信噪比。虽然解调器输出的错误率超过10%,但LDPC解码器能够纠正所有错误并提供无错误包。

流('实测信噪比:%1.2f dB\n'10 * log10 (1 / noiseVar))流('调制器BER: %1.2e\n', berMod(1))流('LDPC BER: %1.2e\n', berLDPC(1))流('PER: %1.2e\n'/ (1))
实测信噪比:8.98 dB调制器误码率:8.25e-02 LDPC误码率:0.00e+00 PER: 0.00e+00

图中显示了LDPC解码器所执行的迭代次数的分布。解码器能够在达到最大迭代计数50之前解码所有帧而没有错误。

distFig =图;直方图(numIterVec 1: dvb.LDPCNumIterations-1);包含(“迭代次数”);ylabel (“#出现”);网格;标题(LDPC解码器迭代次数的分布

我们运行了32.4e6比特的流处理循环,以获得几个SNR值。由于这个模拟需要很长时间,在本例中,我们只提供存储在mat文件中的模拟结果。

负载berResultsDVBS2Demo.matcBER_16APSKsnrdB_16APSKberFig =图形;semilogy (snrdB_16APSK cBER_16APSK (1:));xlim (8.9 [8]);包含(“信噪比(dB)”);ylabel (“方方面面”);网格

总结

本例使用了几个System对象来模拟部分DVB-S。通过AWGN信道的2个通信系统。演示了如何对DVB-S的几个部分进行建模。2 .系统如LDPC编码。系统性能的测量是使用错误率测量系统对象获得的PER和BER值。

进一步的探索

您可以修改这个示例的部分内容,使用不同的Es/No值和LDPC解码器迭代的最大次数来试验不同的子系统类型。本例支持以下子系统类型:万博1manbetx

“QPSK 1/4”、“QPSK 1/3”,“QPSK 2/5”,“QPSK 1/2”,“QPSK 3/5”,“QPSK 2/3”、“QPSK 3/4”,“QPSK 4/5”,“QPSK 5/6”,“QPSK 8/9”,“QPSK 9/10”
“8 psk进行3/5”,“8 psk进行4/5”,“8相移键控2/3”,“8相移键控3/4”,“8 psk进行5/6”,“8 psk进行8/9”,“8 psk进行9/10”
' 16apsk 2/3', ' 16apsk 3/4', ' 16apsk 4/5', ' 16apsk 5/6', ' 16apsk 8/9', ' 16apsk 9/10'
' 32apsk 3/4', ' 32apsk 4/5', ' 32apsk 5/6', ' 32apsk 8/9', ' 32apsk 9/10'

附录

这个例子使用了以下脚本和helper函数:

选定的参考书目

  1. ETSI标准EN 302 307 V1.1.1:数字视频广播;用于广播、互动服务、新闻采集和其他宽带卫星应用的第二代帧结构、信道编码和调制系统(DVB-S2),欧洲电信标准协会,法国瓦尔邦,2005-03年。

  2. r·g·加拉格,低密度奇偶校验码, IEEE®信息理论汇刊,第8卷,第1期,1962年1月,第21-28页。

  3. w·e·瑞安,LDPC码介绍,《磁记录系统的编码和信号处理》(贝恩·瓦西奇主编),CRC出版社,2004年。