首页 / 专利分类库 / 基本电子电路 / 一般编码、译码或代码转换 / turbo码的并行译码方法、装置、电子设备及介质

turbo码的并行译码方法、装置、电子设备及介质

申请号 CN202311757456.8 申请日 2023-12-19 公开(公告)号 CN117955507A 公开(公告)日 2024-04-30
申请人 上海思朗科技有限公司; 发明人 徐韡;
摘要 本 发明 公开了一种turbo码的并行译码方法、装置、 电子 设备及介质。该方法包括:获取目标码 块 分割为第一数量的子块;每次读入第一数量的子块中第二数量字节数的码元后,交替触发各分量译码器执行:并行计算第三数量路的第一和第二分支度量值,以及每路的前半部分码元前向度量值和后半部分码元后向度量值;根据第一和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值后,并行计算第三数量路的外信息,并确定出每路的先验信息后发送至另一分量译码器的输入端,直至满足结束 迭代 条件,得到 硬判决 器输出的译码结果。本发明 实施例 的技术方案最大程度的减少译码过程中搬运次数,提高译码效率。
权利要求

1.一种turbo码的并行译码方法,其特征在于,包括:
获取待进行turbo码译码的目标码,并根据目标码块的长度,将所述目标码块分割为第一数量的子块;
根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程;
并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值;其中,第三数量为第一数量乘以第二数量;
根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值;
根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件;
在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
2.根据权利要求1所述的方法,其特征在于,在并行计算第三数量路的第一分支度量值和第二分支度量值之前,还包括:
从读入的数据中提取第一数量路的系统位软信息;
根据所述第一数量路的系统位软信息,并行计算第一数量路的后向度量值的迭代初始值,并对第一数量路的系统位软信息进行并行交织计算。
3.根据权利要求2所述的方法,其特征在于,根据所述第一数量路的系统位软信息,并行计算第一数量路的后向度量值的迭代初始值,包括:
将每路的系统位软信息分别复制第二数量个,并通过预先配置的加减系数,将每路的系统位软信息进行乘累加计算后,并行计算与每路分别对应的第二数量个后向度量值的迭代初始值。
4.根据权利要求2所述的方法,其特征在于,对第一数量路的系统位软信息进行并行交织计算,包括:
根据目标码块的长度,确定循环周期N,并从所有交织地址数据中取得N个数据进行逻辑与操作;
N
将操作结果中的后三位结果存储至第一地址处,并将操作结果右移log2后,分为N个行数据输出至第二地址处;
顺序读入每路的系统位软信息作为待交织数据,并使用第一地址处的数据值并行对每路的待交织数据进行组内交织,并将每路的组内交织结果分为N个行数据输出至第三地址处;
使用第二地址处的每个行数据并行对每路的第三地址处的每个行数据进行交织处理,得到每路的交织计算结果。
5.根据权利要求1‑4任一项所述的方法,其特征在于,根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,包括:
根据每路的前半部分码元前向度量值以及后半部分码元前向度量值,并行计算得到整体前向度量值,并根据每路的后半部分码元后向度量值以及前半部分码元后向度量值,并行计算得到整体后向度量值;
根据每路的第一分支度量值、整体前向度量值以及整体后向度量值,并行计算得到第一对数似然比,并根据每路的第二分支度量值、整体前向度量值以及整体后向度量值,并行计算得到第二对数似然比;
根据每路的第一对数似然比以及第二对数似然比,并行计算得到第三数量路的外信息。
6.根据权利要求1‑4任一项所述的方法,其特征在于,在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,包括:
如果当前触发的分量译码器为第一分量译码器,则使用循环迭代译码器中的交织器对每路外信息并行的进行交织处理后,将交织处理得到的先验信息发送至第二分量译码器的输入端;
如果当前触发的分量译码器为第二分量译码器,则使用循环迭代译码器中的解交织器对每路外信息并行的进行解交织处理后,将解交织处理得到的先验信息发送至第二分量译码器的输入端。
7.根据权利要求6所述的方法,其特征在于,满足结束迭代条件,包括:
如果确定第一分量译码器通过交织器输出的先验信息通过CRC校验,则确定满足结束迭代条件。
8.一种turbo码的并行译码装置,其特征在于,包括:
子块分割模块,用于获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块;
交替触发模块,用于根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程;
第一并行计算单元,用于并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值;其中,第三数量为第一数量乘以第二数量;
第二并行计算单元,用于根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值;
外信息并行计算单元,用于根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件;
译码结果输出模块,用于在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器以及循环迭代译码器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑7中任一项所述的turbo码的并行译码方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1‑7中任一项所述的turbo码的并行译码方法。

说明书全文

turbo码的并行译码方法、装置、电子设备及介质

技术领域

[0001] 本发明涉及无线通信技术领域,尤其涉及一种turbo码的并行译码方法、装置、电子设备及介质。

背景技术

[0002] 近年来,基于LTE(Long Term Evolution,长期演进)标准的Turbo译码的高速FPGA(Field Programmable Gate Array,可编程逻辑阵列)实现得到广泛关注。随着通信传输速率的不断提高,传统的串行译码已不能满足系统吞吐率的要求,并行译码算法越来越引起工程领域的重视,其中交织技术是LTE标准的Turbo译码器中并行译码的关键技术之一。
[0003] 二次置换多项式交织器(Quadratic PermutationPolynomial,QPP)因其“无冲突”并行内存访问的优势而广泛应用于3GPP LTE Turbo码,业内学者和技术人员一直不懈努,寻找保证并行译码的吞吐率不变的条件下,占用存储资源总和少,同时减少交织器的路径延迟的交织方法。

发明内容

[0004] 本发明提供了一种turbo码的并行译码方法、装置、电子设备及介质,实现了前向度量值和后向度量值的并行计算,以最大程度的减少译码过程中的数据搬运次数,提高译码效率。
[0005] 根据本发明实施例的一方面,提供了一种turbo码的并行译码方法,包括:
[0006] 获取待进行turbo码译码的目标码,并根据目标码块的长度,将所述目标码块分割为第一数量的子块;
[0007] 根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程;
[0008] 并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值;其中,第三数量为第一数量乘以第二数量;
[0009] 根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值;
[0010] 根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件;
[0011] 在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
[0012] 根据本发明实施例的另一方面,还提供了一种turbo码的并行译码装置,包括:
[0013] 子块分割模块,用于获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块;
[0014] 交替触发模块,用于根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程;
[0015] 第一并行计算单元,用于并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值;其中,第三数量为第一数量乘以第二数量;
[0016] 第二并行计算单元,用于根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值;
[0017] 外信息并行计算单元,用于根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件;
[0018] 译码结果输出模块,用于在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
[0019] 根据本发明实施例的另一方面,还提供了一种电子设备,所述电子设备包括:
[0020] 至少一个处理器;以及
[0021] 与所述至少一个处理器通信连接的存储器以及循环迭代译码器;其中,[0022] 所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的turbo码的并行译码方法。
[0023] 根据本发明实施例的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的turbo码的并行译码方法。
[0024] 本发明实施例的技术方案,通过控制循环迭代译码器中每个分量译码器在并行多路执行译码计算的过程中,同时计算前向度量值和后向度量值的部分数值的技术手段,提供了一种进行turbo码的并行译码的新方式,最大程度的减少了译码过程中的数据搬运次数和对内存空间的占用,有效提高了turbo码的译码效率。
[0025] 应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。附图说明
[0026] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027] 图1是根据本发明实施例一提供的一种turbo码的并行译码方法的流程图
[0028] 图2是根据本发明实施例的技术方案所适用的一种循环迭代译码器结构示意图;
[0029] 图3是根据本发明实施例二提供的一种turbo码的并行译码方法的流程图;
[0030] 图4是本发明实施例的技术方案所适用的一种累加过程的示意图;
[0031] 图5是本发明实施例的技术方案所适用的一种交织地址计算过程的示意图;
[0032] 图6是本发明实施例的技术方案所适用的一种余数循环的示意图;
[0033] 图7是本发明实施例的技术方案所适用的一种产生交织索引的示意图;
[0034] 图8是本发明实施例的技术方案所适用的一种输入数据交织后分Bank示意图;
[0035] 图9是本发明实施例的技术方案所适用的一种Bank内交织过程的示意图;
[0036] 图10是本发明实施例三提供的一种turbo码的并行译码装置的结构示意图;
[0037] 图11是实现本发明实施例的turbo码的并行译码方法的电子设备的结构示意图。

具体实施方式

[0038] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0039] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0040] 实施例一
[0041] 图1为本发明实施例一提供的一种turbo码的并行译码方法的流程图,本实施例可适用于对经由turbo码编码得到的码块进行并行译码的情况,该方法可以由turbo码的并行译码装置来执行,该装置可以采用硬件和/或软件的形式实现,并一般可以可配置于包含循环迭代译码器硬件的电子设备中,例如,终端或者基站等。如图1所示,该方法包括:
[0042] S110、获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块。
[0043] 现有技术中,待发送的信息码字在进行turbo码编码后,会形成码块(CB,Code Block)在通信信道中传输,接收端在收到该码块后,通过turbo码译码硬件将该码块进行译码得到原始的信息码字。
[0044] 在本实施例中,为了追求更高的数据吞吐量以及译码速度,发明人提出将整个码块再进行拆分,得到与码块对应的多个子块,以实现对同一码块的多个子块进行并行的处理。
[0045] 相应的,本实施例的接收端在获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块。其中,第一数量的大小与目标码块的长度关联。
[0046] 具体的,如果目标码块的长度小于或者等于768bit,则第一数量为1,如果目标码块的长度小于或者等于1536bit,则第一数量为2,如果目标码块的长度小于或者等于3072bit,则第一数量为4,如果目标码块的长度大于3072bit,则第一数量为8。
[0047] 在本实施例中,每个子块的大小均一致,进而,可以子块的长度等于目标码块的长度除以第一数量。
[0048] S120、根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程。
[0049] 在本实施例中,使用循环迭代译码器硬件实现对各子块的并行译码。其中,在图2中示出了本发明实施例的技术方案所适用的一种循环迭代译码器结构示意图。如图2所示,循环迭代译码器主要的组成部分有:两个软输入软输出(Soft Input Soft Output,SISO)分量译码器(SISO分量译码器1和SISO分量译码器2)、交织器、解交织器和硬判决模块。每个分量译码器都有三个输入(原始信息序列、信息校验序列以及先验信息)。
[0050] 首先,将接收到的原始信息序列与校验信息序列1输入到SISO分量译码器1中去,根据给定的算法完成译码,输出为外信息1。继而送入到交织器对外信息1的地址进行置换,当作SISO分量译码器2输入端的先验信息2,同样SISO分量译码器2也需要对输入端的原始信息序列、信息校验序列以及先验信息作相关的处理之后,当作外信息2输出,在通过解交织器后送入到SISO分量译码器1中,作为下次迭代SISO分量译码器1的输入。SISO分量译码器1和SISO分量译码器2通过持续的交换相互间的外信息,增加彼此之间的相关性。如此不断的进行相同的操作,直至译码达到迭代次数后,将输出的序列经过硬判决器进行判决处理后,得出最后的译码序列。
[0051] 在本实施例的一个可选的实施方式中,可以通过处理器的并行粒度,确定单次读入第一数量的子块中第二数量字节数的码元进行单次的并行译码操作。
[0052] 在一个具体的例子中,如果将目标码块分割为8个子块,处理器的并行粒度为512bit,为了充分利用处理器的处理粒度,可以确定第二数量为8,进而,每次可以获取8*8字节(1字节为8bit)的码元,送入循环迭代译码器中进行并行的译码处理,也就说是,单次从第一数量的各子块中,分别获取8字节的码元进行并行的译码处理,以实现512bit的并行化。
[0053] 其中,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程可以理解为,按照分量译码器1‑>分量译码器2‑>按照分量译码器1‑>按照分量译码器2‑>……的触发顺序,分别触发每个分量译码器执行下述S130‑S150的操作,直至满足结束迭代条件。
[0054] S130、并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值。其中,第三数量为第一数量乘以第二数量。
[0055] 在一个具体的例子中,假设第一数量和第二数量均为8,则在进行分支度量值(gamma值)的计算时,可以64byte为单位并行完成。每次读取64byte的系统位软信息(也即,前述的原始信息序列)、校验信息序列以及上一次迭代的外信息(Le)值,然后通过预先配置的加减系数,并行64路完成gamma[0](第一分支度量值)和gamma[1](第二分支度量值)的计算。
[0056] 其中,并行64路为8个子块*8byte的并行方式,为了与前向度量值(前向概率值或者alpha)以及后向度量值(后向概率值或者beta)的计算保持一致。
[0057] 具体的,在每个分量译码器中,gamma值需要通过一步交织过程复制成前向度量值计算需要的形式,以供专用指令使用。
[0058] 具体的,由于前向度量值的计算均为8byte字节数据内部的重排,或者加减运算。为进一步提升性能,可以使用硬件设计专用的前向度量值计算指令,通过一条指令(2个周期)可完成1bit对应的前向度量值的更新。
[0059] 然而,为提高并行度,8个子块是并行启动运算的。因此在第一次迭代时后续7个子块初始值置为0,即所有状态认为是等概率的,该假设会造成一定的性能损失。在后续若干次迭代时,则将初始值置为上一次迭代上一模块的最后结果,降低性能损失。经过子块划分处理后,处理并行度为8*第一数量(也即,目标码块中包括的子块数量),从而充分利用64byte位宽进行数据处理
[0060] 后向度量值计算与前向度量值计算类似,也是由上一bit的后向度量值与gamma值进行加减运算得到的。后向度量值的计算与前向度量值计算的主要区别为后向度量值为从最后一个bit开始倒序读入计算,前向度量值则为正序读入计算。同时,二者对上一bit的8个状态的交织顺序和gamma值交织顺序有所差别。该过程同样由专用的后向度量值计算指令来完成。通过一条指令可完成1bit对应的后向度量值的更新。
[0061] 为减少数据从内存搬运到计算单元中的数据搬运次数,在第一分支度量值和第二分支度量值计算完成后,进行一半码长的前向度量值以及后向度量值的计算。
[0062] 前向度量值的计算为从前往后推进,后向度量值的计算为从后往前推进。在计算gamma[0]和gamma[1]时,对应的将前一半码长的gamma[0]和gamma[1]和后一半码长的gamma[0]和gamma[1]的同步计算,结果既写回内存又送入对应计算单元进行前一半码长的前向度量值和后一半码长的后向度量值的计算。
[0063] 综上所述,上述操作的并行度为并行处理第一数量个子块,每条前向度量值专属指令最多可输出8个子块的前向度量值的8个状态值,每条后向度量值专属指令最多可输出8个子块的后向度量值的8个状态值。可选的,可以最多使用8次迭代计算为一个循环。
[0064] 可选的,可以采用专用内存写回指令的二维地址跳转功能,完成分支度量值数据的排序,以便之后计算使用方便。分支度量值在一次循环中输出4次。也即,一次并行处理8个子块的4次迭代的2个分支度量值(第一分支度量值以及第二分支度量值)。基于这种并行度,存在子块大小/8/2不能整除(不能整分成两半)的情况。这种情况下,首次处理码长的一大半,后次处理后码长的一小半。即前向度量值计算ceil(子块长度/16)*8次迭代,向度量值计算floor(子块程度/16)*8次迭代,分支度量值完成整个码长子块的计算。
[0065] 其中,ceil函数为向上取整函数,floor函数为向下取整函数。
[0066] S140、根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值。
[0067] S150、根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件。
[0068] 在本实施例的一个可选的实施方式中,根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,可以包括:
[0069] 根据每路的前半部分码元前向度量值以及后半部分码元前向度量值,并行计算得到整体前向度量值,并根据每路的后半部分码元后向度量值以及前半部分码元后向度量值,并行计算得到整体后向度量值;
[0070] 根据每路的第一分支度量值、整体前向度量值以及整体后向度量值,并行计算得到第一对数似然比,并根据每路的第二分支度量值、整体前向度量值以及整体后向度量值,并行计算得到第二对数似然比;
[0071] 根据每路的第一对数似然比以及第二对数似然比,并行计算得到第三数量路的外信息。
[0072] 具体的,Le值的计算通过计算出的两个对数似然比(LLR,log‑likelihood ratio)、系统位软信息和上一次迭代的Le值经过加减运算得到。
[0073] 系统位软信息和上一次迭代的Le值(首次迭代为0)已在前序迭代过程中计算得到,计算时可以使用第三数量值(典型的,64byte)为单位并行完成。
[0074] 进一步的,在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,可以包括:
[0075] 如果当前触发的分量译码器为第一分量译码器,则使用循环迭代译码器中的交织器对每路外信息并行的进行交织处理后,将交织处理得到的先验信息发送至第二分量译码器的输入端;
[0076] 如果当前触发的分量译码器为第二分量译码器,则使用循环迭代译码器中的解交织器对每路外信息并行的进行解交织处理后,将解交织处理得到的先验信息发送至第二分量译码器的输入端。
[0077] 进一步的,确定满足结束迭代条件可以包括:
[0078] 如果确定第一分量译码器通过交织器输出的先验信息通过CRC校验,则确定满足结束迭代条件。
[0079] S160、在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
[0080] 本发明实施例的技术方案,通过控制循环迭代译码器中每个分量译码器在并行多路执行译码计算的过程中,同时计算前向度量值和后向度量值的部分数值的技术手段,提供了一种进行turbo码的并行译码的新方式,最大程度的减少了译码过程中的数据搬运次数和对内存空间的占用,有效提高了turbo码的译码效率。
[0081] 实施例二
[0082] 图3为本发明实施例二提供的一种turbo码的并行译码方法的流程图,本实施例与上述实施例为基础进行优化,在本实施例中,在并行计算第三数量路的第一分支度量值和第二分支度量值之前,还具体包括:从读入的数据中提取第一数量路的系统位软信息;根据所述第一数量路的系统位软信息,并行计算第一数量路的后向度量值的迭代初始值,并对第一数量路的系统位软信息进行并行交织计算的操作。
[0083] 相应的,如图3所示,该方法包括:
[0084] S310、获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块。
[0085] S320、根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程。
[0086] S330、从读入的数据中提取第一数量路的系统位软信息。
[0087] S340、根据所述第一数量路的系统位软信息,并行计算第一数量路的后向度量值的迭代初始值,并对第一数量路的系统位软信息进行并行交织计算的操作。
[0088] 在本实施例的一个可选的实施方式中,根据所述第一数量路的系统位软信息,并行计算第一数量路的后向度量值的迭代初始值,可以包括:
[0089] 将每路的系统位软信息分别复制第二数量个,并通过预先配置的加减系数,将每路的系统位软信息进行乘累加计算后,并行计算与每路分别对应的第二数量个后向度量值的迭代初始值。
[0090] 如图2所示,在并行处理时,尾比特信息(系统位软信息,校验位1以及校验位2)会按顺序依次读入。为了并行计算后向度量值的迭代初始值的第二数量个值(例如,第二数量可以为8),首先将系统位软信息复制8份,然后通过预先配置的加减系数(前8个byte有效),将系统位软信息采用乘累加计算依次加减后得到8个后向度量值的迭代初始值。
[0091] 需要说明的是,由于分量译码器1和分量译码器2所使用的系统位软信息不同,因此需要将分量译码器1和分量译码器2各自后向度量值的迭代初始值的计算过程置于不同的硬件电路中完成。
[0092] 在本实施例的另一个可选的实施方式中,对第一数量路的系统位软信息进行并行交织计算,可以包括:
[0093] 根据目标码块的长度,确定循环周期N,并从所有交织地址数据中取得N个数据进行逻辑与操作;
[0094] 将操作结果中的后三位结果存储至第一地址处,并将操作结果右移 后,分为N个行数据输出至第二地址处;
[0095] 顺序读入每路的系统位软信息作为待交织数据,并使用第一地址处的数据值并行对每路的待交织数据进行组内交织,并将每路的组内交织结果分为N个行数据输出至第三地址处;
[0096] 使用第二地址处的每个行数据并行对每路的第三地址处的每个行数据进行交织处理,得到每路的交织计算结果。
[0097] 可以理解的是,交织器以及解交织器用于将系统位软信息按照协议规定的交织方式进行数据重排,将原始数据序列xk(k=0,1,…,K‑1)打乱输出新序列x′k。其中,K为数据序列的长度。
[0098] 交织过程为:
[0099] x′k=xΠ(k)(k=0,1,…,K‑1)
[0100] 解交织过程为:
[0101] x′Π(k)=xk(k=0,1,…,K‑1)
[0102] 上述公式中的Π(k)计算过程为:
[0103] 步骤1:根据数据序列长度K查询交织表1‑1获得参数f1,f2。
[0104] 步骤2:根据协议公式计算Π(k):
[0105] Π(k)=(f1*k+f2*k2)modK
[0106] f1,f2根据TS36.212协议所给的交织参数表通过码块长度查询得到。
[0107] 根据交织地址计算公式Π(i)=(f1·i+f2·i2)modK可得:
[0108] Π(i+Δ)=(f1·(i+Δ)+f2·(i+Δ)2)modK
[0109] =(f1·i+f2·i2+f1·Δ+2f2·i·Δ+f2·Δ2)modK
[0110] =Π(i)+(f1·Δ+f2·Δ2)modK+(2f2·i·Δ)modK
[0111] CB长度最大为6144,因此交织地址索引范围为0‑6143,需用16位数据进行表示,交织地址位宽为2byte。并且由于交织地址计算需使用定点除法操作,因此处理过程中位宽恒为2byte。处理器可并行计算32路交织地址的值。
[0112] 针对512bit并行粒度的处理器,Δ值恒为32,预存i=0~31的交织地址以及(f1·2
Δ+f2·Δ )modK的值。每次计算32个交织地址时只需计算(2f2·i·Δ)modK的值。但2f2·i·Δ中i值取值范围较大,导致整体数据范围过大,无法用2byte表示,因此将乘法转化为下述累加形式进行计算。
[0113] (2f2·(i+32)·Δ)modK=(2f2·32·Δ)modK+(2f2·i·Δ)modK
[0114] 预先存储i=0~31时(2f2·i·Δ)modK的值以及(2f2·32·Δ)modK的值。每次在上一步基础上累加(2f2·32·Δ)modK的值。最后整体求和后modK得到交织地址的值。
[0115] 计Π(0)~Π(31)为A,(f1·Δ+f2·Δ2)modK为B,(2f2·i·Δ)modK为C,(2f2·32·Δ)modK为D,则交织地址计算过程如图4以及图5所示。
[0116] 并且经过仿真,交织表有如下规律:
[0117]
[0118] 以CBsize=40为例(其中,CBsize为目标码块的长度),如图6所示,余数以0‑5‑6‑3‑4‑1‑2‑7为周期循环。
[0119] 因此,可将相同余数的交织地址分为1个数据行(也可以称为Bank),在每个Bank中进行交织操作。具体步骤如下
[0120] 1、根据码块长度选择循环周期N(8,16,32,64)。
[0121] 2、顺序读入所有交织地址数据,取N个数据,逻辑与得到后三位结果输出至地址1。所有数据右移 位分N个Bank输出至地址2。具体的,在图7中示出的是N=64的情况。
[0122] 3、如图8所示,顺序读入所有待交织数据,根据地址1对数据进行组内交织,分N个Bank输出至地址3。
[0123] 4、如图9所示,顺序读入地址2与地址3的数据,用地址2的数据对地址3的数据进行交织。
[0124] 5、每个Bank数据交织完后,再按照N个Bank进行读取,数据依次写回,完成交织过程。
[0125] 需要说明的是,1:步骤2右移3位后数据均按Byte进行输出,若原来为双字类型则进行压缩;2:步骤4读入时不分Bank,读完一个Bank中数据后跳转至下一个Bank;步骤4中的交织地址最大为96,需要两次交织后根据高位进行MERGE(合并)完成。
[0126] S350、并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值。
[0127] 其中,第三数量为第一数量乘以第二数量。
[0128] S360、根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值。
[0129] S370、根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件
[0130] S380、在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
[0131] 本发明实施例的技术方案,通过控制循环迭代译码器中每个分量译码器在并行多路执行译码计算的过程中,同时计算前向度量值和后向度量值的部分数值的技术手段,提供了一种进行turbo码的并行译码的新方式,最大程度的减少了译码过程中的数据搬运次数和对内存空间的占用,有效提高了turbo码的译码效率。
[0132] 实施例三
[0133] 图10为本发明实施例三提供的一种turbo码的并行译码装置的结构示意图。如图10所示,该装置包括:子块分割模块1010、交替触发模块1020、第一并行计算单元1030、第二并行计算单元1040、外信息并行计算单元1050以及译码结果输出模块1060,其中:
[0134] 子块分割模块1010,用于获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块;
[0135] 交替触发模块1020,用于根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程;
[0136] 第一并行计算单元1030,用于并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值;其中,第三数量为第一数量乘以第二数量;
[0137] 第二并行计算单元1040,用于根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值;
[0138] 外信息并行计算单元1050,用于根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件;
[0139] 译码结果输出模块1060,用于在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
[0140] 本发明实施例的技术方案,通过控制循环迭代译码器中每个分量译码器在并行多路执行译码计算的过程中,同时计算前向度量值和后向度量值的部分数值的技术手段,提供了一种进行turbo码的并行译码的新方式,最大程度的减少了译码过程中的数据搬运次数和对内存空间的占用,有效提高了turbo码的译码效率。
[0141] 在上述各实施例的基础上,还可以包括:
[0142] 系统位读取单元,用于在并行计算第三数量路的第一分支度量值和第二分支度量值之前,从读入的数据中提取第一数量路的系统位软信息;
[0143] 初始值及交织计算单元,用于根据所述第一数量路的系统位软信息,并行计算第一数量路的后向度量值的迭代初始值,并对第一数量路的系统位软信息进行并行交织计算。
[0144] 在上述各实施例的基础上,初始值及交织计算单元,可以具体用于:
[0145] 将每路的系统位软信息分别复制第二数量个,并通过预先配置的加减系数,将每路的系统位软信息进行乘累加计算后,并行计算与每路分别对应的第二数量个后向度量值的迭代初始值。
[0146] 在上述各实施例的基础上,初始值及交织计算单元,可以进一步具体用于:
[0147] 根据目标码块的长度,确定循环周期N,并从所有交织地址数据中取得N个数据进行逻辑与操作;
[0148] 将操作结果中的后三位结果存储至第一地址处,并将操作结果右移 后,分为N个行数据输出至第二地址处;
[0149] 顺序读入每路的系统位软信息作为待交织数据,并使用第一地址处的数据值并行对每路的待交织数据进行组内交织,并将每路的组内交织结果分为N个行数据输出至第三地址处;
[0150] 使用第二地址处的每个行数据并行对每路的第三地址处的每个行数据进行交织处理,得到每路的交织计算结果。
[0151] 在上述各实施例的基础上,外信息并行计算单元1050,可以具体用于:
[0152] 根据每路的第一分支度量值、整体前向度量值以及整体后向度量值,并行计算得到第一对数似然比,并根据每路的第二分支度量值、整体前向度量值以及整体后向度量值,并行计算得到第二对数似然比;
[0153] 根据每路的第一对数似然比以及第二对数似然比,并行计算得到第三数量路的外信息。
[0154] 在上述各实施例的基础上,外信息并行计算单元1050,可以进一步具体用于:
[0155] 如果当前触发的分量译码器为第一分量译码器,则使用循环迭代译码器中的交织器对每路外信息并行的进行交织处理后,将交织处理得到的先验信息发送至第二分量译码器的输入端;
[0156] 如果当前触发的分量译码器为第二分量译码器,则使用循环迭代译码器中的解交织器对每路外信息并行的进行解交织处理后,将解交织处理得到的先验信息发送至第二分量译码器的输入端。
[0157] 在上述各实施例的基础上,外信息并行计算单元1050,可以进一步具体用于:
[0158] 如果确定第一分量译码器通过交织器输出的先验信息通过CRC校验,则确定满足结束迭代条件。
[0159] 本发明实施例所提供的turbo码的并行译码装置可执行本发明任意实施例所提供的turbo码的并行译码方法,具备执行方法相应的功能模块和有益效果。
[0160] 实施例四
[0161] 图11示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台个人数字助理服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0162] 如图11所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
[0163] 电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0164] 处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器微控制器等。处理器11执行上文所描述的各个方法和处理,例如执行如本发明任意实施例所述的turbo码的并行译码方法。
[0165] 也即:获取待进行turbo码译码的目标码块,并根据目标码块的长度,将所述目标码块分割为第一数量的子块;
[0166] 根据处理器的并行粒度,每次读入第一数量的子块中第二数量字节数的码元后,交替触发循环迭代译码器中的每个分量译码器执行下述译码流程;
[0167] 并行计算第三数量路的第一分支度量值和第二分支度量值,以及与每路分别对应的前半部分码元前向度量值和后半部分码元后向度量值;其中,第三数量为第一数量乘以第二数量;
[0168] 根据所述第一分支度量值和第二分支度量值,并行计算与每路分别对应的后半部分码元前向度量值和前半部分码元后向度量值;
[0169] 根据与每路分别对应的第一分支度量值、第二分支度量值、前半部分码元前向度量值、后半部分码元后向度量值、后半部分码元前向度量值和前半部分码元后向度量值,并行计算第三数量路的外信息,并在确定与每路外信息分别对应的先验信息后,将先验信息发送至另一分量译码器的输入端,直至满足结束迭代条件;
[0170] 在结束迭代后,获取循环迭代译码器中硬判决器的输出结果,作为对目标码块的译码结果。
[0171] 在一些实施例中,如本发明任意实施例所述的turbo码的并行译码方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的如本发明任意实施例所述的turbo码的并行译码方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行如本发明任意实施例所述的turbo码的并行译码方法。
[0172] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0173] 用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0174] 在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0175] 为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0176] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
[0177] 计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷
[0178] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0179] 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
QQ群二维码
意见反馈