CN110391817B - 极化码的译码方法和装置 - Google Patents
极化码的译码方法和装置 Download PDFInfo
- Publication number
- CN110391817B CN110391817B CN201810344057.1A CN201810344057A CN110391817B CN 110391817 B CN110391817 B CN 110391817B CN 201810344057 A CN201810344057 A CN 201810344057A CN 110391817 B CN110391817 B CN 110391817B
- Authority
- CN
- China
- Prior art keywords
- decoding
- node
- path
- bit
- data structure
- 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
Images
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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- 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
本申请提供了一种极化码的译码方法,该方法包括:获取待译码的第一比特序列;在选取的第一候选译码路径未通过CRC的情况下,从第一数据结构和第二数据结构中读取计算第二候选译码路径所需的数据,第一数据结构中存储有对第一比特序列中的每个比特进行比特判决所需的中间数据,第二数据结构中存储有第一比特序列对应的译码树上的部分节点的位置信息、路径度量值以及该部分节点的译码判决结果,译码树为一个满二叉树;根据从第一数据结构和第二数据结构中读取的数据,在译码树上计算第二候选译码路径;在第二候选译码路径通过CRC的情况下,将第二候选译码路径在译码树上对应的比特估计序列作为第一比特序列的译码结果;输出译码结果。
Description
技术领域
本申请涉及信道译码领域,尤其涉及一种极化码的译码方法和装置。
背景技术
极化码(polar codes)是2009年由E.Arikan提出的一种被严格证明可以达到信道容量的结构化的信道编码方法。为了提高实际通信系统中极化码的可靠度,通常采用串行抵消列表(successive cancellation list,SCL)译码算法。现有的SCL译码算法在列表宽度较大时,计算复杂度很高,并且路径排序带来的时延较大,需要进一步改进来降低计算复杂度的时延,从而适配现代通信系统的要求。于是,有人提出了自适应串行抵消列表(adaptive successive cancellation list,ADSCL)算法可以在高信噪比的条件下极大降低译码的计算复杂度。但是,ADSCL算法在一次译码失败后重新进行译码时,会进行大量的重复计算,在低信噪比的信道条件时尤为明显,计算复杂度高。
可见,尽管近年来极化码的译码算法虽然已经取得了长足的进展,但是大多数的研究是在降低原译码算法的计算复杂度的同时造成译码性能的损失。或者,只能在一定条件下优于传统算法,在实际使用时受到一定的限制。因此,如何设计一种能够保证性能损失在可以接受的范围内,同时又能降低计算复杂度的译码算法显得尤为重要。
发明内容
本申请提供一种极化码的译码方法,能够在译码性能不损失的情况下降低计算复杂度。
第一方面,提供了一种极化码的译码方法,该方法包括:获取待译码的第一比特序列;在选取的第一候选译码路径未通过循环冗余校验CRC的情况下,从第一数据结构和第二数据结构中读取计算第二候选译码路径所需的数据,其中,第一数据结构中存储有对第一比特序列中的每个比特进行比特判决所需的中间数据,第二数据结构中存储有第一比特序列对应的译码树上的部分节点的位置信息、译码树上的根节点到部分节点中每个节点的路径度量值以及该部分节点的译码判决结果,译码树为一个满二叉树;根据从第一数据结构和第二数据结构中读取的数据,在译码树上计算第二候选译码路径;在第二候选译码路径通过CRC的情况下,将第二候选译码路径在译码树上对应的比特估计序列作为第一比特序列的译码结果;输出该译码结果。
本申请实施例的技术方案,通过采用第一数据结构和第二数据结构存储译码所需的全部中间数据,即使在一次译码失败的情况下重新计算译码路径,也不需要大量的重复计算,在各种信噪比的信道条件(例如,中高信噪比的信道条件或低信噪比的信道条件)下都可以在译码性能不受损失的情况下,降低计算复杂度。
结合第一方面,在第一方面的某些实现方式中,第二数据结构包括两个优先级队列,该部分节点的位置信息和路径度量值信息存储在该两个优先级队列中,该部分节点的路径度量值在每个优先级队列中升序排列,其中,靠近队列前端的路径度量值小于靠近队列后端的路径度量值,该至少一个节点的位置信息与该至少一个路径度量值之间具有一一映射关系。
结合第一方面,在第一方面的某些实现方式中,优先级队列中任意一个节点的位置信息包括该节点在译码树上所处的层、该节点在所处的层的扩展次序和该节点的父节点在译码树上的扩展次序。
结合第一方面,在第一方面的某些实现方式中,在对第一候选译码路径进行CRC之前,该方法还包括:根据第一数据结构和第二数据结构中存储的数据,以预先设置的第一路径搜索宽度在译码树上计算第一候选译码路径;以及,在第一候选译码路径未通过CRC的情况下,根据从第一数据结构和第二数据结构中读取的数据,在译码树上计算第二候选译码路径,包括:根据第一数据结构和第二数据结构中读取的数据,以第二路径搜索宽度在译码树上计算第二候选译码路径,其中,第二路径搜索宽度是第一路径搜索宽度的两倍,且第二路径搜索宽度小于或等于预先设置的最大路径搜索宽度。
结合第一方面,在第一方面的某些实现方式中,根据第一数据结构和第二数据结构中存储的数据,以预先设置的第一路径搜索宽度在译码树上搜索第一候选译码路径,包括:激活该两个优先级队列中的第一优先级队列,并从第一优先级队列中读取第一节点,第一节点为第一优先级队列中的首节点;根据第一节点的位置信息,确定第一节点是否为译码树上的叶子节点;在第一节点为译码树上的叶子节点的情况下,输出译码树的根节点到第一节点之间的比特估计序列,作为第一候选译码序列;以及,该方法还包括:在第一候选译码路径通过CRC的情况下,将第一候选译码路径在译码树上对应的比特估计序列作为第一比特序列的译码结果。
结合第一方面,在第一方面的某些实现方式中,在第一候选译码路径未通过CRC的情况下,根据第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在译码树上搜索第二候选译码路径之前,该方法还包括:确定已访问的叶子节点是否大于第一搜索宽度;在已访问的叶子节点大于第一搜索宽度且未超过预先设置的最大路径搜索宽度的情况下,交换第一优先级队列和第二优先级队列的激活状态,其中,交换第一优先级队列和第二优先级队列的激活状态包括将第二优先级队列激活,将第一优先级队列置为非激活,并将第一优先级队列中未读取的全部节点按照路径度量值插入激活的第二优先级队列中;以及,以第二路径搜索宽度在译码树上计算第二候选译码路径,包括:从激活的第二优先级队列中读取第二节点,并根据第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在译码树上计算第二候选译码路径,其中,第二节点为第二优先级队列中的首节点。
结合第一方面,在第一方面的某些实现方式中,在已访问的叶子节点小于或等于第一路径搜索宽度的情况下,以第二路径搜索宽度在译码树上计算第二候选译码路径,包括:继续从第一优先级队列中读取节点,并根据第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在译码树上计算第二候选译码路径。
结合第一方面,在第一方面的某些实现方式中,在第一节点非译码树上的叶子节点的情况下,该方法还包括:根据第一节点的位置信息,确定第一节点在译码树上所处的层;根据第一节点在译码树上所处的层的已访问节点、第一搜索宽度和最大搜索宽度之间的大小关系,确定第一节点的扩展节点在第二数据结构中的存储位置。
结合第一方面,在第一方面的某些实现方式中,确定第一节点的扩展节点在第二数据结构中的存储位置,包括:若第一节点在译码树上所处的层的已访问节点数小于或等于第一搜索宽度,则根据扩展节点的路径度量值将扩展节点插入第一优先级队列中;若第一节点在译码树上所处的层的已访问节点数大于第一搜索宽度,且小于或等于最大搜索宽度,则根据扩展节点的路径度量值将扩展节点插入第二优先级队列中;若第一节点在码树上所处的层的已访问节点大于最大搜索宽度,则不存储该扩展节点。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:从第一数据结构中获取对第一比特序列中的每个比特进行比特判决所需的中间数据;根据对第一比特序列中的每个比特进行比特判决所需的中间数据,以及承载第一比特序列中每个比特的子信道为信息位或冻结位,确定第一比特序列中每个比特的译码判决结果;将第一比特序列中每个比特的译码判决结果保存在第一优先级队列或第二优先级队列中,其中,每个比特的判决结果与每个比特在第一优先级队列或第二优先级队列中对应节点的位置信息和路径度量值对应。
这里,第一比特序列中每个比特的译码判决结果也即Trellis图中信源侧节点的译码判决结果,两者是等价的概念。
应理解,信源侧节点的译码判决结果是保存在优先级队列中的对应位置,与该信源侧节点的位置信息和路径度量值存储在一起。
在本申请实施例中,通过在优先级队列结构和Trellis图中分别存储不同的信息。优先级队列中的信息指导Trellis图中译码的迭代计算,而将译码判决结果又返回优先级队列中保存。
结合第一方面,在第一方面的某些实现方式中,第一数据结构中存储的中间数据包括所有扩展路径中每个节点的译码中间对数似然比和硬判决值,以及每个节点的译码中间对数似然比和硬判决值所属的扩展路径。
第二方面,提供了一种译码装置,用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,该译码装置包括执行第一方面或第一方面的任意可能的实现方式中的方法的单元。
在一个可能的设计中,译码装置的上述功能可以部分或全部通过软件实现。当全部通过软件实现时,译码装置600可以包括存储器和处理。其中,存储器用于存储计算机程序,处理器从存储器中读取并运行该计算机程序,以实现本申请极化码的译码方法。
在一个可能的设计中,译码装置600的部分或全部通过软件实现时,译码装置600包括处理器。用于存储计算机程序的存储器位于译码装置600之外,处理器通过电路/电线与存储器连接,用于读取并执行所述存储器中存储的计算机程序。
在一个可能的设计中,译码装置600的上述功能的部分或全部通过硬件实现。当全部通过硬件实现时,译码装置包括:输入接口电路,用于获取待译码的第一比特序列;逻辑电路,用于执行上述实施例中的译码方法;输出接口电路,用于输出译码结果。
可选地,该译码装置可以为芯片或译码器。
可选地,上述存储器和处理器可以是物理上互相独立的单元,或者也可以集成在一起。
第三方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,本申请提供一种芯片(或者说,芯片系统),包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行该计算机程序,使得安装有该芯片的通信设备执行上述第一方面及其任意一种可能的实现方式中的方法。
这里的通信设备可以为译码端。例如,译码端可以是适用于本申请实施例的通信系统中的终端设备或网络设备(可以参见说明书)。
第五方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述第一方面及其任意一种可能的实现方式中的方法。
本申请实施例的技术方案,通过采用第一数据结构和第二数据结构存储译码所需的全部中间数据,即使在一次译码失败的情况下重新计算译码路径,也不需要大量的重复计算,在各种信噪比的信道条件(例如,中高信噪比的信道条件或低信噪比的信道条件)下都可以在译码性能不受损失的情况下,降低计算复杂度。
附图说明
图1为适用于本申请实施例的无线通信系统。
图2是译码树的结构示意图。
图3是ADSCL译码算法的流程图。
图4是本申请实施例的极化码的译码算法的流程图。
图5是Trellis图的结构示意图。
图6是优先级队列的结构示意图。
图7是本申请的ADPSCL译码算法的整体流程图。
图8是交换两个优先级队列的激活状态的示意图。
图9是本申请的ADPSCL译码算法的详细流程图。
图10是优先级队列和Trellis图的交互示意图。
图11是一个优先级队列的存储过程示意图。
图12是码长N=256的ADPSCL算法与现有算法的复杂度对比图。
图13是码长N=512的ADPSCL算法与现有算法的复杂度对比图。
图14是码长N=1028的ADPSCL算法与现有算法的复杂度对比图。
图15是码长N=2048的ADPSCL算法与现有算法的复杂度对比图。
图16是码率为0.5,码长N=256,路径搜索宽度L=32,采用长度为8的CRC校验时的ADPSCL算法和传统SCL算法的译码性能对比图。
图17是是码率为0.5,码长N=512,路径搜索宽度L=32,采用长度为8的CRC校验时的ADPSCL算法和传统SCL算法的译码性能对比图。
图18是本申请实施例的译码装置600的示意性框图。
图19是本申请实施例的译码器700的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
下面将结合附图,对本申请中的技术方案进行描述。
图1为适用于本申请实施例的无线通信系统。该无线通信系统中可以包括至少一个网络设备101,该网络设备与一个或多个终端设备(例如,图1中所示的终端设备102和终端设备103)进行通信。当网络设备发送信号时,其为编码端,当网络设备接收信号时,其为译码端。终端设备也是一样的,当终端设备发送信号时,其为编码端,当终端设备接收信号时,其为译码端。
终端设备也可以称为用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理、用户装置或用户设备(user equipment,UE)、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字处理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备。此外,该通信系统中的网络设备可以是全球移动通讯(global system of mobilecommunication,GSM)或码分多址(code division multiple access,CDMA)中的基站(basetransceiver station,BTS),也可以是宽带码分多址(wideband code division multipleaccess,WCDMA)中的基站(NodeB,NB),还可以是长期演进(long term evolution,LTE)中的eNB或演进型基站(evolutional Node B,eNodeB),或者中继站或接入点,或者未来5G网络中的基站设备等。
为了便于理解,首先对本申请涉及的相关技术和概念作简单介绍。
根据极化码(polar codes)的编码原理可以知道,极化码的构造就是极化信道的选择问题。而极化信道的选择实际上是按照最优化SC译码性能为标准的。但是由于各个极化信道之间并不是相互独立的,而是具有依赖关系的,也即信道序号大的极化信道依赖于所有其它序号小的极化信道。基于极化信道之间的这个依赖关系,SC译码算法对各个比特进行译码判决(或者称为比特判决)时,是基于之前所有步骤的译码判决的结果都是正确的假设条件。并且,正是在这种译码算法下,极化码被证明了是信道容量可达的。
译码树:根据极化码在SC译码算法下各个比特判决之间的依赖关系,能够构造一棵译码树T=(ε,V),其中,ε和V分别表示码树中的边和节点集合。参见图2,图2是译码树的结构示意图。如图2所示,在译码树上,一个节点的深度定义为译码树的根节点到该节点的最短路径长度。可以看到,对于一个码长等于Ν的极化码,译码树上的节点组成的集合能够按照深度d划分为N+1个子集,记作Vd,其中,d=0,1,…,N。容易理解,V0仅包含根节点。除了译码树上的叶子节点(即d=N时),译码树T上的每一个节点υ分别通过两条分别标记0和1的边与后继节点相连。某一个节点υ所对应的序列定义为从根节点开始到达该节点υ所需要经过的各个边的标记序列。另外,在译码树中,从根节点到任意一个节点所形成的路径,都对应一个路径度量值(path metric,PM)。值得注意的是,译码树的结构仅与码长N有关。极化码的译码树实际上是一个满二叉树。因此,极化码的译码过程也就是在满二叉树上寻找合适的路径。如图2中所示,以码长N=4为例,在每个节点处选择PM值最小的路径向下扩展,最终确定出的译码序列为
而极化码在码长趋于无穷时,信道极化才会完全。在有限码长下,由于信道极化并不完全,依然会存在一些信息比特无法被正确译码。当前面的i-1个信息比特的译码发生错误之后,由于SC译码算法在对后面的信息比特译码时,需要用于之前的信息比特的估计值,这就会导致较为严重的错误传递。换句话说,SC译码是一种贪婪算法,在码树的每一层仅仅搜索到最优路径就进行下一层,所以无法对错误进行修改。
为此,针对SC译码算法的缺点,人们提出了SCL译码算法。在译码树的每一层增加允许保留的候选路径数量,从SC译码算法的每一层仅允许选择“最优的一条路径进行下一步扩展”改为“最大允许选择最好的路径进行下一步扩展”。并且,将每一层允许保留的候选路径称为搜索宽度L,L≥1且L为整数。与SC算法一样,SCL算法在进行译码时,依然从译码树的根节点开始,逐层依次向叶子节点层进行路径搜索。与SC不同的是,完成每一层的路径扩展后,选择PM最小的L条路径作为候选路径,保存在一个列表中,等待进行下一层的扩展。
经过上述的说明,可以知道SC译码算法是深度优先的,要求从根节点快速到达叶子节点。而SCL译码算法是广度优先的,先扩展、再剪枝,最终达到叶子节点。
从SCL译码算法的译码过程容易想到,在中高信噪比的信道条件下,用较低的路径列表宽度就可以完成正确译码,因此不需要进行太多的路径扩展,可以降低计算复杂度。但是在低信噪比的信道条件下,SCL需要较大的路径列表宽度来保证译码性能。而较大的路径列表宽度依然会带来较大的计算复杂度。
因此,进一步地,现有技术中有人提出了一种自适应SCL(adaptive successivecancellation list,ADSCL)算法。
参见图3,图3是ADSCL译码算法的流程图。如图3所示,ADSCL算法辅以循环冗余校验(cyclic redundancy check,CRC)。首先设置一个最大路径列表宽度。开始译码时,先从路径列表宽度为1进行译码。若译码结果能通过CRC,说明正确译码,此时直接输出译码结果。否则将路径列表宽度加倍(即路径列表宽度变为2)重新译码,直至正确译码或路径列表宽度超过最大路径列表宽度,译码失败。图3中的Lmax表示预先设置的最大路径列表宽度,L为当前路径列表宽度。ADSCL的详细流程图可以描述为:
(1)初始化。
预先设置一个最大路径列表宽度Lmax,并将当前路径列表宽度设置为L。
(2)进行当前路径列表宽度为L的SCL译码。
(3)对译码结果进行CRC。
若通过CRC,则直接输出译码结果,结束译码。
若未通过CRC,则比较当前路径列表宽度和最大路径列表宽度。如果满足L≥Lmax,则结束译码。否则将当前路径列表宽度加倍,并返回步骤(2)。
从ADSCL的译码过程可以看出,在中高信噪比的信道条件下,ADSCL译码算法很可能在一个极低的路径列表宽度下成功译码,从可以极大降低SCL译码算法的计算复杂度。然而,在未通过CRC需要重新进行译码的情况下,仍要计算之前已经计算过的路径中间信息和/或数据,从而会出现大量的重复计算。尤其在低信噪比的信道条件下,对于路径列表宽度为Lmax的情况下,最差情况下的计算复杂度甚至会超过SCL译码算法。
通过对SCL译码算法和ADSCL译码算法的介绍可以知道,尽管SCL译码算法辅以CRC可以极大程度的改善译码性能。但是由于需要同时进行路径列表宽度L条路径的计算,当K较大时,计算复杂度很高。此外,每次路径列表扩展后都需要从扩展后的路径中按照路径度量值进行排序来选择最为优先的L条候选路径(也称为幸存路径),这个排序过程会引起较大的时延,这在未来通信系统中(例如,5G)低时延甚至超低时延要求的应用场景下,例如,高可靠低时延(ultra reliable and low latency communication,URLLC),几乎是不能容忍的。另外,在现有的降低复杂度(相对于SCL译码算法)的ADSCL译码算法中,在信噪比较高的信道条件下,可以在当前路径列表宽度较低时就可以成功译码,极大减小计算复杂度和时延。但是,ADSCL译码算法需要等同于最大路径列表宽度的硬件资源,并且在信道条件恶劣的情况下,计算复杂度和时延甚至超过了传统的SCL译码算法。
由此可见,尽管近年来极化码的SCL译码算法在二进制加性高斯白噪声信道(binary additive white Gaussian noise,B-AWGN)下的研究虽然已经取得了长足的进展,但是大多数的研究是在降低原译码算法的计算复杂度的同时造成译码性能的损失。或者,只能在一定条件下优于传统算法,在实际使用时受到一定的限制。因此,如何设计一种能够保证性能损失在可以接受的范围内,同时又能显著降低计算复杂度的译码算法显得尤为重要。
为此,本申请提出一种极化码的译码算法,可以避免ADSCL算法中重新计算译码路径时的大量计算,降低了计算复杂度,
下面结合图4至图17,对本申请提出的极化码的译码算法进行详细介绍。
以下本申请提出的ADPSCL译码算法可以由译码端执行。例如,终端设备在与网络设备进行通信时,终端设备作为译码端需要对接收到的待译码序列进行译码。
图4是本申请实施例的极化码的译码算法的流程图。
310、获取待译码的第一比特序列。
320、在读取的第一候选译码路径未通过CRC的情况下,从第一数据结构和第二数据结构中读取计算第二候选译码路径所需的数据。
其中,第一数据结构中存储有对第一比特序列中的每个比特进行比特判决所需的中间数据。第二数据结构中存储有第一比特序列对应的译码树上的部分节点的位置信息、译码树上的根节点到该部分节点的路径度量值以及该部分节点的译码判决结果。
这里所说的第一候选译码路径可以是译码端在对第一比特序列进行译码过程中,计算的任意一条候选译码路径。在本申请实施例中,计算任意一条候选译码路径的过程可以参见下文介绍的ADPSCL译码算法的详细流程。
下面对第一数据结构和第二数据结构分别作详细说明。
(一)第一数据结构
第一数据结构可以是一个trellis图,下面结合图5介绍Trellis图的组成形式。
图5是Trellis图的结构示意图。参见图5,Trellis图的基本组成单元为Trellis节点(如图5中的节点1,2,…,9)。在对待译码的比特序列进行译码时,是根据当前译码的信息位的似然比值(likelihood rate,LLR)值来判断该信息位为0或是为1。而的LLR值的计算是一个递归过程。
图5以码长N=4为例,对LLR值的计算过程作简单说明。如图5所示,Trellis图中最左边的一列定义为信源层,信源层的节点称为信源侧节点。假定在信息向量的第3位和第4位为冻结位,其余为信息位。在进行译码时,首先要判决的估计值,那么需要知道节点1的LLR值。而节点1的LLR值,是根据节点5和节点7的LLR值计算得到的。而节点5的LLR值由节点9和节点10的LLR值计算得到,节点7的LLR值由节点11和节点12的LLR值计算得到。其中,节点9,10,11和12的LLR值由译码器接收的极化信道的输出y1,y2,y3和y4计算得到。由此可以知道,从节点9,10,11和1开始,从右向左进行Trellis节点的LLR值的迭代计算,可以计算出最左边节点1,2,3和4的LLR值。最后,根据节点1,2,3和4的LLR值,分别判决出节点1,2,3和4对应的位4)的判决结果。同时,在进行比特判决时,还需要知道当前判决的位是否为信息位。如果为信息位,则根据LLR值判决为0或1。如果是冻结位,则直接判决这样,就可以得到待译码的比特序列(对应本申请中的第一比特序列)中所有比特的判决结果。
在本申请实施例中,根据图5所示的Trellis图,可以得到信源侧节点(图5中第一列的节点)的译码判决结果,并将信源侧节点的译码判决结果返回保存在优先级队列。信源侧节点的译码判决结果与优先级队列中对应节点记录的位置信息或度量值是对应的。
在上面进行迭代计算的过程中,根据i的取值的奇偶性,可以将LLR值的计算分为两种情况。当i为奇数时利用F函数进行计算,当i为偶数时利用G函数进行计算。F函数和G函数是SC译码算法中进行LLR值迭代计算时的公知概念,这里不作详述。
需要说明的是,在i为偶数的情况下,在完成比特判决之后,需要向下一层更新部分和数值。部分和数值即为G函数的运算结果。
由此,在本申请实施例中,Trellis图中的每个Trellis节点记录的中间数据包括所有扩展路径对应位置的中间值和硬判决值以及这些中间值和硬判决值对应所属的扩展路径。这里所说的中间值即是上面介绍的迭代过程中的LLR值。在图5中,非信源侧的每个节点记录有一个中间值信息组,每个中间值信息组中包括所有扩展路径的对应位置的中间译码对数似然比(即LLR值)和硬判决值以及这些中间译码对数似然比和硬判决值所属的扩展路径。当然,硬判决值也可以由LLR值推导得到,因此,在实际应用中,中间值信息组也可以只包括LLR值和这些LLR值对应的扩展路径,不再赘述。
需要指出的是,每个Trellis节点记录的中间值信息组的组数不确定,它是由ADPSCL算法的路径扩展情况而定的。如果假定路径列表宽度为L,那么每个Trellis节点最多记录L组中间值信息组,共需要O(L·N·log2N)的空间复杂度。
通过将路径扩展过程中LLR值的迭代和部分和数值都记录在Trellis图中,不再需要像传统的SCL算法那样,在译码失败后重新计算译码路径时,再次计算这些LLR值和部分和数值,因此避免了重复计算。
由此可以理解的是,译码器在对第一比特序列进行译码的过程中,如果某一个候选译码路径未通过CRC,需要重新进行译码,那么重新译码时所需的LLR值和部分和数值已经记录在Trellis图中,可以直接读取,不再需要重新计算。
下面结合图6对第二数据结构进行说明。
(二)第二数据结构。
第二数据结构包括两个优先级队列,如果将待译码的第一比特序列的长度记作N,将路径列表宽度记作L,则每个优先级队列中最多记录(N·L)个节点的位置信息和路径度量值。其中,每个节点的位置信息和路径度量值是一一映射的。
根据前文对译码树的介绍,可以知道,一个码长=N的比特序列对应的译码树上应该共有(21+22+…+2N)个节点(不包括根节点)。而一个优先级队列中并不是存储了译码树上所有节点的位置信息和路径度量值。若当前的路径搜索宽度设置为L,则译码树的每一层只选择L个节点向下一层扩展。对于N长的比特序列,则每个优先级队列中最多存储(N·L)个节点的位置信息和路径度量值。一个优先级队列中路径度量值的存储过程可以参见下文的表1。
本文中所说的一个节点的路径度量值,是指从译码树的根节点到该节点的路径度量值。
参见图6,图6是优先级队列的结构示意图。在每个优先级队列中,路径度量值是升序排列的。也即,靠近队列前端的路径度量值小于靠近队列后端的路径度量值,或者说,从队列的首节点到队列末节点的方向,前一个节点的路径对度量值小于后一个节点的路径度量值。
需要注意的是,一个节点的位置信息包括该节点在译码树上所处的层、该节点所处的层的扩展次序和该节点的父节点在译码树上的扩展次序的信息。
上文已经介绍过,译码树是一个满二叉树。而父节点和叶子节点的概念在计算机的二叉树这种数据结构中是公知的概念,本申请实施例中不作赘述。
继续参见图2,节点A位于译码树的第二层,节点A的父节点记作节点B。也可以说,节点A是节点B的一个后继节点。节点B的另一个后继节点记作节点C。和节点B处于同一层的还有一个节点D。假定在路径扩展过程中,第1层向第2层扩展时,优先扩展节点B,其次扩展节点D。而从第2层向第3层扩展时,优先扩展节点C,其次扩展节点A。那么,节点A的位置信息就包括了节点A处于译码树的第2层,节点A在第2层的扩展次序为2,节点A的父节点在第1层的扩展次序为1这些信息。
第二数据结构共需要O(N·L)的空间复杂度。
在本申请提出的ADPSCL译码算法涉及第一数据结构和第二数据结构的交互,下文会结合实施例作详细说明。
通过对第一数据结构和第二数据结构的介绍,可以知道第一数据结构中存储有对待译码的比特序列中的每个比特进行比特判决所需的中间数据,第二数据结构中存储有译码树上的一部分节点的位置信息和度量值。由此,如果在对第一比特序列进行译码的过程中,选择的某一候选译码路径未通过CRC,需要重新计算译码路径,那么可以直接从第一数据结构和第二数据结构中读取所需的数据,避免现有技术中的重复计算导致的计算量大且耗时的问题。
330、根据从第一数据结构和第二数据结构中读取的数据,在译码树上计算第二候选译码路径。
根据从第一数据结构和第二数据结构中读取的数据,计算第二候选译码路径。
这里需要说明是,本申请实施例中,将进行CRC之前选择的路径都称作候选译码路径,只有在某一个候选译码路径通过CRC,表明译码成功之后,才将这个通过CRC的候选译码路径确定为译码路径。
340、在第二候选译码路径通过CRC的情况下,将第二候选译码路径在译码树上对应的比特估计序列作为第一比特序列的译码结果。
如果计算的第二候选译码路径通过CRC,则将第二候选译码路径在译码树上对应的比特估计序列作为第一比特序列的译码结果。
比特估计序列是指对待译码的第一比特序列中的每个比特的比特判决完成之后,输出的对第一比特序列的估计结果,容易理解,这个估计结果是一个比特序列,因此,称作比特估计序列。
以图2为例,假定计算的第二候选译码路径为根节点到节点F对应的路径,则根节点到节点F对应的比特估计序列为[0 0 1 1]。
可以理解的是,在步骤340中,如果计算的第二候选译码路径通过了CRC,则表明译码成功,此时将第二候选译码路径在译码树上对应的比特估计序列输出,即是待译码的第一比特序列的译码结果。那么,如果第二候选译码路径未通过CRC,表明在计算的第一候选译码路径失败的情况下,计算的第二候选译码路径仍然失败。此种情况下,译码端需要重新计算候选译码路径,计算的过程与计算第二候选译码路径的过程是相同的。
还应理解的是,本申请提出的ADPSCL译码算法是在现有的ADSCL算法的基础上,引入了第一数据结构和第二数据结构。因此,与上文图3中描述的ADSCL算法相同,在译码开始是,是以路径搜索宽度L=1开始计算。在译码失败的情况下,将路径搜索宽度加倍,重新计算译码路径。在L>1的情况下(例如,L=2或4),在译码树的每一层会同时保留L条路径作为幸存路径向下一层进行扩展(具体过程可以参考现有技术)。由此可以理解的是,如果上文的第一候选译码路径是L=1时选择的路径,则第一候选译码路径未通过CRC之后,会以L=2计算候选路径,则最终计算的候选路径会有2条。如果第一候选译码路径是L>1时选择的路径,则第一候选译码路径未通过CRC之后,以2L作为路径搜索宽度,最终计算的候选路径会有2L条。即这里所说的第二候选译码路径可以是多条。
350、输出译码结果。
输出步骤340中的比特估计序列[0 0 1 1],即是第一比特序列的译码结果。
本申请实施例的技术方案,通过采用第一数据结构和第二数据结构存储译码所需的中间数据,即使在一次译码失败的情况下重新计算译码路径,也不需要大量的重复计算,在各种信噪比的信道条件(例如,中高信噪比的信道条件或低信噪比的信道条件)下都可以在译码性能不受损失的情况下,降低了计算复杂度。
下面结合图7,对本申请的ADPSCL译码算法的整体流程进行说明。
参见图7,图7是本申请的ADPSCL译码算法的整体流程图。
401、对译码器进行初始化。
对译码器进行初始化包括预先设置最大路径搜索宽度Lmax,设置当前的路径搜索宽度L=1,激活两个优先级队列中的一个,并在被激活的优先级队列中存入一个空节点。
为了便于描述,以下将被激活的优先级队列称作第一优先级队列,将未被激活的第二优先级队列称作第二优先级队列。
402、判断L是否超过Lmax。
若L>Lmax,则表明译码失败,结束译码。
若L<Lmax,或者L=Lmax,则执行步骤403。
403、以路径搜索宽度为L进行ADPSCL译码。
ADPSCL译码即是本申请提出的自适应优先级串行抵消列表(adaptive prioritysuccessive cancellation list,ADPSCL)译码算法,下文会对ADPSCL译码算法作详细说明。
可以理解,通过步骤403,会确定一个候选译码路径。
404、判断候选译码路径是否通过CRC。
若候选译码路径通过CRC,表明在路径搜索宽度为L时译码成功,输出译码结果,结束译码。
若候选译码路径未通过CRC,则执行步骤405、406。
405、将路径搜索宽度加倍。
例如,第一轮译码时的L设置为1,则此时的路径搜索宽度L将设置为2。又例如,若译码失败的这一轮的路径搜索宽度为4,则此时的路径搜索宽度L将设置为8。
406、将两个优先级队列的激活状态互换。
两个优先级队列的激活状态互换,是指将被激活的第一优先级队列设置为未激活,而将未被激活的第二优先级队列激活。在激活状态互换的同时,还需要将第一优先级队列中未读取的节点的度量值信息按序全部插入第二优先级队列中。
参见图8,图8是交换两个优先级队列的激活状态的示意图。
应理解,第一优先级队列和第二优先级队列中的路径度量值都是升序排列的,在将第一优先级队列中的路径度量值按序插入第二优先级队列中后,第二优先级队列中的存储的路径度量值依然是升序排列的。同时,第一优先级队列中剩余的已经被访问的节点的路径度量值也是升序排列的。
还应理解,步骤405和步骤406之间并没有先后顺序,这里仅是将“当前的路径搜索宽度加倍”和“两个优先级队列的激活状态互换”这两个过程分别编号进行说明,也可以在流程图中合并为一个步骤,这里并不限定。
从图7中可以看出,步骤406之后返回到步骤402,重新判断当前的路径搜索宽度L与最大路径搜索宽度Lmax的大小关系。后续的过程与上述步骤402-406是相同的,这里不再赘述。
下面结合图9,对本申请的ADPSCL译码算法的详细流程进行说明。
参见图9,图9是本申请的ADPSCL译码算法的详细流程图。
501、译码开始。
502、将当前的路径搜索宽度L设置为1。
503、读取被激活的优先级队列的首节点。
为了避免混淆,以下将被激活的优先级队列称作第一优先级队列,将未被激活的优先级队列称作第二优先级队列,并将第一优先级队列的首节点称作第一节点。
504、判断第一节点是否为译码树的叶子节点。
如果第一节点是译码树的叶子节点,则执行步骤505。
应理解,如果读取的第一节点为译码树的叶子节点,表明待译码的比特序列的最后一个比特已经完成比特判决(或者说估计),整个候选译码路径已经选出了。此时,可以直接获取候选译码路径,并对其进行CRC即可。
505、获取候选译码路径。
506、判断获取的候选译码路径是否可以通过CRC。
如果候选译码路径通过CRC,表明译码成功,译码器执行步骤507-508。
507、输出译码结果。
508、结束译码。
在步骤506中,如果候选译码路径未通过CRC,表明译码失败。译码器执行步骤509以及后续步骤。
509、判断已访问的叶子节点的数目是否超过了当前的路径搜索宽度L。
如果已访问的叶子节点的数目超过了当前的路径搜索宽度,执行步骤510以及后续步骤。
510、将路径搜索宽度加倍,并交换优先级队列的激活状态。
关于交换第一优先级队列和第二优先级队列的激活状态的说明可以参见上文,这里不再赘述。
511、判断加倍后的路径搜索宽度L是否大于预先设置的最大路径搜索宽度Lmax。
如果L>Lmax,表明译码失败,结束译码。
如果L=Lmax或L<Lmax,返回执行步骤503。
需要注意的是,由步骤511返回执行步骤503时,步骤503中所说的被激活的优先级队列是指第二优先级队列。因为在步骤510中,第一优先级队列和第二优先级队列的激活状态进行了互换。
因此,由步骤511返回执行步骤503时,读取的是第二优先级队列中的首节点(以下称作第二节点)。
以上从步骤510-511,对读取的第一优先级队列中的首节点为叶子节点的情况进行了说明。下面再来说明步骤504中,如果读取的第一节点不是译码树上的叶子节点的情况。
步骤504中,如果第一节点不是译码树上的叶子节点,则执行步骤512以及后续步骤。
512、根据第一优先级队列中存储的第一节点的位置信息,指导Trellis图中的LLR值的迭代计算以及部分和数值的更新。
当计算到下一个信源层的节点时进行路径扩展。若对应信息位,则扩展为2个节点。若对应冻结位,则扩展为1个节点(以下将扩展的节点称作扩展节点)。
在步骤512中,涉及到优先级队列和Trellis图的交互,下面结合图8对优先级队列和Trellis图之间的交互过程进行说明。
参见图10,图10是优先级队列和Trellis图的交互示意图。
在每一个译码循环中,总是首先读出被激活的优先级队列的首节点,之后,根据优先级队列中存储的首节点的位置信息,指导Trellis图中进行相应的中间LLR值的迭代计算以及部分和数值的更新。这个迭代过程会得到一个扩展节点(对应冻结位)或两个扩展节点(对应信息位)。得到扩展节点后,统计译码树上扩展节点所在层的已访问的节点的数量(以下记作Z),再根据扩展节点所在层的已访问的节点的数量与当前的路径搜索宽度L以及预先设置的最大路径搜索宽度Lmax之间的大小关系,确定将扩展节点存储在优先级队列中还是丢弃。
以下将这几种情况分别进行说明。
(1)若Z≤L,则将扩展节点按序存入被激活的优先级队列中。
被激活的优先级队列如图10中所示的优先级队列1。
应理解,上文已经介绍过,优先级队列中存储有译码树上部分节点的位置信息以及根节点到该部分节点的路径度量值。因此,将扩展节点按序存入优先级队列1,是指按照扩展节点的路径度量值的大小,将扩展插入到优先级队列1中,同时还需要记录扩展节点的位置信息。
(2)若L<Z≤Lmax,则将扩展节点按序存入未被激活的优先级队列中。
未被激活的优先级队列如图10中所示的优先级队列2。
将扩展节点存入优先级队列2中的过程与上述情况(1)类似,不再详述。
(3)若Z>Lmax,则将扩展节点丢弃。
通过两个优先级队列和Trellis图两种数据结构交互进行译码,相对于ADSCL算法,保证了在译码性能无损失的条件下,极大降低了计算复杂度,且在高信噪比的信道条件下,时延和计算复杂度接近于传统SC算法。对应ADPSCL算法,采用与SCL算法一样的度量值计算方式,当信噪比较高时,更容易读取正确路径对应的优先级节点并不断进行扩展,从而极大降低ADPSCL算法的计算复杂度。在信噪比足够高时,ADPSCL算法几乎按照正确的延伸方向进行译码,因此可以达到SC算法的时延和计算复杂度,即在低信噪比时,ADPSCL算法的计算复杂度也不会超过SCL算法,这与ADPSCL算法不同。因为ADPSCL算法避免了重复计算。另外,ADPSCL译码算法可以保证与传统ADSCL译码算法性能完全一致。此外,ADPSCL的Trellis图和优先级队列共同作用的存储结构保证了在O(L·N·log2N)的空间复杂度下即能实现,因此ADPSCL算法具有可实现性。而Trellis图中的数据只需要进行读取和计算存储,并没有传统SCL或ADSCL算法的路径复制等操作,因此,ADPSCL算法的维护开销也很小。
下面结合图11,对本申请实施例中优先级队列中的存储过程作示例说明。
参见图11,图11是一个优先级队列中存储过程的示意图。
图11中的圆圈表示节点,圆圈中的数字表示这个节点对应的路径度量值。存储的过程可以如下表1所示。
表1
513、判断扩展节点所在层的已访问节点的数量是否超过当前的路径搜索宽度。
这里,扩展节点所在层是指扩展节点在译码树上所在的层。
以下将扩展节点所在层的已访问节点的数量记作Z。
若Z未超过当前的路径搜索宽度L(即Z≤L),译码器执行步骤514。
若Z超过了当前的路径搜索宽度L(即Z>L),译码器执行步骤515。
514、将扩展节点按照路径度量值的大小插入第一优先级队列中,返回执行步骤503。
515、判断扩展节点所在层的已访问节点数是否超过预先设置的最大路径搜索宽度。
若Z未超过预先设置的最大路径搜索宽度Lmax(即Z≤Lmax),则执行步骤516。
若Z超过预先设置的最大路径搜索宽度Lmax(即Z>Lmax),则执行步骤517。
516、将扩展节点按照度量值的大小插入第二优先级队列中,返回执行步骤503。
517、丢弃扩展节点,返回执行步骤503。
在上面的过程中,可以理解的是,每从激活的优先级队列中读取一个节点,根据Trellis图中记录的中间数据,可以得到该节点的比特判决结果。不断地从激活的优先级队列中读取首节点,并进行比特判决,直到整条候选译码路径选择出以后,待译码的第一比特序列中每个比特的比特判决结果就全部获知了。
本申请的技术方案,针对传统的SCL算法的计算复杂度高、计算量大、时延大,ADSCL算法重复计算多、在低信噪比的信道条件时计算复杂度甚至超过传统SCL算法的问题,提出一种自适应优先级串行抵消列表(adaptive priority successive cancellationlist,ADPSCL)算法。在传统的基于LLR的搜索宽度为L的SCL算法基础上进行深度优先搜索,避免了不可能路径的继续延伸,省去了不必要的计算量,并结合ADSCL算法,从一个极低的搜索宽度开始译码,直到译码成功或超过一个预设的最大路径搜索宽度为止。同时,采用两个优先级队列和Trellis图两种数据结构分别存储译码过程的中间数据,即使译码失败需要重新计算译码路径,也不需要大量的重复计算,降低了计算复杂度。
以上对本申请实施例的极化码的译码方法作了详细说明。
下面给出本申请的译码方法(称作ADPSCL译码算法)与传统SCL译码算法的译码性能对比。
图12是码长N=256的ADPSCL算法与现有算法的复杂度对比图。
图13是码长N=512的ADPSCL算法与现有算法的复杂度对比图。
图14是码长N=1028的ADPSCL算法与现有算法的复杂度对比图。
图15是码长N=2048的ADPSCL算法与现有算法的复杂度对比图。
以上12-15分别对比了码长为256,512,1024和2048时,ADPSCL、PSCL算法、传统ADSCL、SCL算法的计算复杂度。在以上各图中,横坐标为不同信噪比条件(单位为分贝,即dB),纵坐标通过乘加操作数量反映算法的平均复杂度。从图12-15中可以看出,信噪比越高,ADPSCL译码算法的复杂度越低,优势越明显。低信噪比时由于避免了重复计算,ADPSCL算法计算复杂度趋近于SCL算法。而传统ADSCL算法由于需要重复计算,在低信噪比条件下复杂度甚至高于传统SCL算法,而高信噪比时ADPSCL算法的计算复杂度趋近于SC算法。此外,在任意信噪比下,ADPSCL算法的计算复杂度都不高于传统的ADSCL算法。
从以上各图中看出,相同搜索宽度,码长越短,复杂度降低程度越大。对于中短码长的极化码,使用常用的路径搜索宽度配置下,相比传统SCL算法,ADPSCL算法的计算复杂度至少能降低20%。且大部分译码器工作条件下,ADPSCL算法的计算复杂度可以降低50%以上。在高信噪比下,ADPSCL算法的计算复杂度降低能够达到90%以上。相比传统ADSCL算法,ADPSCL算法在各信噪比下的计算复杂度都更低。在低信噪比下尤其明显。总体来说,ADPSCL算法可以显著降低计算复杂度,并且译码性能不会损失,因此ADPSCL算法是一种在传统SCL和ADSCL算法基础上的降低复杂度的高效改进算法。
图16是码率为0.5,码长N=256,路径搜索宽度L=32,采用长度为8的CRC校验时的ADPSCL算法和传统SCL算法的译码性能对比图。
图17是是码率为0.5,码长N=512,路径搜索宽度L=32,采用长度为8的CRC校验时的ADPSCL算法和传统SCL算法的译码性能对比图。
需要说明的是,图16和图17是相同复杂度下的译码性能的比较。图16和图17中,从左到右的圆圈分别表示该圆圈对应的信噪比下,SCL算法在路径列表宽度大小分别为16,8,4和2时误码率。可以看出,在复杂度相同的情况下,ADPSCL算法比SCL算法有显著的性能优势,并且这种优势随着信噪比的升高和码长的增长还会加大。
值得注意的是,PSCL算法与SCL算法,在PSCL的搜索宽度与SCL的list大小相同的情况下,性能完全一致,没有任何损失。同样,ADPSCL的最大路径列表搜索宽度与ADSCL的最大路径列表搜索宽度相同的情况下,性能完全一致,没有任何损失。而ADPSCL的复杂度总是低于ADSCL的复杂度。由于ADPSCL算法和ADSCL算法的计算复杂度都是随着信噪比的升高而减小(即是浮动的),且ADPSCL算法与ADSCL算法在相同信噪比下译码性能总是相同,复杂度总是低于ADSCL算法,复杂度没有交叉点。因此,本文的图16和图17通过ADPSCL与传统SCL算法在同一杂度下的性能对比来说明ADPSCL算法的性能优势。
下面对本申请实施例的译码装置进行说明。
图18是本申请实施例的译码装置600的示意性框图。译码装置600主要包括第一通信单元610、处理单元620和第二通信单元630。
第一通信单元610,用于获取待译码的第一比特序列;
处理单元620,用于在选取的第一候选译码路径未通过循环冗余校验CRC的情况下,从第一数据结构和第二数据结构中读取计算第二候选译码路径所需的数据,其中,第一数据结构中存储有对第一比特序列中的每个比特进行比特判决所需的中间数据,第二数据结构中存储有第一比特序列对应的译码树上的部分节点的位置信息、译码树上的根节点到该部分节点中每个节点的路径度量值以及该部分节点的译码判决结果,译码树为一个满二叉树;根据从第一数据结构和第二数据结构中读取的数据,在译码树上计算第二候选译码路径;在第二候选译码路径通过CRC的情况下,将第二候选译码路径在译码树上对应的比特估计序列作为第一比特序列的译码结果;
第二通信单元630,用于输出该译码结果。
以上第一通信单元610和第二通信单元630可以不同,也可以是同一个通信单元。
本申请实施例的译码装置600中的各单元和上述其它操作或功能分别为了实现本申请实施例的极化码的译码算法的相应流程。为了简洁,此处不再赘述。
在一个可能的设计中,译码装置600的上述功能可以部分或全部通过软件实现。当全部通过软件实现时,译码装置600可以包括存储器和处理。其中,存储器用于存储计算机程序,处理器从存储器中读取并运行该计算机程序,以实现本申请极化码的译码方法。
在一个可能的设计中,译码装置600的部分或全部通过软件实现时,译码装置600包括处理器。用于存储计算机程序的存储器位于译码装置600之外,处理器通过电路/电线与存储器连接,用于读取并执行所述存储器中存储的计算机程序。
在一个可能的设计中,译码装置600的上述功能的部分或全部通过硬件实现时,译码装置600包括:输入接口电路,用于获取待译码的第一比特序列;逻辑电路,用于执行上述实施例中的译码方法;输出接口电路,用于输出译码结果。
可选的,所述译码装置可以是芯片或者集成电路。
可选地,译码装置600可以是一个译码器或芯片。
图19为本申请实施例的译码器700的示意性结构图。如图19所示,译码器700包括:一个或多个处理器701,一个或多个存储器702和一个或多个通信接口703。通信接口703用于获取待译码的第一比特序列,存储器702用于存储计算机程序,处理器701用于从存储器702中调用并运行该计算机程序,使得译码器700执行本申请实施例的译码方法,完成对第一比特序列的译码。进一步地,通信接口703还用于输出第一比特序列的译码结果。其中,接收待译码的第一比特序列的通信接口可以与输出译码结果的通信接口不同。
图18中所示的译码装置600可以通过图19中所示的译码器700实现。例如,第一通信单元610和第二通信单元630可以由图19中的通信接口703实现,处理单元620可以由处理器701实现等。
可选地,存储器和处理器可以集成在一起,也可以物理上相互单独的单元。
此外,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行本申请实施例的译码方法中的相应流程。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行本申请实施例的译码方法中的相应流程。
本申请还提供一种芯片(或者,芯片系统),包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行该计算机程序,使得安装有该芯片的通信设备执行使本申请实施例的译码方法中的相应流程。
本申请还提供一种通信设备,包括上述译码器700。
以上实施例中,处理器可以为中央处理器(central processing unit,CPU)、通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、微处理器或一个或多个用于控制本申请方案程序执行的集成电路等。例如,处理器可以包括数字信号处理器设备、微处理器设备、模数转换器、数模转换器等。处理器可以根据这些设备各自的功能而在这些设备之间分配移动设备的控制和信号处理的功能。此外,处理器可以包括操作一个或多个软件程序的功能,软件程序可以存储在存储器中。处理器的所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元。
存储器可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备。也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (24)
1.一种极化码的译码方法,其特征在于,包括:
获取待译码的第一比特序列;
在选取的第一候选译码路径未通过循环冗余校验CRC的情况下,从第一数据结构和第二数据结构中读取计算第二候选译码路径所需的数据,其中,所述第一数据结构中存储有对所述第一比特序列中的每个比特进行比特判决所需的中间数据,所述第二数据结构中存储有所述第一比特序列对应的译码树上的部分节点的位置信息、所述译码树上的根节点到所述部分节点中每个节点的路径度量值以及所述部分节点的译码判决结果,所述译码树为一个满二叉树;
根据从所述第一数据结构和所述第二数据结构中读取的数据,在所述译码树上计算所述第二候选译码路径;
在所述第二候选译码路径通过所述CRC的情况下,将所述第二候选译码路径在所述译码树上对应的比特估计序列作为所述第一比特序列的译码结果;
输出所述译码结果。
2.根据权利要求1所述的方法,其特征在于,所述第二数据结构包括两个优先级队列,所述部分节点的位置信息和所述路径度量值信息存储在所述两个优先级队列中,所述部分节点的路径度量值在每个优先级队列中升序排列,其中,靠近队列前端的路径度量值小于靠近队列后端的路径度量值,至少一个所述节点的位置信息与所述至少一个路径度量值之间具有一一映射关系。
3.根据权利要求2所述的方法,其特征在于,优先级队列中任意一个节点的位置信息包括所述节点在所述译码树上所处的层、所述节点在所处的层的扩展次序和所述节点的父节点在所述译码树上的扩展次序。
4.根据权利要求2或3所述的方法,其特征在于,在对所述第一候选译码路径进行CRC之前,所述方法还包括:
根据所述第一数据结构和第二数据结构中存储的数据,以预先设置的第一路径搜索宽度在所述译码树上计算所述第一候选译码路径;
以及,在所述第一候选译码路径未通过所述CRC的情况下,所述根据从所述第一数据结构和所述第二数据结构中读取的数据,在所述译码树上计算所述第二候选译码路径,包括:
根据所述第一数据结构和第二数据结构中读取的数据,以第二路径搜索宽度在所述译码树上计算所述第二候选译码路径,其中,所述第二路径搜索宽度是所述第一路径搜索宽度的两倍,且所述第二路径搜索宽度小于或等于预先设置的最大路径搜索宽度。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一数据结构和第二数据结构中存储的数据,以预先设置的第一路径搜索宽度在所述译码树上搜索第一候选译码路径,包括:
激活所述两个优先级队列中的第一优先级队列,并从所述第一优先级队列中读取第一节点,所述第一节点为所述第一优先级队列中的首节点;
根据所述第一节点的位置信息,确定所述第一节点是否为所述译码树上的叶子节点;
在所述第一节点为所述译码树上的叶子节点的情况下,输出所述译码树的根节点到所述第一节点之间的比特估计序列,作为第一候选译码序列;
以及,所述方法还包括:
在所述第一候选译码路径通过所述CRC的情况下,将所述第一候选译码路径在译码树上对应的比特估计序列作为所述第一比特序列的译码结果。
6.根据权利要求5所述的方法,其特征在于,在所述第一候选译码路径未通过所述CRC的情况下,根据所述第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在所述译码树上搜索第二候选译码路径之前,所述方法还包括:
确定已访问的叶子节点是否大于第一路径搜索宽度;
在已访问的叶子节点大于所述第一路径搜索宽度且未超过所述预先设置的最大路径搜索宽度的情况下,交换所述第一优先级队列和第二优先级队列的激活状态,其中,交换所述第一优先级队列和所述第二优先级队列的激活状态包括将所述第二优先级队列激活,将所述第一优先级队列置为非激活,并将所述第一优先级队列中未读取的全部节点按照路径度量值插入激活的所述第二优先级队列中;
以及,所述以第二路径搜索宽度在所述译码树上计算所述第二候选译码路径,包括:
从激活的所述第二优先级队列中读取第二节点,并根据所述第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在所述译码树上计算所述第二候选译码路径,其中,所述第二节点为所述第二优先级队列中的首节点。
7.根据权利要求6所述的方法,其特征在于,在已访问的叶子节点小于或等于所述第一路径搜索宽度的情况下,所述以第二路径搜索宽度在所述译码树上计算所述第二候选译码路径,包括:
继续从所述第一优先级队列中读取节点,并根据所述第一数据结构和第二数据结构中存储的数据,以所述第二路径搜索宽度在所述译码树上计算所述第二候选译码路径。
8.根据权利要求7所述的方法,其特征在于,在所述第一节点非所述译码树上的叶子节点的情况下,所述方法还包括:
根据所述第一节点的位置信息,确定所述第一节点在所述译码树上所处的层;
根据所述第一节点在所述译码树上所处的层的已访问节点、所述第一路径搜索宽度和所述最大路径搜索宽度之间的大小关系,确定所述第一节点的扩展节点在所述第二数据结构中的存储位置。
9.根据权利要求8所述的方法,其特征在于,所述确定所述第一节点的扩展节点在所述第二数据结构中的存储位置,包括:
若所述第一节点在所述译码树上所处的层的已访问节点数小于或等于所述第一路径搜索宽度,则根据所述扩展节点的路径度量值将所述扩展节点插入所述第一优先级队列中;
若所述第一节点在所述译码树上所处的层的已访问节点数大于所述第一路径搜索宽度,且小于或等于所述最大路径搜索宽度,则根据所述扩展节点的路径度量值将所述扩展节点插入所述第二优先级队列中;
若所述第一节点在所述码树上所处的层的已访问节点大于所述最大路径搜索宽度,则不存储所述扩展节点。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
从所述第一数据结构中获取对所述第一比特序列中的每个比特进行比特判决所需的中间数据;
根据对所述第一比特序列中的每个比特进行比特判决所述的中间数据,以及承载所述第一比特序列中每个比特的子信道为信息位或冻结位,确定所述第一比特序列中每个比特的译码判决结果;
将所述第一比特序列中每个比特的译码判决结果保存在所述第一优先级队列或第二优先级队列中,其中,所述每个比特的译码判决结果与所述每个比特在所述第一优先级队列或第二优先级队列中对应的节点的位置信息和路径度量值对应。
11.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一数据结构中存储的所述中间数据包括所有扩展路径中每个节点的译码中间对数似然比和硬判决值,以及所述每个节点的译码中间对数似然比和硬判决值所属的扩展路径。
12.一种译码装置,其特征在于,包括:
第一通信单元,用于接收待译码的第一比特序列;
处理单元,用于在选取的第一候选译码路径未通过循环冗余校验CRC的情况下,从第一数据结构和第二数据结构中读取计算第二候选译码路径所需的数据,其中,所述第一数据结构中存储有对所述第一比特序列中的每个比特进行比特判决所需的中间数据,所述第二数据结构中存储有所述第一比特序列对应的译码树上的部分节点的位置信息、所述译码树上的根节点到所述部分节点中每个节点的路径度量值以及所述部分节点的译码判决结果,所述译码树为一个满二叉树;
所述处理单元,还用于从所述第一数据结构和所述第二数据结构中读取的数据,在所述译码树上计算所述第二候选译码路径;
所处单元,还用于在所述第二候选译码路径通过所述CRC的情况下,将所述第二候选译码路径在所述译码树上对应的比特估计序列作为所述第一比特序列的译码结果;
第二通信单元,用于输出所述处理单元确定的所述译码结果。
13.根据权利要求12所述的译码装置,其特征在于,所述第二数据结构包括两个优先级队列,所述部分节点的位置信息和所述路径度量值信息存储在所述两个优先级队列中,所述部分节点的路径度量值在每个优先级队列中升序排列,其中,靠近队列前端的路径度量值小于靠近队列后端的路径度量值,至少一个所述节点的位置信息与所述至少一个路径度量值之间具有一一映射关系。
14.根据权利要求13所述的译码装置,其特征在于,优先级队列中任意一个节点的位置信息包括所述节点在所述译码树上所处的层、所述节点在所处的层的扩展次序和所述节点的父节点在所述译码树上的扩展次序。
15.根据权利要求13或14所述的译码装置,其特征在于,所述处理单元在对第一译码路径进行CRC之前,所述处理单元还用于:
根据所述第一数据结构和第二数据结构中存储的数据,以预先设置的第一路径搜索宽度在所述译码树上计算所述第一候选译码路径;
以及,所述处理单元具体用于根据所述第一数据结构和第二数据结构中读取的数据,以第二路径搜索宽度在所述译码树上计算所述第二候选译码路径,其中,所述第二路径搜索宽度是所述第一路径搜索宽度的两倍,且所述第二路径搜索宽度小于或等于预先设置的最大路径搜索宽度。
16.根据权利要求15所述的译码装置,其特征在于,所述处理单元具体用于:
激活所述两个优先级队列中的第一优先级队列,并从所述第一优先级队列中读取第一节点,所述第一节点为所述第一优先级队列中的首节点;
根据所述第一节点的位置信息,确定所述第一节点是否为所述译码树上的叶子节点;
在所述第一节点为所述译码树上的叶子节点的情况下,输出所述译码树的根节点到所述第一节点之间的比特估计序列,作为第一候选译码序列;
以及,所述处理单元还用于:
在所述第一候选译码路径通过所述CRC的情况下,将所述第一候选译码路径在译码树上对应的比特估计序列作为所述第一比特序列的译码结果。
17.根据权利要求16所述的译码装置,其特征在于,所述处理单元还用于:
根据所述第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在所述译码树上搜索第二候选译码路径之前,确定已访问的叶子节点是否大于第一路径搜索宽度;
在已访问的叶子节点大于所述第一路径搜索宽度且未超过所述预先设置的最大路径搜索宽度的情况下,交换所述第一优先级队列和第二优先级队列的激活状态,其中,交换所述第一优先级队列和所述第二优先级队列的激活状态包括将所述第二优先级队列激活,将所述第一优先级队列置为非激活,并将所述第一优先级队列中未读取的全部节点按照路径度量值插入激活的所述第二优先级队列中;
以及,所述处理单元具体用于:
从激活的所述第二优先级队列中读取第二节点,并根据所述第一数据结构和第二数据结构中存储的数据,以第二路径搜索宽度在所述译码树上计算所述第二候选译码路径,其中,所述第二节点为所述第二优先级队列中的首节点。
18.根据权利要求17所述的译码装置,其特征在于,所述处理单元具体用于:
在已访问的叶子节点小于或等于所述第一路径搜索宽度的情况下,继续从所述第一优先级队列中读取节点,并根据所述第一数据结构和第二数据结构中存储的数据,以所述第二路径搜索宽度在所述译码树上计算所述第二候选译码路径。
19.根据权利要求18所述的译码装置,其特征在于,所述处理单元还用于:
在所述第一节点非所述译码树上的叶子节点的情况下,根据所述第一节点的位置信息,确定所述第一节点在所述译码树上所处的层;
根据所述第一节点在所述译码树上所处的层的已访问节点、所述第一路径搜索宽度和所述最大路径搜索宽度之间的大小关系,确定所述第一节点的扩展节点在所述第二数据结构中的存储位置。
20.根据权利要求19所述的译码装置,其特征在于,所述处理单元具体用于:
若所述第一节点在所述译码树上所处的层的已访问节点数小于或等于所述第一路径搜索宽度,则根据所述扩展节点的路径度量值将所述扩展节点插入所述第一优先级队列中;
若所述第一节点在所述译码树上所处的层的已访问节点数大于所述第一路径搜索宽度,且小于或等于所述最大路径搜索宽度,则根据所述扩展节点的路径度量值将所述扩展节点插入所述第二优先级队列中;
若所述第一节点在所述码树上所处的层的已访问节点大于所述最大路径搜索宽度,则不存储所述扩展节点。
21.根据权利要求19所述的译码装置,其特征在于,所述处理单元具体用于:
从所述第一数据结构中获取对所述第一比特序列中的每个比特进行比特判决所需的中间数据;
根据对所述第一比特序列中的每个比特进行比特判决所述的中间数据,以及承载所述第一比特序列中每个比特的子信道为信息位或冻结位,确定所述第一比特序列中每个比特的判决结果;
所述译码装置还包括:
存储单元,用于将所述第一比特序列中每个比特的译码判决结果保存在所述第一优先级队列或第二优先级队列中,其中,所述每个比特的译码判决结果与所述每个比特在所述第一优先级队列或第二优先级队列中对应的节点的位置信息和路径度量值对应。
22.根据权利要求12-14中任一项所述的译码装置,其特征在于,所述第一数据结构中存储的所述中间数据包括所有扩展路径中每个节点的译码中间对数似然比和硬判决值,以及所述每个节点的译码中间对数似然比和硬判决值所属的扩展路径。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1-11中任一项所述的方法。
24.一种芯片系统,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得安装有所述芯片的通信设备执行如权利要求1-11中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810344057.1A CN110391817B (zh) | 2018-04-17 | 2018-04-17 | 极化码的译码方法和装置 |
PCT/CN2019/082856 WO2019201233A1 (zh) | 2018-04-17 | 2019-04-16 | 极化码的译码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810344057.1A CN110391817B (zh) | 2018-04-17 | 2018-04-17 | 极化码的译码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110391817A CN110391817A (zh) | 2019-10-29 |
CN110391817B true CN110391817B (zh) | 2021-02-09 |
Family
ID=68239078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810344057.1A Active CN110391817B (zh) | 2018-04-17 | 2018-04-17 | 极化码的译码方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110391817B (zh) |
WO (1) | WO2019201233A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111200481B (zh) * | 2019-12-18 | 2020-12-29 | 清华大学 | Polar码译码过程中提高计算单元通用性的方法 |
CN111181573B (zh) * | 2020-03-09 | 2023-08-18 | 北京华力创通科技股份有限公司 | 数据译码方法、装置及电子设备 |
CN113630126B (zh) * | 2020-05-07 | 2023-11-14 | 大唐移动通信设备有限公司 | 一种极化码译码处理方法、装置及设备 |
CN113131950B (zh) * | 2021-04-23 | 2024-02-13 | 南京大学 | 一种极化码的自适应连续消除优先译码方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104143991A (zh) * | 2013-05-06 | 2014-11-12 | 华为技术有限公司 | 极性Polar码的译码方法和装置 |
CN105978577A (zh) * | 2016-05-03 | 2016-09-28 | 西安电子科技大学 | 一种基于比特翻转的串行列表译码算法 |
CN106506009A (zh) * | 2016-10-31 | 2017-03-15 | 中国石油大学(华东) | 一种极化码的译码方法 |
CN106849960A (zh) * | 2017-01-19 | 2017-06-13 | 东南大学 | 基于极化码的分段crc校验堆栈译码方法及架构 |
CN106877884A (zh) * | 2017-02-01 | 2017-06-20 | 东南大学 | 一种减少译码路径分裂的极化码译码方法 |
CN107819545A (zh) * | 2016-09-12 | 2018-03-20 | 华为技术有限公司 | 极化码的重传方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103220001B (zh) * | 2012-01-20 | 2016-09-07 | 华为技术有限公司 | 与循环冗余校验级联的极性码的译码方法和译码装置 |
KR102621627B1 (ko) * | 2016-06-01 | 2024-01-08 | 삼성전자주식회사 | 순환 중복 검사와 극 부호를 이용하는 부호화를 위한 장치 및 방법 |
-
2018
- 2018-04-17 CN CN201810344057.1A patent/CN110391817B/zh active Active
-
2019
- 2019-04-16 WO PCT/CN2019/082856 patent/WO2019201233A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104143991A (zh) * | 2013-05-06 | 2014-11-12 | 华为技术有限公司 | 极性Polar码的译码方法和装置 |
CN105978577A (zh) * | 2016-05-03 | 2016-09-28 | 西安电子科技大学 | 一种基于比特翻转的串行列表译码算法 |
CN107819545A (zh) * | 2016-09-12 | 2018-03-20 | 华为技术有限公司 | 极化码的重传方法及装置 |
CN106506009A (zh) * | 2016-10-31 | 2017-03-15 | 中国石油大学(华东) | 一种极化码的译码方法 |
CN106849960A (zh) * | 2017-01-19 | 2017-06-13 | 东南大学 | 基于极化码的分段crc校验堆栈译码方法及架构 |
CN106877884A (zh) * | 2017-02-01 | 2017-06-20 | 东南大学 | 一种减少译码路径分裂的极化码译码方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019201233A1 (zh) | 2019-10-24 |
CN110391817A (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110391817B (zh) | 极化码的译码方法和装置 | |
JP4038518B2 (ja) | 低密度パリティ検査コードを効率的に復号する方法及び装置 | |
US10425107B2 (en) | Partial sum computation for polar code decoding | |
WO2014173133A1 (zh) | 极性码的译码方法和译码装置 | |
US8433004B2 (en) | Low-latency viterbi survivor memory architecture and method using register exchange, trace-back, and trace-forward | |
KR20080098391A (ko) | 양방향 슬라이딩 윈도우 아키텍처를 갖는 map 디코더 | |
US8589758B2 (en) | Method and system for cyclic redundancy check | |
US8904266B2 (en) | Multi-standard viterbi processor | |
CN110730007B (zh) | 极化码sscl译码路径分裂方法、存储介质和处理器 | |
US7925964B2 (en) | High-throughput memory-efficient BI-SOVA decoder architecture | |
TWI748739B (zh) | 決定待翻轉比特位置的方法及極化碼解碼器 | |
KR101462211B1 (ko) | 이동통신 시스템의 복호 장치 및 방법 | |
CN110324111B (zh) | 一种译码方法及设备 | |
JP2004349901A (ja) | ターボ復号器及びそれに用いるダイナミック復号方法 | |
CN107919877B (zh) | 基于软输出维特比译码算法sova的译码方法和装置 | |
CN112737600B (zh) | 译码方法和译码器 | |
EP2362549B1 (en) | Low-latency viterbi survivor memory architecture and method using register exchange, trace-back, and trace-forward | |
CN102291198A (zh) | 信道译码方法和装置 | |
CA2730991C (en) | Method and system for cyclic redundancy check | |
CN106533453B (zh) | 一种译码方法及译码器 | |
Song et al. | Efficient adaptive successive cancellation list decoders for polar codes | |
EP3576304A1 (en) | Decoding device | |
CN110971337B (zh) | 信道编码方法及装置 | |
JP2004260391A (ja) | 畳み込み符号の最尤復号器および最尤復号方法 | |
JP2000252840A (ja) | 誤り訂正復号器 |
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 |