文档

resetSoftBuffer

在UL-SCH或DL-SCH解码器中重置HARQ进程的软缓冲区

描述

resetSoftBuffer (decUL重置指定UL-SCH解码器中编号为0的混合自动重复请求(HARQ)进程的软缓冲区decUL

例子

resetSoftBuffer (decDLcwid重置码字索引的软缓冲区cwid和指定DL-SCH解码器中的HARQ进程号0decDL.码字索引cwid指定DL-SCH解码的两个可能码字之一。

例子

resetSoftBuffer = (___harqID重置指定HARQ进程号的软缓冲区harqID.指定harqID除了前面语法中的输入参数之外。

为了在低密度奇偶校验(LDPC)解码之前实现软合并重传,每个解码器对象为每个HARQ进程维护一个软缓冲区。一旦成功解码输入,对象自动为HARQ进程重置软缓冲区。调用resetSoftBuffer函数手动重置软缓冲区。当随后对同一个HARQ进程的不同传输块进行解码或HARQ进程的所有冗余版本完成时,调用此函数。

例子

全部折叠

生成一个二进制值的随机序列,对应于一个长度为5120的传输块。

trBlkLen1 = 5120;trBlk1 = randi([0 1],trBlkLen1,1,“int8”);

创建并配置带有多个HARQ进程的UL-SCH编码器系统对象。

encUL = nrULSCH(“MultipleHARQProcesses”,真正的);

为HARQ进程号1将传输块加载到UL-SCH编码器中。

harqID = 1;setTransportBlock (encUL trBlk1 harqID);

用QPSK调制方案调用编码器,1个传输层,输出长度为10240位,冗余版本0,HARQ进程号1。编码器将UL-SCH处理链应用于使用HARQ进程号1加载到对象中的传输块。

Rv = 0;codedTrBlock1 = encUL(“正交相移编码”1, 10240年,房车,harqID);

创建并配置带有多个HARQ进程的UL-SCH解码器系统对象。

decUL = nrULSCHDecoder(“MultipleHARQProcesses”,真正的);

为编码的传输块配置解码器。

decUL。TransportBlockLength = trBlkLen1;

向表示编码传输块的软位添加噪声。为HARQ进程号1调用修改后的软位上的UL-SCH解码器。

rxSoftBits1 = awgn(1-2*double(codedTrBlock1),5);[decBits1,blkErr1] = decUL(rxSoftBits1,“正交相移编码”1房车harqID);

在解码过程中增加的噪声会导致错误。

blkErr1
blkErr1 =逻辑1

对长度为4400的HARQ进程号为1的新传输块重复编码操作。

trBlkLen2 = 4400;trBlk2 = randi([0 1],trBlkLen2,1,“int8”);setTransportBlock (encUL trBlk2 harqID);codedTrBlock2 = encUL(“正交相移编码”1, 8800年,房车,harqID);

为第二个传输块配置解码器。

decUL。TransportBlockLength = trBlkLen2;

如果在HARQ进程号1的前一次解码过程中发生了错误,必须在解码第二个传输块之前重置HARQ进程的软缓冲区。

如果blkErr1 resetSoftBuffer (decUL harqID);结束

使用HARQ进程号1调用表示第二个已编码传输块的软位上的解码器。

rxBits2 = 1-2*double(codedTrBlock2);[decBits2, blker2] = decUL(rxBits2,“正交相移编码”1房车harqID);blkErr2
blkErr2 =逻辑0

验证第二个传输的和解码的消息位是相同的。

isequal (decBits2 trBlk2)
ans =逻辑1

生成一个二进制值的随机序列,对应于一个长度为5120的传输块。

trBlkLen1 = 5120;trBlk1 = randi([0 1],trBlkLen1,1,“int8”);

创建并配置具有多个HARQ进程的DL-SCH编码器系统对象。

encDL = nrDLSCH(“MultipleHARQProcesses”,真正的);

为HARQ进程号1和码字索引1将传输块加载到DL-SCH编码器中。

harqID = 1;cwID = 0;cwID setTransportBlock (encDL trBlk1, harqID);

用QPSK调制方案调用编码器,1个传输层,输出长度为10240位,冗余版本0,HARQ进程号1。编码器将DL-SCH处理链应用到HARQ进程号1加载到对象中的传输块。

Rv = 0;codedTrBlock1 = encDL(“正交相移编码”1, 10240年,房车,harqID);

创建并配置具有多个HARQ进程的DL-SCH解码器系统对象。

decDL = nrDLSCHDecoder(“MultipleHARQProcesses”,真正的);

为编码的传输块配置解码器。

decDL。TransportBlockLength = trBlkLen1;

向表示编码传输块的软位添加噪声。为HARQ进程号1调用修改后的软位上的DL-SCH解码器。

rxSoftBits1 = awgn(1-2*double(codedTrBlock1),5);[decBits1,blkErr1] = decDL(rxSoftBits1,“正交相移编码”1房车harqID);

增加的噪声导致解码过程中出现错误。

blkErr1
blkErr1 =逻辑1

对长度为4400的HARQ进程号为1的新传输块重复编码操作。

trBlkLen2 = 4400;trBlk2 = randi([0 1],trBlkLen2,1,“int8”);cwID setTransportBlock (encDL trBlk2, harqID);codedTrBlock2 = encDL(“正交相移编码”1, 8800年,房车,harqID);

为第二个传输块配置解码器。

decDL。TransportBlockLength = trBlkLen2;

如果在HARQ进程号1的前一次解码过程中发生了错误,必须在解码第二个传输块之前重置HARQ进程的软缓冲区。

如果blkErr1 resetSoftBuffer (decDL harqID);结束

使用HARQ进程号1调用表示第二个已编码传输块的软位上的解码器。

rxBits2 = 1-2*double(codedTrBlock2);[decBits2,blkErr2] = decDL(rxBits2,“正交相移编码”1房车harqID);blkErr2
blkErr2 =逻辑0

验证第二个传输的和解码的消息位是相同的。

isequal (decBits2 trBlk2)
ans =逻辑1

输入参数

全部折叠

UL-SCH解码器,指定为anrULSCHDecoder系统对象。该对象实现了与TR 38.212节6.2中指定的UL-SCH编码的逆操作相对应的UL-SCH解码器处理链。

DL-SCH解码器,指定为nrDLSCHDecoder系统对象。该对象实现了DL-SCH解码器处理链,对应于TR 38.212节7.2中指定的DL-SCH编码的逆操作。

DL-SCH码字索引,指定为01

数据类型:

HARQ进程号,指定为0 ~ 15之间的整数。

数据类型:

参考文献

[1]3gpp ts 38.212。“NR;多路复用和信道编码。”第三代伙伴计划;技术规范集团无线接入网

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

另请参阅

系统对象

在R2019a中引入