DL-SCH HARQ模型

该示例演示了使用LTE工具箱在下行链路共享信道(DL-SCH)传输中的混合自动重复请求(混合ARQ)增量冗余(IR)™.

介绍

下行链路共享信道(DL-SCH)如TS36.212第5.3.2节所述[2].这个例子演示了发射器如何在单层上使用不同的冗余版本(RV)重新传输单个码字,直到接收码字的CRC表示成功传输。DL-SCH传输是用1/2目标编码率调制的16QAM通过单个天线端口传输。本例中使用的设置是基于TS36.101表A.3.3.1-2中定义的固定参考通道R.3 [1].

混合自动重复请求(混合ARQ)是前向纠错(FEC)的组合和以最佳方式自动重复请求。混合ARQ方案通常用于促进在噪声无线信道上的可靠通信。HARQ能够补偿链路自适应错误,并提供更细的编码率粒度,从而比其他FEC方案具有更好的吞吐量性能。

混合ARQ有三种类型:I型、II型和III型。

混合ARQ类型I

最简单的方法:Hybrid ARQ Type I使用CRC检测传输中是否发生了错误。如果发现一个包是错误的,将向发送器发送一个重传请求,并且错误的包将被丢弃。然后,发送器将重新发送相同的包,直到接收方成功解码包或达到最大重传限制。

Hybrid ARQ Type I可以扩展为包组合,这被称为Hybrid ARQ Type I with packet梳理或Chase组合。在每次失败的重传之后,错误的数据包被存储在缓冲区中。然后,接收器使用最大比率组合,将每个接收的信道位与之前任何相同位的传输组合起来,并将组合后的信号送入解码器。逐行合并不产生额外的编码增益,只增加了累计接收信噪比$ \ mathrm {Eb} / \ mathrm {N0} $对于每次重传。

混合型ARQ II

在混合ARQ II型中,也称为全增量冗余(IR),每次重新传输不一定与原始传输相同。相反,会生成多组编码位,并且每当需要重新传输时,重新传输的数据表示与上一次传输不同的一组编码位。接收器将重新传输与以前的传输尝试相结合相同的数据包。由于重新传输包含以前的传输尝试中未包含的额外奇偶校验位,因此产生的码率通常会通过后续的重新传输而降低。每次传输包含一组不同的奇偶校验位,与逐段合并相比,产生更高的编码增益。

混合ARQ III型

最后一种方法Hybrid ARQ Type III,也称为部分IR,通过在每次重传中发送额外的冗余位来降低编码率。然而,它确实确保了重传能够自我解码。这意味着重新发送的数据包可以和之前的数据包一起被追赶,从而增加分集增益。

LTE中的HARQ过程

LTE利用IR HARQ和用于FEC的1/3 turbo编码器。传输块(TB)CRC用于检测错误。接收器仅接收相同turbo编码数据的不同屏蔽版本;每个重传都是自解码的。因此,它属于III型混合ARQ。

在LTE中,重发以1/2或3/4的初始编码率发送。TS36.213第7条规定的同时DL-HARQ进程的最大数量(提供的PDSCH传输数量)限制在8个[3.].

在LTE中,N信道停止和等待协议用作混合ARQ协议,因为它提供低缓冲要求和低确认(ACK)/负确认(NACK)反馈开销。

LTE工具箱中的DL-HARQ过程

在此示例中,生成传输块并进行DL-SCH编码以创建码字。该码字进行物理下行链路共享信道编码以形成复杂调制符号。

将加性高斯白噪声添加到符号中。带噪符号随后经过接收器处理以获得发送的码字。然后对码字进行涡轮速率恢复、码块去分段和CRC块解码,以检查传输是否成功。如果在传输块中检测到CRC错误,则重新传输e使用不同的RV。此过程持续进行,直到传输成功或达到重新传输限制。

小区范围设置

单元格宽度设置在结构中指定enb

enb.NDLRB=50;%总BW中的下行链路RB数量enb.CyclicPrefix=“正常”%CP长度持续时间=“正常”%PHICH持续时间enb.NCellID=10;%单元IDenb.CellRefP=1;%单天线端口enb。DuplexMode =“FDD”%FDD双工模式enb.CFI=2;%2个PDCCH符号enb.Ng=“第六”% - 9组enb。NSubframe = 0;%子帧编号0

传输模式配置

物理下行链路共享信道(PDSCH)使用一种结构来配置pdsch对于单天线传输方案。

pdsch.NLayers=1;%要映射传输块的图层数pdsch.TxScheme=“端口0”%传输方案pdsch.调制={“16QAM”};%调制pdsch。房车= 0;% Initialize Redundancy版本号pdsch.RNTI=500;%无线网络临时标识符pdsch.NTurboDecIts=5;%turbo解码器迭代次数pdsch.PRBSet=(0:enb.NDLRB-1)。”;%定义PRBSetpdsch.CSI=“上”%软比特的CSI缩放

下行编码配置

定义DL-SCH编码所需的参数。这里使用的传输块大小是TS36.101表A.3.3.1-2中对R.3 RMC的定义[1].的DL-SCH编码块大小可以计算ltePDSCHIndices函数使用enbpdschltePDSCHIndices返回包含参数的信息结构作为其第二个输出G指定满足物理PDSCH容量的编码和速率匹配DL-SCH数据位的数量。

rvIndex = 0;版本索引transportBlkSize=12960;%传输块大小[~,pdschIndicesInfo]=ltePDSCHIndices(enb,pdsch,pdsch.PRBSet);codedTrBlkSize=pdschIndicesInfo.G;%可用PDSCH位dlschTransportBlk=randi([0 1],transportBlkSize,1);%DL-SCH数据位%可能的冗余版本(重传次数)redundancyVersions = 0:3;

重传环路

本示例为单个HARQ进程建模。每次传输后的值blkCRCerr用于检查传输块的成功传输。如果检测到CRC错误,即。blkCRCerr > = 1然后使用不同的RV值执行重传。

第一次传输使用0的RV完成,这表示初始化阶段。如果用户设备(UE)检测到CRC错误,则它向基站(BS)发送NACK,以便使用不同的RV值启动重传。块CRC错误返回1或更大的值。

eNodeB将使用不同的RV值持续发送相同的传输块,直到UE接收到无错误传输块或出现总的重传限制。在LTE中,在任何给定时间可以启动的HARQ进程的总数为8。

要发送和接收传输块,请执行以下步骤:

  • DL-SCH信道编码。生成DL-SCH位并进行信道编码。该过程包括传输块24A型CRC插入、码块分段和码块CRC插入、turbo编码、速率匹配和码块级联。每个段中的码块分段和CRC插入数量取决于给定的传输块大小。每个分段块在码块24B型CRC插入后分别进行turbo编码和速率匹配。级联过程应用于速率匹配的turbo编码块以形成码字。如果传输导致错误,则UE发出NACK信号。使用不同的RVs完成错误数据包的重传。Each RV对应于来自同一编码块的一组不同奇偶校验位;RV控制这种变化。所有这些操作都可以使用工具箱功能执行lteDLSCH

  • PDSCH复杂符号生成。对编码传输块进行置乱、调制、层映射和预编码,生成PDSCH复符号。这是通过使用ltePDSCH

  • 噪音之外。然后将生成的噪声添加到PDSCH复杂符号中。通过改变方差的值nVariance重新传输的数量也会变化,这是因为检测到的错误数量会随着符号上的噪声量而波动。

  • PDSCH接收机处理。在PDSCH接收机解预编码中,对带噪声的PDSCH复符号进行层解图、软解调和解编。

  • DL-SCH信道解码。信道解码使用lteDLSCHDecode它执行速率恢复、软组合、代码块取消分段、CRC删除和块CRC解码。此功能将软缓冲区作为输入参数,然后在解码位之前与接收到的码字软位进行软组合。

定义软缓冲区decState=[];%可以改变噪声功率,以查看不同的RV信噪比=4;% dB%初始值blkCRCerr=1;虽然blkCRCerr>=1%每次重传的增量冗余版本rvIndex = rvIndex + 1;如果rvIndex>长度(冗余版本)错误(“传输失败”);终止pdsch。房车= redundancyVersions (rvIndex);% PDSCH载荷codedTrBlock=lteDLSCH(enb、pdsch、codedTrBlkSize、,...DLK);%PDSCH符号生成pdschSymbols = ltePDSCH(enb, pdsch, {codedTrBlock}); / /输出%添加噪声到pdschSymbols以创建有噪声的复调制符号PDSCHSYMBOLSNORY=awgn(pdschSymbols,SNR);% PDSCH接收器处理rxCW=ltePDSCHDecode(enb、pdsch、pdschsymbols);%DL-SCH信道解码[rxBits,blkCRCerr,decState]=lteDLSCHDecode(enb,...pdsch, transportBlkSize, rxCW, decState);终止

blkCRCerr是接收到的传输块的块CRC错误。如果UE在接收到的传输块上检测到CRC错误,则发送NACK。此外,新的软缓冲区,十国,此函数的输出中有可供下次使用的内容。

通过这个例子,可以观察噪声对成功接收所需的重发次数的影响。在本例中,对于给定水平的噪声添加到发送的符号,总共需要1次重传才能成功接收数据。

fprintf([“\n\n传输成功,冗余总数”...“使用的版本是”num2str(冗余版本(rvIndex)+1)“\ n \ n”]);
传输成功,使用的冗余版本总数为2

精选书目

  1. 3GPP TS 36.101“用户设备(UE)无线传输和接收”

  2. 3GPP TS 36.212“多路复用和信道编码”

  3. 3GPP TS 36.213“物理层程序”