速率匹配方法、解速率匹配方法、装置和基站
技术领域
本申请涉及通信技术领域,特别是涉及一种速率匹配方法、解速率匹配方法、装置和基站。
背景技术
随着通信技术的发展,在无线接入方面,传输信道的数据经过编码后,例如Turbo编码,传输信道的数据流量跟空口资源所能承载的数据量可能不同,则需要进行速率匹配。速率匹配的基本原理是以32列的矩阵为基,先按行输入,在初始引入虚比特后(补齐行列矩阵的空余位置)进行子块交织,再按列输出形成一个环形数据流,最后根据空口资源所能承载的数据比特数(数据量)进行打孔或重复的比特选择输出,同时也要将选择到的虚比特通过打孔去除。数据中添加的虚比特用于使行阵矩阵充满以便于进行列间交织,无实际含义。然而,在实现本发明的过程中,发明人发现传统基于Turbo编码方式的速率匹配处理中至少存在着效率不高的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效提高速率匹配效率的速率匹配方法、一种速率匹配装置、一种解速率匹配方法、一种解速率匹配装置、一种基站和存储介质。
为实现上述目的,本发明实施例提供如下技术方案:
一方面,本发明实施例提供一种速率匹配方法,包括:
确定Turbo后的各数据子块分别对应的各第一矩阵;第一矩阵中各虚比特对应的数据段位于末行末尾位置;
分别对各第一矩阵进行列间置换,根据预设算法对列间置换后的各第一矩阵进行列变换,得到各第二矩阵;
分别根据各第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特,得到过滤各虚比特后对应于各数据子块的各交织数据流;其中,数据比特为数据子块中Turbo编码后的传输数据对应的比特,数据流比特数为数据子块中数据比特的总数量;
对各交织数据流进行比特收集,得到虚拟环形数据流队列;
根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置;
根据空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行比特选择,得到Turbo编码传输数据。
另一方面,本发明实施例提供一种解速率匹配方法,包括:
对接收到的Turbo编码传输数据进行解比特选择,得到虚拟环形数据流队列;
对虚拟环形数据流队列进行解比特收集,得到各交织数据流;
根据子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,分别对各交织数据流进行解子块交织处理,得到对应于各交织数据流的Turbo编码的各数据子块;其中,解子块交织处理时,各交织数据流连续输入对应的各第二矩阵。
又一方面,本发明实施例提供一种速率匹配装置,包括:
矩阵确定模块,用于确定Turbo后的各数据子块分别对应的各第一矩阵;第一矩阵中各虚比特对应的数据段位于末行末尾位置;
置换处理模块,用于分别对各第一矩阵进行列间置换,根据预设算法对列间置换后的各第一矩阵进行列变换,得到各第二矩阵;
交织输出模块,用于分别根据各第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特,得到过滤各虚比特后对应于各数据子块的各交织数据流;其中,数据比特为数据子块中Turbo编码后的传输数据对应的比特,数据流比特数为数据子块中数据比特的总数量;
比特收集模块,用于对各交织数据流进行比特收集,得到虚拟环形数据流队列;
提取位置模块,用于根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置;
数据输出模块,用于根据空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行比特选择,得到Turbo编码传输数据。
再一方面,本发明实施例提供一种解速率匹配装置,包括:
解选择模块,用于对接收到的Turbo编码传输数据进行解比特选择,得到虚拟环形数据流队列;
解收集模块,用于对虚拟环形数据流队列进行解比特收集,得到各交织数据流;
解交织模块,用于根据子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,分别对各交织数据流进行解子块交织处理,得到对应于各交织数据流的Turbo编码的各数据子块;其中,解子块交织处理时,各交织数据流连续输入对应的各第二矩阵。
再一方面,本发明实施例提供一种基站,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述的速率匹配方法的步骤或上述的解速率匹配方法的步骤。
再一方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的速率匹配方法的步骤或上述的解速率匹配方法的步骤。
上述技术方案中的一个技术方案具有如下优点和有益效果:
上述速率匹配方法,在基于Turbo编码的速率匹配过程中,通过在进行子块交织前,先确定各虚比特对应的数据段位于末行末尾位置的第一矩阵,在对第一矩阵进行列间置换处理,然后根据预设算法进行列变换得到第二矩阵。进而根据第二矩阵的列值和数据流比特数,以按列输出的方式对第二矩阵进行交织输出,得到过滤了各虚比特的交织数据流。从而进行比特收集形成虚拟环形数据流队列,最后计算当前冗余版本号所对应的数据提取起始位置,根据空口资源对应的承载比特值,从数据提取起始位置开始进行比特提取输出,完成速率匹配。由于子块交织所输出的数据流已不再包含虚比特,因此,在保证列间交织的方便性同时,省去了比特选择等过程中对虚比特的处理过程,大大提高了基于Turbo编码方式的速率匹配处理效率。
附图说明
图1为一个实施例中速率匹配方法的应用环境图;
图2为一个实施例中速率匹配方法的流程示意图;
图3为一个实施例中虚拟环形数据流队列的结构示意图;
图4为一个实施例中传统子块交织中列间置换前后的矩阵示意图;
图5为一个实施例中子块交织过程中第一矩阵和第二矩阵的示意图;
图6为一个实施例中计算数据提取起始位置的流程示意图;
图7为一个实施例中解速率匹配方法的流程示意图;
图8为一个实施例中速率匹配装置的结构框图;
图9为一个实施例中解速率匹配装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的速率匹配方法,可以应用于如图1所示的应用环境中。基于图1示意的Turbo编码后三个数据子块的速率匹配流程中。在对各个数据子块分别进行子块交织的处理过程中,各个数据子块分别通过相应的各子块交织器来进行子块交织。数据子块上包含有下行数据对应的各比特,也即数据比特。在将任一数据子块的各个数据比特填入子块交织器形成待交织的交织矩阵前,可以根据数据子块的大小计算出所需填充到交织矩阵中的虚比特的数量,然后先将虚比特填入子块交织器中的首行,接着在首行最后一个虚比特后面依次填入各数据比特,形成待交织矩阵。然后依据待交织矩阵确定各虚比特位于末行末尾位置的第一矩阵。对第一矩阵进行列间置换,得到置换后的第一矩阵再按预设算法进行列变换,以调换第一矩阵中各列的顺序形成第二矩阵。然后根据第二矩阵的列值与数据流比特数,按列输出第二矩阵的各数据比特,得到过滤各虚比特后对应于数据子块的交织数据流。
通过上述交织处理,分别完成三个数据子块的交织输出后,将三个数据子块所分别对应的交织数据流进行比特收集,以得到虚拟环形数据流队列。然后,根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置。最后根据上层指示的空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行比特选择,得到可由空口下发的Turbo编码传输数据,从而完成速率匹配。图1中,和分别为信道编码后输出的3个数据子块,和分别为子块交织后的输出数据流,wk为将和进行比特收集后的虚拟环形数据流队列,ek为经过比特选择后输出的数据,也即Turbo编码传输数据。
在一个实施例中,如图2所示,提供了一种速率匹配方法,以该方法应用于图1中的速率匹配场景为例进行说明,包括以下步骤S12至S20:
S12,确定Turbo后的各数据子块分别对应的各第一矩阵;第一矩阵中各虚比特对应的数据段位于末行末尾位置。
其中,虚比特为当一个数据子块的长度小于该数据子块对应的子块交织器的总长度时,所需要在该数据子块的前面添加适当数量的空比特,以便于进行子块交织,例如本领域的NULL比特,其值为O。数据子块为经过Turbo编码后的对应于传输块的三个数据子块,用于通过速率匹配处理及通过空口下行传输。由于解速率匹配为速率匹配的逆向过程,因此数据比特也可以是指上行过程中,解速率匹配处理后传输给上层的数据子块中包含的数据所对应的比特。
可以理解,下行传输数据在经过传输信道的Turbo编码处理后,可以形成相应的三个数据子块。这些数据子块中包含下行传输数据所对应的各个数据比特,这些数据比特由于对应的是有实际含义的下行传输数据,因此也可以称为有效比特或非空比特。由于子块交织器的总列数是确定的,为32列,因此在每一个数据子块所包含的数据比特构成的比特序列总长度,小于该数据子块即将通过的子块交织器的总长度(也即一个交织矩阵可容纳的比特序列的总长度)时,均需要加入一定数量的虚比特来补齐所有数据比特占据子块交织器中的比特位置后,未填满比特的行的空余位置,以形成基于各数据比特的最少行的矩阵。
具体的,在Turbo编码后的各数据子块后,各数据子块的数据比特,将会与子块交织时确定所需加入的一定数量的虚比特一起,填入到各数据子块对应的各子块交织器中,形成用于子块交织处理的各交织矩阵。从而可以确定各交织矩阵对应的各个第一矩阵。在各个第一矩阵中,各个虚比特和数据比特由于均是按行填入交织矩阵的,因此,在任一第一矩阵中以按行填入的形式均会对应的形成一个包含各个虚比特的数据段,以及一个包含各个数据比特的数据段。而本申请的第一矩阵中,各个虚比特对应的数据段位于末行末尾位置。
S14,分别对各第一矩阵进行列间置换,根据预设算法对列间置换后的各第一矩阵进行列变换,得到各第二矩阵。
其中,列间置换的处理是按照本领域传统的子块交织处理中所使用的列间置换规则来进行的处理。预设算法为根据第一矩阵中各数据比特位置预先确定的列变换算法,用于使第二矩阵中各数据比特的顺序与传统速率匹配方法中,列间置换后的交织矩阵中各数据比特的顺序保持一致。具体的,对于任一第一矩阵,通过常规的列间置换方法对第一矩阵进行列间置换。然后根据预设算法对列间置换后的第一矩阵进行列变换,以调整第一矩阵中各列的顺序。通过列变换使得到的第二矩阵中各列的各数据比特的顺序,在不考虑各虚比特时,与传统速率匹配方法中,列间置换后交织矩阵中各列的数据比特的顺序保持一致。
S16,分别根据各第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特,得到过滤各虚比特后对应于各数据子块的各交织数据流;其中,数据比特为数据子块中Turbo编码后的传输数据对应的比特,数据流比特数为数据子块中数据比特的总数量。
其中,第二矩阵的列值为第一矩阵经过列间置换和列变换之后,第二矩阵每一列的列编号。可以理解,Turbo编码后的各个数据子块在填入各自对应的子块交织器后,其所形成的交织矩阵的每一列均分配有固定的列编号。列间置换和列变换等处理均不会改变列编号,改变的是各列之间的顺序(也即对应改变的是各列编号的顺序)。交织数据流是指第二矩阵中从首列(该首列的列编号可不再是原交织矩阵的第一列的列编号)开始,按列输出每一列上的所有数据比特后,形成的一个比特序列,也即对应于一个数据子块的子块交织输出的数据段。
具体的,在对第二矩阵进行比特交织输出时,可以根据第二矩阵的列值和数据流比特数来控制按列输出的处理,以使在先后输出各列的比特时,仅输出各列所有的数据比特,而不再输出位于末行位置为虚比特的各列中的虚比特,从而达到输出的交织数据流中已过滤了各虚比特的目的。由于各虚比特在第一矩阵中已经位于末行末尾位置,经过列间置换和列变换后的第二矩阵中,各虚比特分散在各列的末行位置,且第二矩阵的列值是已知的,从而可以直接根据第二矩阵的列值以及数据流比特数来确定哪些列包含虚比特,从而只需控制每一列从上至下(也即从首行至末行)依次输出的比特数量,例如无虚比特的列输出M个比特,包含虚比特的列输出M-1个比特,即可过滤掉虚比特的输出。
按列输出过程中无需对列中的比特判断是否为虚比特、首个比特或者第二个比特等,从而也避免了子块交织后的比特选择过程中的虚比特的判断。如此,在输出的每一个数据子块对应的交织数据流中,均不再包含虚比特且交织数据流中各数据比特的顺序,与传统子块交织输出的数据流中不考虑(例如将数据流中的虚比特去除)虚比特时各数据比特的顺序一致,避免因各数据比特的顺序不一致,导致比特收集、比特选择等处理后得到的数据块中数据比特的顺序出错,从而导致解速率匹配、解编码等处理时发生数据错误的问题。
S18,对各交织数据流进行比特收集,得到虚拟环形数据流队列。
可以理解,通过上述的步骤S12至S16完成各个数据子块的子块交织处理后,可以按照传统的比特收集处理方式,对各个数据子块的交织数据流进行比特收集处理,从而得到一个虚拟环形数据流队列,如图3所示,也即一个合并的数据块。其中,横穿虚拟环形数据流队列的直线表示虚拟环形数据流队列的上不同的冗余版本号所对应的不同首位数据。RV0至RV3分别表示LTE物理层协议中速率匹配会产生的4个冗余版本,Rv0用于首次传输,Rv1、Rv2和Rv3分别用于重传。2rows表示虚拟环形数据流队列中的两行,也即
S20,根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置。
其中,当前冗余版本号为当前对虚拟环形数据流队列进行比特旋转与修剪处理时,所需使用的冗余版本号(也称为重发版本号),可以是4个冗余版本号中的任意一个。数据提取起始位置为对应于当前冗余版本号的比特选择处理时,输出数据的起始位置。不同的冗余版本号所对应的数据提取起始位置不同。
具体的,得到前述的虚拟环形数据流队列后,可以根据当前冗余版本号,计算出从虚拟环形数据流队列上进行比特选择处理的起始位置。
S22,根据空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行比特选择,得到Turbo编码传输数据。
其中,空口资源对应的承载比特值可以通过传统的计算方式确定,如根据上层配置的空口资源参数来计算确定。空口资源对应的承载比特值用于指示物理层空口资源所能承载数据流的比特数量,反映物理层空口的流量大小。Turbo编码传输数据为通过传输信道传输到物理层空口的数据流,其包含的比特数量与空口资源对应的承载比特值相匹配,也即速率匹配。
具体的,计算得到当前冗余版本所对应的数据提取起始位置后,即可根据空口资源对应的承载比特值,从数据提取起始位置处按照传统的比特选择处理方式开始进行数据选择输出,从而得到与空口资源对应的承载比特值相匹配的输出数据流,即Turbo编码传输数据。对于其他冗余版本号,可以按照上述的步骤S20计算出相应的数据提取起始位置后,再根据空口资源对应的承载比特值进行比特选择输出,以完成速率匹配的处理输出。
上述速率匹配方法,在基于Turbo编码的速率匹配过程中,通过在进行子块交织前,先确定各虚比特对应的数据段位于末行末尾位置的第一矩阵,在对第一矩阵进行列间置换处理,然后根据预设算法进行列变换得到第二矩阵。进而根据第二矩阵的列值和数据流比特数,以按列输出的方式对第二矩阵进行交织输出,得到过滤了各虚比特的交织数据流。从而进行比特收集形成虚拟环形数据流队列。最后计算当前冗余版本号所对应的数据提取起始位置,根据空口资源对应的承载比特值,从数据提取起始位置开始进行比特提取输出,完成速率匹配。由于子块交织所输出的数据流已不再包含虚比特,因此,在保证列间交织的方便性同时,省去了比特选择等过程中对虚比特的判断、打孔等处理,大大提高了基于Turbo编码方式的速率匹配处理效率。
在一个实施例中,关于上述的步骤S12,具体可以包括如下步骤:
分别在各待交织矩阵中,将各虚比特对应的数据段从首行头部位置移动至末行末尾位置,得到各第一矩阵;其中,待交织矩阵为向子块交织器中先填入各虚比特后,在各虚比特对应的数据段后填入数据子块的各数据比特形成的矩阵。
其中,首行头部位置是指任一子块交织器中首行上的前N个位置,N为整数且大小与所需填入的虚比特的总数量相同,N个位置对应的数据段长度也即该子块交织器中各个虚比特构成的数据段的总长度。首行头部位置后依次填入的比特为该子块交织器对应的数据子块的各个数据比特。可以理解,位于待交织矩阵的首行头部位置的各虚比特,对应为一个虚比特数据段,将整段的虚比特移动到待交织矩阵的末行末尾位置。相应的,待交织矩阵上的各数据比特对应的数据段也将前移,以填满各虚比特原来在待交织矩阵上首行的填入位置。经过上述各比特的移位后,每一行内的各数据比特的顺序仍保持与填入顺序相同,仅位置经过前移。
具体的,在按照本领域常规的Turbo编码方式,得到信道编码后输出的三个数据子块,在对任一数据子块对应的待交织矩阵进行子块交织处理前,通过指令指示基站内处理当前子块交织任务的处理器,使处理器将待交织矩阵上首行头部位置的各虚比特移至末行末尾位置,同时将各个数据比特按照填入时的顺序相应的依次前移,以填满各个虚比特位于首行时所占据的各位置,得到各虚比特均位于末行末尾位置的第一矩阵。
通过上述的处理步骤,可以在不改变传统的向子块交织器填入比特的程序前提下,高效实现第一矩阵的确定,确保后续的子块交织处理过程中各虚比特的快速过滤。
在一个实施例中,关于上述的步骤S14,具体可以包括如下步骤:
分别根据列间置换后的各第一矩阵的列值和总列数,以及数据流比特数进行求余运算,确定各第一矩阵经过列变换后的各列值;
分别根据各列值对列间置换后的各第一矩阵进行列变换,得到各第二矩阵。
可选的,上述的预设算法可以是求余运算。可以理解,第一矩进行列间置换后,此时的第一矩阵其各个列值仍是已知的。在对第一矩阵进行列间置换后,可以根据第一矩阵的各个列值以及数据流比特数,通过与第一矩阵的总列数进行求余运算的方式,计算确定列变换后的各个列值,也即确定第二矩阵的各列值,从而按照确定的各列值来对第一矩阵进行列变换即可得到第二矩阵。如此,通过上述的列变换,即可确保第二矩阵中的各个数据比特的顺序,与传统子块交织过程中列间置换后的矩阵上各个数据比特的顺序相同,便于子块交织输出的同时,避免由于比特移位后可能导致的数据错误问题或者需要对传统的按列输出规则进行更改的问题。
在一个实施例中,优选地,关于上述的步骤S14中,第二矩阵的各列值可以通过以下运算公式得到:
P′(n)=(P(n)+(Nmod32))mod32
其中,P′(n)表示第二矩阵的第n列的列值,表示第一矩阵的总列数,如32列;P(n)表示列间置换后的第一矩阵的第n列的列值,N表示数据流比特数,mod表示求余函数符号。
具体的,上述根据列间置换后的各第一矩阵的列值和数据流比特数,通过与第一矩阵的总列数进行的求余运算的过程,可以通过上述的运算公式来计算确定各个第二矩阵的各个列值。在对列间置换后的第一矩阵进行列变换处理时,可以通过上述的运算公式所对应的程序将列间置换后的第一矩阵的各列值分别代入执行计算,即可确定第二矩阵。相应的,在解列变换时,也可以将第二矩阵的各列值分别代入执行计算,即可确定列间置换后的第一矩阵。
通过上述的列变换算法,快速实现从列间置换后的第一矩阵变换到第二矩阵的过程,以使基于第二矩阵进行的比特收集等后续处理过程能够准确、可靠实现,避免交织数据流中的数据出错。列变换算法实现简便且有效避免进行比特收集等后续处理时需要进行传统子块交织的算法重新设计问题。
请参阅图4至5,在一个实施例中,优选的,关于上述步骤S16中,分别根据第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特的过程,具体可以包括如下步骤:
若第二矩阵的任一列的列值大于或等于数据流比特数与第一矩阵的总列数的余数,则在该任一列从上至下依次输出S1个数据比特;其中:
表示第二矩阵的总行数;
若第二矩阵的任一列的列值小于数据流比特数与第一矩阵的总列数的余数,则在该任一列从上至下依次输出S2个数据比特;其中,
可以理解,第一矩阵的总列数的余数也即是指Nmod32的值,N表示上述的数据流比特数。32也即上述第一矩阵的总列数,也即任一交织矩阵的总列数。本领域技术人员可以理解,上述的第一矩阵的总列数可以根据通信技术领域内的标准进行相应的调整,而不仅限于现行标准协议中的32。如图4所示的是传统的子块交织过程中列间置换前(上矩阵)与列间置换后(下矩阵)的交织矩阵。其中,矩阵内的N表示虚比特。上矩阵内的自然数字表示输入的数据比特的序号。下矩阵内的同一位置中的上数字表示输入的数据比特的序号,下数字表示输出的数据比特的序号。
如图5所示的是第一矩阵和通过上述比特移位、列间置换与列变换的第二矩阵。由于各列虚比特的位置均位于列的末行,因此,通过在输出各列的比特时结合上述的列值判断,可以确定每一列中包含的数据比特的总数量,以便在输出任一列的比特时,只需输出虚比特前面的所有数据比特即可跳转至下一列继续进行比特输出。图5中,列间置换前(上矩阵)的第一矩阵与列间置换及列变换后(下矩阵)的第二矩阵中,矩阵内的N表示虚比特。第一矩阵内的自然数字表示输入的数据比特的序号。第二矩阵内的同一位置中的上数字表示输入的数据比特的序号,下数字表示输出的数据比特的序号。可选的,上述从虚拟环形数据流队列中输出Turbo编码传输数据的各数据比特的方式为直接拷贝。
具体的,在对第二矩阵上的数据比特进行交织输出时,仍然是按照按列输出的方式。在输出每一列的比特时,从上至下依次输出的比特的数量分别通过上述的算法对应的程序进行输出数量控制,从而确保输出的各个比特均为数据比特,而不再输出各列的虚比特。通过上述的比特输出控制,可以实现得到的交织数据流中不在包含虚比特,使得到的虚拟环形数据流队列中也不再包含虚比特,节省比特收集、解比特选择等后续处理过程中对虚比特的处理流程,提高速率匹配的效率。
结合上述的图4和图5,以下给出一个基于传统列间置换的序列值(如表1所示)基础上,应用上述基于第一矩阵的各列值的运算公式,来确定第二矩阵的示例,表2表示的是第二矩阵的序列值:(数据流比特数N=80为例)
表1基于Turbo编码的速率匹配列间置换序列
表2列变换后的列间置换序列
可以看出,在子块交织前,对待交织矩阵进行比特移位处理确定第一矩阵后,再对第一矩阵进行列间置换,然后根据上述基于第一矩阵的各列值的运算公式进行列变换,即可以得到如表2所示的第二矩阵的列值序列。需要说明的是,本说明书中所说的虚比特均是指子块交织时添加的虚比特,例如在NB-IoT系统中,该系统基本只有一个码块,不存在码块分割,因此无需考虑传统码块分割时添加的虚比特。
请参阅图6,在一个实施例中,关于上述步骤S20中计算数据提取起始位置的过程,具体可以包括如下步骤S202至S206:
S202,根据当前冗余版本号,计算将各虚比特一同输出时的初始虚拟环形数据流队列的数据流起始位置。
其中,初始虚拟环形数据流队列为按照传统的速率匹配方法进行Turbo编码数据子块的子块交织后时,通过比特收集得到的环形数据流队列,其中的比特包含了数据比特和子块交织时添加的虚比特。需要指出的是,本发明实施例中的上述虚拟环形数据流队列中仅包含数据比特,而不再输出虚比特。数据流起始位置为该初始虚拟环形数据流队列首个输出的数据比特在该初始虚拟环形数据流队列中的位置。
具体的,Turbo编码的速率匹配中,组成虚拟环形数据流后,按不同的冗余版本号(重发版本号)确定不同的虚拟环形数据流队列的数据提取起始位置。在传统速率匹配中,初始虚拟环形数据流队列有各虚比特,可以清楚确定不同冗余版本号的数据流的起始位置。然而,通过上述实施例中对第二矩阵交织输出的控制下,不输出虚比特后,虚拟环形数据流队列中不再包含带虚比特的数据流。因此,不同的冗余版本号对应的虚拟环形数据流队列的数据提取起始位置将会移动,而需要重新计算确定不同冗余版本号对应的虚拟环形数据流队列的数据提取起始位置:在原有的计算结果K0基础上减去初始虚拟环形数据流队列中包含的虚比特数量来重新确定不同冗余版本号的虚拟环形数据流队列的数据提取起始位置。数据流中包含的NULL比特个数与数据比特的个数相关。
S204,根据数据流比特数,计算初始虚拟环形数据流队列的数据流起始位置至初始虚拟环形数据流队列的起始位置之间存在的虚比特的总数量。
可以理解,在计算得到数据流起始位置后,根据数据流比特数计算出数据流起始位置,至初始虚拟环形数据流队列的起始位置之间总共存在的虚比特的总数量,以确定本发明速率匹配方法中得到的虚拟环形数据流队列中的数据提取起始位置的具体偏移大小。例如,将各虚比特从初始环形数据流队列中抠除后,各数据比特偏移相应的位数。通过计算出总共存在的虚比特的总数量,即可以确定各数据比特具体的偏移位数,从而可以方便地确定数据提取起始位置。
S206,计算包含虚比特的数据流起始位置与总数量的差值,得到数据提取起始位置。
可以理解,数据流起始位置可以表示初始虚拟环形数据流队列中的比特位数。具体的,通过数据流起始位置减去存在的虚比特的总数量,得到的差值即为当前冗余版本号下,虚拟环形数据流队列的数据提取起始位置。如此,通过上述的步骤S202至S206,可以快速确定数据提取起始位置,确保比特选择的高效处理,避免输出的Turbo编码传输数据出错。
在一个实施例中,可选的,关于上述步骤S202中计算包含虚比特的数据流起始位置通过以下公式得到:
其中,k0表示包含虚比特的初始虚拟环形数据流队列的数据流起始位置,Ncb表示UE能力决定的最大编码后的传输比特数或上层配置的编码后传输比特数,rvidx表示冗余版本号。
具体的,在计算数据流起始位置时,可以通过应用本领域传统的速率匹配方法中计算数据流起始位置的算法实现。如此,通过应用传统算法可以有效确保比特选择效率同时,无需进行额外的算法设计,从而还可以有效避免增加系统复杂度。
以上行共享信道PUSCH为例,通过将上述的冗余版本号分别具化为0、1、2或3带入前述公式可简化为:
在一个实施例中,可选的,关于上述步骤S204中计算虚比特的总数量通过以下公式得到:
其中,kNULL表示虚比特的总数量。N表示数据流比特数。P(n)表示上述列间置换后的第一矩阵的第n列的列值。
可以理解,对于不同的冗余版本号,所对应的kNULL值可不同,也即是说,在虚拟环形数据流队列中的数据提取起始位置也将不同。
请参阅图7,在一个实施例中,提供一种解速率匹配方法,包括如下步骤S13至S17:
S13,对接收到的Turbo编码传输数据进行解比特选择处理,得到虚拟环形数据流队列。
其中,Turbo编码传输数据即为接收到的上行数据块,也即通过上述实施例的速率匹配方法处理得到的输出数据。可以理解,在接收到Turbo编码传输数据后,通过根据上述实施例的速率匹配方法中的比特选择方式,进行逆向的处理,如先根据冗余版本号和环形数据流总比特长度(不含NULL比特),运算得到获得k0的值,并根据协议规定运算获得与空口资源相关的E值,即空口资源对应的承载比特值,依此来完成解比特选择。由于解比特选择的过程也不需要考虑NULL比特,因此可以直接进行分段数据的拷贝来合并生成虚拟环形数据流。
S15,对虚拟环形数据流队列进行解比特收集,得到各数据子块分别对应的交织数据流。
可以理解,恢复得到虚拟环形数据流队列后,根据比特收集的处理方式,进行逆向的处理,将虚拟环形数据流队列解比特收集,分成各数据子块对应的交织数据流。具体可以是:前述得到的虚似环形数据流可以等分为三个子块,分别对应为速率匹配中的子块0、子块1、子块2。其中,子块1和子块2在正向速率匹配时是交替输出数据比特的,因此在解速率匹配时需要对交替输出进行逆变换。可以根据子块交织时所填充的NULL比特数来进行区分,并根据子块1和子块2的交织矩阵之间的关系,分别进行不同的解交替处理,从而恢复得到子块交织过程中的三个交织矩阵所对应的三个交织数据流。
S17,根据子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,分别对各交织数据流进行解子块交织处理,得到对应于各交织数据流的Turbo编码的各数据子块;其中,解子块交织处理时,各交织数据流连续输入对应的各第二矩阵。
可以理解,子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,对应为上述实施例的速率匹配方法的子块交织处理过程中,从各数据子块(如子块0、子块1和子块2)经过各第一矩阵变换到各相应的第二矩阵,所确定的子块交织输入与输出关系。各数据子块分别对应的各第二矩阵由相应的各第一矩阵,通过列间置换和预设算法的列变换后确定,最后第二矩阵按列输出形成各交织数据流。从而,在解子块交织过程中,对于任一交织数据流,均可以根据相应第二矩阵的输入输出关系,逆向确定交织数据流解子块交织后输出的存储位置,实现快速的解子块交织输出,得到各数据子块。
其中,预设算法为上述实施例中速率匹配方法进行第一矩阵的列变换时,所使用的算法,可以用于反向计算确定列间置换后、列变换前第一矩阵的各列值,也即确定第一矩阵中数据流的位置。例如,将预设算法中第二矩阵的列值与第一矩阵的列值进行逆向换算,从而将预设算法变换成计算第一矩阵的列值的计算公式,如此,即可以通过解列变换恢复出第一矩阵。第一矩阵为上述实施例中速率匹配方法中的第一矩阵。
具体的,在解交替处理后的各交织数据流是连续的输入相应的第二矩阵,而无需添加各虚比特。通过解子块交织输出的存储位置,可根据各第二矩阵获得。例如:速率匹配过程中,输入和输出关系可表达为out(n)=in(func(n)),其中func(n)代表上述的速率匹配方法。而解速率匹配过程为速率匹配的逆过程,即输入和输出关系可表达为out(func(n))=in(n),其中,前述n均表示连续的数据比特的序号。同理,通过根据第二矩阵的输入输出关系,即可逆向换算确定解子块交织输出的各数据比特的存储位置,从而分别得到Turbo编码的各数据子块,用于传输信道的解码。
上述解速率匹配方法,在基于Turbo编码的速率匹配过程中,通过按照速率匹配方法的流程进行逆向处理,完成Turbo编码的解速率匹配。由于虚拟环形数据流队列中已不再包含虚比特,在解子块交织时也无需添加速率匹配过程中加入的各虚比特,通过上述步骤S13至S17快速实现解速率匹配处理。在保证解交织的方便性同时,省去了解比特选择和解比特收集等过程中对虚比特的位置判断、解打孔等处理,大大提高了基于Turbo编码方式的解速率匹配处理效率。
在一个实施例中,子块0、子块1和子块2分别对应的交织矩阵互不相同,其中,子块1和子块2的交织矩阵之间的关系为P_2=(P_01+1)%32,P_2表示子块2所对应的矩阵,P_01表示子块0或子块1所对应的矩阵。输出形成虚拟环形数据流队列时,子块1和子块2有交替输出(先子块1后子块2)的要求。由于子块2的交织矩阵是子块1的交织矩阵加1的关系,因此在不输出NULL比特的数据比特的交替输出过程中,会出现一次交替输出顺序的跳转,即交替输出过程中有一个节点是子块1有NULL比特,而子块2无NULL比特,从而后续交替输出顺序会跳变成先输出子块2再输出子块1。因此,在解速率匹配过程中,也可以根据前述子块1和子块2的交织矩阵之间的关系,进行逆向的解交替输出的处理。
应该理解的是,虽然图2、图6和图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图6和图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。需要说明的是,上述的速率匹配方法或解速率匹配方法的各个步骤,均可以由基站中负责速率匹配或解速率匹配处理的处理器来具体执行。
请参阅图8,在一个实施例中,提供了一种速率匹配装置100,包括矩阵确定模块12、置换处理模块14、交织输出模块16、比特收集模块18、提取位置模块20和数据输出模块22。其中:矩阵确定模块12用于确定Turbo后的各数据子块分别对应的各第一矩阵;第一矩阵中各虚比特对应的数据段位于末行末尾位置。置换处理模块14用于分别对各第一矩阵进行列间置换,根据预设算法对列间置换后的各第一矩阵进行列变换,得到各第二矩阵。交织输出模块16用于分别根据各第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特,得到过滤各虚比特后对应于各数据子块的各交织数据流;其中,数据比特为数据子块中Turbo编码后的传输数据对应的比特,数据流比特数为数据子块中数据比特的总数量。比特收集模块18用于对各交织数据流进行比特收集,得到虚拟环形数据流队列。提取位置模块20用于根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置。数据输出模块22用于根据空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行比特选择,得到Turbo编码传输数据。
上述速率匹配装置100,在基于Turbo编码的速率匹配过程中,通过在进行子块交织前,先确定各虚比特对应的数据段位于末行末尾位置的第一矩阵,在对第一矩阵进行列间置换处理,然后根据预设算法进行列变换得到第二矩阵。进而根据第二矩阵的列值和数据流比特数,以按列输出的方式对第二矩阵进行交织输出,得到过滤了各虚比特的交织数据流。从而进行比特收集形成虚拟环形数据流队列。最后计算当前冗余版本号所对应的数据提取起始位置,根据空口资源对应的承载比特值,从数据提取起始位置开始进行比特提取输出,完成速率匹配。由于子块交织所输出的数据流已不再包含虚比特,因此,在保证列间交织的方便性同时,省去了后续比特收集、比特选择等过程中对虚比特的判断、打孔等处理,大大提高了基于Turbo编码方式的速率匹配处理效率。
在一个实施例中,上述的置换处理模块14包括列计算子模块和变换处理子模块。列计算子模块用于分别根据列间置换后的各第一矩阵的列值和总列数,以及数据流比特数进行求余运算,确定各第一矩阵经过列变换后的各列值。变换处理子模块分别根据各列值对列间置换后的各第一矩阵进行列变换,得到各第二矩阵。
在一个实施例中,上述的列计算子模块,用于在确定第二矩阵的各列值时,可以通过以下运算公式得到:
P′(n)=(P(n)+(Nmod32))mod32
其中,P′(n)表示第二矩阵的第n列的列值,表示第一矩阵的总列数,如32;P(n)表示列间置换后的第一矩阵的第n列的列值,N表示数据流比特数,mod表示求余函数符号。
在一个实施例中,矩阵确定模块12具体用于分别在各待交织矩阵中,将各虚比特对应的数据段从首行头部位置移动至末行末尾位置,得到各第一矩阵;其中,待交织矩阵为向子块交织器中先填入各虚比特后,在各虚比特对应的数据段后填入数据子块的各数据比特形成的矩阵。
在一个实施例中,交织输出模块16在根据第二矩阵的列值与数据流比特数,按列输出第二矩阵的各数据比特时,具体可以用于在第二矩阵的任一列的列值大于或等于数据流比特数与第一矩阵的总列数的余数时,在该任一列从上至下依次输出S1个数据比特;其中:
表示第二矩阵的总行数;
以及用于在第二矩阵的任一列的列值小于数据流比特数与第一矩阵的总列数的余数时,在该任一列从上至下依次输出S2个数据比特;其中,
在一个实施例中,关于上述的提取位置模块20,具体可以包括第一位置计算子模块、总数量计算子模块和第二位置计算模块。其中:
第一位置计算子模块用于根据当前冗余版本号,计算将各虚比特一同输出时的初始虚拟环形数据流队列中,包含虚比特的数据流的起始位置。
总数量计算子模块用于根据数据流比特数,计算包含虚比特的数据流起始位置至初始虚拟环形数据流队列的起始位置之间存在的虚比特的总数量。
第二位置计算模块用于计算包含虚比特的数据流起始位置与总数量的差值,得到数据提取起始位置。
关于速率匹配装置100的具体限定可以参见上文中对于速率匹配方法的限定,在此不再赘述。上述速率匹配装置100中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
请参阅图9,在一个实施例中,提供了一种解速率匹配装置200,包括解选择模块11、解收集模块13和解交织模块15,其中:解选择模块11用于对接收到的Turbo编码传输数据进行解比特选择,得到虚拟环形数据流队列。解收集模块13用于对虚拟环形数据流队列进行解比特收集,得到各数据子块分别对应的交织数据流。解交织模块15用于根据子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,分别对各交织数据流进行解子块交织处理,得到对应于各交织数据流的Turbo编码的各数据子块;其中,解子块交织处理时,各交织数据流连续输入对应的各第二矩阵。
上述解速率匹配装置200,在基于Turbo编码的速率匹配过程中,通过按照速率匹配方法的流程进行逆向处理,完成Turbo编码的解速率匹配。由虚拟环形数据流队列中已不再包含虚比特,在解子块交织时也无需添加速率匹配过程中加入的各虚比特,通过上述步骤各模块快速实现解速率匹配处理。在保证解交织的方便性同时,省去了解比特选择和解比特收集等过程中,对虚比特的位置判断、解打孔等处理,大大提高了基于Turbo编码方式的解速率匹配处理效率。
关于解速率匹配装置200的具体限定可以参见上文中对于解速率匹配方法的限定,在此不再赘述。上述解速率匹配装置200中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种基站。该基站至少包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该基站的处理器用于提供计算和控制能力。该基站的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该基站的数据库用于存储速率匹配与解速率匹配的各类数据。该基站的网络接口用于与外部的用户终端或核心网设备通过网络连接通信。该计算机程序被处理器执行时以实现上述一种速率匹配方法或解速率匹配方法。
在一个实施例中,提供了一种基站,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:确定Turbo后的各数据子块分别对应的各第一矩阵;第一矩阵中各虚比特对应的数据段位于末行末尾位置;分别对各第一矩阵进行列间置换,根据预设算法对列间置换后的各第一矩阵进行列变换,得到各第二矩阵;分别根据各第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特,得到过滤各虚比特后对应于各数据子块的各交织数据流;其中,数据比特为数据子块中Turbo编码后的传输数据对应的比特,数据流比特数为数据子块中数据比特的总数量;对各交织数据流进行比特收集,得到虚拟环形数据流队列;根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置;根据空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行解比特选择,得到Turbo编码传输数据。
或者,该处理器执行计算机程序时实现以下步骤:对接收到的Turbo编码传输数据进行解比特选择,得到虚拟环形数据流队列;对虚拟环形数据流队列进行解比特收集,得到各交织数据流;根据子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,分别对各交织数据流进行解子块交织处理,得到对应于各交织数据流的Turbo编码的各数据子块;其中,解子块交织处理时,各交织数据流连续输入对应的各第二矩阵。
在一个实施例中,处理器执行计算机程序时还实现上述各实施例中速率匹配方法的子步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:确定Turbo后的各数据子块分别对应的各第一矩阵;第一矩阵中各虚比特对应的数据段位于末行末尾位置;分别对各第一矩阵进行列间置换,根据预设算法对列间置换后的各第一矩阵进行列变换,得到各第二矩阵;分别根据各第二矩阵的列值与数据流比特数,按列输出各第二矩阵中的各数据比特,得到过滤各虚比特后对应于各数据子块的各交织数据流;其中,数据比特为数据子块中Turbo编码后的传输数据对应的比特,数据流比特数为数据子块中数据比特的总数量;对各交织数据流进行比特收集,得到虚拟环形数据流队列;根据上层配置的当前冗余版本号,计算虚拟环形数据流队列的数据提取起始位置;根据空口资源对应的承载比特值和数据提取起始位置,对虚拟环形数据流队列进行解比特选择,得到Turbo编码传输数据。
或者,该计算机程序被处理器执行时实现以下步骤:对接收到的Turbo编码传输数据进行解比特选择,得到虚拟环形数据流队列;对虚拟环形数据流队列进行解比特收集,得到各交织数据流;根据子块交织时各交织数据流分别对应的第二矩阵的输入输出关系,分别对各交织数据流进行解子块交织处理,得到对应于各交织数据流的Turbo编码的各数据子块;其中,解子块交织处理时,各交织数据流连续输入对应的各第二矩阵。
在一个实施例中,计算机程序被处理器执行时还实现上述各实施例中速率匹配方法的子步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。