一种适用于5g-nr的并行交织器、解交织器以及方法
阅读说明:本技术 一种适用于5g-nr的并行交织器、解交织器以及方法 (Parallel interleaver, deinterleaver and method suitable for 5G-NR ) 是由 陈红艳 马上 迟博恩 龙凯 于 2020-06-10 设计创作,主要内容包括:本发明涉及5G-NR数据处理领域,具体涉及一种适用于5G-NR的并行交织器、解交织器以及方法。本发明通过每个处理时钟从输入端口中输入多个数据,从输出端口中输出多个数据,使交织器/解交织器内部在每个时钟内能够同时能处理从端口输入的多个数据,即通过提高交织器/解交织器内部数据处理的并行度,从而提高数据的吞吐量,降低处理延迟。且本发明适用于5G-NR中物理信道中使用LDPC信道编码方式的解交织或交织数据处理流程。(The invention relates to the field of 5G-NR data processing, in particular to a parallel interleaver, a deinterleaver and a method suitable for 5G-NR. The invention inputs a plurality of data from the input port through each processing clock and outputs a plurality of data from the output port, so that the plurality of data input from the port can be simultaneously processed in each clock in the interleaver/deinterleaver, namely, the data processing parallelism in the interleaver/deinterleaver is improved, thereby improving the data throughput and reducing the processing delay. The invention is suitable for the de-interleaving or interleaving data processing flow using the LDPC channel coding mode in the physical channel in the 5G-NR.)
技术领域
本发明涉及交织和解交织领域,特别是一种适用于5G-NR的并行交织器、解交织器以及方法。
背景技术
移动通信技术的变革为发达国家和发展中国家的经济发展注入了强大的动力。第四代移动通信(4G)相比第三代移动通信(3G)系统极大地提高了网络带宽,促进了部分行业的快速发展。技术进步以及相应的用户需求不断推动创新,缩短了先进的通信应用从研发生产到销售的周期。与此同时,随着经济的稳步发展,人们的物质生活水平也有相应的提高,智能手机、平板电脑以及为用户开发的创新移动应用快速普及,致使移动数据流量不断跃升。移动设备的快速普及,通过无线通信技术开拓了新的市场领域,促进了数字经济的发展(如智能电网、电子医疗、智能运输系统和交通管理等),现如今的移动通信系统无法满足其发展要求;为了实现人们在物质生活水平提高的同时对更美好生活的愿景,并且在科学技术应许的条件下,第五代移动通信技术(5G)应运而生。
5G具有众多的应用场景。在这些应用场景中,相当一部分应用对带宽和延迟具有严苛的要求。通用处理器由于其本身的架构、按指令进行数据处理的方式,以及数据处理受调度和终端的影响等特点,决定通用处理平台无法保证稳定的延迟,也就导致了通用处理平台无法应用在延时要求严苛的应用中。除此以外,大多通用硬件处理平台数据输入输出接口只能提供相当有限的带宽,无法为数据处理提供足够的带宽。小部分通用数据处理平台能提供足够的带宽,但是在性价比和能效方面表现很差,无法得到大量部署。5GNR关键性能指标中指出下行峰值速率将达到20Gbps,上行峰值速率将达到10Gbps,比上一代移动通信系统提高了20倍。对于URLLC应用场景,延时降低为上一代移动通信系统的1/20。5G关键指标性能的大幅提升给5G网络的物理层的数据处理带来了新的挑战。物理共享信道的交织/解交织操作在一定程度上影响着物理层数据处理的吞吐量和数据处理延迟。为了满足5G移动通信系统各种业务需求,所以急需对物理共享信道中交织/解交织数据进行处理的技术。
目前的交织/解交织技术普遍存在吞吐量不高的问题,大多采用穿行输入的交织/解交织的方式,而这种方式不能进行并行操作,吞吐量较低,而少部分的并行交织/解交织方法,他们的并行读不够高,吞吐量仍然很小。所以现在需要一种吞吐量更大的交织/解交织技术。
发明内容
本发明的目的在于:针对现有的交织/解交织技术存在吞吐量低,效率低下的问题,提供一种适用于5G-NR的并行交织器、解交织器以及方法。
为了实现上述目的,本发明采用的技术方案为:
一种适用于5G-NR的并行交织器,包括至少两个比特交织模块、乒乓控制器、输入通道切换模块以及输出通道切换模块;
各个所述比特交织模块分别连接在所述输入通道切换模块以及所述输出通道切换模块之间,用于对输入的并行数据进行比特交织处理,所述并行数据的并行度为p,p为任意并行度;
所述输入通道切换模块以及所述输出通道切换模块分别与所述乒乓控制器相连接,用于切换进行数据传输的所述比特交织模块;
所述乒乓控制器分别与各个所述比特交织模块相连接,用于控制所述比特交织模块的工作状态,以及输入通道和输出通道的切换,使一个所述比特交织模块接收并行数据时,另一所述比特交织模块输出并行数据,实现交替控制。本发明提高数据输入输出的并行度,采用乒乓控制的形式对数据进行流处理,每个时钟输入或者输出多个数据,由于乒乓操作控制逻辑消耗的时钟占据很小的一部分,可以近似看作全流水的处理,相比于传统的串行,提高了并行度,明显提高了吞吐量。
作为本发明的优选方案,所述比特交织模块包括矩阵构建单元以及读写缓存器;
所述矩阵构建单元包括至少8个独立的RAM存储器,用于构建虚拟矩阵来存储所述并行数据;
所述读写缓存器包括至少8个容纳并行总线数据的寄存器,用于调整写入所述虚拟矩阵的所述并行数据,或调整从所述虚拟矩阵中读取的所述并行数据。
作为本发明的优选方案,所述比特交织模块不包括读写缓存器,且所述输出通道切换模块后设有读写缓存器。本发明通过将比特交织模块中的读写缓存器模块取出,放在输出通道切换模块之后,两个虚拟矩阵将共用此读写缓存器。简化了整个装置的结构,节省了资源。
作为本发明的优选方案,所述矩阵构建单元的所述RAM存储器构建的虚拟存储器行数与调制阶数相同。
一种适用于5G-NR的解交织器,包括至少两个解交织模块、乒乓控制器、输入通道切换模块以及输出通道切换模块;
各个所述解交织模块分别连接在所述输入通道切换模块以及所述输出通道切换模块之间,用于对输入的并行数据进行解交织处理,所述并行数据的并行度为p,p为任意并行度;
所述输入通道切换模块以及所述输出通道切换模块分别与所述乒乓控制器相连接,用于切换进行数据传输的所述解交织模块;
所述乒乓控制器分别与各个所述解交织模块相连接,用于控制所述解交织模块的工作状态,以及输入通道和输出通道的切换,使一个所述解交织模块接收并行数据时,另一所述解交织模块输出并行数据,实现交替控制。
作为本发明的优选方案,所述解交织模块包括矩阵构建单元以及读写缓存器;
所述矩阵构建单元包括至少8个独立的RAM存储器,用于构建虚拟矩阵来存储所述并行数据;
所述读写缓存器包括至少8个容纳并行总线数据的寄存器,用于调整写入所述虚拟矩阵的所述并行数据,或调整从所述虚拟矩阵中读取的所述并行数据。
作为本发明的优选方案,所述解交织模块不包括读写缓存器,且所述输入通道切换模块前设有读写缓存器,且所述输出通道切换模块后设有位拼接模块;所述位拼接模块用于将每个数据中无效的字节剔除,将有效部分拼接起来组成新的p字节数据,在AXIS总线协议中也被称为Packing操作。本发明通过在所述解交织器的所述输出通道切换模块后设置位拼接模块,极大地优化了处理的过程,避免了无效字节的干扰。
一种适用于5G-NR的并行交织方法,包括以下步骤:
S1001:载入待处理的并行数据,所述并行数据的并行度为p,p为任意并行度;
S1002:采用乒乓控制方法选择工作的交织器;
S1003:对所述并行数据进行交织处理并输出交织后的并行数据;
所述乒乓控制方法包括:
检测交织器A的存储状态;当A未存储满时,切换输入通道到所述交织器A,并切换输出通道到交织器B;当A存储满后,切换输入通道到所述交织器B,并切换输出通道到交织器A。
作为本发明的优选方案,所述交织器包括至少8个独立的RAM存储器,用于构建虚拟矩阵。
一种适用于5G-NR的解交织方法,包括以下步骤:
S2001:载入待处理的并行数据,所述并行数据的并行度为p,且p≥16;
S2002:采用乒乓控制方法选择工作的解交织器;
S2003:对所述并行数据进行解交织处理并输出解交织后的并行数据;
所述乒乓控制方法包括:
检测解交织器A的存储状态;当所述解交织器A未存储满时,切换输入通道到所述解交织器A,并切换输出通道到解交织器B;当所述解交织器A存储满后,切换输入通道到所述解交织器B,并切换输出通道到解交织器A。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明提高数据输入输出的并行度,采用乒乓控制的形式对数据进行流处理,每个时钟输入或者输出多个数据,由于乒乓操作控制逻辑消耗的时钟占据很小的一部分,可以近似看作全流水的处理,相比于传统的串行,提高了并行度,明显提高了吞吐量。
2、本发明通过将比特交织模块中的读写缓存器模块取出,放在输出通道切换模块之后,两个虚拟矩阵将共用此读写缓存器。简化了整个装置的结构,节省了资源。
3、本发明通过在所述解交织器的所述输出通道切换模块后设置位拼接模块。将每个数据中无效的字节剔除,将有效部分拼接起来组成新的p字节数据。极大地优化了处理的过程,避免了无效字节影响总线吞吐量。
附图说明
图1是本发明的交织原理图;
图2是本发明交织时输入端的前两个数据示意图;
图3是本发明交织时输出端的数据编号示意图;
图4是本发明交织时输出端的前两个数据示意图;
图5是本发明的解交织原理图;
图6是本发明交织时输入端的前两个数据示意图;
图7是本发明交织时输出端的数据编号示意图;
图8是本发明交织时输出端的前两个数据示意图;
图9是本发明实施例1所述的一种适用于5G-NR的比特交织器的结构示意图;
图10是本发明实施例1所述的一种适用于5G-NR的比特交织器的比特交织模块的结构示意图;
图11是本发明实施例1所述的一种适用于5G-NR的比特交织器的比特交织模块的数据传输示意图;
图12是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=8时0号寄存器存储的并行数据的示意图;
图13是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=2时0号寄存器存储的并行数据的示意图;
图14是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=4时0号寄存器存储的并行数据的示意图;
图15是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=6时0号寄存器存储的并行数据的示意图;
图16是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=2时矩阵构建模块中RAM存储器的排列示意图;
图17是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=4时矩阵构建模块中RAM存储器的排列示意图;
图18是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=6时矩阵构建模块中RAM存储器的排列示意图;
图19是本发明实施例2所述的一种适用于5G-NR的比特交织器中Qm=8时矩阵构建模块中RAM存储器的排列示意图;
图20是本发明实施例3所述的一种适用于5G-NR的比特交织器的结构示意图;
图21是本发明实施例4所述的一种适用于5G-NR的解交织器的结构示意图;
图22是本发明实施例5所述的一种适用于5G-NR的解交织器在Qm=8时读写缓存器将数据写入虚拟矩阵的示意图;
图23是本发明实施例5所述的一种适用于5G-NR的解交织器在Qm=2时读写缓存器将数据写入虚拟矩阵的示意图;
图24是本发明实施例5所述的一种适用于5G-NR的解交织器在Qm=4时读写缓存器将数据写入虚拟矩阵的示意图;
图25是本发明实施例5所述的一种适用于5G-NR的解交织器在Qm=6时读写缓存器将数据写入虚拟矩阵的示意图;
图26是本发明实施例6所述的一种适用于5G-NR的解交织器的结构示意图;
图27是本发明实施例7所述的一种适用于5G-NR的并行交织方法中乒乓控制方法的操作过程图;
图28是本发明实施例7所述的一种适用于5G-NR的并行交织方法中乒乓控制方法的输入判断流程图;
图29是本发明实施例7所述的一种适用于5G-NR的并行交织方法中乒乓控制方法的输出判断流程图;
图30是本发明实施例8所述的一种适用于5G-NR的解交织方法在以并行度p=16,Qm=8,且每个数据为1个字节时,第一个数据输入寄存器的写入过程示意图;
图31是本发明实施例8所述的一种适用于5G-NR的解交织方法在以并行度p=16,Qm=8,且每个数据为1个字节时,最后一个数据输入寄存器的写入过程示意图。
具体实施方式
下面结合附图,对本发明作详细的说明。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
比特交织是编码中速率匹配的一部分。交织前的数据为e0,e1,e2,…,eE-1,解交织后的数据为f0,f1,f2,…,fE-1调制阶数为Qm,E为交织数据的长度,其运行程序如下所示:
比特交织器将LLR数据一列一列地写进一个矩阵中,然后一行一行地从该矩阵中读出数据,比特交织读写的示意图如图1所示。
假设数据从下标范围0~E-1,输出下标从0开始,依次写入第一行,第二行,直到完全填充满整个存储矩阵。输出数据从第一列开始,依次为0,E/Qm,…,(Qm-1)×E/Qm,1,E/Qm+1,…,(Qm-1)×E/Qm,E/Qm-1,…,E-1。
以Qm=8,数据输入并行度为32为例,输入端的前两个数据如图2所示,根据比特交织原理,输出端的数据编号如图3所示,得到此时输出端的前两个数据的编号,如图4所示。
解交织是编码中交织的逆过程。假设解交织前的数据为e0,e1,e2,…,eE-1,解交织后的数据为f0,f1,f2,…,fE-1调制阶数为Qm,E为解交织数据的长度;
假设有一个行数为调制阶数Qm,列数为E/Qm的矩阵,矩阵每个单元只存储一个数据。解交织器将LLR数据逐列地写进一个矩阵中,然后逐行地从该矩阵中读出数据。
如图5所示为Qm=4时的解交织示意图。图中是一个行数为4,列数为E/4的矩阵。假设数据从下标范围0~E-1,输出下标从0开始,依次写入第一列,第二列,直到完全填充满整个存储矩阵。输出数据从第一行开始,依次为0,4,…,E-8,E-4,1,5,…,E-7,E-3,2,6,…E-6,E-2,3,7,E-5,E-1。
以p=16为例。根据要求,解交织模块的输入端每次将传输16个数据数据,将这16个数据按先后顺序编号,编号从0开始。解交织输出数据从矩阵的第一行开始输出。假设待解交织的数据长度大于16Qm,即前16个数据位于矩阵的第一行。解交织输出的前16个数据数据的编号序列为:index=iQm,fori=0to15。因此在获得第一个16并行输出数据至少需要15Qm/16个16并行数据输入,即Qm个并行数据输入。
当Qm=8时,输入端的前两个数据如图6所示,根据解交织原理,输出端的数据编号如图7所示,得到此时输出端的前两个数据的编号,如图8所示。
实施例1
一种适用于5G-NR的比特交织器,其结构如图9所示。
包括比特交织模块A、比特交织模块B、乒乓控制器、输入通道切换模块以及输出通道切换模块;其中,各部分主要任务如下:
乒乓控制器用于监视比特交织模块A与B的工作状态,协调、控制比特交织模块A与B之间的配合,同时控制输入/输出通道模块的切换。
比特交织模块用于完成并行度为p的并行数据的比特交织功能。
输入/输出通道切换模块用于根据乒乓控制的指示,切换输入、输出通道。
根据交织公式得出每组交织后的数据。并对这些数据逐行存储,为了保证交织能不等待数据的情况下进行,本发明在接收完所有的数据以后再进行交织操作。如图10所示,比特交织模块又分为两个子部分:读写缓存器以及矩阵构建模块,其中矩阵构建模块用于构建虚拟矩阵并存储需要进行交织处的并行数据;读写缓存器用于调整写入虚拟矩阵的数据内容,或调整从虚拟矩阵中读取的数据内容。
读写缓存器由至少8个p位的寄存器组成,为了保证吞吐量,RAM存储器支持并行度为p的并行数据的存储。先将所有的数据存入虚拟矩阵中,随后由读写缓存器控制从虚拟矩阵中读取特定的数据,并由读写缓存器控制,输出p并行的交织数据。即每次从虚拟矩阵中读取出p×Qm个数据,读写缓存器再根据不同的Qm输出并行数据。
如图11所示为比特交织模块的数据传输示意图,读写缓存器与矩阵构建模块之间的数据接口为位宽p×Qm个数据的总位宽,并根据参数Qm的值自动选择总线上的数据,当并行度为32,Qm为8时,总线位宽为能容纳32×8个数据的位宽。其工作流程如下:先将32并行数据依次存入虚拟矩阵,而后读写缓存器从一个支持32×8个数据的总线读取数据,经过进一步输出映射后输出得到交织之后的结果。
实施例2
本实施例为实施例1在p=32,读写缓存器为寄存器为8个,矩阵构建模块的RAM存储器为9个时缓存器存储数据和矩阵构建模块的具体排布示例。
读写缓存器包括8个大小能容乃32个数的寄存器REG0~REG7,每一个寄存器存放交织后的32个数据,当Qm=8时,读写缓存器中0号寄存器存储的并行数据的示意图如图12所示。读写缓存器将虚拟矩阵读出的数据交织读取后存入寄存器中,当寄存器存满8个32并行数据时,再将并行数据从寄存器0~7依次输出。
不同的Qm需要写入的寄存器数量不同,写入每一个寄存器的32并行数据所在读取的数据块中的位置也不同。当Qm分别等于2、4、6时,对数据的具体划分示意图分别如图13、14、15所示。
矩阵构建模块由至少8个独立的RAM存储器组成,每个存储器存储单元位宽必须容纳一个并行总线数据,交织最大深度E为32768,支持四种不同的调制阶数,分别为Qm=2、4、6、8。Qm的最大值为8,虚拟矩阵最多有8行,在写入时每一行都需要同时写入数据,因此构建矩阵至少需要8个独立的RAM存储器。
当Qm=2时,虚拟矩阵的行数为2,同时需要操作的RAM数为2,将9个RAM以图16所示的方式排列,每一列代表矩阵的一行。其中RAM8按最高地址为0和1被均匀分为两个部分,RAM8(0)与RAM8(1)。
Qm=4时,虚拟矩阵的行数为4,同时需要操作的RAM数为4,将9个RAM以图17所示的方式排列,其中RAM8按最高2位地址的不同被均匀分为4个部分。
Qm=6时,虚拟矩阵的行数为6,同时需要操作的RAM数为6,将9个RAM以图18所示的方式排列,其中RAM6、RAM7、RAM8按最高地址的不同被均匀分为2个部分。
Qm=8时,虚拟矩阵的行数为8,同时需要操作的RAM数为8,将9个RAM以图19所示的方式排列,其中RAM8按最高3位地址的不同被均匀分为8个部分。
按照上述方式构造矩阵,一列RAM代表矩阵的一行,RAM中一个地址代表矩阵的32列,组合后的RAM的地址数量能包含矩阵的所有列。该方法可同时(在一个时钟内)完成对Qm个RAM的读写操作,且根据模式不同,通过不同的组合方式,使每个RAM利用充分,减少了存储资源的冗余。
实施例3
如图20所示,本实施例与实施例1的区别在于,所述比特交织模块不包括读写缓存器,且所述输出通道切换模块后设有读写缓存器。
比特交织模块A与B的读写缓存器的功能一致,且无需考虑数据阻塞问题,所以进行进一步优化,将比特交织模块A与B中的读写缓存器模块取出,放在输出通道切换模块之后,两个虚拟矩阵将共用此读写缓存器。
此时,每个存储器RAM地址7bits,所有地址一共需11bits,即[10:0]。在不同值时具体的构建方式如下:
Qm=2时。将RAM8均分为两部分。每一列地址10bit,即[9:0],由bit[10]选择哪一列。RAM0、2、4、6的片选组成地址[8:7],RAM0~7的地址组成地址低9位[6:0],RAM8的地址7:0与RAM0~7的低6位连在一起,地址最高位连在bit[10],片选为bit[9]。这样,bit[10]控制RAM阵列的哪一列,bit[9:0]控制存储器串联后的地址。
Qm=4时。将RAM8均分为四部分。每一列地址9bit,即[8:0],由bit[10:9]选择哪一列。RAM0与4、1与5,2与6,3与7的片选组成地址bit[7],RAM0~7的地址组成地址低7位[6:0],RAM8的地址4:0与RAM0~7的低5位连在一起,高两位6:5连在bit[10:9],RAM8的片选为地址bit[8]。这样,[10:9]控制RAM阵列的哪一列,bit[8:0]控制存储器串联后的地址。
Qm=6时。均分RAM6,7,8为两部分。每一列地址8bits[7:0],bit[10:8]选择哪一列。RAM0~5的地址组成地址低7位[6:0],RAM6,7,8的地址5:0与0~7的低6位连在一起,三个RAM的第8位构成bit[10:8],RAM6,7,8的片选为地址[7]。这样,[10:8]控制RAM阵列的哪一列,bit[7:0]控制存储器串联后的地址。
Qm=8时。将RAM8均分为8部分。每一列地址8bits[7:0],bit[10:8]选择哪一列。RAM0~7的地址组成地址低7位[6:0],RAM8的地址3:0与RAM0~7的低4位连在一起,高三位连[10:8],片选连bit[7]。这样,[10:8]控制RAM阵列的哪一列,bit[7:0]控制存储器串联后的地址。
写入时,需要根据参数计算矩阵每一行数据的个数,并使用计数器记录输入数据的个数,每写满一行需要自动换行。读取时,每次读取矩阵的32列数据,根据Qm值选择要读取的行数,按列顺序读取即可。
实施例4
如图21所示,一种适用于5G-NR的解交织器,包括解交织模块A、解交织模块B、乒乓控制器、输入通道切换模块以及输出通道切换模块;其中,各部分主要任务如下:
乒乓控制器用于监视解交织模块A与B的工作状态,协调、控制解交织模块A与B之间的配合,同时控制输入/输出通道模块的切换。
比特交织模块用于完成并行度为p的并行数据的解交织功能。
输入/输出通道切换模块用于根据乒乓控制的指示,切换输入、输出通道。
在矩阵写入端增加额外的读写缓存器,将所需的Qm个输入数据先存入缓存器,经过初步的解交织操作后,再写入矩阵的每一列中。这样,在读取时,按照解交织的原理,按行依次读出即可。另外,每Qm个数据除了可以得到第一行的16个字节数据以外,还可以得到其他行的16个字节数据,共Qm行,这也是虚拟矩阵的行数。因此在写入矩阵时,设计8个数据通道,来实现当Qm最大时,能对矩阵的每一行进行同时写入的功能。
为了支持所有的Qm,输入缓存模块与矩阵构建模块之间的数据接口位宽为8个p并行数据的位宽,根据参数Qm的值自动选择总线上的数据。
根据Qm的不同,需要对长度p×Qm个的数据进行处理,然后将这些数据同时写入Qm个虚拟矩阵的行中。i表示矩阵的行索引,j表示矩阵的列索引。对于输入的每Qm个p并行数据,依次为mi(i∈[0,(p×Qm-1)])从读写缓存器输出到虚拟存储矩阵第i行的数据Doutbuf2vm,i,其中,
不同的Qm需要同时写入的RAM数量不同,写入每一个RAM的p个数据所在寄存器组中的位置也不同。如果将每一个数据的序号写成a×Qm+b(b∈[0,Qm-1])的形式,这个过程就是将b值相同但a值不相等的p个数据写入行存储第b行中。
实施例5
本实施例为实施例3在p=32,读写缓存器为寄存器为8个,矩阵构建模块的RAM存储器为9个时缓存器存储数据和矩阵构建模块的具体排布示例。
如图22所示,读写缓存器将输入数据依次存储,当Qm=8时,寄存器存满8个数据后,将写入0虚线圈中的部分写入虚拟矩阵的第一行。将写入1部分写入虚拟矩阵的第二行,以此类推。
当Qm分别等于2、4、6时,对数据的具体划分示意图分别如图23、24、25所示。
矩阵构建模块由至少8个独立的RAM存储器组成,每个存储器位宽必须为p,交织最大深度E为32768,支持四种不同的调制阶数,分别为Qm=2、4、6、8。Qm的最大值为8,虚拟矩阵最多有8行,在写入时每一行都需要同时写入数据,因此构建矩阵至少需要8个独立的RAM存储器。
当Qm=2时,虚拟矩阵的行数为2,同时需要操作的RAM数为2,将9个RAM以图16所示的方式排列,每一列代表矩阵的一行。其中RAM8按最高地址为0和1被均匀分为两个部分,RAM8(0)与RAM8(1)。
Qm=4时,虚拟矩阵的行数为4,同时需要操作的RAM数为4,将9个RAM以图17所示的方式排列,其中RAM8按最高2位地址的不同被均匀分为4个部分。
Qm=6时,虚拟矩阵的行数为6,同时需要操作的RAM数为6,将9个RAM以图18所示的方式排列,其中RAM6、RAM7、RAM8按最高地址的不同被均匀分为2个部分。
Qm=8时,虚拟矩阵的行数为8,同时需要操作的RAM数为8,将9个RAM以图19所示的方式排列,其中RAM8按最高3位地址的不同被均匀分为8个部分。
按照上述方式构造矩阵,一列RAM代表矩阵的一行,RAM中一个地址代表矩阵的32列,组合后的RAM的地址数量能包含矩阵的所有列。该方法可同时(在一个时钟内)完成对Qm个RAM的读写操作,且根据模式不同,通过不同的组合方式,使每个RAM利用充分,减少了存储资源的冗余。
实施例6
如图26所示,本实施例与实施例4的区别在于,所述解交织模块不包括读写缓存器,且所述输入通道切换模块前设有读写缓存器,所述输出通道切换模块后设有位拼接模块。所述位拼接模块用于将每个数据中无效的字节剔除,将有效部分拼接起来组成新的p字节数据。
其中,由于数据为p字节并行的,构建虚拟矩阵的RAM每一个地址代表着矩阵的p列,实际的E长度是可变的,因此完全有可能出现矩阵的列数不是p的整数倍,导致在某一个数据中的p个字节里有些字节是有效的,有些字节是无效的。所以增加拼接模块(Packing)来对数据流进行优化。
解交织模块A与B的读写缓存器的功能一致,且无需考虑数据阻塞问题,所以进行进一步优化,将解交织模块A与B中的读写缓存器模块取出,放在输入通道切换模块之前,两个虚拟矩阵将共用此缓存器。
实施例7
一种适用于5G-NR的并行交织方法,包括以下步骤:
S1001:载入待处理的并行数据,所述并行数据的并行度为p,p为任意并行度;
S1002:采用乒乓控制方法选择工作的交织器;
S1003:对所述并行数据进行交织处理并输出交织后的并行数据。
比特交织模块在处理时存在较大的时延,实际输入数据流一般是连续的,为了不影响通道阻塞,保证吞吐率,使用两个通道进行乒乓操作——在其中一个模块忙时,使用另一个模块。这个过程为乒乓控制方法的操作过程,如图27所示。即第一个数据来时,输入使用通道A,通道A写满后,切换输入至通道B,同时通道A开始输出,通道A输出完成后,将输出切换至通道B继续输出。
乒乓操作分为输入和输出两个判断流程实现,两个判断流程图分别如图28、图29所示。
读写缓存器是一个能容纳8个并行输入总线数据的寄存器组,分为REG0~7,根据输入参数Qm的不同,以并行度为32为例,分为四种情况:
Qm=2时,每次从矩阵中读取2行32列数据,共64bit,使用REG0与REG1。提取数据的行列号(从左至右,从上至下)与写入寄存器的比特映射关系如下表:
其中[1,0],代表第1行第0列的数据。
Qm=4时,每次从矩阵中读取4行32列数据,共128bit,使用REG0~3。提取数据的行列号(从左至右,从上至下)与写入的寄存器的比特映射关系如下表:
寄存器
[0]
[1]
[2]
[3]
…
[30]
[31]
REG0
[0,0]
[1,0]
[2,0]
[3,0]
…
[2,7]
[3,7]
REG1
[0,8]
[1,8]
[2,8]
[3,8]
…
[2,15]
[3,15]
REG2
[0,16]
[1,16]
[2,16]
[3,16]
…
[2,23]
[3,23]
REG3
[0,24]
[1,24]
[2,24]
[3,24]
…
[2,31]
[3,31]
Qm=6时,有效寄存器长度为192字节,使用REG0~5。
Qm=8时,有效寄存器长度为256字节,使用REG0~7。
当数据到来时,使用计数器对输入数据进行计数,将每一个数据写入对应的位置,当所有有效的寄存器写完后,从REG0至REG7顺序依次输出,然后继续从矩阵中读取下一组数据。
实施例8
一种适用于5G-NR的解交织方法,包括以下步骤:
S1001:载入待处理的并行数据,所述并行数据的并行度为p,且p≥16;
S2002:采用乒乓控制方法选择工作的解交织器;
S2003:对所述并行数据进行解交织处理并输出解交织后的并行数据。
读写缓存器设置变量为能容纳8个并行总线的寄存器组,分为REG0~7,根据输入参数Qm的不同,以并行度p=16时为例,提取数据的字节号(从左至右,从上至下)与写入的寄存器关系存在以下四种情况:
Qm=2时,有效寄存器长度为Qm*并行度=32字节,使用REG0与REG1,提取数据的字节号(从左至右,从上至下)与写入的寄存器关系如下表:
寄存器
[7:0]
[15:8]
[23:16]
[31:24]
[39:32]
[47:40]
[55:48]
[63:56]
REG0[0]
0
2
4
6
8
10
12
14
REG0[1]
16
18
20
22
24
26
28
30
REG1[0]
1
3
5
7
9
11
13
15
REG1[1]
17
19
21
23
25
27
29
31
其中REG0[0]代表寄存器REG0的前半部分,REG0[1]代表寄存器REG0后半部分。
Qm=4时,有效寄存器长度为64字节,使用REG0~3。
寄存器
[7:0]
[15:8]
[23:16]
[31:24]
[39:32]
[47:40]
[55:48]
[63:56]
REG0[0]
0
4
8
12
16
20
24
28
REG0[1]
32
36
40
44
48
52
56
60
REG1[0]
1
5
9
13
17
21
25
29
REG1[1]
33
37
41
45
49
53
57
61
REG2[0]
2
6
10
14
18
22
26
30
REG2[1]
34
38
42
46
50
54
58
62
REG3[0]
3
7
11
15
19
23
27
31
REG3[1]
35
39
43
47
51
55
59
63
Qm=6,有效寄存器长度为48字节,使用REG0~5,映射表如下。
寄存器
[7:0]
[15:8]
[23:16]
[31:24]
[39:32]
[47:40]
[55:48]
[63:56]
REG0[0]
0
6
12
18
24
30
36
42
REG0[1]
48
54
60
66
72
78
84
90
REG1[0]
1
7
13
19
25
31
37
43
REG1[1]
49
55
61
67
73
79
85
91
REG2[0]
2
8
14
20
26
32
38
44
REG2[1]
50
56
62
68
74
80
86
92
REG3[0]
3
9
15
21
27
33
38
45
REG3[1]
51
57
63
69
75
81
87
93
REG4[0]
4
10
16
22
28
34
40
46
REG4[1]
52
58
64
70
76
82
88
94
REG5[0]
6
11
17
23
29
35
41
47
REG5[1]
53
59
65
71
77
83
89
95
Qm=8时,有效寄存器长度为64字节,使用REG0~7,映射表如下。
当数据到来时,使用计数器对输入数据进行计数,将每一个字节写入对应的位置,当寄存器的64bit写完后,将值赋给虚拟矩阵对应的行,然后直接继续写下一帧。图30和图31是以并行度p=16,Qm=8,且每个数据为1个字节时,第一个数据和最后一个数据输入寄存器的写入过程。
每个RAM地址9bits,所有地址一共需13bits,即[12:0]。
而虚拟矩阵在不同Qm值时具体的构建方式如下:
Qm=2时,均分RAM8为两部分。每一列地址12bits[11:0],bit12选择哪一列。RAM0、2、4、6的片选组成地址[10:9],RAM0~7的地址组成地址低9位[8:0],RAM8的地址7:0与RAM0~7的低8位连在一起,地址最高位连在bit[12],片选为bit[11]。这样,bit12控制RAM阵列的哪一列,bit[11:0]控制存储器串联后的地址。总地址范围为0x0000~0x07FF+0x00FF接着为0x100~0x17FF+0x00FF。
Qm=4时,均分RAM8为四部分。每一列地址11bits[10:0],bit[12:11]选择哪一列。RAM0与4、1与5,2与6,3与7的片选组成地址bit[9],RAM0~7的地址组成地址低9位[8:0],RAM8的地址6:0与RAM0~7的低7位连在一起,高两位8:7连在bit[12:11],RAM8的片选为地址bit[10]。这样,[12:11]控制RAM阵列的哪一列,bit[10:0]控制存储器串联后的地址。地址范围为0x0000~0x03FF+0x007F接着为0x0800~0x0CFF+0x007F,接着为0x1000~0x13FF+0x007F接着为0x1800~0x1CFF+0x007F。
Qm=6时,均分RAM6,7,8为两部分。每一列地址10bits[9:0],bit[12:10]选择哪一列。RAM0~5的地址组成地址低9位[8:0],RAM6,7,8的地址7:0与0~7的低8位连在一起,三个RAM的第8位构成bit[12:10],RAM6,7,8的片选为地址[9]。这样,[12:10]控制RAM阵列的哪一列,bit[9:0]控制存储器串联后的地址。地址范围为0x0000~0x01FF+0x00FF接着为0x0400~0x05FF+0x00FF,接着为0x0800~0x09FF+0x00FF接着为0x0C00~0x0DFF+0x00FF,接着为0x1000~0x11FF+0x00FF接着为0x1400~0x15FF+0x00FF。
Qm=8时,均分RAM8为8部分。每一列地址10bits[9:0],bit[12:10]选择哪一列。RAM0~7的地址组成地址低9位[8:0],RAM8的地址5:0与RAM0~7的低6位连在一起,高三位连[12:10],片选连bit[9]。这样,[12:10]控制RAM阵列的哪一列,bit[9:0]控制存储器串联后的地址。地址范围为0x0000~0x01FF+0x003F接着为0x0400~0x05FF+0x003F,接着为0x0800~0x09FF+0x003F接着为0x0C00~0x0DFF+0x003F,接着为0x1000~0x11FF+0x003F接着为0x1400~0x15FF+0x003F,接着为0x1800~0x19FF+0x003F接着为0x1C00~0x1DFF+0x003F。
写入时,计数每个数据的个数,输入数据大小为128*8bit,根据Qm值判断哪些bit有效,然后一个数据可以写入每一列RAM中的一个地址。最终,写入的数据个数就是RAM阵列每列的实际最高地址数。写入完成后需要记录写到了哪里,读取时,通过高位地址选择RAM阵列的第一列,读到写入时记录的最大地址数后转读第二列,从上到下,从左至右顺序读出即可完成解交织。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。