一种速率匹配的方法及装置 【技术领域】
本发明涉及通信领域, 特别是涉及速率匹配的方法及装置。背景技术 在移动通信系统中, 信道中发送端传输的数据经过信道编码后增加了一些校验信 息, 在接收端根据这些校验信息可以提高解码效率。 为了提高传输效率, 发送端需要根据信 道的当前质量对数据在编码阶段增加的校验信息进行选择性传输, 这个过程就是速率匹配 的过程。
速率匹配功能为 LTE( 长期演进 ) 物理层编码功能的一部分, 其处理周期以一个数 据块 ( 或称编码块, CODE BLOCK) 为单位。 现行方案中对数据块按位 (BIT) 进行串行计算, 一 个时钟周期仅能处理一位。 现行按位的串行处理方式, 可以完全按照 3GPP(3rd Generation Partnership Project, 第三代合作项目 ) 协议规定进行计算, 其中主要包括两部分 : 数据 块交织部分和交织数据块选择拼接部分。数据块交织部分, 包括系统无效位 ( 或称孔 ) 填 充, 数据块按位组成数据矩阵, 数据矩阵按位进行行列交织。同时, 数据交织在编码阶段有 校验信息的功能。
现有技术中一个时钟周期仅能处理一位, 处理速度不高。 如果希望提高速度, 可能 的方式是提高处理频率。但是由于当前的处理芯片均有最高工作频率限制, 提高的处理速 度有限。对于 FPGA 芯片, 提高系统时钟会受到布局布线等各方面因素所影响, 实施难度大, 不能从根本上解决处理速度的问题。另一种可能的方式是复制处理单元。但是由于处理单 元仍然按位串行处理, 且 LTE 物理层速率匹配以数据块为单位, 多个处理单元不能加快单 个数据块的处理速度, 耗费硬件资源成倍数增长, 并且在多个数据块之间的调度流程复杂。
发明内容
本发明实施例提供一种速率匹配的方法及装置, 用于提高速率匹配的效率。
一种速率匹配的方法, 包括以下步骤 :
获得整数倍于字节的数据 ;
根据预设的交织图样对获得的数据进行交织, 获得交织后的数据 ;
以字节为单位对交织后的数据进行行列交织, 获得行列交织后的数据。
一种用于速率匹配的装置, 包括 :
接口模块, 用于获得整数倍于字节的数据 ;
列交织模块, 用于根据预设的交织图样对获得的数据进行交织, 获得交织后的数 据;
行列交织模块, 用于以字节为单位对交织后的数据进行行列交织, 获得行列交织 后的数据。
本发明实施例以字节为单位进行速率匹配, 解决了单数据块的处理速度提升的问 题。 在相同的数据处理频率情况下, 比按位串行计算技术大幅度提高处理速度, 提高速度近8 倍。对于多个数据包, 在相同的数据处理频率情况下, 处理一个字节所耗费的硬件资源仅 为现有方案的一半以下。 附图说明
图 1 为本发明实施例中速率匹配的主要方法流程图 ;
图 2 为本发明实施例中速率匹配的详细方法流程图 ;
图 3 为本发明实施例中列交织输入数据的示意图 ;
图 4 为本发明实施例中列交织输出数据的示意图 ;
图 5 为本发明实施例中行列交织输入数据的示意图 ;
图 6 为本发明实施例中行列交织输出数据的示意图 ;
图 7 为本发明实施例中无效数据的位置示意图 ;
图 8 为本发明实施例中装置的结构图。 具体实施方式
本发明实施例以字节为单位进行速率匹配, 是现有技术中速配匹配速度的 8 倍。 参见图 1, 本实施例中速率匹配的主要方法流程如下 :
步骤 101 : 获得整数倍于字节的数据。
步骤 102 : 根据预设的交织图样对获得的数据进行交织, 获得交织后的数据。
步骤 103 : 以字节为单位对交织后的数据进行行列交织, 获得行列交织后的数据。
在步骤 101 中, 获得一个数据块的有效数据, 该有效数据可能不是字节的整数倍, 则需要用无效数据来填充, 此时的无效数据可以称为孔。 如果交织矩阵的列数为 32, 则该孔 的数量小于 32, 即小于交织矩阵的列数。 获得数据的过程可以以比特 (bit) 为单位, 如果硬 件支持, 较佳的方式是以字节为单位获得数据块中的数据 ( 即有效数据 )。
类似的, 在进行行列交织时是以字节为单位, 步骤 102 获得的交织后的数据可能 不是 n×m 的整数倍, 其中 n 为行列交织处理时交织矩阵中的列数, m 为一个字节的比特数。 则用无效数据将交织后的数据填充为 n×m 的倍数, 其中, 填充的无效数据小于 n 个字节。 然 后以字节为单位对填充后的数据进行行列交织。
下面通过实施例来详细介绍实现过程。
参见图 2, 本实施例中速配匹配的详细方法流程如下 :
步骤 201 : 获得一个数据块的长度。
步骤 202 : 判断获得的长度是否是 32 的整数倍, 若是, 则继续步骤 204, 否则继续步 骤 203。32 为列交织时交织矩阵的列数, 该值仅是一种举例, 本实施例中只要满足字节的整 数倍即可。如果采用 32 列, 则表示列交织举例的一行包括 4 个字节。
步骤 203 : 用孔占位后获取数据块中的数据, 使填充后的数据为 32 的整数倍, 且孔 的数量小于 32。 一般在列交织矩阵的前端用孔占位, 对于特殊的交织图样, 孔可能出现在列 交织矩阵的结尾处。继续步骤 205。
步骤 204 : 获取数据块中的数据。继续步骤 205。
步骤 205 : 根据列交织图样对获得的数据进行交织, 获得列交织后的数据。本实施 例中需要进行两次交织, 为了区分两次交织过程, 第一次交织称为列交织, 并且这次交织所
采用的交织图样为列交织图样, 当然也可以采用其它的交织图样。
步骤 206 : 判断获得的列交织后的数据是否为 n×m 的整数倍, 若是, 则继续步骤 207, 否则继续步骤 208。
步骤 207 : 用私有无效数据填充获得的列交织后的数据, 使其填充后的数据为 n×m 的整数倍, 且填充的私有无效数据小于 n×m。继续步骤 208。
步骤 208 : 根据预设的行列交织图样对获得的数据进行行列交织, 并输出行列交 织结果。
之后可能需要对行列交织后的数据进行存储和拼接。
例如, 列交织表 ( 即列交织图样 ) 如表 1 所示。
表1
获得数据块的长度, 判断该长度是否为 32 的整数倍, 如果不是, 则用孔填充。将 其中 计算矩阵行数 寻找最小整数 使每行均有输入数据, 行编号为 0,获得的数据组成 32 列的数据矩阵, 逐行输入, 列编号为 0, 1, 2, ......, 1, 2, ......,编号顺序为从顶向下。然后根据表 1 对数据矩阵进行列交织, 对交织后的数据逐列输出。现有技术中对交织后的数据逐列输出时需要去掉填充的孔, 而本实 施例在行列交织时可能也需要填充私有无效数据, 因此对交织后的数据逐列输出时不需要 去掉填充的孔, 简化了处理过程, 提高了速度。 其中, 为了与孔区分因此称为私有无效数据, 本实施例中孔和私有无效数据都属于无效数据。 列交织前和列交织后的数据位置关系参见 图 3 和图 4 所示。
列交织变换后以字节为单位输出数据, 较佳的, 行列交织时的输入数据矩阵的列 数也以字节为单位, 即输入数据矩阵一行的长度为 8 的整数倍。将列交织的数据逐行写入 行列交织时的输入数据矩阵, 以 4 列为例, 如图 5 所示。如果列交织的数据的最后一行未填 满整行, 则用私有无效数据填满该行。然后将输入数据矩阵中的数据逐列输出。较佳的, 为 了将行列交织后的数据也以字节为单位输出, 行列交织时的输入数据为 m 行的整数倍, 也 就是为 n×m×m 的整数倍, 如 m = 8, n = 4, n×m×m = 256。如果不满足该要求, 则用私有 无效数据填充。输出行列交织后的数据的示意图参见图 6 所示, 图 6 中的字节号与图 5 中 的字节号不对应, 图 6 中的字节号表示是以字节为单位输出。
在列交织和行列交织过程中, 可能填充了孔、 或私有无效数据、 或孔和私有无效数 据, 还可能未填充任何无效数据。 孔和私有无效数据在所有数据中的位置比较灵活, 均可以 位于数据的前端或后端, 几种该位置关系的示例参见图 7 所示。因此, 在以字节为单位输出 行列交织后的数据时, 需要去除所有的无效数据。
通过以上描述了解了速率匹配的实现过程, 该过程可由装置实现, 下面对该装置 的内部结构和功能进行介绍。
参见图 8, 本实施例中用于速率匹配的装置包括 : 接口模块 801、 列交织模块 802 和 行列交织模块 803。该装置可具体为 FPGA( 现场可编程门阵列 ) 等可执行器件。接口模块 801 用于获得整数倍于字节的数据。 列交织模块 802 用于根据预设的交织图样对获得的数据进行交织, 获得交织后的数据。 行列交织模块 803 用于以字节为单位对交织后的数据进行行列交织, 获得行列交 织后的数据。
数据包括有效数据和无效数据。接口模块 801 还用于获得数据块的长度, 并判断 该长度是否为列交织输入数据矩阵列数的整数倍。当有效数据不为字节的整数倍时, 接口 模块 801 获得有效数据和无效数据, 使获得的有效数据和无效数据为字节的整数倍且无效 数据小于一个字节。 其中, 在列交织输入数据矩阵列中, 无效数据位于所有数据中的前端或 后端。
行列交织时, 数据包括有效数据和无效数据。当交织后的数据不为 n×m 的整数倍 时, 行列交织模块 803 用无效数据将交织后的数据填充后, 以字节为单位对交织后的数据 进行行列交织, 填充后的数据为 n×m 的整数倍且填充的无效数据小于 n 个字节, 其中 n 为 行列交织处理时交织矩阵中的列数, m 为一个字节的比特数。较佳的, 行列交织时无效数据 位于所有数据中的后端。
如何有无效数据, 行列交织模块 803 获得行列交织后的数据时去掉无效数据, 以 及对去掉无效数据后的有效数据进行拼接。
本实施例中的装置还包括用于存储各种数据的存储模块 ( 图中未示出 )。
并且, 该装置可以并行处理多路数据, 对多路数据进行列交织和行列交织处理。
本发明实施例以字节为单位进行速率匹配, 解决了单数据块的处理速度提升的问 题。 在相同的数据处理频率情况下, 比按位串行计算技术大幅度提高处理速度, 提高速度近 8 倍。对于多个数据包, 在相同的数据处理频率情况下, 处理一个字节所耗费的硬件资源仅 为现有方案的一半以下。
本领域内的技术人员应明白, 本发明的实施例可提供为方法、 系统、 或计算机程序 产品。因此, 本发明可采用完全硬件实施例、 完全软件实施例、 或结合软件和硬件方面的实 施例的形式。而且, 本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质 ( 包括但不限于磁盘存储器和光学存储器等 ) 上实施的计算机程序产品的形 式。
本发明是参照根据本发明实施例的方法、 设备 ( 系统 )、 和计算机程序产品的流程 图和 / 或方框图来描述的。应理解可由计算机程序指令实现流程图和 / 或方框图中的每一 流程和 / 或方框、 以及流程图和 / 或方框图中的流程和 / 或方框的结合。可提供这些计算 机程序指令到通用计算机、 专用计算机、 嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器, 使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和 / 或方框图一个方框或多个方框中指定的功能 的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中, 使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品, 该指令装置实现在流程图一个流程或多个流程和 / 或方框图一个方框或 多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上, 使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理, 从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和 / 或方框图 一个方框或多个方框中指定的功能的步骤。
显然, 本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样, 倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内, 则本发明也意图包含这些改动和变型在内。