CN115296676B - 一种提升Polar译码LLR运算性能的方法 - Google Patents
一种提升Polar译码LLR运算性能的方法 Download PDFInfo
- Publication number
- CN115296676B CN115296676B CN202210943888.7A CN202210943888A CN115296676B CN 115296676 B CN115296676 B CN 115296676B CN 202210943888 A CN202210943888 A CN 202210943888A CN 115296676 B CN115296676 B CN 115296676B
- Authority
- CN
- China
- Prior art keywords
- path
- llr
- layer
- calculation
- max
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种提升Polar译码LLR运算性能的方法,包括以下步骤:S101:将LLR原始值存入两个大小相同的RAM中,层数S存入ROM;S102:同时从两个RAM中读取LLR值,同时读取S值,同时同步进行L条径的LLR运算;S103:LLR运算,中间节点数据存取参照步骤S101;S104:PM运算、路径排序、路径选择和路径更新;S105:LLR计算路径序号通过二维数组方式分层更新;S106:LLR计算路径序号更新后输出;S107:LLR中间缓存根据路径号和下一轮的层数分层更新数据;S108:输出Mbit译码结果,开始下一轮LLR计算;从LLR运算并行度和运算中间数据的缓存控制方面来提升LLR的运算效率,从而提升polar译码器的性能。
Description
技术领域
本发明涉及polar码译码技术领域和无线通信领域,具体为一种提升Polar译码LLR运算性能的方法。
背景技术
Polar码的编码过程较为简单,而译码过程复杂度较高,常用的译码算法主要有:连续消除译码、置信传播译码、线性规划译码、连续消除列表译码、以及基于SCL的CA-SCL译码等。
而现有译码算法仍存在一些问题:对于置信传播译码算法来说,性能太低不可接受,实际应用中很少使用;连续消除译码算法当母码长度比较小时性能非常一般;CA-SCL算法和SCL算法都是树形结构的串行译码,树形结构的每一层都要LLR计算,译码实现过程主要有LLR计算、PM值计算,路径排序、路径更新、输出译码比特等,通常一次译码一个bit,这样效率太低;因此有人提出了多bit Group译码,从一个bit的LLR扩展到多个bit的LLR,一次译码多个bit,这样树形结构下的层号会相应的减少,蝶形迭代运算的轮数也会成比例的减少,虽然如此,但会成比例增加译码设计的复杂度和资源消耗,而译码所需的时间依然很长;其中LLR由于需要多轮分层迭代运算,耗时最长,因此,减少LLR计算的耗时可较大提升polar译码器的性能。
所以,人们需要一种提升Polar译码LLR运算性能的方法来解决上述问题,从LLR运算并行度和运算中间数据的缓存控制方面来提升LLR的运算效率,从而提升polar译码器的性能。
发明内容
本发明的目的在于提供一种提升Polar译码LLR运算性能的方法,以解决上述背景技术中提出的问题。
为了解决上述技术问题,本发明提供如下技术方案:一种提升Polar译码LLR运算性能的方法,包括以下步骤:
S101:将LLR原始值存入两个大小相同的RAM中,层数S存入ROM;
S102:同时从两个RAM中读取LLR值,同时读取S值,同时同步进行L条径的LLR运算;
S103:LLR运算,中间节点数据存取参照步骤S101;
S104:PM运算、路径排序、路径选择和路径更新;
S105:LLR计算路径序号通过二维数组方式分层更新;
S106:LLR计算路径序号更新后输出;
S107:LLR中间缓存根据路径号和下一轮的层数分层更新数据;
S108:输出M bit译码结果,开始下一轮LLR计算。
进一步的,在步骤S101中:将母码长度为N的序列的LLR原始值串行存入两个大小相同的RAM中,LLR0到LLRN/2-1存入第一个RAM中,LLRN/2到LLRN-1存入第二个RAM中;选择B并行度进行存储,此时,存储的宽度为B个LLR的位宽之和,深度为同时树形结构的层号S存入ROM中不再变化。
进一步的,在步骤S102中:待最后一组LLR存入RAM中之后,同时读取两个RAM中的数据,其中,两个读地址完全相同,并同时读取ROM中的层号S;将两个RAM的读数据同时赋给L个LLR计算路径,此时,L个路径同时同步开始计算,并且计算的层号完全相同。
进一步的,在步骤S103中:每条路径都有两个RAM缓存中间计算数据,那么L条路径共2*L个RAM缓存中间计算数据,层号的最大值为Smax=log2N,下面参照步骤S101的方式进行RAM的读写:
假设每轮译码M个bit,从第Smax层开始计算,一直计算到第log2M+1层,第Smax层的计算结果中的前个LLR值存入第一个RAM,后/>个LLR存入第二个RAM中,按照B并行度,存储地址为0到/>同理,第Smax-1层的计算结果存储地址为/>到/>第Smax-2层的计算结果存储地址为/>到/>依次类推,到第log2M+4层和第log2M+3层的计算结果分别存入RAM的最后两个地址,第log2M+2层和第log2M+1层计算结果存入到寄存器中,其中第log2M+1层的结果为本轮M个译码比特,一轮运算结束,待路径排序之后再进行下一轮计算;
本发明同时支持母码长度为和/>的情况,若母码长度为/>时计算从第Smax-1层开始,为/>时计算从第Smax-2层开始,其余均相同。
步骤S103具体包括以下步骤,下面具体实施同此操作:
步骤S201:设置共L条路径同时同步进行LLR运算,每条路径使用2个RAM缓存中间各层计算数据,每个RAM的宽度为B个LLR的位宽之和,深度为一直存到log2M+3层的计算结果;
步骤S202:层号的最大值为Smax=log2N,计算从第Smax层开始,一直计算到第log2M+1层,第Smax层同时读取步骤S101中的两个RAM,读地址相同,并将计算结果存储在两个RAM的前个地址,第一个RAM存储前/>个值,第二个RAM存储后/>个值;
步骤S203:计算第Smax-1层,同时读取第Smax层两个计算结果RAM,地址相同,并将计算结果存储在两个RAM的到/>个地址中,第一个RAM存储前/>个值,第二个RAM存储后/>个值。后面依此类推;
步骤S204:第log2M+2层和第log2M+1层计算结果存入到寄存器中,一个时钟周期完成计算,第log2M+1层计算结果为本轮译码比特,送往后级进行后级运算处理。
进一步的,在步骤S104中:进行PM运算、路径排序、路径选择和路径更新。
进一步的,在步骤S105中:当下一轮的路径序号发生变化时,使用二维数组存储交换路径序号来进行RAM数据交换的控制管理;二维数组的两个维度是层级:Smax到log2M+1和路径值:0到L-1,每一层的路径初始值都相同,均为当前径的路径值。
进一步的,在步骤S106中:使用保留下来的L个路径号和当前层号读取二维数组中的旧值,并在下一个时钟周期,更新至新径的同一层,当前层号及以上的层使用旧值,以下的层使用新值,并将对应径和对应层的值读取出来用于LLR计算中间缓存数据的交换更新。
进一步的,在步骤S107中:根据二维数组输出的路径值进行RAM数据的交换更新,并将无需更新的旧值保存在原RAM中,新值更新到更新后的路径缓存RAM中。
进一步的,在步骤S108中:以此类推,完成轮LLR计算和路径更新,最终输出N个译码结果,并进行后续的CRC计算以校验译码结果是否正确。
进一步的,步骤S106、步骤S107、步骤S108具体内容包括:
步骤S301:将每一层的二维数组初始值均设为当前径的路径号;
步骤S302:接收本轮路径排序后保留下来的L条路径号和下一轮运算的层号;
步骤S303:根据路径号将二维数组中的旧值读出;
步骤S304:根据路径号和下一轮运算的层号将二维数组中的值读出,如路径0下一轮运算的层号是第Smax或Smax-1则读出的是路径0第Smax层的值,若下一轮运算的层号是第Smax-2则读出的是路径0第Smax-1层的值,其余径和其余层依此类推,读出值用于LLR中间缓存RAM数据的交换;
步骤S305:在旧值读出后的下一周期,根据下一轮运算的层号和路径号将旧值更新至新路径对应的层,而其余层全部更新为新值:若下一轮待运算的是第Smax层,则二维数组中每一层的路径值都是新值;若下一轮待运算的是第Smax-1层,则二维数组第Smax层的路径值为旧值,其余层的值为新值;若下一轮待运算的是第Smax-2层,则二维数组第Smax和Smax-1层的路径值为旧值,其余层的值为新值;新值等于每条径的原始初值,旧值为二维数组读出的值;依此类推;
步骤S306:根据步骤S304输出的路径值更新LLR中间缓存RAM数据并做LLR计算。
其中,Polar码是指极化码,表示一类线性分组码;LLR表示对数似然比;RAM表示随机存储器;ROM表示只读存储器;S表示树形结构的层号;bit表示比特,为信息量的最小单位;bit Group译码表示比特组;CRC表示循环冗余校验码,是数据通信领域中最常用的一种查错校验码。
与现有技术相比,本发明所达到的有益效果是:
本发明实施了一种提升Polar译码LLR运算性能的方法,通过
(1)设置合理的运算并行度,在可接受的复杂度下减少迭代运算的轮数以减少LLR运算的时间;以母码长度为512(N=512)为例,采用4bit group(M=4)的方式译码运算,运算轮数为128轮,是单bit运算轮数的1/4;采用16并行度(B=16)位宽组合减少LLR原始数据缓存的读写时间,读写时间为单个并行度的1/16;
(2)设置LLR接收缓存为两个RAM,顺序写入,同时读出,在不增加缓存的基础上节省读数据时间,读RAM提升1倍效率,后续LLR迭代运算各中间节点的结果缓存同样的方法写入读出,将读RAM的效率提升1倍;
(3)选择合理的中间节点缓存RAM的控制管理方式,分层交换和新旧值控制管理,使得未计算层级的数据交换不占用读写RAM的时间;按优点(1)中示例,此部分理论上全部128轮的读写时间可节省3924个时钟周期;
(4)此方法可同时支持多种母码长度的LLR运算,如连续3个candidate的母码长度分别为512、256和128,均可正常进行译码运算;对母码长度为512的场景来说,此方法128轮LLR计算只需要476个时钟周期;
(5)在此方法基础上,还可以继续叠加其他方式;如L条路径早停,乒乓译码等,在增加少量复杂度和资源消耗的情况下,提升译码效率;
(6)此方法可用于但不限于polar译码器的LLR运算,LDPC译码、MIMO处理中LLR计算,以及FFT的迭代运算中都可使用本方法的全部或部分步骤处理。
其中,LDPC译码表示一种线性分组码,MIMO表示用于无线通信的天线技术。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明一种提升Polar译码LLR运算性能的方法的计算流程示意图;
图2为本发明一种提升Polar译码LLR运算性能的方法的LLR运算路径更新实施例示意图;
图3为本发明一种提升Polar译码LLR运算性能的方法的实施例LLR初始数据缓存示意图;
图4为本发明一种提升Polar译码LLR运算性能的方法的实施例LLR中间数据缓存示意图;
图5为本发明一种提升Polar译码LLR运算性能的方法的实施例第9层LLR计算示意图;
图6为本发明一种提升Polar译码LLR运算性能的方法的实施例第8层LLR计算示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
请参阅图1-图6,本发明提供技术方案:一种提升Polar译码LLR运算性能的方法,包括以下步骤:
S101:将LLR原始值存入两个大小相同的RAM中,层数S存入ROM;
S102:同时从两个RAM中读取LLR值,同时读取S值,同时同步进行L条径的LLR运算;
S103:LLR运算,中间节点数据存取参照步骤S101;
S104:PM运算、路径排序、路径选择和路径更新;
S105:LLR计算路径序号通过二维数组方式分层更新;
S106:LLR计算路径序号更新后输出;
S107:LLR中间缓存根据路径号和下一轮的层数分层更新数据;
S108:输出M bit译码结果,开始下一轮LLR计算。
进一步的,在步骤S101中:将母码长度为N的序列的LLR原始值串行存入两个大小相同的RAM中,LLR0到LLRN/2-1存入第一个RAM中,LLRN/2到LLRN-1存入第二个RAM中;选择B并行度进行存储,此时,存储的宽度为B个LLR的位宽之和,深度为同时树形结构的层号S存入ROM中不再变化。
进一步的,在步骤S102中:待最后一组LLR存入RAM中之后,同时读取两个RAM中的数据,其中,两个读地址完全相同,并同时读取ROM中的层号S;将两个RAM的读数据同时赋给L个LLR计算路径,此时,L个路径同时同步开始计算,并且计算的层号完全相同。
进一步的,在步骤S103中:每条路径都有两个RAM缓存中间计算数据,那么L条路径共2*L个RAM缓存中间计算数据,层号的最大值为Smax=log2N,下面参照步骤S101的方式进行RAM的读写:
假设每轮译码M个bit,从第Smax层开始计算,一直计算到第log2M+1层,第Smax层的计算结果中的前个LLR值存入第一个RAM,后/>个LLR存入第二个RAM中,按照B并行度,存储地址为0到/>同理,第Smax-1层的计算结果存储地址为/>到/>第Smax-2层的计算结果存储地址为/>到/>依次类推,到第log2M+4层和第log2M+3层的计算结果分别存入RAM的最后两个地址,第log2M+2层和第log2M+1层计算结果存入到寄存器中,其中第log2M+1层的结果为本轮M个译码比特,一轮运算结束,待路径排序之后再进行下一轮计算;
本发明同时支持母码长度为和/>的情况,若母码长度为/>时计算从第Smax-1层开始,为/>时计算从第Smax-2层开始,其余均相同。
步骤S103具体包括以下步骤,下面具体实施同此操作:
步骤S201:设置共L条路径同时同步进行LLR运算,每条路径使用2个RAM缓存中间各层计算数据,每个RAM的宽度为B个LLR的位宽之和,深度为一直存到log2M+3层的计算结果;
步骤S202:层号的最大值为Smax=log2N,计算从第Smax层开始,一直计算到第log2M+1层,第Smax层同时读取步骤S101中的两个RAM,读地址相同,并将计算结果存储在两个RAM的前个地址,第一个RAM存储前/>个值,第二个RAM存储后/>个值;
步骤S203:计算第Smax-1层,同时读取第Smax层两个计算结果RAM,地址相同,并将计算结果存储在两个RAM的到/>个地址中,第一个RAM存储前/>个值,第二个RAM存储后/>个值。后面依此类推;
步骤S204:第log2M+2层和第log2M+1层计算结果存入到寄存器中,一个时钟周期完成计算,第log2M+1层计算结果为本轮译码比特,送往后级进行后级运算处理。
进一步的,在步骤S104中:进行PM计算、路径排序、路径选择和路径更新;
进一步的,在步骤S105中:当下一轮的路径序号发生变化时,使用二维数组存储交换路径序号来进行RAM数据交换的控制管理;二维数组的两个维度是层级:Smax到log2M+1和路径值:0到L-1,每一层的路径初始值都相同,均为当前径的路径值。
进一步的,在步骤S106中:使用保留下来的L个路径号和当前层号读取二维数组中的旧值,并在下一个时钟周期,更新至新径的同一层,当前层号及以上的层使用旧值,以下的层使用新值,并将对应径和对应层的值读取出来用于LLR计算中间缓存数据的交换更新。
进一步的,在步骤S107中:根据二维数组输出的路径值进行RAM数据的交换更新,并将无需更新的旧值保存在原RAM中,新值更新到更新后的路径缓存RAM中。
进一步的,在步骤S108中:以此类推,完成轮LLR计算和路径更新,最终输出N个译码结果,并进行后续的CRC计算以校验译码结果是否正确。
进一步的,步骤S106、步骤S107、步骤S108具体内容包括:
步骤S301:将每一层的二维数组初始值均设为当前径的路径号;
步骤S302:接收本轮路径排序后保留下来的L条路径号和下一轮运算的层号;
步骤S303:根据路径号将二维数组中的旧值读出;
步骤S304:根据路径号和下一轮运算的层号将二维数组中的值读出用于LLR中间缓存RAM数据的交换,如路径0下一轮运算的层号是第Smax或Smax-1则读出的是路径0第Smax层的值,若下一轮运算的层号是第Smax-2则读出的是路径0第Smax-1层的值,其余径和其余层依此类推;
步骤S305:在旧值读出后的下一周期,根据下一轮运算的层号和路径号将旧值更新至新路径对应的层,而其余层全部更新为新值:若下一轮待运算的是第Smax层,则二维数组中每一层的路径值都是新值;若下一轮待运算的是第Smax-1层,则二维数组第Smax层的路径值为旧值,其余层的值为新值;若下一轮待运算的是第Smax-2层,则二维数组第Smax和Smax-1层的路径值为旧值,其余层的值为新值;新值等于每条径的原始初值,旧值为二维数组读出的值;依此类推;
步骤S306:根据步骤S304输出的路径值更新LLR中间缓存RAM数据并做LLR计算。
其中,Polar码是指极化码,表示一类线性分组码;LLR表示对数似然比;RAM表示随机存储器;ROM表示只读存储器;S表示树形结构的层号;bit表示比特,为信息量的最小单位;bit Group译码表示比特组;CRC表示循环冗余校验码,是数据通信领域中最常用的一种查错校验码。
实施例一:
设定母码长度N=512,M=4(每轮译码4bit),B=16(并行度),L=8(保留8条径),则Smax=9,需要从第9层计算到第3层,以上设定值均可按照前述规则改变。
在步骤S101中:设定两个LLR原始值缓存RAM,存储方式如图3所示,共512个LLR,每个地址存16个,共需要32个地址,每个RAM深度为16;
在步骤S102中:第9层运算时,同时读出S101步骤中两个RAM中相同地址的数据,如同时读出地址0的数据,将LLR0和LLR256进行运算,LLR1和LLR257进行运算,依此类推;将计算后的256个LLR中间值存储到两个RAM中,存储方式如图4所示,第9层的计算结果前128个存入RAM0,后128个存入RAM1,每个地址存16个,共需要16个地址,每个RAM为地址0到地址7,其中第9层计算如图5所示。
在步骤S103中:第8层运算时,同时读出两个中间缓存RAM中第9层结果缓存的地址,如同时读出地址0的数据,将LLR0和LLR128进行运算,LLR1和LLR129进行运算,依此类推;将计算后的128个LLR中间值存储到两个RAM中,存储方式如图4所示,第8层的计算结果前64个存入RAM0,后64个存入RAM1,每个地址存16个,共需要8个地址,每个RAM为地址8到地址11,其中第8层计算如图6所示。后面层的计算依此类推,并将第3层的结果作为本轮译码的4个bit输出到后级模块做路径度量、路径排序、路径选择和路径更新等计算操作。
在步骤S105中:将LLR中间结果缓存的交换单独处理,使用二维数组的方式,如图2所示;两个维度分别是层号(9-3)和路径号(0-7),原始值都为当前径的路径号,路径0各层的路径号都是0,路径1的路径号都是1,依此类推;当每次接收到路径选择后保留的8条路径号时,根据输入的下一轮开始计算的层号,将二维数组的历史值读出,并在下一个时钟周期更新到对应的路径和对应的层。如路径0和路径1需要交换,下一轮从第9层开始运算,则所有径的每一层的路径号都为当前径的原始值,即路径0的所有层的路径号都为0,路径1的路径号都是1,依此类推。若下一轮从第8层开始运算,则路径0第9层的路径号为上一周期路径1读出来的旧值,其他层均为新值,全为0,路径1第9层的路径号为上一周期路径0读出来的旧值,其它层均为新值,全为1;若下一轮从第7层开始运算,则路径0第9和第8层的路径号为上一周期路径1读出来的旧值,其他层均为新值,全为0,路径1第9和第8层的路径号为上一周期路径0读出来的旧值,其他层均为新值,全为1;依此类推。
在步骤S106中:在读取旧值的同一时钟周期,根据下一轮开始运算的层号,读取当前径二维数组中的路径号。如下一轮从第9或第8层计算,读取各路径的第9层的路径号,下一轮从第7层计算,读取各路径的第8层的路径号,下一轮从第6层计算,读取各路径的第7层的路径号,依此类推,读出的路径号用于LLR计算中间结果缓存交换;
在步骤S107中:根据步骤S106中读出的路径号进行LLR计算中间结果缓存交换,如路径0和路径1交换,下一轮从第9层开始运算,将同第一轮的第9层运算一样读取数据,缓存中间结果;若下一轮从第8层开始运算,则路径0读取路径1两个RAM的0-7地址中的数据进行运算,同时路径1读取路径0两个RAM的0-7地址中的数据进行运算,路径0的计算结果写入路径0的两个RAM中8-11地址,路径1的计算结果写入路径1的两个RAM中8-11地址;若下一轮从第7层开始运算,则路径0读取路径1两个RAM的8-11地址中的数据进行运算,同时路径1读取路径0两个RAM的8-11地址中的数据进行运算,路径0的计算结果写入路径0的两个RAM中12-13地址,路径1的计算结果写入路径1的两个RAM中12-13地址,且各自路径2个RAM中0-7地址的数据不用读取和交换;其他层依此类推。
最后应说明的是:以上所述仅为本发明的优选实例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种提升Polar译码LLR运算性能的方法,其特征在于:一种提升Polar译码LLR运算性能的方法包括以下步骤:
S101:将LLR原始值存入两个大小相同的RAM中,层数S存入ROM;
S102:同时从两个RAM中读取LLR值,同时读取S值,同时同步进行L条径的LLR运算;
S103:LLR运算,中间节点数据存取参照步骤S101;
S104:PM运算、路径排序、路径选择和路径更新;
S105:LLR计算路径序号通过二维数组方式分层更新;
S106:LLR计算路径序号更新后输出;
S107:LLR中间缓存根据路径号和下一轮的层数分层更新数据;
S108:输出M bit译码结果,开始下一轮LLR计算;
在步骤S101中:将母码长度为N的序列的LLR原始值串行存入两个大小相同的RAM中,LLR0到LLRN/2-1存入第一个RAM中,LLRN/2到LLRN-1存入第二个RAM中;选择B并行度进行存储,此时,存储的宽度为B个LLR的位宽之和,深度为同时树形结构的层号S存入ROM中不再变化;
在步骤S104中:进行PM计算、路径排序、路径选择和路径更新,具体包括以下步骤:
步骤S201:设置共L条路径同时同步进行LLR运算,每条路径使用2个RAM缓存中间各层计算数据,每个RAM的宽度为B个LLR的位宽之和,深度为一直存到log2M+3层的计算结果;
步骤S202:层号的最大值为Smax=log2N,计算从第Smax层开始,一直计算到第log2M+1层,第Smax层同时读取步骤S101中的两个RAM,读地址相同,并将计算结果存储在两个RAM的前个地址,第一个RAM存储前/>个值,第二个RAM存储后/>个值;
步骤S203:计算第Smax-1层,同时读取第Smax层两个计算结果RAM,地址相同,并将计算结果存储在两个RAM的到/>个地址中,第一个RAM存储前/>个值,第二个RAM存储后/>个值;后面依此类推;
步骤S204:第log2M+2层和第log2M+1层计算结果存入到寄存器中,一个时钟周期完成计算,第log2M+1层计算结果为本轮译码比特,送往后级进行后级运算处理。
2.根据权利要求1所述的一种提升Polar译码LLR运算性能的方法,其特征在于:在步骤S102中:待最后一组LLR存入RAM中之后,同时读取两个RAM中的数据,其中,两个读地址完全相同,并同时读取ROM中的层号S;将两个RAM的读数据同时赋给L个LLR计算路径,此时,L个路径同时同步开始计算,并且计算的层号完全相同。
3.根据权利要求2所述的一种提升Polar译码LLR运算性能的方法,其特征在于:在步骤S103中:每条路径都有两个RAM缓存中间计算数据,那么L条路径共2*L个RAM缓存中间计算数据,层号的最大值为Smax=log2N,下面参照步骤S101的方式进行RAM的读写:
假设每轮译码M个bit,从第Smax层开始计算,一直计算到第log2M+1层,第Smax层的计算结果中的前个LLR值存入第一个RAM,后/>个LLR存入第二个RAM中,按照B并行度,存储地址为0到/>同理,第Smax-1层的计算结果存储地址为/>到/>第Smax-2层的计算结果存储地址为/>到/>依次类推,到第log2M+4层和第log2M+3层的计算结果分别存入RAM的最后两个地址,第log2M+2层和第log2M+1层计算结果存入到寄存器中,其中第log2M+1层的结果为本轮M个译码比特,一轮运算结束,待路径排序之后再进行下一轮计算;
本发明同时支持母码长度为和/>的情况,若母码长度为/>时计算从第Smax-1层开始,为/>时计算从第Smax-2层开始,其余均相同。
4.根据权利要求3所述的一种提升Polar译码LLR运算性能的方法,其特征在于:在步骤S105中:当下一轮的路径序号发生变化时,使用二维数组存储交换路径序号来进行RAM数据交换的控制管理;二维数组的两个维度是层级:Smax到log2M+1和路径值:0到L-1,每一层的路径初始值都相同,均为当前径的路径值。
5.根据权利要求4所述的一种提升Polar译码LLR运算性能的方法,其特征在于:在步骤S106中:使用保留下来的L个路径号和当前层号读取二维数组中的旧值,并在下一个时钟周期,更新至新径的同一层,当前层号及以上的层使用旧值,以下的层使用新值,并将对应径和对应层的值读取出来用于LLR计算中间缓存数据的交换更新。
6.根据权利要求5所述的一种提升Polar译码LLR运算性能的方法,其特征在于:在步骤S107中:根据二维数组输出的路径值进行RAM数据的交换更新,并将无需更新的旧值保存在原RAM中,新值更新到更新后的路径缓存RAM中。
7.根据权利要求6所述的一种提升Polar译码LLR运算性能的方法,其特征在于:在步骤S108中:以此类推,完成轮LLR计算和路径更新,最终输出N个译码结果,并进行后续的CRC计算以校验译码结果是否正确。
8.根据权利要求7所述的一种提升Polar译码LLR运算性能的方法,其特征在于:步骤S106、步骤S107、步骤S108具体内容包括:
步骤S301:将每一层的二维数组初始值均设为当前径的路径号;
步骤S302:接收本轮路径排序后保留下来的L条路径号和下一轮运算的层号;
步骤S303:根据路径号将二维数组中的旧值读出;
步骤S304:根据路径号和下一轮运算的层号将二维数组中的值读出用于LLR中间缓存RAM数据的交换,如路径0下一轮运算的层号是第Smax或Smax-1则读出的是路径0第Smax层的值,若下一轮运算的层号是第Smax-2则读出的是路径0第Smax-1层的值,其余径和其余层依此类推;
步骤S305:在旧值读出后的下一周期,根据下一轮运算的层号和路径号将旧值更新至新路径对应的层,而其余层全部更新为新值:若下一轮待运算的是第Smax层,则二维数组中每一层的路径值都是新值;若下一轮待运算的是第Smax-1层,则二维数组第Smax层的路径值为旧值,其余层的值为新值;若下一轮待运算的是第Smax-2层,则二维数组第Smax和Smax-1层的路径值为旧值,其余层的值为新值;新值等于每条径的原始初值,旧值为二维数组读出的值;依此类推;
步骤S306:根据步骤S304输出的路径值更新LLR中间缓存RAM数据并做LLR计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210943888.7A CN115296676B (zh) | 2022-08-04 | 2022-08-04 | 一种提升Polar译码LLR运算性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210943888.7A CN115296676B (zh) | 2022-08-04 | 2022-08-04 | 一种提升Polar译码LLR运算性能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115296676A CN115296676A (zh) | 2022-11-04 |
CN115296676B true CN115296676B (zh) | 2023-10-10 |
Family
ID=83828786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210943888.7A Active CN115296676B (zh) | 2022-08-04 | 2022-08-04 | 一种提升Polar译码LLR运算性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115296676B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108964671A (zh) * | 2017-05-27 | 2018-12-07 | 华为技术有限公司 | 一种译码方法及译码器 |
CN110661533A (zh) * | 2018-06-28 | 2020-01-07 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 优化译码器存储极化码译码性能的方法 |
CN111224680A (zh) * | 2019-11-29 | 2020-06-02 | 北京航空航天大学 | 一种低延时高可靠的极化码快速译码方法和译码器 |
CN111786683A (zh) * | 2020-05-29 | 2020-10-16 | 东南大学 | 一种低复杂度的极化码多码块译码器 |
CN112104412A (zh) * | 2020-11-17 | 2020-12-18 | 四川九洲电器集团有限责任公司 | 一种适用于低轨卫星宽带通信的加速器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3381128B1 (en) * | 2015-11-24 | 2020-01-01 | Coherent Logix, Incorporated | Memory management and path sorting in a polar code successive cancellation list decoder |
CN107733446B (zh) * | 2016-08-12 | 2019-06-07 | 华为技术有限公司 | 译码方法及设备、译码器 |
-
2022
- 2022-08-04 CN CN202210943888.7A patent/CN115296676B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108964671A (zh) * | 2017-05-27 | 2018-12-07 | 华为技术有限公司 | 一种译码方法及译码器 |
CN110661533A (zh) * | 2018-06-28 | 2020-01-07 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 优化译码器存储极化码译码性能的方法 |
CN111224680A (zh) * | 2019-11-29 | 2020-06-02 | 北京航空航天大学 | 一种低延时高可靠的极化码快速译码方法和译码器 |
CN111786683A (zh) * | 2020-05-29 | 2020-10-16 | 东南大学 | 一种低复杂度的极化码多码块译码器 |
CN112104412A (zh) * | 2020-11-17 | 2020-12-18 | 四川九洲电器集团有限责任公司 | 一种适用于低轨卫星宽带通信的加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN115296676A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8566667B2 (en) | Low density parity check code decoding system and method | |
US8756479B2 (en) | LDPC multi-decoder architectures | |
KR100703271B1 (ko) | 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치 | |
CN111224680B (zh) | 一种低延时高可靠的极化码快速译码方法和译码器 | |
US20150227419A1 (en) | Error correction decoder based on log-likelihood ratio data | |
CN101777921B (zh) | 用于显式存储片上系统的结构化ldpc码译码方法及装置 | |
KR20060032464A (ko) | 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치 | |
CN109347486B (zh) | 低复杂度高吞吐率的5g ldpc编码器和编码方法 | |
TW202205815A (zh) | 用於自循環置換矩陣之叢集建構之準循環低密度奇偶檢查碼之垂直分層解碼之方法及裝置 | |
US9065484B2 (en) | Systems and methods for efficient low density parity check (LDPC) decoding | |
CN108306652A (zh) | 一种低复杂度极化码ca-scl译码器 | |
CN109935263B (zh) | 非易失性存储器的编译码方法及存储系统 | |
CN111431543B (zh) | 可变码长可变码率qc-ldpc译码方法及装置 | |
CN115296676B (zh) | 一种提升Polar译码LLR运算性能的方法 | |
TW201029337A (en) | Method for decoding LDPC code and the circuit thereof | |
CN110071726B (zh) | 多层单元闪存中联合ldpc码的构造方法及其译码装置 | |
CN111384970B (zh) | 一种译码方法、装置及通信设备 | |
CN111446971A (zh) | 一种基于共享子矩阵的自适应低密度奇偶校验码编码方法 | |
CN101789794A (zh) | 低密度奇偶校验码的解码方法及其电路 | |
CN101106385A (zh) | 一种维特比译码装置及方法 | |
CN107959502B (zh) | 一种ldpc编码方法 | |
Zhou et al. | An Efficient Parallel Successive Cancellation List Polar Decoder Based on GPUs | |
CN116662063B (zh) | 一种闪存的纠错配置方法、纠错方法、系统、设备及介质 | |
CN111106837B (zh) | 一种ldpc译码方法、译码装置及存储介质 | |
CN117176185B (zh) | 一种基于极化码的数据编解码方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |