主要内容

数码视频广播-有线电视(DVB-C)

此示例显示了ETSI(欧洲电信标准协会)EN 300 429标准中数字电视信号有线系统传输的部分内容[1].该示例使用通信系统对象™来模拟数字视频广播-电缆(DVB-C)发送-接收链。

介绍

DVB-C标准描述了使用MPEG-2或MPEG-4系列数字音频和视频流通过有线线路传输数字电视信号。在本例中,我们对该标准的一部分进行建模。数据流采用Reed-Solomon码和单载波QAM调制进行传输。该标准规定了发射机的设计,并设定了接收机的最低性能要求。

这个例子的目的是:

  • 对可能的发送/接收设计的主要部分进行建模(使用MPEG-2传输数据包数据在64-QAM模式下运行)

  • 说明DVB-C(或类似的)系统设计中关键通信工具箱™系统对象的使用

  • 说明包含其他System对象的更高级别System对象的创建,以便对被测试系统的大型组件进行建模

  • 生成错误统计数据,这将有助于确定模型是否满足系统性能要求

  • 说明可以支持可变数量测试运行的测试工具的创建。金宝app在这种情况下,我们使用这种支持来支持只指定单个EbN金宝appo的一种模式,并观察光谱和散点图。我们还支持指定多金宝app个EbNo的模式,以生成误码率曲线。

初始化

commdvbc_init.m脚本初始化仿真参数并生成一个结构,prmDVBC。这种结构的场是现有DVB-C系统的参数。

commdvbc_init该结构的字段是DVB-C系统的参数%的手。prmDVBC
prmDVBC =结构体字段:bitsPerByte: 8 bitsPerMTpl: 6 MPEG2DatRateBitPerS: 9600000 rawMPEG2DataPcktLen: 184 MPEG2TrnsprtPcktLen: 188 MPEG2TrnsprtFramePer: 1.5667 e-04 MPEG2PcktsPerSprFrm: 8 MPEG2TrnsSuperFrame: 1504 PRBSSeqPeriodBytes: 1503 PRBSSeqPeriodBits: 12024 RSCodewordLength: 204 CableChanFrameLen: 272 CableChanFrmPeriod:1.5667e-04 RCosineSampsPerSym: 8 CableSymbolPeriod: 7.1998e-08 RCosineFilterSpan: 16 TxRxSymbolSampDelay: 288 DeintrlvrAlignDelay: 192 QAMSymbolMapping: [1x64 double] ConvIntlNumBranches: 12 ConvIntlCellDepth: 17

运行被测系统

被测系统中的主循环逐包处理数据,其中8个包构成一个超帧。设置useCodegen=true,以便使用生成的代码而不是MATLAB®代码。将MATLAB变量compileIt设置为true,以便创建生成的代码。

被测试系统的代码架构

这个例子模拟了从有线电视运营商到客户机顶盒的连接。该链接的模型包含在一个名为runDVBCSystemUnderTest的函数中。数据处理回路分为六个主要部分。系统对象用于为该链接中的每一个组件建模。这些对象是:

1) DVBCSource:生成比特流2)DVBCTransmitter:包含发送端(编码、调制、滤波等)3)comm.AWGNChannel:建模通道4)DVBCReceiver:包含接收器5)DVBCBER:计算错误率6)DVBCScopes:可选对象,提供可视化功能

runDVBCSystemUnderTest的内部循环使用以下对象:

你可以在被测系统周围使用for循环来处理固定数量的超级帧。或者,您可以使用while-loop根据模拟错误和传输比特的数量来控制模拟长度。我们已经做了后者,目标错误数量为100,最大传输数量为1e6。

(berEnd2End(2) < totalErrors) && (berEnd2End(3) < totalBits) txBytes = dvbcSource();%的来源[txPckt, modTxPckt] = dvbcTX(txBytes);%发射机chPckt = awgnChan (txPckt);%的通道[rxBytes, modRxPckt, rxPcakt] = dvbcRX(chPckt);%接收[berEnd2End, berDemod] =...dvb (txBytes rxBytes、modTxPckt modRxPckt);%的误码率如果useScopes runDVBCScopes (dvbcScope txPckt、chPckt rxPckt);结束结束

单个组件的描述

MPEG-2基带物理接口-数据源

本节生成随机数据和头位,并附加头同步字节。每个超帧的第一个包使用报头同步字节的位补码。该组件的代码包含在DVBCSource.m

发射机基带处理

本节使用伪噪声序列随机化数据。发射机采用RS编码和卷积交织。的函数convertBytesToMTuplesDVBCDemo为64-QAM调制器将8位字节转换为6位块。它对调制后的数据流采用8x过采样的平方根凸起余弦滤波器。该组件的代码包含在DVBCTransmitter.m

通道

本例通过一个AWGN通道传递信号。它利用comm.AWGNChannel。

接收机基带处理

本节解调接收的符号,并使用convertMTuplesToBytesDVBCDemo函数。由于过滤操作引入了延迟,本例使用delay System对象hPacketSync将接收到的字节同步到包边缘。请注意,交织器延迟是包大小的倍数,因此与包边缘同步就足够了。接收方解除包同步字节的交错,并使用RS解码器System对象进行解码。因为这个例子使用了一个单一的PN序列生成器,它在去随机化之前将解码后的数据同步到超帧边缘。该示例显示了发送和接收的信道信号频谱。最后,比较发送位和接收位以及调制器输入和解调器输出,得到误码率。该组件的代码包含在DVBCReceiver.m

误码率计算

该组件比较接收的解码位,并将其与发送的位进行比较,以计算误码率。该组件的代码包含在DVBCBER.m

可视化

可选的仪表提供了可视化。该组件的代码包含在DVBCScopes.m

运行测试中的系统

我们首先使用单个EbNo和可视化来运行测试下的系统,以验证它是否正常工作。

totalErrors = 100;totalBits = 1 e6;EbNo = 16.5;useScopes = true;useCodegen = false;compileIt = false;如果compileIt% Make EbNo input variable -size row vector (max length = 100)codegenrunDVBCSystemUnderTest报告arg游戏{coder. constant (usescope),coder. constant (prmDVBC), coder. constant (num), 1, coder. constant (num)。typeof(EbNo,[1 100],[false true]), 1,1}结束如果useCodegen在调用生成的代码版本时,常量输入不出现[berEnd2End, berDemod] = runDVBCSystemUnderTest_mex(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits);其他的[berEnd2End, berDemod] = runDVBCSystemUnderTest(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits);结束

的误码率曲线

接下来,我们用EbNo向量重新运行测试下的系统,并关闭可视化以生成误码率曲线。

错误率测量对象berEnd2End和berDemod的步进方法输出一个3 × 1向量,其中包含测量的误码率值、错误数和总传输比特数的更新。显示解调器输出的误码率和端到端误码率。

EbNo = 11.5:0.5:14.5;useScopes = false;useCodegen = false;compileIt = false;如果compileIt% Make EbNo input variable -size row vector (max length = 100)codegenrunDVBCSystemUnderTest报告arg游戏{coder. constant (usescope),coder. constant (prmDVBC), coder. constant (num), 1, coder. constant (num)。typeof(EbNo,[1 100],[false true]), 1,1}结束如果useCodegen在调用生成的代码版本时,常量输入不出现[berEnd2End, berDemod] = runDVBCSystemUnderTest_mex(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits)日志含义其他的[berEnd2End, berDemod] = runDVBCSystemUnderTest(useScopes, prmDVBC, num, sigPower, EbNo, totalErrors, totalBits)结束plotDVBCResults (EbNo berEnd2End berDemod);
berDemod = 0.0174 0.0133 0.0083 0.0066 0.0041 0.0028 0.0018

总结

这个例子使用了几个System对象来模拟在AWGN信道上的DVB-C通信系统的一部分。它展示了如何建模几个部分的DVB-C系统,如随机化,编码和交错。该示例还使用了delay System对象来同步发送器和接收器。系统性能测量使用误码率测量系统对象获得的误码率曲线。

附录

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

选定的参考书目

  1. ETSI标准EN 300 429 V1.2.1:数字视频广播(DVB);电缆系统的帧结构、信道编码和调制,欧洲电信标准协会,瓦邦,法国,1998。