CN110741558A - 具有逻辑三维存储器的极化编码器、通信单元、集成电路及其方法 - Google Patents
具有逻辑三维存储器的极化编码器、通信单元、集成电路及其方法 Download PDFInfo
- Publication number
- CN110741558A CN110741558A CN201880039350.5A CN201880039350A CN110741558A CN 110741558 A CN110741558 A CN 110741558A CN 201880039350 A CN201880039350 A CN 201880039350A CN 110741558 A CN110741558 A CN 110741558A
- Authority
- CN
- China
- Prior art keywords
- dimension
- logical
- data path
- memory
- bits
- 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.)
- Granted
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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
-
- 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
Abstract
描述了一种极化编码器电路(600、1600)。极化编码器电路(600、1600)包括一条或多条数据路径(601、1601、1602,1603);以及至少一个逻辑三维3D存储器块(602、603、1605),耦合到一条或多条数据路径(601、1601、1602,1603)并包括逻辑3D存储器块的一个或多个随机存取存储器RAM(1107、2807)的数量作为第一维度,其中一个或多个RAM(1107、2807)包括一个或多个元素的宽度作为第二维度以及一个或多个地址的深度作为第三维度,并且其中第一维度或第二维度具有尺寸其中sd是在一条或多条数据路径(601、1601、1602、1603)中的数据路径中的级数。控制器(604、1606)耦合到至少一个逻辑3D存储器块(602、603、1605)并被配置为指引一条或多条数据路径(601、1601、1602,1603)处理跨第一维度和第二维度中的至少一个维度从至少一个逻辑3D存储器块(602、603、1605)读取的位,并被配置为指引一条或多条数据路径(601、1601、1602、1603)将经处理的位跨第一维度和第二维度中的至少一个维度写入至少一个逻辑3D存储器块(602、603、1605)。
Description
技术领域
本发明涉及具有逻辑三维存储器的极化编码器、通信单元、集成电路以及用于极化编码的方法。本发明可应用于但不限于用于当前和未来的通信标准的极化编码。
背景技术
根据前向纠错(FEC)和信道编码的原理,极化编码[1]可以用于保护信息免受不完善的通信信道内的传输错误的影响,该不完善的通信信道可能受到噪声和其它不利影响。更具体而言,在发送器中使用极化编码器来对信息进行编码,并且在接收器中使用对应的极化解码器以减轻传输错误并恢复所传输的信息。根据规定的编码处理,极化编码器将包括K位的信息块转换成包括更大数量的位M>K的编码块。以这种方式,编码块传送来自信息块的K位信息以及M-K位冗余。为了根据信息块估计原始K位的值,可以根据规定的解码处理在极化解码器中利用这种冗余。假定通信信道的条件不是太严格,那么极化解码器可以以高概率正确地估计来自信息块的K位的值。
极化编码处理包括三个步骤。在第一信息块调节步骤中,为了将其尺寸从K位增加到N位,其中N是2的幂,在信息块中规定的位置处插入冗余位。在第二极化编码内核步骤中,根据规定的图结构,使用相继的异或(XOR)运算以不同的组合方式组合结果内核信息块的N位。这个图结构包括n=log2(N)个相继的级(stage),每个相继的级包括N/2个XOR运算,这些运算组合特定的位对。在第三步骤中,将编码块调节应用于结果所得的内核编码块,以便将其尺寸从N位调整为M位。这可以通过根据规定的方法重复或移除内核编码块中的特定位以产生编码块来实现,该编码块通过信道被传输或者存储在存储介质中。
需要灵活的极化编码器内核来支持各种内核块尺寸N,每个内核块尺寸N的值均为2的幂,直到并包括最大支持的内核块尺寸Nmax。[37]、[24]的现有技术的灵活极化编码器内核将极化码图分解成若干行,这些行跨越图的宽度。极化编码器内核操作包括若干步骤,在这些步骤中,按照从上到下的次序依次处理每个相继的列。但是,所需的硬件的量以及通过该硬件的关键路径长度取决于每行必须跨越的最大级数nmax=log2(Nmax)。当对短块进行编码时,许多硬件将不被使用,从而导致差的硬件效率。
从信道接收软编码块,或者从存储介质中检索软编码块。极化解码处理包括三个步骤,它们与极化编码处理中的三个步骤对应,但是次序相反。在第一编码块调节步骤中,将冗余的软位(soft bit)在规定的位置处插入或组合到软编码块中,以便将其尺寸从M个软位调整为N个软位,其中N是2的幂。在第二极化解码内核步骤中,使用相继抵消(SC)[1]或相继抵消列表(SCL)[7]处理,将结果所得的内核编码块的N个软位以不同的组合方式进行组合,该处理基于规定的图结构进行操作。在第三步骤中,将信息块调节应用于结果所得的恢复的内核信息块,以便将其尺寸从N位减小为K位。这可以通过根据规定的方法移除恢复的内核信息块中的特定位以产生恢复的信息块来实现。
先前已经提出了SC[1]和SCL[7]极化解码器的若干硬件实施方式[8]、[14]-[24],它们能够在运行时灵活地支持不同的内核块尺寸N∈{2,4,8,...,Nmax}。这些解码器使用图[15](或等效地,树[18])从概念上表示极化码,该图(或等效地,该树)的维度取决于内核块尺寸N而变化。如图17中所例示的,图1700在其右侧边缘上包括接受来自解调器的软位的N个输入(常常以对数似然比(LLR)[8]的形式),以及在其左侧边缘上具有提供用于信息的硬位决策(hard bit decision)和冻结位的N个输出。在这两个边缘之间,图包括log2(N)个水平串联的级,每个级包括N/2个垂直对准的XOR运算。
[8]、[14]-[24]的硬件实施方式采用专用硬件,以使用f和g函数组合图中每个XOR的位置处的软位[8],并在概念上在图中将它们从右向左传播。同样,在概念上,在图的左侧边缘处采用专用硬件,以将软位转换成硬位决策,以及计算并排序SCL路径度量[8]。最后,使用专用硬件根据图中的XOR来组合硬位决策,并从概念上在图中从左到右传播结果所得的部分和位(partial sum bit),以便g函数可以使用它们。应注意的是,g函数对部分和位的依赖性强加了数据集相关性,这要求所有上面提到的操作要根据特定的时间表来执行。这仅留下有限的并行执行操作的自由度,该自由度随解码处理的进行而变化。[14]的行解码器(line decoder)在软位传播期间实现高度并行处理,这允许在2N-2个时钟周期的等待时间(latency)内计算所有f和g函数。这是使用Nmax/2个处理单元的L行来实现的,其中对于SC解码,L=1,对于SCL解码,L>1是列表尺寸。每个处理单元能够在每个时钟周期中计算一个f函数或一个g函数。这种并行程度足以在图的任何单个级内同时执行最大数量的计算,该最大数量的计算不受到数据依赖性的影响。当N=Nmax时并且当针对图中最右侧的级计算g函数时,遇到并行处理的这个高峰机会。但是,当N<Nmax时或者当在解码处理期间的其它时间计算f或g函数时,上面提到的数据依赖性会阻止并行性被充分利用。由于这个原因,[14]的行解码器遭受差的硬件效率,并且还需要过高的存储器带宽,这可以允许同时访问多达Nmax个软位。由此,[8]、[15]-[24]的半并行解码器通过将并行处理的程度从LNmax/2降低到LP来提高硬件效率和存储器带宽要求,其中P∈{1,2,4,8,...}。但是,这种方法仍然遭受无法利用最左侧的级的所有并行性的问题,并且需要若干时钟周期来执行最右侧的级的f和g,从而将与f和g计算相关联的总等待时间增加到个时钟周期。除了上面提到的f和g计算所需的时钟周期外,SCL解码器通常还需要至少一个附加的时钟周期来计算并排序与在图的左侧边缘上做出的N个硬位决策中的每一个相关联的路径量度。在行解码的情况下,执行f、g和路径度量计算以及对后者进行排序需要3N-2个时钟周期的等待时间。但是,在[32]、[33]中,计算路径度量并一次对若干位进行排序,并将其与图的最左侧的级中的对应f和g函数一起进行排序。当一次做出2k个硬位决策时,这个方法将行解码所需的时钟周期的总数减少到N/2k-2-2[33],其中k∈{1,2,3,...}。应注意的是,当极化码采用低编码率时,可以进一步减小SCL解码的等待时间。在这种情况下,虽然这种技术不能改善在高编码速率下遇到的最坏情况下的等待时间,但是都可以跳过与块开头的冻结位相关的任何计算。
应注意的是,部分和位的传播通常在相同的时钟周期内与上述计算同时进行。在[8]、[15],[30]中,部分和更新逻辑被用于累积解码位的不同组合,而互连网络被用于将它们递送到对应的g函数的处理。这导致大量的硬件开销和长关键路径,从而限制了可实现的硬件效率、吞吐量和等待时间。相比之下,[19]、[21]、[28]、[32]、[34]的前馈体系架构使用专用硬件将部分和位传播到图的每个相继的级。但是,前馈体系架构的复杂性对于每个相继的级迅速增长,从而限制了可以支持的最大内核块长度Nmax并限制了硬件效率。相比之下,[17]、[22]、[27]、[35]的方法使用简化的极化编码器内核来计算部分和位,但是这并不能从重用作为解码处理的自然部分的计算中受益。在上述先前的极化解码器硬件实施方式中,硬件资源使用情况通常由存储器支配。例如,由于要求将LLR存储在图中每对连续的级之间的接口处,因此[8]的L=8SCL解码器中的存储器占用90%的硬件。硬件资源的下一个最大贡献者用于处理和传播LLR和部分和位,在[8]的L=8SCL解码器中占用大约5%的硬件。在这种处理和传播硬件中,大约80%专用于与部分和位相关联的互连网络[15]。最后,在[8]的L=8SCL解码器以及[18]、[19]的L=4SCL解码器中,大约1%的硬件专用于路径度量计算和排序。但是,在[32]、[33]的多位方法中,可以预期这些操作会占用显著更多的硬件。
发明内容
如所附权利要求中所述,本发明提供了具有三维存储器的极化编码器、通信单元、集成电路以及用于极化编码的方法。
在从属权利要求中阐述了本发明的具体实施例。
参考下文描述的实施例,本发明的这些和其它方面将变得显而易见并得到阐明。
附图说明
将仅通过示例的方式,参考附图来描述本发明的进一步的细节、方面和实施例。在附图中,相同的附图标记用于识别相同或功能相似的元素。图中的元素是为了简单和清楚起见而示出的,并且不一定按比例绘制。
图1图示了根据本发明示例实施例适配的具有极化编码器和极化解码器的通信单元的示例顶层示意图。
图4图示了根据本发明示例实施例的所提出的极化编码器内核的示例示意图。
图6图示了根据本发明示例实施例的由所提出的极化编码器内核采用的编码处理的示例流程图,由此,围绕流程图的主循环的每个周期与数据编码处理的一个步骤对应。
图7图示了根据本发明示例实施例的所提出的极化编码器内核的示例时序图。
图8图示了根据本发明示例实施例的所提出的极化编码器内核中的数据路径的示例性示意图,例如se=3且ne=16。
图9图示了根据本发明示例实施例的在所提出的极化编码器内核的数据路径、存储器和控制器之间的交互的示例示意图,例如,se=1且ne=4。
图10图示了根据所提出的极化编码器内核的示例实施例的在N=16、se=1且ne=4的情况下位索引到存储器块中的位置的示例映射。
图11图示了根据所提出的极化编码器内核的示例实施例的在N=32、se=2且ne=8的情况下位索引到存储器块中的位置的示例映射。
图12图示了根据所提出的极化编码器内核的示例实施例的在N=16、se=2且ne=8的情况下位索引到存储器块中的位置的示例映射。
图13图示了根据所提出的极化编码器内核的示例实施例的在N=4、se=2且ne=8的情况下位索引到存储器块中的位置的示例映射。
图14图示了根据本发明示例实施例的可以针对所提出的极化解码器内核的基本计算单元执行的三种计算的示例:(a)f函数、(b)g函数、以及(c)部分和计算。
图16图示了根据本发明示例实施例的对于Cmax=5的情况的所提出的极化解码器内核的示例示意图。
图18图示了根据本发明示例实施例的由所提出的极化解码器内核采用的解码处理的示例流程图,由此,围绕流程图的主循环的每个周期与解码处理的一个步骤对应。
图19图示了根据本发明示例实施例的所提出的极化解码器内核的示例时序图。
图20图示了根据本发明示例实施例的所提出的极化解码器内核的解码处理所需的多个步骤的示例图。
图22图示了根据本发明示例实施例的可以被重新配置为执行(2)的“f”函数或者(3)的“g”函数的所提出的处理单元的示例示意图。
图23图示了关于(2)的“f”函数的二的补码实施方式的已知技术的示例:(a)朴素(naive)实施方式;(b)减少硬件的实施方式;(c)减少关键路径的实施方式。
图24图示了根据本发明示例实施例的所提出的极化解码器内核中的内部数据路径的示例示意图,例如si=2且ni=8。
图25图示了根据本发明示例实施例的所提出的极化解码器内核中用于SC解码的外部数据路径的示例示意图,例如so=2且ni=4。
图26图示了根据本发明示例性实施例的所提出的极化解码器内核中的部分和数据路径的示例示意图,例如si=2且ni=8。
图27图示了根据本发明示例实施例的所提出的极化解码器内核的内部数据路径、LLR存储器块与控制器之间的交互的示例示意图。
图28图示了根据本发明示例实施例的针对si=1且ni=4的情况的所提出的极化解码器内核的内部数据路径、位存储器块与控制器之间的交互的示例示意图。
图29图示了根据所提出的极化解码器内核的示例实施例的针对N=128、Nmax=128、so=1、si=2且ni=1的情况在解码处理完成之后的LLR的内容的示例。
图30图示了根据所提出的极化解码器内核的示例实施例的针对N=64、Nmax=128、so=1、si=2和ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例。
图31图示了根据所提出的极化解码器内核的示例实施例的针对N=32、Nmax=128、so=1、si=2和ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例。
图32图示了根据所提出的极化解码器内核的示例实施例的针对N=16、Nmax=128、so=1、si=2和ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例。
图33图示了根据所提出的极化解码器内核的示例实施例的针对N=8、Nmax=128、so=1、si=2和ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例。
图34图示了根据本发明一些示例实施例的可以在电子设备或无线通信单元中采用以执行极化编码操作的典型计算系统。
具体实施方式
出于以上讨论的动机,本发明描述了新颖的极化编码器体系架构,其采用逻辑三维存储器来实现灵活的、低等待时间、硬件高效的极化编码和极化解码。代替一次处理极化码图的一级,所提出的体系架构通过一次处理若干连续的级来实现更高的并行程度。此外,由于一次处理若干连续的级,因此仅在每对连续的级分组之间的接口处需要存储器,而不是在每对连续的个体级之间的接口处需要存储器。相对于以前的实施方式,这显著降低了所提出的体系架构的总体存储器需求,这在极化解码期间特别有用,在极化解码中,存储器是硬件资源使用的最大贡献者。在极化解码期间,逻辑三维存储器体系架构启用了用于传播部分和位的简单机制,这也是有影响的,因为在以前的实施方式中,部分和传播是硬件资源使用的第二大贡献者。
在第一方面,本发明的示例描述了极化编码器电路,包括一条或多条数据路径;至少一个逻辑三维3D存储器块,耦合到一条或多条数据路径并包括逻辑3D存储器块的一个或多个随机存取存储器RAM的数量作为第一维度,其中一个或多个RAM(1107、2807)包括一个或多个元素的宽度作为第二维度以及一个或多个地址的深度作为第三维度,并且其中第一维度或第二维度具有尺寸其中sd是在一条或多条数据路径(601、1601、1602、1603)中的数据路径中的级数;以及控制器(604、1606),耦合到至少一个逻辑3D存储器块(602、603、1605)并被配置为指引一条或多条数据路径(601、1601、1602,1603)处理跨第一维度和第二维度中的至少一个维度从至少一个逻辑3D存储器块(602、603、1605)读取的位,并被配置为指引一条或多条数据路径(601、1601、1602、1603)将经处理的位跨第一维度和第二维度中的至少一个维度写入至少一个逻辑3D存储器块(602、603、1605)。
以这种方式,可以将由数据路径生成的元素集无缝地写入逻辑3D存储器块,并且可以从逻辑3D存储器块中无缝地读取数据路径所需的元素集,从而避免了对在写入或从存储器读取时重新排列元素的复杂电路系统的需求。
在一些示例中,第一维度和第二维度中的另一个具有尺寸nd,其中nd是一条或多条数据路径(601、1601、1602、1603)的输入或输出中的元素数量。以这种方式,由数据路径输入或输出的元素数量等于由逻辑3D存储器块输入或输出的元素数量,从而进一步增强了读取和写入操作的无缝性。
在一些示例中,sd是一条或多条数据路径(601、1601、1602、1603)中被配置为计算极化码子图的XOR运算的级数。以这种方式,可以对已经从逻辑3D存储器块无缝读取的位完成XOR运算,然后无缝地写入逻辑3D存储器块。
在一些示例中,至少一个逻辑3D存储器块(602、603、1605)根据第一维度、第二维度和第三维度将元素存储在多个坐标中,并且控制器(604、1606)被配置为:指引第一数据路径从第一逻辑3D存储器块(602、603、1605)中的nd个不同坐标读取nd个数据路径输入元素;以及指引第二数据路径将nd个数据路径输出元素写入第二逻辑3D存储器块(602、603、1605)中的nd个不同坐标。以这种方式,控制器可以通过生成坐标来控制读取和写入操作,该坐标支持逻辑3D存储器块和数据路径之间的无缝交互。
在一些示例中,读取nd个数据路径输入元素和写入nd个数据路径输出元素的操作在不同的时间实例发生。在一些示例中,相同的数据路径执行读取和写入操作。在一些示例中,元素被读取并写入相同的逻辑3D存储器块。以这种方式,控制器可以在不同时间灵活且无缝地控制不同数据路径与不同逻辑3D存储器块之间的交互。
在一些示例中,所有nd个数据路径输入元素沿着第一逻辑3D存储器块(602、603、1605)的第三维度从具有相同坐标值的元素位置中被读取。在一些示例中,所有nd个数据路径输出元素沿着第二逻辑3D存储器块(602、603、1605)的第三维度被写入具有相同坐标值的元素位置。以这种方式,控制器仅需要生成在所有元素之间共享的单个读取地址和单个写入地址,从而简化其操作。
在一些示例中,极化编码器电路(600、1600)还包括耦合到控制器(604、1606)的至少一个多路复用器(1104、2805),其中控制器(604、1606)被配置为指引至少一个多路复用器(1104、2805)从第一逻辑3D存储器块(602、603、1605)的一个元素位置读取具有索引l∈[0,nd-1]的数据路径输入元素,该位置元素具有沿着第一维度或第二维度中的第一个维度的作为索引l的函数的坐标。以这种方式,控制器可以将坐标生成为索引l的简单函数,从而简化其操作。
在一些示例中,极化编码器电路(600、1600)还包括耦合到控制器(604、1606)的至少一个多路复用器(1105、2806),其中控制器(604、1606)被配置为指引至少一个多路复用器(1105、2806)将具有索引l∈[0,nd-1]的数据路径输出元素写入第二逻辑3D存储器块(602、603、1605)中的一个元素位置,该元素位置具有沿着第一维度或第二维度中的第二个维度的坐标mod(l,d2),其中d2是第二逻辑3D存储器块(602、603、1605)的维度的尺寸。以这种方式,控制器可以将坐标生成为索引l的简单函数,从而简化其操作。
在一些示例中,极化编码器电路(600)被配置为使用一条或多条数据路径中的一条数据路径以及第一逻辑3D存储器块(602、603)和第二逻辑3D存储器块(602、603)执行极化编码操作,并且其中极化编码操作包括将极化码图分解成多个列(702),并且其中每一列被进一步分解成一个或多个极化码子图(701),其中在处理来自具有偶数索引(c∈{0,2,4,...})的任何列的极化码子图期间从第一逻辑3D存储器块(602、603)读取数据路径输入元素并将数据路径输出元素写入第二逻辑3D存储器块(602、603),并且在处理来自具有奇数索引(c∈{1,3,5,...})的列的极化码子图期间从第二逻辑3D存储器块读取数据路径输入元素并将数据路径输出元素写入第一逻辑3D存储器块。以这种方式,极化编码可以受益于简化的控制器以及元素的无缝读取和写入逻辑3D存储器块中。
在一些示例中,每个逻辑3D存储器块的第三维度具有尺寸其中Nmax是极化编码器电路(600)的最长支持的内核块尺寸,se=sd是一条或多条数据路径中的编码器数据路径中的级数,并且其中ne=nd是编码器数据路径的输入或输出中的元素数量。以这种方式,可以使用有限数量的存储器来完成极化编码操作。
在一些示例中,极化编码器电路(1600)被配置为使用一条或多条数据路径中的Cmax-1数量的数据路径和Cmax-1数量的逻辑3D存储器块来执行极化解码操作,并且其中极化解码操作包括将极化码图(201、202、203)分解成C∈[1,Cmax]个列(1701、1702),其中C随块而变化并且Cmax是最大支持的列数,以及被分解成C∈[1,Cmax]个列(1701、1702),其中C能够随块而变化并且Cmax是最大支持的列数,并且其中每一列(1701、1702)包括多个行(1703)并且每一行包括多个子行(1704),其中在处理来自具有索引c∈{0,1}的列(1701、1702)的子行(1704)期间,具有索引c的数据路径从具有索引c的逻辑3D存储器块(602、603)读取数据路径输入元素并且将数据路径输出元素写入具有索引c+1的逻辑3D存储器块(602、603)。以这种方式,极化编码可以受益于简化的控制器以及元素的无缝读取和写入逻辑3D存储器块中。
在一些示例中,具有索引c的逻辑3D存储器块(602,603)的第三维度具有尺寸其中so是一条或多条数据路径中的外部数据路径中的级数,si=sd是一条或多条数据路径中的内部数据路径中的级数,并且其中ni=nd是内部数据路径的输入或输出中的元素数量。以这种方式,可以使用有限数量的存储器来完成极化解码操作。
在一些示例中,一条或多条数据路径中的Cmax-1条数据路径的子集被同时操作,并且Cmax-1个逻辑3D存储器块(602、603)的子集被透明操作,以便使元素传播通过相继的列。以这种方式,当执行极化解码时,不需要附加的处理步骤来通过极化码图传播部分和位。
在一些示例中,在一条或多条数据路径中的数据路径的输出处提供的每组n位在单个写入操作中被写入至少一个逻辑3D存储器块(602、603),并且在一条或多条数据路径中的数据路径的输入处所需的每组n位能够在单个读取操作中从至少一个逻辑3D存储器块(602、603)无缝获得。以这种方式,无需重新布置就可以在数据路径和逻辑3D存储器块之间无缝地交换元素。
在一些示例中,当极化编码器电路(600、1600)被配置为执行极化编码操作和极化相继抵消SC解码操作中的一个时,一个或多个元素中的每一个元素是一位,或者当极化编码器电路(1600)被配置为以列表尺寸L执行相继抵消列表SCL解码操作时,一个或多个元素中的每一个元素包括L位的向量。以这种方式,极化SC解码和极化SCL解码可以受益于简化的控制器以及元素的无缝读取和写入逻辑3D存储器块中。
在第二方面,本发明的示例描述了包括根据第一方面的极化编码器电路的通信单元。
在第三方面,本发明的示例描述了包括根据第一方面的极化编码器电路的集成电路。
在第四方面,本发明的示例是根据第一方面描述的极化编码的方法。该方法包括:将至少一个逻辑3D存储器块分派(apportion)为三个维度;指引一条或多条数据路径处理跨第一维度和第二维度中的至少一个维度从至少一个逻辑3D存储器块读取的位;以及指引一条或多条数据路径将经处理的位跨第一维度和第二维度中的至少一个维度写入至少一个逻辑3D存储器块中。
在第五方面,本发明的示例描述了非暂态有形计算机程序产品,该非暂态有形计算机程序产品包括存储在其中的用于根据第四方面的极化编码的可执行代码。
虽然参考可以随块而变化的内核块尺寸“N”描述了本发明的示例,但是在其它示例中可以设想,所描述的极化编码器可以作为仅支持一个块尺寸“N”的不灵活的编码器进行操作。
本发明的示例描述了通过极化编码器提供无缝数据流的机制。在一些示例中,可以通过三个不同设计方面的组合来实现通过极化编码器的无缝数据流:首先是数据路径的改进操作(在数据路径部分中描述),其次是数据路径与存储器的对接(interface)(在存储部分中描述),第三是对这种接口的控制和存储器的寻址(在控制器部分中描述)。本领域技术人员将认识到的是,实现无缝数据流已经影响了许多设计决策,并且已被证明是实现极化编码器的最大挑战。
虽然参考LLR存储器块的使用描述了本发明在应用于极化解码时的示例,但是可以设想,这些存储器块被用于存储任何形式的软位,并且LLR存储器块用于存储软位,因为LLR仅用于解释目的。
虽然参考无线通信接收器的应用内的集成电路实现描述了本发明的示例,但是可以设想,在其它示例中,本发明可以应用在其它实施方式和其它应用中。例如,本文描述的电路和概念可以被组成为专用集成电路、专用指令集处理器、专用标准产品、现场可编程门阵列、通用图形处理单元、片上系统、可配置的处理器内的硬件实施方式。类似地,可以设想,在其它示例中,例如,软件实施方式可以在中央处理单元、数字信号处理器或微控制器内组成。除了无线通信接收器之外,本发明还可以被组合到无线通信收发器或用于其它通信信道(诸如光学、有线或超声信道)的通信设备中。此外,本发明可以被组合到存储设备中,以便为例如从光学、磁性、量子或固态介质中恢复的数据提供FEC。
本发明的示例还提供了根据极化编码的原理对信息进行编码的方法和体系架构,其目的是在不可靠信道上的通信期间或在不可靠介质中的存储期间提供FEC。本发明的示例还提供了为包括随块而变化的多个位的信息块提供灵活的支持的方法和体系架构。
特别地,本发明的示例将极化码图分解成若干列,这些列中的每一列包括一个或多个连续级的不同集合。每一列还被分解成若干子图或行,行可以进一步被分解成若干子行。按照遵守极化编码处理的数据依赖性的次序依次处理列及其组成的子图或行,并且可以重新访问一些列中的一些行若干次。每一列的处理包括若干步骤,在这些步骤期间,每一行中的子图或子行被依次处理。
参考新无线电(NR)标准描述本发明的一些示例,该标准目前由第三代合作伙伴计划(3GPP)定义为第五代(5G)移动通信的候选。当前,已经选择极化编码和解码以在NR的增强型移动宽带(eMBB)应用的上行链路和下行链路控制信道以及物理广播信道(PBCH)中提供FEC。极化编码和解码也已被识别为为NR的超可靠低等待时间通信(URLLC)和大规模机器类型通信(mMTC)应用的上行链路和下行链路数据和控制信道提供FEC的候选。可替代地,在不参考特定标准化应用的情况下描述本发明的一些示例。更广泛地,本发明可以应用在选择极化编码和解码以提供FEC的任何未来通信标准中。此外,本发明可以应用于非标准化的通信应用中,其可以使用极化编码和解码来提供FEC用于通过无线、有线、光学、超声或其它通信信道的通信。同样,本发明可以应用于使用极化编码和解码以在光学、磁性、量子、固态和其它存储介质中提供FEC的存储应用中。
在一些示例中,可以使用分立的部件和电路来实现本文描述的电路和功能,而在其它示例中,可以在信号处理器中(例如在集成电路中)执行操作。
因为本发明的所示实施例在大多数情况下可以使用本领域技术人员已知的电子部件和电路来实现,因此,为了理解和认识到本发明的基本概念,并且为了不混淆或分散本发明的教导,将不以被认为比以下说明的必要程度更大的程度对细节进行解释。
附图的详细描述
现在参考图1,图示了根据本发明示例适配的包括极化编码器和极化解码器的通信单元100的顶层示意图。在通信单元100的这个示例中,技术人员将认识到的是,仅出于简化的目的,未示出许多其它部件和电路(诸如频率生成电路、控制器、放大器、滤波器等)。在其它示例中,可以设想块100可以采取包括极化编码器(并且在一些情况下,块调节和极化解码处理功能)的集成电路的形式,例如用在通信单元、存储单元或被设计为使用极化编码的任何电子设备中。在其它示例中,可以设想通信单元100可以采取在通用计算处理器上运行的软件的形式。
极化编码器包括三个相继的部件,即,信息块调节101、极化编码器内核102和编码块调节103。这些部件将在以下段落中讨论。为了提供本讨论的上下文,图1图示了通信或存储信道108。极化解码器包括三个相继的部件,即,信息块调节112、极化解码器内核111和编码块调节110。这些部件将在以下段落中讨论。如以下段落中将讨论的,编码器基于信息块104、内核信息块105、内核编码块106和编码块107进行操作。相应地,极化解码器基于恢复的信息块115、恢复的内核信息块114、软内核编码块113和软编码块109进行操作,但是它们以相反的次序进行处理。
在极化编码器的上下文中,信息块调节部件101的输入可以被称为信息块104,其块尺寸为K。更具体而言,这种信息块是包括K个信息位的行向量其中ai∈{0,1}。在一些替代示例中,信息块可以是列向量。信息块调节部件101将K个信息位与N-K个冗余位交织(interlace),例如,这些冗余位可以是冻结位[1]、循环冗余校验(CRC)位[2]、奇偶校验(PC)冻结位[3]、用户设备标识(UE-ID)位[4]或散列位[5]。
在此,冻结位可以始终采用逻辑值“0”,而CRC或PC冻结位或散列位可以采用根据信息位或早先在处理中已交错的冗余位而获得的值。信息块调节部件101生成冗余位,并将它们交错到通过规定的方法识别出的位置,这也是极化解码器已知的。信息块调节部件101还可以包括交织(interleaving)操作,该交织操作可以例如实现位反转置换[1]。信息块调节部件101的输出可以被称为内核信息块105,其具有块尺寸N。更具体而言,这个内核信息块105是包括N个内核信息位的行向量其中uj∈{0,1}。在一些替代示例中,内核信息块可以是列向量。在此,必须完成信息块条件调节,使得N为大于K的2的幂,以便提供与极化编码器内核的兼容性,该极化编码器内核基于维度为2的幂的发生器矩阵进行操作,如下面将讨论的。极化编码器内核102的输入是内核信息块u 105,并且极化编码器内核102的输出可以被称为内核编码块106,其块尺寸与内核块尺寸N匹配。更具体而言,这个内核编码块106是包括K个内核编码位的行向量其中xj∈{0,1}。在一些替代示例中,内核编码块可以是列向量。在使用行向量的情况下,根据模2矩阵乘法获得内核编码块106,其中可以获得两个位值的模2总和,作为它们的XOR。在此,发生器矩阵由内核矩阵的第[n=log2(N)]个Kronecker幂(Knonecker power)给出。
应注意的是,可以递归地获得内核矩阵的相继Kronecker幂,其中,通过用内核矩阵替换先前的幂中的每个逻辑“1”并且通过用2×2零矩阵替换每个逻辑“0”来获得每个幂因而,内核矩阵的Kronecker幂的维度为2n×2n。例如,
本领域技术人员将认识到的是,在一些情况下,电路或部件的集成水平可以取决于实施方式。此外,在一些示例中可以设想,信号处理器可以被包括在通信单元100中并且适于实现编码器和解码器功能。可替代地,如图1所示,可以使用单个处理器来实现发送和接收信号的处理以及基带/数字信号处理功能的一些或全部。显然,无线或有线通信单元100内的各种部件(诸如所描述的极化编码器)可以以离散或集成部件的形式实现,因此最终结构是特定于应用的或设计选择。
在一些示例中,极化编码器内核102的操作可以由生成器矩阵的图形表示201、202、203表示,其在图2中例示。现在参考图2,图示了根据本发明示例的生成器矩阵201、202和203的示例图形表示200。
生成器矩阵的图形表示包括Nlog2(N)/2个模2相加的网络,它们彼此连接,并沿着图形表示形式的左侧边缘的高度连接到N=2n个信息连接的集合,以及沿着其右侧边缘的高度连接到N个编码连接的集合。从左至右,模2相加被排列成一系列n级,每级在其左侧边缘和右侧边缘中的每个边缘上具有或者到另一级或者到图形表示的左侧边缘或右侧边缘的N个连接。直接地或者经由模2相加,每级将其左侧边缘上的每个连接水平地连接到其右侧边缘上对应的水平对准的连接,其垂直连接到该级中较低的水平连接。每级总共包括N/2个垂直对准的模2相加。在本发明中,n级的集合被分组为C<n列,其中每一列包括连续级的不同的非重叠集合。
生成器矩阵的图形表示201、202、203是小的极化码图的示例,而一般而言,极化码图可以大得多,并且具有n>0的任何维度。因此,图2中的示例图示了比实际中存在的简化得多的布置,这纯粹是出于解释的目的,并且不会混淆本发明的描述。
在此,每个模2相加204可以使用二进制异或(XOR)运算来实现。应注意的是,该图包括在其左侧边缘205上的“N”个输入和在其右侧边缘206上的“N”个输出,与“u”105的“N”个内核信息位和“x”106的“N”个内核编码位对应。生成器矩阵F 201、202和203的图形表示包括n=log2(N)级207,其中每级包括N/2个垂直对准的XOR 204,从而得到总共N log2(N)=2个XOR。应注意的是,在强制执行(enforce)从左到右处理时间表的相继级207之间存在数据依赖性。更具体而言,数据依赖性阻止特定级207中XOR的计算,直到在级207中左侧的XOR已被计算出来之后。
在一些示例中,与相继Kronecker幂的递归性质相同,这些生成器矩阵的相继图形表示也具有递归关系。更具体而言,用于具有N=2的内核块尺寸的极化编码内核操作201的图形表示200包括包含单个XOR 204的单个级207。显然,在示例极化编码器中,获得N=2个内核编码位中的第一个作为N=2个内核信息位的XOR,而第二个内核编码位等于第二个内核信息位。对于更大的内核块尺寸“N”,对于N/2的内核块尺寸,图形表示可以被认为是两个图形表示的垂直级联,随后是XOR的附加级207。与上述的N=2内核类似,从两个N/2内核的输出中获得N个内核编码位的前N/2作为对应位的XOR,而内核编码位的第二N/2等于第二N/2内核的输出。
在这个示例中,极化编码器的编码块调节部件103的输入是内核编码块x 106,并且其输出可以被称为编码块107,其块尺寸为M。更具体而言,这个编码块是包括M个编码位的行向量;其中bk∈{0,1}。在一些替代示例中,编码块可以是列向量。
在此,结果所得的极化编码率由R=K/M给出,其中必须完成编码块调节103,以使得“M”大于“K”。编码块调节部件103可以使用各种技术来生成编码块b 107中的“M”个编码位,其中“M”可以高于或低于“N”。更具体而言,重复[6]可以用于重复内核编码块“x”中的一些“N”位,而缩短或删截(puncturing)技术[6]可以用于移除内核编码块“x”中的一些“N”位。应注意的是,缩短会移除保证具有逻辑值“0”的位,而删截会移除具有逻辑“0”或“1”值的位。编码块调节部件还可以包括交织操作。在极化编码之后,可以将编码块“b”107提供给调制器,该调制器在通信信道108上将其传输。
现在参考图3,使用生成器矩阵203的图形表示300的扩展,示例极化编码处理图示了其中特定冻结位模式被用于将K=4个信息位a=[1001]104转换成M=8个编码位b=[00001111]107的示例。更具体而言,信息块调节101用于将K=4个信息位a=[1001]104转换成N=8个内核信息位u=[00010001]105。然后,极化编码器内核102使用极化码图203将这些转换成N=8个内核编码位x=[00001111]106。在此,可以通过各种XOR运算来跟踪输入路径,以识别输出。最后,编码块调节103保留所有内核编码位,以提供M=8个编码位b=[00001111]107。
在接收器中,解调器的作用是恢复与编码块相关的信息。但是,由于通信信道108中的噪声的随机性质,解调器通常不能获得关于编码块107中的M位的值的绝对置信度。解调器可以通过生成块尺寸为M的软编码块109来表达其对编码块107中的位值的置信度。更具体而言,这个软编码块109是包括M个编码软位的行向量。每个软位可以对数似然比(LLR)的形式表示:
其中Pr(bk=‘0’)和Pr(bk=‘1’)是和为“1”的概率。
在此,正LLR指示解调器对对应位bk具有值“0”具有更大的置信度,而负LLR指示对位值“1”具有更大的置信度。LLR的量值表达置信度的多少,其中无穷大的量值与这个位值中的绝对置信度对应,而量值“0”指示解调器不了解位值更可能是“0”还是“1”。
在替代方法中,每个软位可以由一对对数似然(LL)表示:
极化解码器包括三个相继的部件,即,编码块调节110、极化解码器内核111和信息块调节112,如图1所示。这些部件将在以下段落中讨论。
极化解码器的编码块调节部件110的输入是软编码块109,并且其输出可以被称为块尺寸为N的软内核编码块113。更具体而言,软内核编码块113是包括“N”个内核编码的LLR的行向量。为了将M个编码的LLR转换成“N”个内核编码的LLR,无穷大值的LLR可以与软编码块109交错,以占用软内核编码块内与通过极化编码器中的缩短而移除的“0”值内核编码位对应的位置。同样,可以将“0”值的LLR与软编码块109交错,以占用通过删截移除了内核编码位的位置。在重复的情况下,可以将与特定内核编码位的副本对应的LLR相加并放在软内核编码块109内的对应位置。如果在极化编码器的编码块调节部件103内采用了交织,那么也可以执行对应的解交织操作。
极化解码器内核111的输入是软内核编码块113,并且其输出可以被称为块尺寸为“N”的恢复的内核信息块114。更具体而言,这个恢复的内核信息块114是包括“N”个恢复的内核信息位的行向量,其中在一些示例中,极化解码器内核111可以使用各种不同的算法进行操作,包括相继抵消(SC)解码[1]和相继抵消列表(SCL)解码[7]。
极化解码器的信息块调节部件112的输入是恢复的内核信息块114,并且其输出可以被称为具有块尺寸“K”的恢复的信息块115。更具体而言,这个恢复的信息块115是包括“K”的恢复的信息位的行向量其中可以通过从恢复的内核信息块114中移除所有冗余位来获得恢复的信息块,如果在极化编码器的信息块调节部件内采用交织,那么也可以执行对应的解交织操作。
1)SC解码:基于SC解码进行操作的极化解码器内核可以被认为具有与极化编码器相似的图结构201、202、203,如图2所示,可以观察到,图的每个级207包括N/2个基本计算单元,类似于N=2个图201,更具体而言,每个基本计算单元在其左侧边缘具有两个连接,它们连接到级207中紧挨着左侧的基本计算单元,或者连接到图205的左侧边缘(如果左侧没有级的话)。基本计算单元的左侧边缘上的这些链接与其右侧边缘上的两个连接水平对准,它们连接到级207中紧挨着右侧的基本计算单元,或者连接到在图206的右侧边缘(如果右侧没有级的话)。在基本计算单元内,两个右侧连接中的第一个右侧连接经由XOR 204连接到左侧的两个连接,而第二个右侧连接直接连接到第二个左侧连接。在图的最左侧的级中,每个基本计算单元的左侧和右侧边缘上的两个连接在垂直方向上彼此连续。但是在其它级中,每个基本计算单元的两个连接在垂直方向上彼此分隔开偏移量,该偏移量在每个相继的级207中加倍。
SC解码器根据由数据依赖性决定的序列执行与基本计算单元相关的计算。更具体而言,取决于在连接403、404的右侧边缘上提供的LLR的可用性以及在连接401、402的左侧边缘上提供的位的可用性,可以针对特定的基本计算单元执行三种类型的计算。
当基本计算单元可以参与SC解码处理时的第一种情况是连接403、404都在其右侧边缘已经提供了LLR时。图14图示了根据本发明示例实施例的可以针对所提出的极化解码器内核的基本计算单元执行的三个计算400的示例:(a)f函数、(b)g函数,以及(c)部分和计算。如图14(a)所示,我们将这两个LLR中的第一个和第二个分别称为和这使得基本计算单元能够根据f函数为两个连接中左侧边缘的第一个连接401计算LLR
其中,如果sign(·)的自变量为负,那么sign(·)返回“-1”,如果其自变量为正,那么返回“+1”。
稍后在SC解码处理中,将在基本计算单元的左侧边缘的连接中的第一个连接401上提供位如图14(b)所示。连同先前使用右侧边缘上的连接403、404提供的LLR和这使得基本计算单元能够根据g函数为其左侧边缘上的两个连接中的第二个连接402计算LLR
稍后,将在基本计算单元的左侧边缘的连接的第二个连接402上提供位如图14(c)所示。连同先前使用左侧边缘的连接中的第一个连接401提供的位这使得可以对基本计算单元的右侧边缘上的第一个连接403和第二个连接404的位和进行部分和计算,其中:
如从上面的讨论可以认识到的,(1)或(2)的f函数可以用于在图中从右到左传播LLR,而(4)和(5)的部分和计算可以用于从左向右传播位,而(3)的g函数可以用于从传播位切换到传播LLR。
为了可以从右向左传播LLR,有必要在图的右侧边缘206的连接上提供LLR。通过在图的右侧边缘206上的相继连接上提供来自软内核编码块113的相继LLR,在SC解码处理开始时执行此操作。同样,有必要在图的左侧边缘205的连接上提供位,以促进从左向右传播位。在此,强加了上述以外的进一步数据依赖性。如果在图的左侧边缘上的特定连接的位置与内核信息块u 105中信息位的位置对应,那么输入到该连接的位取决于从该连接输出的LLR。更具体而言,如果在连接上输出正LLR,那么可以为恢复的内核信息块114的对应位选择值0,然后将其输入到连接中。同时,负LLR允许为恢复的内核信息块114的对应位选择值“1”,然后将其输入到连接中。在与内核信息块u 105内的冗余位对应的连接的情况下,只要知道该冗余位的值就可以将其输入到连接中。在此,在SC解码处理开始之前,冻结和UE-ID位的值可以是已知的,但是CRC、PC和散列位的值可以直到已经恢复相关的信息位后才变得可用。
结合起来,上述数据依赖性强加了在图的左侧边缘205上的连接上按从上到下的次序一次获得一个恢复的内核信息块114内的信息位的要求。更具体而言,SC解码处理开始于使用f函数(1)或(2)将LLR从图的右侧边缘206传播到图的左侧边缘205上的顶部连接,从而允许恢复第一个位。此后,在使用f函数将LLR传播到图的左侧边缘205上的下一个连接之前,通过使用(4)和(5)的部分和计算从左到右传播位,然后对于特定的基本计算单元使用(3)的g函数以从位传播切换到LLR传播,从而允许恢复对应的位,恢复从上到下的每个相继位。图15的示例说明了这个处理。
图15图示了根据本发明示例实施例的对于特定冻结位模式用于将M=8个编码的LLR 109的特定向量~b转换成K=4个恢复的信息位^a=[1001]115的情况使用生成器矩阵203的图形表示的SC解码处理500的示例。在每个连接上方示出了使用等式(2)和(3)的f和g函数获得的LLR。使用等式(4)和(5)的部分和计算获得的位在每个连接下方示出。括号中随附的数字识别SC解码处理的步骤,其中对应的LLR或位变得可用。
2)SCL解码:
在本文描述的SC解码处理的一个示例中,为恢复的信息块115中的每一位选择的值取决于对应的LLR的符号,该LLR的符号进而取决于为所有先前恢复的信息位选择的值。如果这个方法导致为特定位选择了错误的值,那么这常常导致所有后续位的错误级联。由于解码器知道后续冻结位应当具有值“0”,因此可以考虑利用这些位来检测对于信息位的错误值的选择。更具体而言,如果对应的LLR具有将暗示冻结位的值为“1”的符号,那么这表明在先前信息位之一的解码期间已经产生了错误。但是,在SC解码处理中,没有机会考虑先前信息位的替代值。一旦为信息位选择了值,SC解码处理就会继续进行,并最终做出决策。
这激发了SCL解码[7],从而使得能够考虑信息位的替代值列表。随着解码处理的进行,它考虑每个相继信息位的值的两个选项。更具体而言,SCL解码器维护候选内核信息块的列表,其中,随着SCL解码处理的进行,该列表和内核信息块被建立。在该处理开始时,列表仅包括具有零位的长度的单个内核信息块。每当解码处理达到冻结位时,位值0就会附加到列表中每个内核信息块的末尾。但是,每当解码处理达到信息位时,就会创建候选内核信息块列表的两个副本。在此,位值“0”被附加到第一副本中的每个块,位值1被附加到第二副本中的每个块。之后,将两个列表合并以形成新列表,该新列表的长度是原始列表的两倍。这一直持续到列表的长度达到极限L(通常选择为2的幂)为止。从这时开始,每当考虑信息位时列表的长度就加倍,识别出2L个候选内核信息块中最差的L并从列表中删减(prune)。以这种方式,列表的长度维持为L,直到SCL解码处理完成为止。
在此,最差的候选内核信息块是基于在极化码图左侧边缘205上获得的LLR通过比较和分类为每个块计算的度量来识别的[8]。通过使用(4)和(5)的部分和计算的单独副本将来自每个候选内核信息块中的位从左到右传播到极化码图中,可以在SCL解码处理中获得这些LLR。此后,如在本文描述的示例SC解码处理中那样,可以使用(1)-(3)的g和f计算的单独副本来从右向左传播对应的LLR。与将位值附加到候选内核信息块l中位置j∈[0,N-1]相关联的度量由下式给出:
其中是对应的LLR,并且φl,j-1是在SCL解码处理的上一步中为候选内核信息块计算的度量。应注意的是,由于度量是跨所有位的位置j∈[0,N-1]累积的,因此,每当附加了冻结的位值“0”时,就必须为所有L个候选内核信息块计算度量,并且在考虑信息位的两个可能值时,必须为所有2L个候选计算度量。在后一种情况下,对2L个度量进行排序,将具有最高值的L个候选识别为最差的候选,并将其从列表中删减。
在完成SCL解码处理之后,可以选择具有最低度量的候选内核信息块作为恢复的内核信息块114。可替代地,在CRC辅助的SCL解码[9]中,在选择并输出具有最低度量的候选之前,删截列表中不满足CRC的所有候选。
编码器体系架构示例:
现在参考图4,图示了根据本发明示例实施例的所提出的极化编码器内核600的示例示意图。所提出的极化编码器内核102包括数据路径601、两个存储器块602、603和控制器604。与用于实现编码器的已知处理器体系架构相反,本发明的示例通过从一个存储器读取并向另一个存储器写入来描述每一列的处理,其中两个存储器块的角色交替用于相继的列。每一列可以包括极化码图的一个或多个级。此外,取决于数据路径的块尺寸,处理可以分布在相继的时钟周期上。
与已知的极化编码器相反,本发明的示例将极化码图分解成若干列,每一列包括一个或多个连续级的不同集合。按照从左到右的次序依次处理列。每一列进一步被分解成若干子图,其中,在一些示例中,每一列内的一个或多个子图各自被配置为跨越该列的宽度。
在一些示例中,特定列中的子图包含互斥的XOR和互连的集合,其中特定子图中的任何特定XOR或互连未连接到相同列中任何其它子图中的任何(一个或多个)XOR或互连。每一列的处理包括若干步骤,在此期间,该列内的子图被依次处理,一次一个子图。这与[37]、[24]的现有技术相反,现有技术将极化码图仅分解成包括若干行的单列,这些行按从上到下的次序被依次处理。
虽然本发明的示例需要更多的步骤来完成极化编码器内核操作,但是所需的硬件的量和关键路径长度有利地仅取决于列中的最大级数,而不是如现有技术中那样取决于极化码图中的最大级数。这确保对于所有块尺寸都维持硬件的高实用性,从而实现了比现有技术更高的硬件效率。
在控制器604的控制下,指引数据路径601在极化编码器内核操作的每个步骤中处理一列的一个子图。更具体而言,从两个存储器块602、603中的一个读取到数据路径601的输入,并且将数据路径601的输出写入两个存储器块602、603中的另一个。在此,两个存储器块的作用在相继列的处理期间交替,使得在下一列的处理过程期间读取在一列的处理期间被写入的存储器块。这些位以允许数据路径601执行无缝的读和写操作的方式布置在这些存储器块602、603内,而不需要复杂的互连网络或复杂的控制信号。
所提出的极化编码器内核600能够一次灵活地编码一个内核信息块105,其中相继的内核信息块可以具有可以随块而变化的内核块尺寸N。更具体而言,内核块尺寸N可以采用2和Nmax之间的任何2的幂,其中Nmax是在设计时固定的参数。
在极化编码处理开始时,内核信息块(例如,图1中的内核信息块105)在一系列N/min(N;ne)个连续步骤中被提供给极化编码器内核102的位输入605。位输入的宽度可以接受每一步中的ne位,其中参数ne在设计时固定。在N<ne的示例中,为了将内核信息块的长度增加到ne,在将内核信息块提供给所提出的极化编码器内核600之前,将零值位附加到内核信息块的末尾。在极化编码处理完成后,将使用一系列N/min(N,ne)个连续步骤在所提出的极化编码器内核600的位输出606上输出来自内核编码块106的一个或多个位,该位输出的宽度也为ne位。在N<ne的示例中,可以从极化编码器内核600的输出的末尾移除零值位。
在第一示例中,极化编码器内核600的输入605和输出606可以被配置为具有与存储器602、603和数据路径601相同的宽度ne位。但是,在第二示例中,可以设想极化编码器内核600的输入605和输出606可以被配置具有与存储器602、603和数据路径601部件不同的宽度,从而允许独立于数据路径601的宽度来选择与信息和编码块调节部件101、103的接口的宽度。这允许分别优化由块调节部件101、103和极化编码器内核102消耗的硬件资源和时钟周期数。
现在参考图5,图示了根据本发明示例实施例的生成器矩阵的示例图形表示700,其已被分组为C=3列,包括s=[2;2;1]级,其与se=2对应。在此,ne=8,这导致每一列被分解成N/ne=4个子图,从而跨C=3列提供总共12个子图。每一列702被包围在绿色方框中。每一列中的第一子图701以粗体突出显示。
如上所述,当对块尺寸为N的内核信息块105进行编码时,所提出的极化编码器内核600基于极化码生成器矩阵的图形表示进行操作。在此,将图形表示内的n=log2(N)个级207分组为C列,其中每一列702包括特定数量的连续级207。每一列702可以由其索引c∈[0,C-1]来引用,其中最左列具有索引c=0,而最右侧的列具有索引c=C-1。每一列中的级207的数量可以使用行向量来表达,其中s0是最左侧的列的级数,并且sC-1是最右侧的列的级数。在此,向量s必须被选择以使得更明确地说,极化码图中的每一级207包括N/2个XOR 204,其可以在不改变图的基本连接性的情况下对其进行水平重新排序。每一列702包括一个或多个水平连续的级。
在一些示例中,取决于内核块尺寸N以及参数se来选择每一列702中的级207的特定数量,在一些示例中,参数se在设计时固定。在此,se指定可以在每一列702中容纳的级207的最大数量,其可以采用“1”至nmax=log2(Nmax)范围内的任何值。
在这个特定示例中,图被分解成列,其中n=log2(N)是图中的级数。更具体而言,前C-1列各自包括se个级207,而最右侧的列包括sC-1=n-(C-1)se个级,其中sC-1可以采用“1”到se范围内的任何值,这取决于内核块尺寸N。这在图5中例示,其中在图包括n=5个级207的示例中,s=[2;2;1]由于se=2而产生。
在一些替代示例中,使用对于所有c∈[0,C-1]都满足se≤se的任何其它组合,n个级207可以分布在C列之间。在一些示例中,图可以被分解成最大个列,其中最右侧的列包括最大sC-1,max=nmax-(Cmax-1)se个级207并且所有其它列包括最大sc,max=se个级207。列的集合与所谓的子码基数的向量相关联,其中每个子码基数由下式给出:
在此,特定列702的子码基数rc量化如果图仅包括该列及其左侧列中的级207的话将导致的内核块尺寸N。应注意的是,每个相继列702的子码基数rc从左到右增长。每一列702被分解成R=max(N/ne,1)个独立的子图701,每个子图具有N/R=min(N,ne)个在其左侧边缘和右侧边缘上水平对准的连接,但没有与该列内任何其它子图的连接。在此,ne指定最大子图块尺寸,它是在设计时固定的参数,并且可以采用在到Nmax范围内的任何2的幂的值。最左列的子图701的左侧边缘和右侧边缘上的连接在垂直方向上彼此连续。这在图5的最左侧的列中进行了例示,其中在图包括n=5个级207的示例中,R=4由于ne=8而产生。如图5的中间列所例示的,索引为c∈[1,C-1]的列702由子图701组成,子图701的左侧边缘和右侧边缘之间的连接相互垂直偏移rc-1个位置,除非rc-1>R。当rc-1>R时,子图包括rc-1>R个垂直连续连接的N/rc-1个组,其中组彼此垂直偏移rc-1个位置,如图5的最右侧的列所例示的。在一些示例中,垂直偏移用于选择哪些XOR和互连形成每个子图。
现在参考图6(并且为了对后面的操作的硬件理解而参考图4),图示了根据本发明示例的所提出的极化编码器内核102、600所采用的编码处理的流程图800。流程图800从802开始,并且在804处,每一列中子图的数量被设置为并且列数已经被设置为C=ceil(log2(N)/Se)。在806处,发起主编码循环,将计数器t设置为“0”。
在808处,使用索引将当前列识别为col=floor(t/R),并使用索引row=mod(t,R)识别当前列内要处理的子图。在810处,确定正在被处理的列是否=0。如果在810处正在被处理的列不为=0,那么流程图移至812,由此从具有索引mod(col,2)的存储器块602、603加载ne个位。但是,如果在810处正在被处理的列为=0,那么流程图移至814,由此从极化编码器内核输入加载ne个位。在812或814之后,流程图移至816,由此数据路径(诸如图4和其它附图中的数据路径601)用于处理所选择的列的当前子图。然后在818处,将ne个位存储在具有索引mod(col+1,2)的存储器块中。应注意的是,从两个存储器块(诸如图4和其它附图中的存储器块602、603)中的一个存储器块读取到数据路径601的输入,并将数据路径601的输出写入两个存储器块中的另一个存储器块。在此,两个存储器块的作用在相继列的处理期间交替,使得在下一列的处理期间读取一列的处理期间被写入的存储器块。然后在820处,确定是否col=C-1并且row=R-1。如果col=C-1或row=R-1无效,那么计数器在822处递增(t:=t+1)。此后,流程图循环至808。如果确定col=C-1并且row=R-1是有效的,那么在824处重置计数器,其中t=0。在826处,从具有索引mod(col+1,2)的存储器块加载ne个位,并且在828处,编码器在极化编码器内核输出606上输出ne个位。在832处,确定计数器t是否已经达到R-1。如果t的计数器在832处尚未达到R-1,那么计数器在834处递增。如果计数器t在832处已经达到R-1,那么流程图在836处结束,并且内核信息块到内核编码块的转换完成。
因此,根据先前描述的数据依赖性,所提出的极化编码器内核102、600从左到右依次完成每一列(例如,图5中的列之一)的处理。在每一列中,子图701按从上到下的次序被依次处理,其中每个子图的处理构成所提出的极化编码处理中的一个步骤,如图6所示。在替代示例中,可以以任何次序处理每一列702内的子图701,由此这种替代示例可能需要对上述设计进行修改。
这种方法与[37]、[24]的现有技术相反,现有技术将极化码图分解成仅单个列,包括若干行,这些行被依次处理并且具体而言是按从上到下的次序被依次处理。虽然本发明需要更多的步骤来完成极化编码器内核操作,但是所需的数据路径硬件的量和关键路径长度仅取决于列中的最大级数,而不是如现有技术中那样取决于极化码图中的最大级数nmax=log2(Nmax)。这确保对于所有块尺寸都维持硬件的高实用性,从而实现了比现有技术更高的硬件效率。更具体而言,所提出的方法几乎在编码处理的每个步骤中都利用了其所有并行性,而与图中的级207的数量无关,从而使所有块长度的硬件效率都最大化。
现在参考图7,图示了根据本发明示例实施例的所提出的极化编码器内核102的示例时序图900及其在图6中描述的示例操作。
如图7所示,整个处理总共包括个步骤。应注意的是,内核信息块105可以与图中最左列的处理并发地被加载到所提出的极化编码器内核102中。但是,还需要N/min(N,ne)个步骤以输出内核编码块106。在替代示例(未示出)中,一个或多个位从内核编码块106的输出可以朝着最右列的处理的末尾处开始,从而允许实现一定的并发性。每个步骤可以与硬件实施方式中的单个时钟周期对应,这取决于是否应用流水线(pipelining)以及如何应用流水线,流水线可以用于优化极化编码器内核的时钟频率。
编码器数据路径示例:
所提出的极化编码器的数据路径601被设计为在极化编码处理的每个步骤中执行与极化码图的一个子图相关联的处理。以这种方式,在极化编码图的左侧边缘上输入的内核信息位可以在极化编码处理的相继步骤期间被数据路径相继组合成中间位,直到获得在极化码图的右侧边缘上输出的内核编码位为止。
所提出的极化编码器的数据路径601由se和ne参数化,在此称为数据路径级数和数据路径块尺寸,数据路径级数se可以采用“1”至nmax范围内的任何值,而数据路径块尺寸ne可以采用至Nmax范围内的任何2的幂的值。如图8所例示的,数据路径601类似于生成器矩阵的个图形表示的垂直级联,它也类似于生成器矩阵的图形表示中最左侧的se个级207。以这种方式,具有更大的ne类似于一次处理多于一个的子图。
现在参考图8,对于se=3和ne=16的示例,图示了所提出的极化编码器内核102中的数据路径601的示例示意图1000。如图8中例示的,数据路径601总共包括sene/2个XOR门1001,它们沿着具有包括se个XOR门的关键长度的路径将位从数据路径的左边缘1002传播到其右边缘1003。数据路径601的操作还由当前列702中的级数sc决定,其可以小于最右列的示例中的se,如图5中所示并且在随附的讨论中所描述。当sc<se时,通过禁用数据路径的最右级中的XOR门1001来减少数据路径中的级数以匹配sc。在一些示例中,可以通过如图所示使用AND门1004以掩盖数据路径中的对应垂直连接来实现这个禁用操作。更具体而言,可以通过向对应的AND门提供单值控制输入来启用垂直连接,从而允许垂直连接所携带的位值通过。相比之下,可以通过向对应的AND门提供零值控制输入从而强制垂直连接以便为对应的XOR门提供零值位来禁用垂直连接。进而,这迫使XOR门将其左侧输入上提供的位值直接传递到其输出,从而有效地禁用XOR门。
在替代示例布置中,级1005(除了最右侧的级之外)可以被禁用,以便将级的数量从se减少到sc。但是,如本领域技术人员所认识到的,这些替代示例布置可能需要与上述控制器设计不同的控制器设计。
在一些替代示例布置中,可以设想设计者可以在XOR图中的一些或所有级1005之间插入流水线寄存器,这可能需要对控制器的设计进行修改。在此,可以引入流水线以增加极化编码器内核的时钟频率,但以增加所需的时钟周期数为代价。通过仔细选择是否以及如何应用流水线,可以优化极化解码器内核的吞吐量和等待时间,使得增加时钟频率的好处最大程度地超过需要更多时钟周期的缺点。
编码器存储器示例:
再次参考图4,所提出的极化编码器内核102采用两个三维存储器块,即,存储器“0”602和存储器“1”603。这些存储器块中的每一个包括个RAM,具有ne位的宽度以及个地址的深度,其中RAM、它们的宽度和深度表示存储器块的三个维度。所提出的极化编码器内核102的总存储器需求由位给出。为了进一步详细说明,就其具有RAM、宽度和深度尺寸的意义而言,存储器块是三维的。这个逻辑三维存储器结构与物理三维存储器结构兼容但不依赖于物理三维存储器结构,例如,其中RAM可以在ASIC内物理堆叠在第三个物理维度上。相反,例如可以设想在其它示例中,“逻辑”三维存储器结构也可以以更少的“物理”维度实现,其中RAM并排放置在ASIC内,而不是堆叠在第三个维度中。因此,在本发明的示例中,可以使用不同数量的物理维度来实现三个逻辑维度。
在一些替代示例布置中,可以设想设计者可以交换(swap)RAM和宽度维度的角色,而不是例如通过采用宽度为位的ne个RAM。而且,代替使用两组不同的RAM在RAM维度中容纳两个存储器块602、603,在一些示例替代布置中,可以设想通过将两个存储器块的宽度加倍或者将其深度加倍因而代替地在宽度或深度维度上容纳两个存储器块,设计者可以在单个RAM组中容纳两个存储器块。为了进一步详细说明,这意味着可以将两个逻辑三维存储器块合并成单个逻辑三维存储器块。但是,如本领域技术人员认识到的,这些替代示例布置可能需要与上述不同的数据路径接口和不同的控制器设计。
现在参考图9,对于se=1和ne=4的示例图示了根据本发明示例实施例的所提出的极化编码器内核102的数据路径601、存储器602、603和控制器604之间的交互的示例示意图1100。如图所示,每个存储器块中的每个RAM具有ne位的读取端口1101。这个读取端口在跨RAM深度上的个地址中的特定地址的宽度上输出ne位。在此,通过在地址端口1102上提供的输入来选择特定地址,如图9所示。同样,每个RAM具有ne位的写入端口1103,如图9所示。这个写入端口接受可以更新特定地址的宽度上的ne位的输入,该特定地址由地址端口1102上提供的输入进行选择。但是,仅当断言(assert)了对应的写使能信号607时,才更新这ne位。假设可以使用ne个单独的写使能信号来控制是否分别写ne位中的每一位。如果特定硬件RAM实施方式本身不支持这个功能,那么写入端口1103可以由ne个多路复用器608驱动,多路复用器608可以用于将输入位与来自读取端口1101的反馈进行多路复用。以这种方式,写使能信号可以分别控制由这ne个多路复用器选择的位,将新位值写入RAM,或者通过写入从读取端口1101获得的对应位来维持当前位值。为了简单起见,虽然在图4中示出了该机制,但未在图9中对其进行描述。
在处理图中从左到右的每个相继列702期间,两个存储器块602、603的角色交替。更具体而言,对于具有偶数索引c∈{0,2,4,...}的列,从存储器“0”602中读取位(或者在列“0”的示例中,直接从ne位输入605到所提出的极化编码器内核102),将其提供给数据路径601,并将结果所得的位写入存储器“1”603。相比之下,在具有奇数索引c∈{1,3,5,...}的列的示例中,从存储器“1”603读取位,将其提供给数据路径601,并将结果所得的位写入存储器“0”602。以这种方式,在处理特定列702期间写入的存储器块将在下一列的处理期间被读取。两个存储器块602、603的这种交替操作可以通过将存储器“0”602中的RAM的读取数据端口与存储器“1”603中的对应RAM的那些读取数据端口进行多路复用609来实现。同样,存储器“0”中的RAM的写使能信号608可以与存储器“1”中的对应RAM的写使能信号共享,但交替地被遮蔽。为了简单起见,虽然在图4中示出了这些机制,但未在图9中对其进行描述。
专门设计了存储器块602、603和数据路径601之间的接口,以避免需要复杂的路由网络,复杂的路由网络要求允许数据路径601的任何输入或输出读取或写入存储器块602、603中的任何位。代替地,设计存储器块中的位的布置,使得在存储器块602、603和数据路径601之间仅需要简单的路由网络。同样,可以设计使得仅需要来自控制器604的有限数量的控制信号。
这是通过以支持极化编码器内核的具体数据依赖性的方式仔细地在存储器块602、603的三个维度内布置位来实现的。这是必要的,因为,由于每一列中XOR的不同布置,极化码图中的连续列必须被分解成具有不同布置的子图,如图5所例示的。因此,当处理下一列中的子图时,数据路径601将不会同时读取数据路径601在处理一列中的子图期间同时写入的位。但是,无论如何,所提出的存储器块中的位布置都允许数据路径601无缝地同时读取其所需的输入位,以及无缝地同时写入其生成的输出位。
更具体而言,特定存储器块602、603内的个RAM的地址端口都被绑(tie)在一起,从而仅要求控制器604为每个存储器块602、603生成单个地址。此外,如下所述,数据路径601的左侧边缘上的位输入1002简单地基于宽度从存储器块602、603中读取。相比之下,数据路径601的右侧边缘上的位输出1003简单地基于RAM写入存储器块602、603,如下面详细描述的。在替代示例布置中,按宽度的位存储器访问可以被按RAM的访问代替,反之亦然,但是这将暗示与以下描述的数据路径接口和控制器设计不同的数据路径接口和控制器设计。
对于存储器块602、603和数据路径601之间的按宽度和按RAM的接口两者,在数据路径601的输入1002或输出1003中具有位置l∈[0,ne-1]的位从存储器块中的特定一个RAM的深度内的特定地址的宽度内的特定位置被读取或写入。存储器块602、603中的这个位置可以由宽度坐标wl∈[0,ne-1]|、深度坐标和RAM坐标识别。如上面所提到的,每个存储器块602、603中的位的布置以及所提出的极化编码器内核102的操作使得特定位存储器块602、603内的个RAM的地址端口都可以被绑在一起。这意味着对于按宽度和按RAM的接口两者,一起访问的所有ne位将各自具有相同的深度坐标,这就是说,dl对于所有l∈[0,ne-1]具有相同的值。此外,按宽度的数据路径输入1002中具有位置l∈[0,ne-1]的位仅从存储器块602、603中具有对应宽度坐标wl=l的位置读取。但是,数据路径接口中的这个位可能需要在极化编码处理期间的不同时间从任何可能的RAM坐标读取。因此,多路复用器1104有利地是将第l位提供给按宽度的数据路径输入1002所需的唯一电路系统。更具体而言,这个多路复用器1104在由个RAM中的每一个的读取端口1101中的第l个位置提供的位之间进行选择,如图9所示。在此,要求控制器604向存储器块提供ne个RAM读取坐标,可以对该RAM读取坐标进行解码以便向这ne个多路复用器1104中的每一个提供单独的控制信号。
此外,仅将数据路径的按RAM的输出1003中具有位置l∈[0,ne-1]的位写在存储器块602、603中具有对应RAM坐标的位置。但是,在极化编码处理期间的不同时间,这个位可能需要被写在任何可能的宽度坐标wl∈[0,ne-1]|。因此,如图9所示,多路复用器1105有利地是向RAM的个写入端口1103提供ne个输入中的每一个所需的唯一电路系统。这是因为仅从具有满足的位置l∈[0,ne-1]的数据路径输出位1003的子集中选择具有RAM坐标rl的RAM的每个输入。在此,要求控制器604向存储器块602、603提供ne个宽度写入坐标,其可以被解码以断言写使能信号607的ne,以及为ne个多路复用器1105的对应子集提供控制信号。
在解码处理完成之后,所提出的极化编码器内核102的位输出606通过一系列步骤读取最近被写入的存储器块602、603,其宽度为ne位。但是,在图n=log2(N)中的级数不能被数据路径se中的级数整除的一般情况下,不能按宽度执行这些读取操作。为此,在一些示例中,如图9所示,提供了置换网络1106以将存储器块602、603与所提出的极化编码器内核102的位输出606对接。
编码器控制器示例:
如上文图7中所述,所提出的极化编码处理总共包括:
个步骤。在此,在按从左向右的次序前进到下一列之前,完成每个相继的列702内子图701的处理。图4的控制器604包括计数器t,该计数器t在编码处理开始时采用逻辑值“0”并且在每个相继的步骤中朝着T-1递增。如上所述,所提出的极化编码处理的每个步骤涉及从一个存储器块602、603或从位输入605读取ne位到所提出的极化编码器内核102,在数据路径601中对其进行处理,然后将结果所得的ne位写入另一个存储器块,其中两个存储器块602、603的角色在相继的列702中交替。控制器604被设计为使得不管正在处理图中的哪一列702,每个存储器读取操作都无缝地提供可以由数据路径601组合的ne位的集合,以便根据图中的连接完成XOR运算的集合。此外,控制器604被设计为使得每个存储器写入操作将结果所得的ne位的集合无缝地布置在存储器块602、603中,使得当处理前进到下一列702时可以以上述方式无缝地读取它们。在编码处理的前N/min(N,ne)个步骤期间,该处理与内核信息块105从输入605到极化编码器内核102的加载并发地执行,其宽度为ne位。在N<ne的示例中,零值位在被提供给所提出的极化编码器内核102之前被附加到内核信息块105的末尾,以增加其长度至ne。之后,所提出的极化编码器内核102的位输入在每个步骤中提供ne位,以便增加位索引“j”。更具体而言,在加载具有索引t∈[0,N/min(N,ne)-1]的处理的步骤期间,被提供给到所提出的极化编码器内核102的输入中的位置l∈[0,ne-1]的位是在编码处理的前N/min(N,ne)个步骤期间,这些位被直接提供给数据路径601的对应位输入1002,如图4所示。在编码处理中的前N/min(N,ne)个步骤之后,从存储器块602、603中的一个或另一个加载到数据路径601的输入1002。在具有索引t∈[N/min(N,ne),[log2(max(N,ne))/se]N/min(N,ne)-1],的编码处理中的步骤期间,被提供给到数据路径601的输入1002中的位置l∈[0,ne-1]的位是根据下式从对应存储器块的深度dl、RAMrl和宽度wl坐标读取的:
wl=l.
在此,可以观察到,从中读取数据路径输入位1002的宽度坐标ωl=l与步骤索引t无关,并且因此可以根据按宽度的操作进行硬连线。相比之下,深度dl和RAM rl坐标必须由控制器604根据步骤索引t进行控制。应注意的是,深度坐标dl与位索引l无关,仅要求控制器604提供单个读取地址,该单个读取地址由存储器块602、603中的所有RAM共享。但是,RAM坐标rl取决于位索引l,从而要求控制器604针对ne位中的每一位生成单独的控制信号。
在此,可以观察到,数据路径输出位1003的RAM坐标独立于步骤索引t被写入,并且因此可以根据按RAM的操作进行硬连线。相比之下,深度dl和宽度ωl坐标必须由控制器604根据步骤索引t来控制。应注意的是,深度坐标dl与位索引l无关,仅要求控制器604提供单个写入地址,该写入地址由存储器块602、603中的所有RAM共享。但是,宽度坐标ωl取决于位索引l,从而要求控制器604为ne位中的每一位生成单独的控制信号。如图7所示,在完成极化编码处理之后使用进一步的N/min(N,ne)个步骤,以便从适当的存储器块602、603读取编码位,并将它们提供给极化编码器内核102的输出606,该输出606具有ne位的宽度。这些位共同构成内核编码块106,其中在N<ne的示例中,可以从极化编码器内核102的输出606的末端移除零值位。在这个示例中,计数器t在输出处理开始时被重置为逻辑“0”值,并在每个相继的步骤中朝着N/min(N,ne)-1递增。
在输出处理的第t个步骤期间,根据下式从对应存储器块602、603的深度dl、RAMrl和宽度wl坐标读取被提供给所提出的极化编码器内核102的输出606中的位置l∈[0,ne-1]的位:
其中在此,可以观察到,深度dl、RAM rl和宽度wl坐标必须由控制器604根据步骤索引t控制。应注意的是,深度坐标dl与位索引l无关,仅要求控制器604提供单个写入地址,该写入地址由存储器块602、603中的所有RAM共享。但是,RAMrl和宽度ωl坐标取决于位索引l,从而要求控制器604为ne位中的每一位生成单独的控制信号。
控制存储器读取和存储器写入操作的上述方法导致在存储器块602、603内的位的特征布置。图10至图13提供了在极化码图中的每一列702的处理之前和之后这个特征布置的各种示例。每个图都图示了极化图中两个相邻列702之间的连接的索引j∈[0,N-1],该索引提供存储在存储器块602、603中的每个RAM、深度和宽度坐标处的位。
现在参考图10,图示了根据本发明示例的在并且特别地在N=16、se=1且ne=4的示例中使用包括多个地址的深度将位索引映射到存储器块602、603中的位置的示例映射1200。在此,每个存储器块602、603包括个RAM,每个RAM的深度为个地址并且宽度为ne=4位。总共需要个步骤来完成处理,并且还需要N/min(N,ne)=4个步骤来输出编码位。在此,如上所述,可以看到,每个读取操作是按宽度执行的,并且每个写入操作是按RAM执行的。在图10的特定示例中,极化码图中的级数n=log2(N)能够被数据路径中的级数se整除。因此,输出处理可以按宽度从对应的存储器块602、603中读取编码位。更具体而言,可以观察到,在这个示例中,被简化为wl=l。
现在参考图11,图示了根据本发明示例的在N=32、se=2且ne=8的示例中位索引到存储器块602、603中的位置的示例映射1300。在此,每个存储器块602、603包括个RAM,每个RAM的深度为个地址并且宽度为ne=8位。总共需要个步骤来完成处理,并且还需要N/min(N,ne)=4个步骤来输出编码位。图11与图5中所提供的示例对应。在这个示例中,因此每个存储器块602、603仅使用单个地址的深度。在这个特定示例中,存储器块位的按宽度的读取和按RAM的写入与从行第一、列第二的排序到列第一、行第二的排序对图11的相继矩阵中的索引的重新排序对应。在此,可以观察到,图5的每一列中的第一子图的突出显示与三列702中的每一列中由数据路径601处理的ne位的第一集合对应,即分别为[0 1 2 3 4 5 6 7]、[0 4 8 12 16 20 24 28]和[0 16 1 17 2 18 3 19]。这说明了位的按RAM的无缝写入如何使位的按宽度的读取自然地为数据路径601的下一个操作提供正确的位组合。应注意的是,由于在这个示例中n不能被se整除,因此输出处理无法完全按宽度的方式完成。
现在参考图12,图示了根据本发明示例的在并且特别是N=16、se=2且ne=8的示例中位索引到存储器块602、603中的位置的示例映射4300。在此,每个存储器块602、603仅需要单个地址的深度,但是内核块长度N不足以填充存储器块602、603的所有RAM中的该单个地址的容量。因此,每个存储器块602、603包括个RAM,每个RAM的深度为个地址并且宽度为ne=8位。总共需要个步骤来完成处理,并且还需要N/min(N,ne)=2个步骤以输出编码位。在这个示例中,如图所示,按宽度的读取和按RAM的写入操作自然导致存储器块602、603内的位的对角线布置。
现在参考图13,图示了根据本发明示例的在N=4、se=2且ne=8的示例中位索引到存储器块602、603中的位置的示例映射1500。在此,每个存储器块602、603包括个RAM,每个RAM的深度为个地址并且宽度为ne=8位。总共需要个步骤来完成处理并且还需要N/min(N,ne)=1个步骤来输出编码位。
所提出的极化解码器内核
现在参考图16,图示了根据本发明示例实施例的在Cmax=5的情况下所提出的极化解码器内核1600的示例示意图。所提出的极化解码器内核111包括数据路径1601、1602、1603、存储器1604、1605和控制器1606部件。更具体而言,采用内部数据路径1601、外部数据路径1602和部分和数据路径1603的Cmax-2副本。此外,采用Cmax-1位存储器块1605以及CmaxLLR存储器块1604。与用于实现解码器的已知处理器体系架构相比,本发明的示例可以取决于运行时的内核块尺寸N将极化码图中的所有级灵活地分组为1到Cmax范围内的多个列,其中在一些示例中,可以在设计时选择Cmax。相比之下,一些现有技术始终使用固定数量的列,该数量不会随内核块尺寸而变化,而一些现有技术仅能将最左侧的级分组为列,并要求所有其它级保持独立。
以这种方式,本发明的示例积累使用列的优点,这减少了完成极化解码处理所需的步骤数。本发明的示例还保留了支持长内核块尺寸N的灵活性,而无需具有过大宽度的列,因此也不需要硬件。同样,本发明的一些示例在保留内部数据路径硬件的高实用性的同时保留支持较短内核块尺寸N的灵活性,并因此维持了硬件效率。
更具体而言,代替一次处理极化码图的一级,所提出的体系架构通过一次处理每一列内的若干连续级来实现更高的并行度。这种并行处理可以在f和g计算的大部分计算中得到充分利用,从而与行(line)和半并行体系架构相比,可以实现更强的硬件实用性。此外,由于一次处理若干连续的级,因此仅在每对连续的级组之间的接口处需要存储器,而不是在每对连续的单独级之间的接口处需要存储器。相对于先前的实施方式,这显著降低了所提出的体系架构的总体存储器需求,这尤其具有影响力,因为存储器是硬件资源使用的最大贡献者。最后,提出了用于传播部分和位的简单机制,该机制也是有影响力的,因为部分和传播是先前实施方式中对硬件资源使用的第二大贡献者。
更具体而言,在控制器1606的控制下,内部数据路径1601、外部数据路径1602和部分和数据路径1603中的每一个可以被指引以在极化编码器内核操作的每个步骤中处理一列的一行的一个子行。在此,从驻留在当前列的任一侧上的一个或另一个边缘上的适当接口处的LLR和/或位存储器块1604和1605读取到数据路径1601、1602或1603的输入,这取决于信息在极化码图中是从左向右还是从右向左传播。同样,取决于信息流的方向,将数据路径1601、1602或1603的输出写入驻留在当前列的任一侧上的适当接口处的LLR和/或位存储器块1604和1605。以这种方式,通过读取和写入相同的存储器块1604或1605,可以在相邻列中执行的处理之间传递位或LLR。
LLR和位以允许数据路径1601、1602或1603执行无缝读取和写入操作的方式布置在这些存储器块602、603内,而无需复杂的互连网络或复杂的控制信号。
体系架构
所提出的极化解码器内核111使得能够一次灵活地解码一个恢复的内核信息块114,其中相继的恢复的内核信息块可以具有随块而变化的内核块尺寸N。
更具体而言,内核块尺寸N可以采用2和Nmax之间的任何2的幂的值,其中Nmax是在设计时固定的参数。在极化解码处理的开始1801时,在一系列N/min(N,nl)个连续步骤中,将软内核编码块113加载1802到极化解码器内核111的LLR输入1607中。LLR输入1607具有在每个步骤中可以接受nl个LLR的宽度,其中参数nl在设计时是固定的。在此,每个LLR可以使用二的补码定点数字来表示,具有在设计时固定的位宽度。在N<nl的情况下,在软内核编码块113中的每个LLR之后插入相等数量的零值LLR,以便在该软内核编码块被提供给所提出的极化解码器内核111之前将其长度增加到nl。在极化解码处理期间,冗余位模式和对应的冗余位值被提供给所提出的极化解码器内核111的对应输入1608。这些输入中的每一个输入具有可以在每个步骤中接受个模式位或冗余位的宽度,根据极化解码处理的需求,将它们按需提供给所提出的极化解码器内核111。在的情况下,将断言的冻结位标志(flag)附加到冻结位模式,以便将其长度增加到
在极化解码处理完成之后,一系列N/min(N,nb)个连续步骤用于在所提出的极化解码器内核111的位输出1609上输出1803恢复的内核信息块114,该位输出具有nb位的宽度。在N<ne的情况下,可以从所提出的极化解码器内核111的输出1609的末尾移除零值位。当对块尺寸为N的软内核编码块113进行解码时,所提出的极化解码器内核111的一个所描述的示例基于极化码生成器矩阵的图形表示201、202、203进行操作。在此,将图201、202、203内的n=log2(N)个级207分组为数量为C的列1701、1702,其中每一列都包括特定数量的连续级207。每一列1701、1702可以用其索引c∈[0,C-1]来引用,其中最左列1701的索引为c=0,并且最右列的索引为c=C-1。可以使用行向量来表示每一列1701、1702中的级数,其中s0是最左列1701中的级数,并且sC-1是最右列中的级数。在此,必须选择s使得这在图17中例示了针对生成器矩阵的图形表示1700被分组为包括s=[1;2;2;1]级207的C=4列1701、1702的情况。在所提出的极化解码器内核111中,索引为c=0的最左侧的列被称为外部列1701,而索引为c∈[1,C-1]的其它列被称为内部列1702的集合。每一列1701、1702中的特定级数取决于内核块尺寸N以及在设计时固定的参数so和si来选择。在此,so指定外部列1701中可以容纳的最大级数,其可以采用“0”至nmax=log2(Nmax)范围内的任何值。同时,si指定每个内部列1702中可以容纳的最大级数,其可以采用1到nmax-so范围内的任何值。如果图中的级数n=log2(N)满足n≤so,那么图201、202、203仅被分解成C=1列,即外部列1701,该外部列将包括so=n个级207。否则,将图201、202、203被分解成列,其中外部列1701包括s0=so个级207,最右侧的内部列1702包括sC-1=n-so-(C-2)si个207并且所有其它内部列1702包括sc=si个级207。这在图17中例示,其中在图201、202、203包括n=6个级207的情况下,s=[1;2;2;1]由于so=1且si=2而产生。应注意的是,在替代布置中,可以使用对于所有c∈[1,C-1]都满足sc≤si的任何其它组合将n-so个最右侧的级207分布在C-1个内部列1702之间,但是这需要对贯穿本部分所描述的设计进行修改。
应注意的是,如果图中的最大级数nmax=log2(Nmax)满足nmax=so,那么图201、202、203将始终仅被分解成Cmax=1列1701,包括最多s0,max=nmax个级207。否则,图201、202、203被分解成最大数量的列1701、1702,其中外部列1701包括最大s0,max=so个级207,最右侧的内部列1702包括最大sC-1,max=nmax-so-(Cmax-2)si个级207并且所有其它内部列1702包括最大sc,max=si个级207。列1701、1702的集合与子码基数的向量相关联,其中每个子码基数由下式给出:
在此,特定列1701、1702的子码基数rc量化如果图201、202、203仅在该列及其左侧的列中包括级207将产生的内核块尺寸N。应注意的是,每个相继列1701、1702的子码基数rc从左到右增长。对应的最大子码基数由下式给出:
在此,每一行1703包括子图,该子图在其左侧边缘和右侧边缘上包括水平对准的rc个连续连接和sc个级207。在图17中可以观察到,以上给出的行定义导致在任何特定列1701、1702内的任何一对行1703之间不存在互连。每一列1701、1702的每一行1703可以通过极化解码处理被访问一次或多次,以便例如执行XOR运算或f和g函数。更具体而言,与特定列中的特定行相关联的处理可以在极化解码处理期间在多于一个时间上分离的场合下执行,其中时间上分离的处理的每个集合可以被称为对该行的“访问(visit)”。但是,由于每一列的行1703内的连接数量rc从左到右增长,因此对图201、202、203右侧的列1701、1702中的行1703的访问比对图左侧的列中的访问涉及更多的计算。但是,在图17中可以观察到,最右侧的列中的行1703可以被分解成子行1704,子行1704彼此之间不存在连接。因此,与极化解码处理期间特定时间对行1703的特定访问相关联的计算可以分散在若干连续的步骤中,每个步骤针对行1703中的不同子行1704执行计算1804、1805、1806。以这种方式,极化解码处理一次完成一个步骤,其中每个步骤可以与一个或多个硬件时钟周期对应,这具体取决于是否以及如何采用流水线。通过在图201、202、203右侧的列1702中的每一行1703使用更多子行1704,可以将在解码处理的每个步骤中执行的计算数量维持在相对恒定的水平,而与正在访问哪一列无关。形式上,包括每一列1701、1702的每一行1703的子行的数量可以使用向量表示。在此,Sc必须是2的幂并且必须不超过以便确保子行1704之间不存在连接。应注意的是,这意味着外部列1701中的行1703无法进一步被分解成子行1704。每个子行1704包括子图,该子图包括sc个级207以及在其左侧边缘和右侧边缘上nc=rc/Sc个水平对准的连接,这些连接彼此垂直偏移rc/nc个位置。在此,nc被称为子行1704的块尺寸,它必须是范围内的2的幂。在所提出的极化解码器内核111中,每个内部列1702中的子行1704的特定块尺寸被选择为nc=min(rc,ni)。在此,ni指定最大内部子行块尺寸,该尺寸是在设计时固定的参数并且可以采用至Nmax范围内的任何2的幂。每一列1701、1702的每一行1703被包围在虚线框中。每一列1701、1702的第一行1703中的第一子行1704以粗体突出显示。
这在图17中例示,其中在图201、202、203包括n=6个级207的情况下,S=[1;1;4;8]由于ni=8产生。
图18图示了根据本发明示例实施例的由所提出的极化解码器内核采用的解码处理的示例流程图1800,由此,围绕流程图的主循环的每个周期与解码处理的一个步骤对应。流程图在1801处开始,并且在1802处,将软内核编码块113的LLR加载到所提出的极化编码器内核111中。在1807处,将当前列索引c初始化为c=C-1,将当前行索引y初始化为长度为C的零值向量,并且将当前子行索引s初始化为0。
在1808处,确定c>0被用于识别当前列是否是内部列。如果是,那么流程图前进到1809,其中确定v=mod(yc-1,rc/rc-1)以识别对当前列的当前行中的当前子行的当前访问的索引。此后,在1805处,部分和数据路径1至c被用于将部分和位从列0传播到当前列。此后,在1806处,内部数据路径被用于处理对当前列的当前行中的当前子行的当前访问。在1813处,确定s=Sc-1被用于确定是否已经对当前行中的所有子行进行了索引为v的访问。如果不是,那么在1812处将子行索引s递增,使得接下来将访问下一个子行。然后,流程图返回到1808,以继续处理当前内部列的当前行中的子行。
相比之下,如果在1813处确定现在已经对当前内部列的当前行中的所有子行进行了索引v的访问,那么流程图前进到1814。在此,确定v=rc/rc-1-1被用于确定是否已经对当前内部列的当前行中的所有子行进行了最后的访问。如果不是,那么流程图前进到1818,或者如果是,那么流程图先前进到1816,然后前进到1818。在1816处,当前列的行索引递增,使得当在极化解码处理中稍后再次访问当前内部列时,将访问的是下面的下一行。在1818处,递减当前列索引c,以便接下来将访问左侧的列,无论是外部列还是另一个内部列。在1821处,子行索引s被重置为0,以便对内部列中的行的下一次访问将从其顶部子行开始。此后,流程图返回到1808。
如果在1808处确定c>0识别出当前列是外部列,那么流程图前进到1804。在此,外部数据路径被用于处理外部列中的当前行y0。此后,在1810处使用确定y0=R0-1来确定是否已经访问了外部列中的底部行。如果不是,那么流程图前进到1815,其中递增外部列的行索引,以便在极化解码处理中稍后再次访问外部列时,将访问的是下面的下一行。接下来,在1817、1820和1819中使用处理来确定接下来应当访问哪个内部列。在1817处,列索引c被初始化为最右内部列C-1的索引。在1819处,c不断递减,直到在1820处mod(y02so,rc-1)=0为止。此后,流程图前进到1821,其中子行索引s被重置为0,然后流程图返回1808。
相比之下,如果在1810处确定已经访问了外部列的底部行,那么从所提出的极化解码器内核111输出恢复的内核信息块114,并且该处理在1811处结束。
在一些示例中,所提出的极化解码器内核111根据数据依赖性完成解码处理。随着解码处理的进行,如图18的流程图所示,根据特定的时间表,对不同的列1701、1702中的不同的行1703执行计算。外部列1701中的每一行1703将被该处理访问一次,而每个特定的内部列1702中的每一行1703将被该处理访问次,其中sc是该列中的级数。解码处理开始于将软内核编码块113的LLR传递到最右侧的列中的单个行1703。然后,解码处理使用(1)或(2)的f函数在第一次访问最右侧的列中的这个单一行1703期间对这些LLR执行计算。每当已经完成对内部列1702中的行1703的访问时,它将把结果所得的LLR传递到左侧列中连接的行1703中的一个,其中特定的行1703被选择为最上面的尚未被访问的行。然后,解码处理将使用(1)或(2)的f函数在第一次访问左侧列中的这一行1703期间对这些LLR执行计算。每当已经完成对外部列1701中的行1703的访问1804时,它将向恢复的内核信息块114贡献位。此后,将使用(4)和(5)的部分和等式将部分和位从外部列1701中的这一行1703传递1805到具有水平对准的行1703的最左内部列1702,其中,到目前为止,已经完成少于次访问。同时,解码处理将执行对这一行1703的访问,其中(3)的g函数被用于将这些位与第一次访问行1703开始时提供的LLR进行组合。应注意的是,对内部列1702中的行1703的每次访问可以在解码处理的多个连续步骤上执行,其中每个步骤1806对行1703中的子行1704中的不同子行进行操作。在此,子行1704可以以任何次序进行处理,但是图18的流程图1800图示了从上到下对其进行处理的情况。在此,如下面所讨论的,部分和位在由(3)的g函数使用的相同步骤内从外部列1701传播1805到内部列1702中的子行1704。应注意的是,这个相同的方法可以用于SC和SCL解码处理两者。在SCL解码的情况下,对每个子行1704的每次访问使用并行处理以同时执行与列表中的所有L个候选内核信息块相关联的计算。为了进一步详细说明,代替对单独的位和LLR进行操作,可以将与访问每个子行相关联的处理资源复制L次,以便它们可以对包括L个位或LLR的向量进行并行操作,其中向量中的L个位或LLR中的每一个与L个候选内核信息块中的不同候选内核信息块对应。
图19图示了根据本发明示例实施例的所提出的极化解码器内核的示例时序图1900。
图20图示了根据本发明示例实施例的所提出的极化解码器内核的解码处理所需的多个步骤的示例图2000。它绘制了所提出的极化解码器内核111的解码处理所需的步骤数,该步骤数作为内核块长度N、外部数据路径1602中的级数so、内部数据路径1601中的级数si和内部数据路径的块尺寸ni的函数。对于L=8个列表解码的情况并且对于so、si和ni的每种组合,“path(路径)”量化关键数据路径长度中定点加法器的数量,“outadd”量化必须在外部数据路径1602中布置的定点加法器的数量,“inadd”量化必须在内部数据路径1601中布置的定点加法器的数量。此外,对于Nmax=1024的情况,“LLRmem”以LLR为单位量化所需的LLR存储器1604容量,而“bitmem”以位为单位量化所需的位存储器1605容量,包括用于由外部数据路径1602获得的候选内核信息块的存储器。
应注意的是,在可以开始解码处理之前,还需要N/min(N,nl)个步骤将软内核编码块113的LLR加载1802到所提出的极化解码器内核111中。应注意的是,在替代示例布置中,最右侧的列1702的处理可以在软内核编码块113的加载1802的末尾处开始,从而允许实现某种并发性,这需要对所示出的设计进行修改。在SC解码的情况下,可以从所提出的极化解码器内核111中输出1803恢复的内核信息块114,与图201、202、203中的外部列1701的处理并发,一次位,虽然根据通过解码处理访问1804外部列1701的时间是偶发的。但是,在SCL解码的情况下,恢复的内核信息块114的输出1803直到所有处理都已经完成并且在已经选择L个候选内核信息块中的最好内核信息块之后才能开始。在这种情况下,还需要N/min(N,nb)个步骤来输出1803恢复的内核信息块114。每个步骤可以与硬件实施方式中的单个时钟周期对应,这取决于是否以及如何应用流水线。
在图20中,将所提出的极化解码器内核的三个参数化(parameterisation)所使用的步骤数绘制为内核块长度N的函数。这个图的图例还量化了由每个参数化使用的计算和存储器资源,这将在以下各部分中详细介绍。可以预料,在外部数据路径1602中具有更多级so、在内部数据路径1601中具有更多级si以及具有更大的内部数据路径块尺寸ni的参数化使用较少的步骤。虽然这些更快的参数化的数据路径使用更多的计算资源和更长的关键路径,但由于它们使用的列较少,因此它们倾向于使用较少的存储器资源。图10将所提出的极化解码器内核与[14]的行解码器和[15]的半并行解码器进行了比较,这些被参数化为使用[26]的多位技术来一次恢复2so个内核信息位。如图10所示,与采用相同值so=2的基准测试程序(benchmark)相比,具有参数so=2的所提出的极化解码器完成解码处理所使用的步骤更少。此外,它使用更少的计算资源,并且使用的存储器不到LLR存储器量的25%。此外,所提出的极化解码器内核采用优越的方法来进行部分和传播,该方法的硬件开销小。由于LLR存储器和部分和传播是硬件资源使用的两个最大贡献者,因此可以预期,所提出的极化解码器的硬件效率可以比现有技术的极化解码器高四到五倍。
可以认为这种所提出的方法采用常规极化码图201、202、203作为使用(1)-(3)的f和g函数进行LLR传播的基础。但是,极化码图201、202、203的新颖的重新布置被用作使用(4)和(5)的部分和等式的位传播1805的基础。
对于生成器矩阵的图201、202、203表示已被分解成包括s=[1;2;2;1]个级的C=4列的示例,在图21中例示了这种重新布置的图。在此,可以观察到,内部列1702的每一行1703的每一级207中的底部rc-1个XOR已被移除,其中rc-1是左侧的列的子码基数,如上面所定义的。代替地,已经在每个内部列1702与其右边的列之间的接口处引入了XOR 2101。更具体而言,从每个内部列1702的每一行1703传递到其右边的列的最高rc-rc-1位中的每一位与从该行1703传递的底部rc-1位中的特定一位进行XOR 2101。在此,识别特定位使得每个XOR对中的两个位都具有相同的索引模rc-1,其中每个位索引的范围在模运算之前为0至N-1,并且在模运算之后为0至rc-1。
如图16所示,所提出的极化解码器内核111包括内部数据路径1601、外部数据路径1602、部分和数据路径1603、LLR存储器块1604、位存储器块1605和控制器1606部件。更具体而言,虽然所提出的极化解码器内核111仅包括外部数据路径1602和内部数据路径1601的单个实例,但是它包括部分和数据路径1603的Cmax-2个实例、位存储器块1605的Cmax-1个实例以及LLR存储器块1604的Cmax个实例。在此,外部数据路径1602与极化解码器内核111的位输出对接,并且可以被视为驻留在索引为c=0的外部列1701内。同时,在解码处理的不同步骤期间,内部数据路径1601可以被认为驻留在具有不同索引c∈[1,C-1]的不同内部列1702内。此外,具有索引c∈[1,C-2]的部分和数据路径1603可以被认为驻留在极化码图201、202、203的具有对应索引c的内部列1702内。
此外,具有索引c∈[1,C-2]的内部列1702可以被认为经由具有索引c的位存储器块1605和LLR存储器块1604与其左侧的列对接,以及经由具有索引c+1的位存储器块1605和LLR存储器块1604与其右侧的列对接。此外,具有索引C-1的最右侧的列1702可以被认为经由具有索引Cmax的LLR存储器块1604与提出的极化解码器内核111的LLR输入1607对接。如图16所示,外部数据路径1602、位存储器块1605和部分和数据路径1603形成链,它们表示极化码图201、202、203中的C列1701、1702。当解码处理访问图201、202、203中的不同内部列1702时,内部数据路径1601可以从这个链中的不同点获取输入并向其提供输出。在一些示例实施例中,图16还图示了用于绕过1610这个链中的位存储器块1605的机制。这是上面提到的机制,该机制允许在解码处理的单个步骤中,将位从外部数据路径1602通过相继的部分和数据路径1603传播1805到内部数据路径1601中,而不考虑正在访问哪个内部列1702。应注意的是,在一些示例中,在SCL解码的情况下,数据路径1601、1602、1603和存储器1604、1605具有足够的资源来并行地对所有L个候选内核信息块执行计算。为了进一步详细说明,代替对单独位或LLR进行操作,可以将数据路径和存储器的资源复制L次,以便它们可以对包括L个位或LLR的向量进行并行操作,其中向量中L个位或LLR中的每一个与L个候选内核信息块中的不同候选内核信息块对应。
所提出的极化解码器内核111与所有先前提出的极化解码方法具有显著差异。[10]、[11]的可编程体系架构采用串行方法,该方法使用遵守前述数据依赖性的时间表在每个步骤中执行与单个f或g函数相关联的计算。相比之下,所提出的方法在每个步骤中执行与子行1704相关联的所有计算,从而导致更高的并行性、更高的吞吐量和更低的等待时间。[12]、[13]的展开式(unrolled)解码器通过在极化解码处理中为每个f或g计算采用不同的专用硬件来实现非常高的并行度。但是,极化解码处理的每个步骤仅将硬件用于单次f或g计算,从而导致高等待时间。虽然这个方法可以通过一次重叠许多解码处理来实现高吞吐量,但它的灵活度有限。相比之下,所提出的方法是完全灵活的,因为其计算硬件可以被极化码图201、202、203中的每个子行1704重用,即使它们包括更少的级207或具有比由硬件假设的块尺寸更小的块尺寸。[14]的行解码器通过同时执行与具有特定维度的极化码图201、202、203的最右侧的级207相关联的所有f和g计算来实现高度并行处理。但是,当处理图201、202、203中的其它级207时,前述数据依赖性可能阻止这种并行性被充分利用。代替地,硬件的相继较小的子集可以被重用以执行向左的每个相继级207的处理,从而导致差的硬件效率和灵活性。因此,[8]、[15]-[24]的半并行解码器通过降低并行处理的程度来提高硬件效率和灵活性,这需要若干处理步骤来执行最右侧的级207的计算,但是最左侧的级207仍无法利用所有并行性。相比之下,所提出的方法的每个步骤通过同时执行不仅跨越每一列的长度上下,而且跨越每一列1701、1702中的多个级207的计算而实现了高度并行。更具体而言,所提出的方法使用树结构来为每个子行1704执行计算,这确保了在典型情况下充分利用并行度,而与正在访问哪一列1701、1702无关,并且与图的维度无关。这实现了高度灵活性、高硬件效率、高吞吐量和低等待时间。
虽然存在若干先前提出的采用列1701、1702概念的极化解码方法,但不存在方法以所提出的极化解码器内核111的完全概括的方式应用它,其中可以采用任意数量的列1701、1702,每一列包括多个不同且任意数量的级207。[14]、[25]-[29]的树结构在单个列1701的基础上进行操作,该单个列包括极化码图201、202、203中的所有级207,但是这个方法仅支持单个内核块长度并可能导致大硬件资源需求。在[30]、[31]的方法中,极化码图201、202、203被分解成两列1701、1702,这两列包括相等数量的级207,但是这个方法同样仅支持单个内核块长度。相比之下,[32]、[33]的方法使用外部列1701,该外部列1701可以包括若干级207,但是所有其它级均使用上述的半并行方法分别处理。与这些方法形成对比,所提出的极化解码器内核111由于其新颖的存储器体系架构而可以从列1701、1702的泛化应用中受益。这些是必要的,因为在处理一个列1701、1702的同时将特定的位和LLR分组写入,但是在处理相邻列1701、1702的同时将不同的位和LLR分组读取。所提出的存储器体系架构使用这些分组无缝地实现了读取和写入操作,从而确保在正确的时间将正确的位和LLR组简明地传递到正确的位置。此外,由于位和LLR仅存储在每对连续的列1701、1702之间的边界处,而不是存储在每对连续的级207之间的更大数量的边界处,因此所提出的方法促进了存储器的显著减少。
这些相同的新颖的存储器体系架构还用作所提出的极化解码器内核111中的部分和传播1805的基础,其中旁路机制1610用于在解码处理的单个步骤中将位从外列1701传递到内部列1702中的任何列。这与先前已经提出的部分和传播方法形成对比。在[8]、[15]、[30]中,部分和更新逻辑被用于累积解码位的不同组合,并且复杂的互连网络被用于将它们递送到对应g函数的处理。这导致大量的硬件开销和长关键路径,这限制了可实现的硬件效率、吞吐量和等待时间。相比之下,[19]、[21]、[28]、[32]、[34]的前馈体系架构使用专用硬件将部分和位传播到极化码图201、202、203的每个相继级207。但是,前馈体系架构的复杂性对于每个相继级207迅速增长,从而限制了可以支持的内核块长度范围并限制了硬件效率。相比之下,[17]、[22]、[27]、[35]的方法使用简化的极化编码器内核102来实现部分和,但是这并没有如所提出的方法一样受益于作为解码处理的自然部分被执行的重用计算。
数据路径
所提出的极化解码器内核111使用专用硬件数据路径1601、1602、1603来实现(2)和(3)的f和g LLR函数,以及(4)和(5)的部分和函数。虽然后者可以使用XOR门204的网络来实现,但是f和g函数可以使用定点处理单元2201的网络来实现。在一些示例中,内部数据路径1601可以执行与对一个内部列1702的一行1703中的一个子行1704的一次访问相关联的计算1806。同样,在一些示例中,外部数据路径1602可以执行与外部列1701中的一行1703相关联的计算1804。最终,在本文描述的部分和链的一些示例中,部分和数据路径1603的每个实例可以被用于传播1805部分和通过一个内部列1702。
图22图示了根据本发明示例实施例的可以被重新配置以执行(2)的“f”函数或(3)的“g”函数的所提出的处理单元2201的示例示意图2200。
1)处理单元和定点数表示:
图22的所提出的处理单元2201接受两个定点输入LLR2202和2203”,以及位输入2204和模式输入2205。取决于由模式输入2205提供的二进制值,处理单元2201根据如图14所描绘的(2)或(3)来组合其它输入以产生定点输出LLR 2206或
文献[10]、[13]中极化码的一些先前实施方式已使用二的补码固定点数表示将每个LLR表示为W位的向量其中是最高有效位(MSB)和符号位,是最低有效位(LSB),并且利用这种方法,可以使用单个加法器实现(3)的g函数。在此,减法可以在需要时通过对被减去的LLR的二的补码定点表示中的所有位进行补码,然后将其添加到另一个LLR,连同使用全加法器电路的进位输入得到的附加的“1”来实现。在(2)的f函数中,如果和为负,有必要将它们取反(negate),以便分别确定绝对值和
图23图示了对(2)的“f”函数的二的补码实施方式的已知技术的示例2300:(a)朴素实施方式;(b)减少硬件的实施方式;(c)减少关键路径的实施方式。
在f函数的朴素实施方式中,可以通过对LLR的二的补码定点表示的所有位进行补码2301并使用加法器电路2302加上1来产生图23a所示的绝对值,从而实现这两个取反的每一个。此后,根据图23a所示的比较和选择操作,可以通过使用第三加法器2303从中减去并使用结果的符号位选择2304或来实现最后,取决于和的符号,可能有必要将取反,从而需要第四加法器2305。在更复杂的二的补码实现中,可以仅使用单个加法器2306来实现上述前三个加法器2302、2303的功能。这使得能够使用串联的两个加法器来实现f函数,其中第二加法器2307在必要时执行取反,如图23b所示。为了将关键路径长度减小到仅单个加法器,替代实施方式可以使用并行的三个加法器2306、2308来实现f函数,如图23c所示。在此,一个加法器2306被用于组合上述前三个加法器2302、2303的功能,并确定应当由还是给出。同时,在这些值由第一加法器2306选择2309的情况下,另外两个加法器2308计算和文献[15]、[16]、[26]、[36]中极化码的一些其它先前实施方式已使用符号量值定点数表示将每个LLR表示为W位的向量其中是符号位,是MSB,是LSB并且同时,一些先前的实施方式[29]已经使用一的补码定点数表示形式,其中虽然这些方法允许使用单个加法器来完成(2)的f函数,但为了执行(3)的g函数,需要附加加法器转换到二的补码定点数表示形式或从其转换。可替代地,可以仅使用单个加法器来执行f和g函数两者,代价是有时将±1的误差引入结果所得的LLR和这会降低极化解码器的纠错能力[29]。
与这些先前的实施方式形成对比,图22的所提出的处理单元2201的输入LLR、输出LLR和内部操作采用定点数表示,其中将二的补码附加到附加符号位上。更具体而言,每个输入LLR~x2202、2203被表示为W+1位的向量其中是附加符号位,用作MSB和二的补码符号位,是LSB并且在此,LLR的符号可以作为获得,换句话说,附加符号位指示由二的补码定点数表示的值是否应当为了恢复真实的LLR值而取反。应注意的是,在替代布置中,可以通过例如在向量中最后而不是首先放置附加符号位和/或通过使用先LSB(LSB-first)而不是先MSB(MSB-first)的二的补码表示来对所提出的定点数表示的W+1位进行重新排序。应注意的是,虽然上面提到的一些先前的工作暂时使用了二进制标志来指示伴随的二的补码定点数需要取反。但是,这些标志未在处理单元之间传递或进入存储器。特别地,先前工作的处理单元都没有需要接受采用所提出的定点数表示的输入2202、2203的输入电路系统。
所提出的处理单元2201仅采用单个加法器2207,该加法器可以被共享以执行(3)的g函数和(2)的f函数两者,如图22的示意图和真值表所示。加法器的两个输入2208各自具有W位,它们从和的二的补码部分得出,而输出2209包括W+1位,以避免溢出。取决于的值以及和的附加符号位,LLR的二的补码部分可以通过使用加法器2207将的二的补码部分与的二的补码部分相加或者从的二的补码部分中减去的二的补码部分来实现。实现了高度的硬件重用,因为f函数的项也可以通过使用加法器2207执行这种加法或这种减法来实现,这取决于和两者的两个符号位的值。然后可以使用结果所得的二的补码数字的MSB来选择2210或的二的补码部分,以提供LLR的二的补码部分。对于f和g函数两者,可以使用简单的组合逻辑来获得LLR和的附加符号位,如图22的真值表所表征的。由于加法器2207引入了附加位,因此所提出的处理单元2201的输出2206包括W+2位,其中,所表示的LLR或由给出。应注意的是,所提出的方法不会将任何±1错误引入到结果所得LLR或从而保留了与二的补码定点数表示相同的纠错能力,但每个处理单元2201仅使用单个加法器2207。
应注意的是,在区段(Section)II-B3的外部数据路径1602中,仅需要一些处理单元2201来执行f或g函数中的一个或另一个。在这些情况下,可以移除模式输入2205和特定于未使用的模式的所有电路系统。应注意的是,被提供给所提出的极化解码器内核111的LLR输入1607的二的补码定点数可以通过将它们附加到零值附加符号位上而被转换成所提出的定点数表示。此后,可以贯穿所提出的极化解码器内核111使用所提出的定点数表示,而无需转换成二的补码或任何其它定点数表示。可替代地,可以通过在写入之前使用加法器将LLR转换成二的补码定点数来将存储每个LLR所需的LLR存储器1604减少一位。更具体而言,如果设置了附加符号位,那么可以通过将其所有位取反,然后使用加法器递增结果所得的值来将二的补码数取反。为了在从LLR存储器块1604读取LLR时转换回所提出的定点数表示,可以将二的补码定点数附加到零值附加符号位上。
2)内部数据路径:
内部数据路径1601被用于对极化码图201、202、203的内部列1702中的每个子行1704的每次访问1806执行所有LLR和位计算。在一些示例中,如本文所述,内部数据路径1601可以由si和ni参数化。在此,这些参数分别被称为内部数据路径级数和内部数据路径块尺寸。应注意的是,对于ni使用较大的值类似于同时处理具有较小ni的多于一个的子行。在这个示例中,这些参数的值在设计时是固定的,其中内部数据路径级数si可以采用1到nmax-so范围内的任何值,而内部数据路径块尺寸可以采用到Nmax范围内的任何2的幂的值。
图24图示了根据本发明示例实施例的在所提出的极化解码器内核中的内部数据路径的示例示意图2400,例如si=2且ni=8。内部数据路径1601示意图的这个示例可以适于SC解码。在SCL解码的情况下,可以使用数量为L的该示意图的并行副本,其中L是列表尺寸。为了进一步详细说明,代替对单独位和LLR进行操作,可以将内部数据路径的资源复制L次,使得它可以对包括L个位或LLR的向量进行并行操作,其中向量中L个位或LLR中的每一个与L个候选内核信息块中的不同候选内核信息块对应。内部数据路径1601具有输入v,该输入v识别正在对当前子行1704进行哪个访问,其中访问索引在0到的范围内。应注意的是,为简单起见,这个输入未在图24中示出。在SC解码的情况下,内部数据路径1601从其左侧边缘2401上的ni位获取输入。在这个示例中,这些输入位经由通过部分和数据路径1603和位存储器块1605的相继跳而源自本文所述的外部数据路径1602以及内部数据路径1601对左侧的内部列1702的先前访问。可以将位输入的这个向量分解成个等长子向量,与紧挨在左列中的个连接的行1703对应。但是,在对当前子行1704的特定访问v期间,仅前v个子向量将包含有效位,因为仅对左列中的前v个连接的行1703的处理已经完成。应注意的是,由于左侧列中的最低连接的行1703直到最后访问当前列中的当前行1703之后才会被处理,因此输入位的最后一个子向量将永远不提供有效位。因此,在替代布置中,最后个输入和所有连接的电路可以被移除。此外,内部数据路径1601在其右侧边缘2402上从ni个LLR获取输入,该输入源自内部数据路径1601之前经由对应LLR存储器块1604对右侧紧挨着的列1702的访问。在此,如下面详细描述的,所提出的前述定点数表示可以用于每个LLR。内部数据路径1601在其左侧边缘2403上提供ni位的输出,并经由对应的位存储器块1605将其提供给区段II-B4的部分和数据路径1603。此外,在一些示例中,内部数据路径1601在其左侧边缘2404上为ni个定点LLR提供输出,该输出经由对应的LLR存储器块1604被提供给紧挨在左侧的列1701、1702。但是,仅这些输出的子集携带有效LLR,如由在内部数据路径1601的左侧边缘上输出的ni个写使能信号所识别的。应注意的是,为简单起见,这些写使能信号未在图24中示出。
如图24所示,内部数据路径1601包括XOR 204的图2405。在此,到XOR图2405的左侧边缘的每个输入取自位于内部数据路径1601的左侧边缘上的对应的位输入2401,而来自XOR图2405的右侧边缘的对应输出被提供给对应的位输出2403,该位输出也位于数据路径的左侧边缘上。应注意的是,XOR图2405与生成器矩阵的图表示中最右侧的si个级207相似。但是,在内部数据路径1601的XOR图2405中,省略了每一级中最低的个XOR204,因为这些将连接到最低的个输入位,如上所述,它们从不携带有效位。这导致在图21的重新布置的图2100中省略了一些XOR 204。应注意的是,在当前列中的级数sc小于si时,通过禁用图2405的最左侧的级中的XOR门204而将XOR图2405中的级数减少以匹配sc。这可以通过使用AND门2406掩盖数据路径中的对应垂直连接来实现,如图24所示。
此外,在一些示例中,内部数据路径1601可以包括处理单元2201的网络2407,其中每一个可以被配置为在运行时执行(2)的f函数或(3)的g函数。到处理单元网络2407右侧边缘的每个输入取自内部数据路径1601的右侧边缘上的对应LLR输入2402,而来自该网络的左侧边缘的每个输出被提供给数据路径的左侧边缘上的LLR输出2404。网络2407包括si个级,其中最右侧的级包括ni/2个处理单元2201,并且左侧的每个相继级包含的处理单元2201是其右侧级的一半。
在一些示例中,处理单元可以被配置为基于如本文所述的定点数表示进行操作,其中在每个相继级中,从右到左使用递增的位宽度。但是,可以使用削波(clipping)电路(未示出)来减小在处理单元网络的左侧边缘上输出的软位或LLR的位宽度,以使其与右侧边缘上的软位或LLR输入的位宽度匹配。在替代布置中,可以在处理单元网络的一些特定级之间附加地执行削波,这降低了内部数据路径的硬件资源需求,但以降低极化解码器的纠错能力为代价。通过处理单元网络的关键路径包括串联的si个处理单元2201,并且处理单元2201的总数由ni(1-2-si)给出,如图20中对于L=8列表解码的情况所量化的,这意味着需要L=8个内部数据路径1601的副本。网络2407中的处理单元2201连接在一起以形成二叉树。这些连接是根据生成器矩阵的图表示201、202、203的最右侧si个级207的最顶部XOR 204布置的。应注意的是,这个树结构类似于[26]、[30]和[32]中提出的树结构,虽然这些先前的实施方式在运行时并不灵活地支持不同的内核块长度N。应注意的是,在当前列中的级数sc小于si时,通过使用多路复用器2408绕过网络2407最左侧的级中的处理单元2201,将网络2407中处理单元中的级数减少以匹配sc,如图24所示。
取决于对当前子行1704正在进行哪个访问v,处理单元2201执行(2)的f函数或者(3)的g函数。更具体而言,将访问索引v转换成具有sc个数位(digit)的二进制数,但以相反的次序,其中LSB被映射到内部数据路径中最左侧的处理单元级,而最高有效位(MSB)被映射到内部数据路径中最右侧的处理单元级。如果访问索引的反向二进制表示内的特定位置中的位具有值“0”,那么网络的对应级中的处理单元2201执行(2)的f函数。相比之下,如果对应位是“1”,那么这些处理单元2201执行(3)的g函数。在此,多路复用器2409被用于将正确的位从XOR图2405递送到计算g函数的每个处理单元2201。
如图24所示,多路复用器2408的布置被用于在内部数据路径1601的左侧边缘2404上的ni个1LR输出中定位由处理单元网络生成的个LLR。还提供电路系统来断言具有与这些LLR对应位置的写使能输出。更具体而言,多路复用器2408的布置将由处理单元网络2407提供的具有每个索引的LLR映射到内部数据路径1601的左侧边缘2404上的ni个输出中具有根据下式的索引的不同输出:
在此,jc∈[0,N-1]被称为第一索引,其表示属于当前列c中的当前子行1704的极化码图201、202、203的最顶部的连接的垂直索引,其中对于最顶部的行中的最顶部的子行jc=0。第一索引可以根据下式获得:
jc=ycrc+s
其中yc∈[0,N/rc-1]是列c中当前正被访问的行1703的索引,并且s∈[0,max(rc/ni,1)-1]是行1703中正被访问的子行1704的索引。在内部数据路径1601的左侧边缘上输出的ni个写使能信号的向量中,断言索引为n(m)的个信号的对应子集。在一些示例中,多路复用器2408的这个操作和写使能信号允许由内部数据路径1601输出的LLR被直接写到对应的LLR存储器块1604。在一些示例中,控制器1606可以被配置为在XOR图2405中的一些或所有级与处理单元网络2407之间插入流水线寄存器。
3)外部数据路径:
图25图示了根据本发明示例实施例的在所提出的极化解码器内核中用于SC解码的外部数据路径的示例示意图2500,例如so=2且ni=4。
在SC解码的情况下,图25的外部数据路径1602可以用于对极化码图201、202、203的外部列1701中的每一行1703执行所有LLR和位计算1804。外部数据路径1602由so参数化,so被称为外部数据路径级数。在一些示例中,这个参数的值在设计时是固定的,并且可以采用在0到nmax=log2(Nmax)范围内的任何值。在此,假设在的情况下,为了与图16的对应的LLR存储器块1604对接,将需要较大的宽度连同对控制器1606的修改。
外部数据路径1602从个冗余位2501和其左侧边缘上的个冗余位标志2502获取输入,该输入源自所提出的极化解码器的内核111的对应输入1608。外部数据路径1602还经由对应的LLR存储器块1604从其右侧边缘2503上的ni个LLR中获取输入,该输入源自内部数据路径1601。此外,外部数据路径1602在其右侧边缘2504上提供ni位的输出,该输出经由对应的位存储器块1605被提供给内部数据路径1601和部分和数据路径1603。此外,外部数据路径1602在其左侧边缘2505上提供位的输出,这些输出有助于恢复的内核信息块114。在SC解码的情况下,这些位可以被直接写入所提出的极化解码器内核111的位输出1609,其因此采用宽度
外部数据路径1602基于生成器矩阵的图表示201、202,203进行操作,它根据先前描述的数据依赖性使用该图表示执行所有XOR、f和g运算。因而,外部数据路径1602包括包含so个级的XOR图,每级包括个XOR 204。此外,如本文所述,外部数据路径1602包括也包含so个级的f/g图,每级具有仅执行f函数的个处理单元2201以及仅执行g函数的个处理单元2201。
处理单元2201基于定点数表示进行操作,其中沿着图25所示的关键路径在每个相继的处理单元2201中使用递增的位宽度。
f/g图的右侧边缘2503上的输入包括个定点LLR,如图25所示。多路复用器2506的布置被用于从由外部数据路径1602的右侧边缘2503上的输入提供的ni个LLR中选择这个LLR。更具体而言,根据内部数据路径1601的右侧边缘2503上的ni个输入中具有根据n(m)=mni/r1的索引n(m)∈[0,ni-1]的不同输入,多路复用器2506的布置在f/g图的输入上选择具有每个索引的LLR。
外部数据路径1602还包括用于选择在外部数据路径的左侧边缘2505上输出的位的值的电路2507。更具体而言,如果设置了对应的冗余位标志2502,那么采用对应冗余位2501的值。如果不是,那么使用对应LLR的符号为该位选择值,其中正LLR给出位值0,而负LLR给出位值1。这些决策通知在图内执行的XOR和g运算,并且还驱动外部数据路径1602的左侧边缘2505上的位输出。
在外部数据路径1602内完成所有XOR运算204之后,将在XOR图的右侧边缘上产生位的向量,如图25所示。使用多路复用器2508的布置将这个位定位在外部数据路径1602的右侧边缘2504上的ni位输出当中。更具体而言,多路复用器2508的布置将XOR图的输出上具有每个索引的位映射到内部数据路径1601的右侧边缘2504上ni个输出中具有根据n(m)=mni/r1的索引n(m)∈[0,ni-1]的不同输出;而零值位被提供给外部数据路径1602的右侧边缘2504上的所有其它输出。在一些示例中,控制器1606可以被配置为在XOR图和f/g图中的一些或所有级之间插入流水线寄存器。
在SCL解码的情况下,外部数据路径1602必须附加地能够对列表中的所有候选执行所有部分和、f和g计算。为了进一步详细说明,代替对单独位和LLR进行操作,可以对外部数据路径进行调整,使其可以在包括L位的向量上进行并行操作,其中向量中的L位中的每一位与L个候选内核信息块中的不同候选内核信息块对应。此外,外部数据路径1602必须计算(7)的度量,这些度量在相继的内核信息位上累积。在此,寄存器可以被用于在相继的访问之间向外部列1701中的相继行1703传递度量。此外,在一些示例中,外部数据路径1602需要分类电路,以便识别和选择具有最低度量的L个候选。最后,需要容量为LNmax位的位存储器块来存储L个候选内核信息块。在此,附加的指针存储器[18]可以被用于辅助这个位存储器块的寻址。图20量化了在L=8SCL解码的情况下实现f、g、度量和排序计算所需的加法器总数。
4)部分和数据路径:
部分和数据路径1603被用于对从内部数据路径1601中的XOR图中省略的每个子行执行XOR运算2101,并在极化码图201、202、203中从左向右传播1805位。部分和数据路径1603由si和ni进行参数化,分别被称为内部数据路径级数和内部数据路径块尺寸。应注意的是,对ni使用较大的值类似于同时处理具有较小ni的多于一个的子行。如上所述,在一些示例中,这些参数的值在设计时是固定的,其中内部数据路径级数si可以采用1到nmax-so范围内的任何值,而内部数据路径块尺寸可以采用2si到Nmax范围内的任何2的幂的值。
在这个示例中,图24中示意性示出的部分和数据路径1603的操作用于SC解码。在SCL解码的情况下,可以使用L数量的这个示意的并行副本,其中L是列表尺寸。为了进一步详细说明,代替对单个位进行操作,可以将部分和数据路径的资源复制L次,以便它们可以在包括L位的向量上进行并行操作,其中向量中L位中的每一位与L个候选内核信息块中的不同候选内核信息块对应。在SC解码的情况下,经由通过部分和数据路径1603的其它副本的相继跳并且经由位存储器块1605,部分和数据路径1603从其左侧边缘2601上的ni位获取输入,该输入源自外部数据路径1602的右侧边缘2504和内部数据路径1601的左侧边缘2403。经由通过部分和数据路径1603的其它副本的相继跳并经由位存储器块1605,部分和数据路径1603在其右侧边缘2602上输出ni位,这些位被提供给内部数据路径1601的左侧边缘2401。
图26图示了根据本发明示例实施例的在所提出的极化解码器内核中的部分和数据路径的示例示意图2600,例如si=2且ni=8。
如图26所示,将最底部的个输出位设置为等于对应的输入位。但是,获得最顶部的个输出位作为对应的输入位与最底部的个输入位之一的XOR204。在此,识别特定位使得每个XOR对中的两个位具有相同的索引模其中每个位索引在模运算之前将处于“0”到ni-1的范围内并且在模运算之后将处于“0”到ni/2Si-1的范围内。由于部分和数据路径1603在内部列对1702的每个连续对之间的接口处被调用,因此部分和数据路径1603的XOR 204与附加的XOR 2101对应,这些在图21的重新布置的图2100中做了介绍。
应注意的是,在替代布置中,由内部数据路径1601执行的XOR 204的结果可以在它们被用作g函数的输入之后被丢弃,而不是在内部数据路径1601的左侧边缘2403上输出并存储在位存储器1605中。在这种情况下,必须依靠部分和数据路径1603在部分和的传播1805期间为对应的子行执行所有XOR运算204。这可以通过用完整的XOR图替换图26的个XOR 2101来实现,该XOR图类似于生成器矩阵的图表示201、202、203中最右侧的Si个级207。但是,这个方法将需要sini/2个XOR 204,其通常是比所提出的方法所采用的个XOR 204具有更大数量的XOR 204。此外,与所提出的方法的单个XOR 204相比,关键路径将包括si个XOR 204。
存储器
所提出的极化解码器内核111使用两种类型的存储器,即LLR存储器块1604和位存储器块1605。
1)LLR存储器:
如图27所示,所提出的极化解码器内核111采用LLR存储器1604的Cmax个二维块,即LLR存储器1至LLR存储器Cmax。从概念上讲,LLR存储器c∈[1,Cmax-1]可以被认为位于内部列1702的左侧边缘上的接口处,索引为c∈[1,Cmax-1],而LLR存储器Cmax可以被认为驻留在所提出的极化解码器内核111的最右侧的列1702与LLR输入1607之间的接口处。索引为c的存储器块包括单个随机存取存储器(RAM),其宽度为ni个定点LLR并且深度为max(rc-1,max/ni,1)个地址,其中宽度和深度表示存储器块的两个维度。所提出的极化解码器内核111的总LLR存储器需求由个LLR给出。应注意的是,代替使用Cmax个不同的RAM在第三个RAM维度中容纳Cmax个存储器块,替代布置可以通过扩展其深度以在深度维度中容纳所有存储器块来在单个RAM中容纳Cmax个存储器块。但是,这个替代布置将暗示与下文和本说明书中其他部分所描述的数据路径接口和控制器1606设计不同的数据路径接口和控制器1606设计。在一些示例中,假设在的情况下,对于LLR存储器1和LLR存储器Cmax需要更大的宽度连同对控制器1606的修改,以便支持与外部数据路径1602的对接。
应注意的是,在SCL解码的情况下,具有索引“1”至Cmax-1的LLR存储器块1604必须被复制L次,其可以容纳在RAM维度或宽度维度中。为了进一步详细说明,代替对单独LLR进行操作,可以将LLR存储器块的资源复制L次,使得它们可以在包括L个LLR的向量上进行并行操作,其中向量中的L个LLR中的每一个与L个候选内核信息块中的不同候选内核信息块对应。在此,可以使用附加的指针存储器[18]来辅助存储器的这些副本之间的寻址。但是,由于由极化解码器内核111的LLR输入1607提供的LLR对于所有L次解码尝试是公共的,因此仅需要具有索引Cmax的LLR存储器块1604的单个副本。对于图20中的L=8SCL解码的情况,LLR存储器块的总容量被量化,不包括指针存储器。出于这些考虑,被提供给所提出的极化解码器内核111的LLR输入1607的LLR始终存储在索引为Cmax的LLR存储器块1604中,而与使用多少列C来解码当前内核块长度N无关。作为附加益处,具有索引Cmax的LLR存储器块1604可以使用与内部数据路径的宽度ni解耦的宽度nl与所提出的极化解码器内核111的LLR输入1607对接。以这种方式,LLR可以使用大ni值被快速加载到所提出的极化解码器中,而不管内部数据路径1601如何被参数化。
但是,为简单起见,在这个示例中,让我们假设nl=ni。在输入LLR的数量N小于LLR存储器Cmax的宽度ni的情况下,在每个输入LLR之后插入相等数量的零值LLR,然后再将它们提供给存储器的输入,以便占用其全部宽度。应注意的是,在所提出的极化解码器内核111的LLR输入1607采用二的补码定点数表示的情况下,具有索引Cmax的LLR存储器块1604可以直接存储所供应的二的补码LLR,而无需由一些示例的所提出的定点数表示引入附加符号位。
图27图示了根据本发明示例实施例的所提出的极化解码器内核的内部数据路径、LLR存储器块与控制器之间的交互的示例示意图2700。
对于si=1且ni=4的情况,单个LLR存储器块1604在图27中例示。如图27所示,每个LLR存储器块1604的RAM具有ni个LLR读取数据端口2701,其在RAM的整个深度上的max(rc-1,max/ni,1)个地址中的特定地址的宽度上输出ni个LLR,其中该特定地址由地址端口2702上提供的输入选择,如图27所示。同样,RAM具有ni个LLR写入端口2703,如图27所示。这个写入端口2703接受可以在特定地址的宽度上更新ni个LLR的输入,该特定地址由地址端口2704上提供的输入选择。但是,这ni个LLR仅在断言了对应的写使能信号1615的情况下才会被更新。假设可以使用ni个单独的写使能信号1615来控制ni个LLR中的每一个是否被单独写入。如果特定硬件RAM实施方式本身不支持此操作,那么写入端口可以由ni个多路复用器1614驱动,多路复用器可以被用于将输入LLR与来自读取端口2701的反馈进行多路复用,如图27所示。以这种方式,ni个写使能信号1615可以独立控制由这ni个多路复用器选择的LLR,从而将新的LLR值写入RAM,或者通过写入从读取端口2701获得的对应LLR来维持当前LLR值。
如图27所示,列c内的内部数据路径1601的每个操作使用对应的写使能信号1615从具有索引c+1的LLR存储器块1604中读取,并写入具有索引c的LLR存储器块1604中。同样,外部数据路径1602的每个操作在C>1的情况下从具有索引c=1的LLR存储器块1604中读取,否则就从具有索引Cmax的LLR存储器块1604中读取。LLR存储器块1604与各种数据路径1601、1602之间的这些接口是专门为避免复杂的路由网络的需求而设计的,复杂的路由网络将是允许存储器块中的任何LLR被数据路径1601、1602的输入或输出中的任何一个读取或写入所需的。代替地,设计LLR在存储器块中的布置,使得在LLR存储器块1604与数据路径1601、1602之间仅需要简单的路由网络。同样,在一些示例中,可以涉及它使得仅需要来自控制器1606的有限数量的控制信号。更具体而言,在解码处理的每个步骤期间,适当存储器块内特定地址的宽度上的ni个LLR被读取并且适当地无缝地递送到内部数据路径1601或外部数据路径1602。同样,每当其被操作时,使用由内部数据路径1601无缝递送的LLR和写使能信号1615,写入适当存储器块内特定地址宽度上的ni个LLR的子集。控制器1606仅必须向两个存储器块1604提供适当的读取地址2702和写入地址2704。
2)位存储器:
如图16所示,所提出的极化解码器内核111采用位存储器1605的Cmax-1个三维块,即位存储器1至位存储器Cmax-1。从概念上讲,可以将位存储器c视为在具有索引c-1的列1701、1702的接口处位于具有对应索引c的列1702的左侧边缘。在此,索引为c的位存储器块1605包括个RAM,其宽度为ni位并且深度为个地址,其中RAM、宽度和深度表示存储器块1605的三个维度。所提出的极化解码器内核111的总位存储需求由位给出。为了进一步详细说明,存储器块在它们具有RAM、宽度和深度维度的意义上说是三维的。在这个示例中,这个逻辑三维存储器结构可以与物理三维存储器结构兼容,但并不依赖于物理三维存储器结构,其中RAM例如可以在ASIC内的第三物理维度中物理地堆叠。相反,逻辑三维存储器结构也可以以较少的物理维度实现,其中RAM例如可以并排放置在ASIC中,而不是堆叠在第三维度中。
应注意的是,在SCL解码的情况下,位存储器块1605必须被复制L次,这可以被容纳在RAM维度或宽度维度中。为了进一步详细说明,代替对单独位进行操作,可以将位存储器块的资源复制L次,使得它们可以在包括L位的向量上进行并行操作,其中L位中的每一位与L个候选内核信息块中的不同候选内核信息块对应。在此,附加的指针存储器[18]可以被用于辅助存储器的这些副本之间的寻址。对于图20中的L=8SCL解码的情况,量化了位存储器块1605的总容量,包括在一些示例中描述的输出位存储器,但是不包括指针存储器。应注意的是,替代布置可以交换RAM与宽度维度的角色,而不是采用具有位宽度的ni个RAM,但是这将暗示与以下和其它示例中所描述的数据路径接口和控制器1606设计不同的数据路径接口和控制器1606设计。如所提到的,在一些示例中,假设在的情况下,为了支持与外部数据路径1602的接口,位存储器1将需要更大的宽度以及对控制器1606的修改。
图28图示了根据本发明示例实施例的针对si=1且ni=4的情况的所提出的极化解码器内核的内部数据路径、位存储器块与控制器之间的交互的示例示意图2800。
针对si=1且ni=4的情况,在图28中例示了单个位存储器块1605。如图28所示,位存储器1605的每个块中的每个RAM具有ni位读取端口2801。这个读端口2801跨RAM的深度的个地址中的特定地址的宽度输出ni位。在此,通过地址端口2802上所提供的输入来选择该特定地址,如图28所示。同样,每个RAM具有ni位写入端口2803,如图28所示。这个写入端口2803接受可以跨特定地址的宽度更新ni位的输入,该特定地址由地址端口2804上所提供的输入来选择。但是,只有在断言了对应的写使能信号1616时,才更新这ni个位。假设ni个单独的写使能信号1616可以被用于控制是否分别写ni位中的每一位。如果特定硬件RAM实施方式本身不支持此操作,那么写入端口2404可以由ni个多路复用器1617驱动,该多路复用器可以被用于将输入位与来自读取端口2801的反馈进行多路复用。为简单起见,这个机制虽然在图16中示出,但是在图28中未示出。以这种方式,ni个写使能信号1616可以分别控制由这ni个多路复用器1617选择的位,从而将新的位值写入RAM,或者通过写入从读取端口2801获得的对应位来维持当前位值。
如图16所示,外部数据路径1602、部分和数据路径1603的C-2个实例和位存储器块1605的C-1个实例形成链。更具体而言,位存储器1位于外部数据路径1602与部分和数据路径1之间,而位存储器c∈[2,C-2]驻留在部分和数据路径c-1和部分和数据路径c之间,而位存储器C-1终止该链并驻留到部分和数据路径C-2的右侧。在访问内部列c中的子行1704的解码处理的步骤中,对连接到内部数据路径1601的左侧边缘上的位输入和输出的多路复用器1612进行控制,使得它与位存储器c对接。在此,图28详细说明了位存储器c及其相邻数据路径1601、1602、1603之间的接口。
在位存储器块1605与各种数据路径1601、1602、1603之间的这些接口是为了避免复杂的路由网络的需求而专门设计的,复杂的路由网络是允许存储器块1605中的任何位被数据路径1601、1602、1603的输入或输出中的任何一个读取或写入所需的。代替地,存储器块1605中的位的布置被设计为使得在位存储器块1605与数据路径1601、1602、1603之间仅需要简单的路由网络。同样,在这个示例中,它被设计为使得仅需要来自控制器1606的有限数量的控制信号。更具体而言,特定位存储器块1605内的个RAM的地址端口全部绑在一起,从而仅要求控制器1606为每个位存储器块1605生成单个地址2802、2804。此外,部分和数据路径c的左侧边缘上的位输入2601和内部数据路径1601的左侧边缘上的位输入2401均简单的按宽度为基础从位存储器c读取,如下面详细描述的。类似地,内部数据路径1601的左侧边缘上的位输出2403按宽度为基础写入位存储器c。相比之下,部分和数据路径c-1的右侧边缘上的位输出2602简单的按RAM为基础写入位存储器c,如下面详细描述的。同样,外部数据路径1602的右侧边缘上的位输出2504按RAM为基础写入位存储器1。在一些替代示例中,按宽度的位存储器访问可以被按RAM的访问替换,反之亦然,但是这意味着与下面和其它地方所描述的数据路径接口和控制器1606设计不同的数据路径接口和控制器1606设计。
对于位存储器块1605和数据路径之间的按宽度的接口和按RAM的接口两者,数据路径的输入或输出中具有位置l∈[0,ni-1]的位从存储器块1605中的特定一个RAM的深度内的特定地址的宽度内的特定位置被读取或被写入该位置。存储器块1605内的这个位置可以由宽度坐标wl∈[0,ni-1]、深度坐标和RAM坐标来识别。如上面所提到的,每个存储器块1605中的位的布置以及所提出的极化解码器内核111的操作使得特定位存储器块1605内的个RAM的地址端口2802、2804可以全部绑在一起。这意味着,对于按宽度的接口和按RAM的接口两者,一起被访问的所有ni位具有相同的深度坐标,即对于所有l∈[0,ni-1],dl都将具有相同的值。
此外,在按宽度的数据路径接口中具有位置l∈[0,ni-1]的位仅访问具有对应宽度坐标wI=I的位存储器块1605中的位置。但是,数据路径接口中的这个位可能需要在极化解码处理期间的不同时间访问任何可能的RAM坐标因此,多路复用器2805是向按宽度的数据路径输入提供第l位所需的唯一电路系统。
更具体而言,这个多路复用器2805在由个RAM中的每一个的读取端口2801中的第l个位置提供的位之间进行选择,如图28所示。在此,在一些示例中,要求控制器1606向位存储器块1605提供ni个RAM读取坐标,该RAM读取坐标可以被解码以便向这ni个多路复用器2805的每一个提供单独的控制信号。相比之下,对于按宽度的数据路径输出的第l位不需要附加的电路系统,因为这个位可以被提供给个RAM中的每一个的写入端口中的第l个位置并且写使能信号1616可以用于控制这些RAM中的哪个被更新。在此,在一些示例中,要求控制器1606将ni个RAM写入坐标提供给位存储器块605,该RAM写入坐标可以被解码以便断言ni个写使能信号1616。
此外,在数据路径的按RAM的输出中位置为l∈[0,ni-1]的位仅被写入存储器块1605中具有对应RAM坐标的位置。但是,在极化解码处理期间的不同时间,可能需要将这个位写入任何可能的宽度坐标wl∈[0,ni-1]。因此,如图28所示,多路复用器2806是向RAM的个写入端口2803中的每一个提供ni个输入中的每一个所需的的唯一电路系统。这是因为,具有RAM坐标rI的RAM的每个输入仅从具有满足的位置l∈[0,ni-1]的数据路径输出的子集中选择。在此,可以要求控制器1606向存储器块1605提供ni个宽度写入坐标,该宽度写入坐标可以被解码以断言ni个写使能信号1616,以及向ni个多路复用器2806的对应子集提供控制信号。
如上所述,在访问内部列c中的子行1704的解码处理的步骤中,从具有索引c′∈[1,c-1]的每个位存储器按宽度读取位的特定选择,通过具有索引c′的部分和数据路径1603传递并按RAM写入具有索引c′+1的位存储器块1605。应注意的是,位存储器c′中通过部分和数据路径c′-1按RAM写入的位置的子集也将由部分和数据路径c′按宽度读取。因此,具有在2到c′-1范围内的索引的位存储器以透明模式被操作,使得在解码处理的相同步骤中,由写入操作提供的这些位值变得可用于读取操作。更具体而言,作为从位存储器c′中的每个RAM的读取端口到其写入端口1617的反馈的补充,提供了旁路1610,使得由部分和数据路径c′-1提供给写入端口2803的位可以直接被馈送到读取端口2801。如图28所示,提供多路复用器1610以在由位存储器c′的读取端口2801提供的输出与由部分和数据路径c′-1提供的输入之间进行选择。这些多路复用器可以由控制对应写入端口的操作的相同写使能信号1616驱动。这允许位通过本文描述的部分和数据路径1603和位存储器块1605的链从位存储器1传播1805,并被递送到内部数据路径1601的左侧边缘上的位输入2401。在此,控制器1606向位存储器块1605提供控制信号,以确保正确的位在部分和数据路径1603中一起被XOR 2101。在内部数据路径1601操作完成之后,由位输出2403在其左侧边缘上提供的位被写入具有索引c的位存储器块1605。在此,在到写入端口2803的输入处提供多路复用器1613,以在由内部数据路径1601与部分和数据路径c′-1提供的输出之间进行选择。应注意的是,这些多路复用器1613处于从其进行透明旁路1610的点之后,以便防止产生无穷无尽的反馈回路。
控制器
如前所述,所提出的极化解码处理包括总共个步骤。在处理1806具有索引c的内部列1702中的子行1704的每个步骤期间,要求控制器1606向具有索引1至c的位存储器块1605提供读控制信号。此外,要求控制器1606在处理1806具有索引c∈[1,C-2]的内部列1702中的子行1704时向LLR存储器c+1或者在处理1806内部列C-1的子行1704时向LLR存储器Cmax提供读控制信号。此外,当处理1806具有索引c的内部列1702中的子行1704时,要求控制器1606向具有索引2至c的位存储器块1605以及向具有索引c的LLR存储器块1604提供写控制信号。在处理1804具有索引c=0的外部列1701中的行1703的每个步骤期间,要求控制器1606向位存储器1提供写控制信号,并且如果C>1则向LLR存储器1提供读控制信号,或者如果C=1则向LLR存储器Cmax提供读控制信号。控制器1606被设计为使得每个存储器写入操作将对应的位或LLR无缝地布置在存储器中,使得它们随后可以被无缝地读取,而不需要复杂的互连网络。
除了在图18的流程图中使用的各种信号之外,控制器1606的操作还取决于被称为第一索引jc∈[0,N-1]的信号。这表示极化码图201、202、203的属于列c中当前正被访问的子行1704的最顶部连接的垂直索引,其中对于最顶部的行1703中的最顶部的子行1704,jc=0。第一索引可以根据jc=ycrc+s.获得,其中yc∈[0,N(rc/-1)]是列c中当前正被访问的行1703的索引,并且s∈[0,max(rc/ni,1)-1]是该行1703中正被访问的子行1704的索引。在通过相继的位存储器块1605和部分和数据路径1603的副本传播1805部分和位的处理期间,与列c′∈[1,c-1]中的每一个相关联的第一索引根据下式获得:
如先前在一些示例中所描述的,对LLR存储器块1604的读取和写入访问都可以按宽度执行。LLR存储器块c的输入或输出中的位置l∈[1,ni-1]访问存储在特定深度dl和宽度wl坐标处的LLR,其中在所有情况下w=l。
如本文在一些示例中所描述的,假设提供电路以从所提出的极化解码器内核111的对应输入1607将LLR加载1802到LLR存储器Cmax中。要求控制器1606操作这个加载电路,使得当内部数据路径1601对列C-1中的特定子行1704执行处理1806时,它可以使用以下深度坐标读取来自LLR存储器Cmax的对应LLR:
此外,当内部数据路径1601或外部数据路径1602对于列、c∈[0,C-2]中的特定子行1704执行处理1804、1806时,它使用以下深度坐标从LLR存储器c+1进行读取:
相比之下,当内部数据路径1601对列c中的特定子行1704执行处理1806时,它使用以下深度坐标写入LLR存储器c:
在此,可以观察到,宽度坐标ωl=l与第一索引jc无关,因此可以根据在一些示例中描述的按宽度的操作进行硬连线。相比之下,深度dl坐标必须由控制器1606根据第一索引jc来控制。但是,应注意的是,深度坐标dl与位索引l无关,仅要求控制器1606向存储器块1604提供单个地址2702、2704。应注意的是,如果断言了在对应位置l∈[0,ni-1]的写使能信号1615,那么在写入端口的位置l∈[0,ni-1]中提供的LLR仅被写到LLR存储器块1604。如一些示例中所描述的。
如一些示例中所描述的,由内部数据路径1601对位存储器块1605进行的读取和写入访问均按宽度进行。对于这些按宽度的存储器访问,位存储器c的输入或输出中的位置l∈[0,ni-1]访问存储在根据下式的特定深度dl、RAM rl和宽度ωl坐标处的位:
wl=l.。
在此,可以观察到,宽度坐标wl=l与第一索引jc无关,因此可以根据在一些示例中描述的按宽度的操作进行硬连线。相比之下,深度dl和RAM rl坐标必须由控制器1606根据第一索引jc来控制。但是,应注意的是,深度坐标dl与位索引l无关,仅要求控制器1606向存储器块提供单个地址2802、2804。应注意的是,在ni>rc.的一些情况下,上述方法可能导致输入位中的两个或更多个试图写入位存储器块1605中的相同位置。在这种情况下,具有最低索引l的位应当被写入存储器,而其它竞争位可以被安全地丢弃。
如一些示例中所描述的,由外部数据路径1602和部分和数据路径1603对位存储器块1605的写入访问是按RAM执行的。对于这些按RAM的存储器访问,位存储器c+1的输入中的位置l∈[0,ni-1]访问存储在根据下式的特定深度dl、RAM rl和宽度wl坐标处的位:
在此,可以观察到,RAM坐标与第一索引jc无关,因此可以根据在一些示例中描述的按RAM的操作来进行硬连线。相比之下,深度dl和宽度wl坐标必须由控制器1606根据第一索引jc来控制。但是,应注意的是,深度坐标dl与位索引l无关,仅要求控制器1606向存储器块提供单个地址2802、2804。控制存储器读取和写入操作的上述方法导致存储器块1604、1605内的LLR和位的特征布置。
图29至图33提供了在完成解码处理之后这个特征布置的各种示例。每个图都图示了提供在对应存储器块1604、1605中的每个RAM、深度和宽度坐标处存储的LLR或位的极化图201、202、203中两个相邻列1701、1702之间的连接的索引j∈[0,N-1]。
图29图示了根据本发明示例实施例的对于N=128、Nmax=128、so=1、si=2且ni=8的情况在解码处理完成之后LLR的内容的示例2900。
图30图示了根据本发明示例实施例的对于N=64、Nmax=128、so=1、si=2且ni=8的情况在解码处理完成之后LLR和位存储器的内容的示例3000。
图31图示了根据本发明示例实施例的对于N=32、Nmax=128、so=1、si=2且ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例3100。
图32图示了根据本发明示例实施例的对于N=16、Nmax=128、so=1、si=2且ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例3200。
图33图示了根据本发明示例实施例的对于N=8、Nmax=128、so=1、si=2且ni=8的情况在解码处理完成之后的LLR和位存储器的内容的示例3300。
计算系统示例:
现在参考图34,图示了根据本发明的一些示例实施例的可以被用来实现极化编码的典型计算系统3400。这种类型的计算系统可以用在无线通信单元中。相关领域的技术人员还将认识到如何使用其它计算机系统或体系架构来实现本发明。计算系统3400可以表示例如台式计算机、膝上型计算机或笔记本计算机、手持式计算设备(PDA、电话、掌上电脑等)、大型机、服务器、客户端或对于给定的应用或环境可能是期望或适当的任何其它类型的专用或通用计算设备。计算系统3400可以包括一个或多个处理器,诸如处理器3404。处理器3404可以使用诸如例如微处理器、微控制器或其它控制逻辑的通用或专用处理引擎来实现。在这个示例中,处理器3404连接到总线3402或其它通信介质。在一些示例中,计算系统3400可以是包括存储在其中的用于执行极化编码的可执行代码的非暂态有形计算机程序产品。
计算系统3400还可以包括主存储器3408,诸如随机存取存储器(RAM)或其它动态存储器,用于存储将由处理器3404执行的信息和指令。主存储器3408还可以用于在执行要由处理器3404执行的指令期间存储临时变量或其它中间信息。计算系统3400同样可以包括耦合到总线3402的只读存储器(ROM)或其它静态存储设备,用于存储用于处理器3404的静态信息和指令。
计算系统3400还可以包括信息存储系统3410,该信息存储系统3410可以包括例如介质驱动器3412和可移动存储接口3420。介质驱动器3412可以包括支持固定或可移动存储介质的驱动器或其它机制,诸如硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、光盘(CD)或数字视频驱动器(DVD)读或写驱动器(R或RW)或其它可移动或固定介质驱动器。存储介质3418可以包括例如硬盘、软盘、磁带、光盘、CD或DVD,或由介质驱动器3412读取和写入的其它固定或可移动介质。如这些示例所示,存储介质3418可以包括具有存储在其中的特定计算机软件或数据的计算机可读存储介质。
在替代实施例中,信息存储系统3410可以包括用于允许将计算机程序或其它指令或数据加载到计算系统3400中的其它类似部件。此类部件可以包括例如可移动存储单元3422和接口3420,诸如程序盒和盒接口、可移动存储器(例如,闪存或其它可移动存储器模块)和存储槽、以及允许将软件和数据从可移动存储单元3418传送到计算系统3400的其它可移动存储单元3422和接口3420。
计算系统3400还可以包括通信接口3424。通信接口3424可以用于允许软件和数据在计算系统3400与外部设备之间传送。通信接口3424的示例可以包括调制解调器、网络接口(诸如以太网或其它NIC卡)、通信端口(诸如例如通用串行总线(USB)端口)、PCMCIA槽和卡等。经由通信接口3424传送的软件和数据的形式为信号,该信号可以是电子信号、电磁信号和光学信号、或能够被通信接口3424接收的其它信号。这些信号经由信道3428被提供给通信接口3424。这个信道3428可以携带信号,并且可以使用无线介质、电线或线缆、光纤或其它通信介质来实现。信道的一些示例包括电话线、蜂窝电话链路、RF链路、网络接口、局域网或广域网以及其它通信信道。
在本文档中,术语“计算机程序产品”、“计算机可读介质”等一般可以用来指代诸如例如存储器3408、存储设备3418或存储单元3422的介质。这些和其它形式的计算机可读介质可以存储一个或多个指令以供处理器3404使用,以使处理器执行指定的操作。这些指令(一般被称为“计算机程序代码”(可以以计算机程序或其它分组的形式分组))在被执行时,使得计算机系统3400能够执行本发明的实施例的功能。应注意的是,代码可以直接使处理器执行指定的操作、被编译为执行指定的操作,和/或与其它软件、硬件和/或固件元素(例如,用于执行标准函数的库)组合以执行指定的操作。
在使用软件实现元素的实施例中,可以使用例如可移动存储驱动器3422、驱动器3412或通信接口3424将软件存储在计算机可读介质中并加载到计算系统3400中。控制逻辑(在这个示例中为软件指令或计算机程序代码)在由处理器3404执行时,使处理器3404执行本文所述的本发明的功能。
在前述说明书中,已经参考本发明的实施例的具体示例描述了本发明。但是,将显而易见的是,在不脱离所附权利要求书阐述的本发明的范围的情况下,可以在其中进行各种修改和改变,并且权利要求书不限于上述具体示例。
如本文讨论的连接可以是适于例如经由中间设备从相应节点、单元或设备或向相应节点、单元或设备传送信号的任何类型的连接。因而,除非另有暗示或说明,否则连接可以例如是直接连接或间接连接。可以参考单个连接、多个连接、单向连接或双向连接来图示或描述连接。但是,不同的实施例可以改变连接的实施方式。例如,可以使用分开的单向连接而不是双向连接,反之亦然。而且,多个连接可以被单个连接代替,该单个连接串行地或以时分复用的方式传送多个信号。同样,可以将携带多个信号的单个连接分离为携带这些信号的子集的各种不同的连接。因此,存在许多用于传送信号的选项。
本领域技术人员将认识到,本文描述的体系架构仅仅是示例性的,并且实际上可以实施实现相同功能的许多其它体系架构。
有效地“关联”用于实现相同功能的部件的任何布置,从而实现期望的功能。因此,本文中被组合以实现特定功能的任何两个部件可以被视为彼此“关联”,使得实现期望的功能,而不管体系架构或中间部件如何。同样,如此关联的任何两个部件也可以被视为彼此“可操作地连接”或“可操作地耦合”以实现期望的功能。
此外,本领域技术人员将认识到,上述操作之间的边界仅仅是说明性的。可以将多个操作组合成单个操作,可以将单个操作分布在附加操作中,并且可以在时间上至少部分重叠地执行操作。而且,替代实施例可以包括特定操作的多个实例,并且在各种其它实施例中可以改变操作的次序。
本文参考包括例如被配置为执行极化编码器的功能的微处理器的集成电路设备来描述本发明。但是,将认识到的是,本发明不限于这样的集成电路设备,并且可以等同地应用于包括任何替代类型的操作功能的集成电路设备。仅仅作为示例,包括替代类型的操作功能的这种集成电路设备的示例可以包括专用集成电路(ASIC)设备、现场可编程门阵列(FPGA)设备或与其它部件集成等。此外,因为本发明的所示实施例大部分可以使用本领域技术人员已知的电子部件和电路来实现,所以为了理解和认识本发明的底层概念并且为了不混淆或分散本发明的教导,没有比认为必需的程度更详细地解释细节。可替代地,电路和/或部件示例可以被实现为以合适的方式彼此互连的任何数量的单独的集成电路或单独的设备。
又例如,示例或其部分可以被实现为物理电路系统的软件或代码表示,或者被实现为可转换成物理电路系统的逻辑表示的软件或代码表示,诸如以任何适当类型的硬件描述语言表示的。
而且,本发明不限于以非可编程硬件实现的物理设备或单元,而是还可以应用于能够通过根据合适的程序代码进行操作来执行期望的极化编码的可编程设备或单元,诸如小型计算机、个人计算机、记事本、个人数字助理、电子游戏、汽车和其它嵌入式系统、电话以及其它各种无线设备,在本申请中共同被称为“计算机系统”。
但是,其它修改、变化和替代也是可能的。因而,说明书和附图应被认为是说明性的而不是限制性的意义。
在权利要求中,放在括号之间的任何参考符号不应当被解释为对权利要求的限制。词“包括”并不排除权利要求中列出的元素或步骤之外的其它元素或步骤的存在。此外,如本文所使用的,术语“一”或“一个”被定义为一个或多于一个。而且,在权利要求中使用诸如“至少一个”和“一个或多个”之类的介绍性短语不应当被解释为暗示由不定冠词“一”或“一个”介绍的另一个权利要求元素将包含这样介绍的权利要求元素的任何特定权利要求限制为仅包含一个这样的元素的发明,即使同一个权利要求包括介绍性短语“一个或多个”或“至少一个”以及不定冠词(诸如“一”或“一个”)。对于定冠词的使用也同样适用。除非另有说明,否则诸如“第一”和“第二”之类的术语用于任意区分此类术语描述的元素。因此,这些术语不一定旨在指示此类元素的时间或其它优先顺序。在互不相同的权利要求中记载某些方法的事实并不表示不能有利地使用这些方法的组合。
参考文献
[1]E.Arikan,"Channel polarization:A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels,"IEEETransactions on Information Theory,第55卷,第7期,第3051-3073页,2009年7月.
[2]K.Niu和K.Chen,"CRC-aided decoding of polar codes,"IEEECommunications Letters,第16卷,第10期,第1668-1671页,2012年10月.
[3]Huawei,HiSilicon,"Polar code construction for NR,"in 3GPP TSG RANWG1 Meeting#86bis,Lisbon,Portugal,2016年10月,R1-1608862.
[4]Huawei,HiSilicon,"Evaluation of channel coding schemes for controlchannel,"in 3GPP TSG RAN WG1 Meeting#86bis,Lisbon,Portugal,2016年10月,R1-1608863.
[5]CATT,"Polar codes design for eMBB control channel,"in 3GPP TSG RANWG1 AH NR Meeting,Spokane,USA,2017年1月,R1-1700242.
[6]ZTE,ZTE Microelectronics,"Rate matching of polar codes for eMBB,"in 3GPP TSG RAN WG1 Meeting#88,Athens,Greece,2017年2月,R1-1701602.
[7]I.Tal和A.Vardy,"List decoding of polar codes,"in 2011 IEEEInternational Symposium on Information Theory Proceedings,2011年7月,第1-5页.
[8]A.Balatsoukas-Stimming,M.B.Parizi和A.Burg,"Llr-based successivecancellation list decoding of polar codes,"IEEE Transactions on SignalProcessing,第63卷,第19期,第5165-5179页,2015年10月.
[9]K.Niu和K.Chen,"Crc-aided decoding of polar codes,"IEEECommunications Letters,第16卷,第10期,第1668-1671页,2012年10月.
[10]G.Sarkis,P.Giard,A.Vardy,C.Thibeault和W.J.Gross,"Fast polardecoders:Algorithm and implementation,"IEEE Journal on Selected Areas inCommunications,第32卷,第5期,第946-957页,2014年.
[11]P.Giard,A.Balatsoukas-Stimming,G.Sarkis,C.Thibeault和W.J.Gross,"Fast low-complexity decoders for low-rate polar codes,"Journal of SignalProcessing Systems,第1-11页,2016年.[在线].可在:http://dx.doi.orq/10.1007/ s11265-016-1173-y获得
[12]P.Giard,G.Sarkis,C.Thibeault和W.J.Gross,"237 gbit/s unrolledhardware polar decoder,"Electronics Letters,第51卷,第10期,第762-763页,2015年.
[13]P.Giard,G.Sarkis,C.Thibeault和W.J.Gross,"Multi-mode unrolledarchitectures for polar decoders,"IEEE Transactions on Circuits and SystemsI:Regular Papers,第63卷,第9期,第1443-1453页,2016年9月.
[14]C.Leroux,I.Tal,A.Vardy和W.J.Gross,"Hardware architectures forsuccessive cancellation decoding of polar codes,"in 2011 IEEE InternationalConference on Acoustics,Speech and Signal Processing(ICASSP),2011年5月,第1665-1668页.
[15]C.Leroux,A.J.Raymond,G.Sarkis和W.J.Gross,"A semi-parallelsuccessive-cancellation decoder for polar codes,"IEEE Transactions on SignalProcessing,第61卷,第2期,第289-299页,2013年1月.
[16]A.Mishra,A.J.Raymond,L.G.Amaru,G.Sarkis,C.Leroux,P.Meinerzhagen,A.Burg和W.J.Gross,"A successive cancellation decoder asic for a 1024-bitpolar code in 180nm cmos,"in 2012 IEEE Asian Solid State Circuits Conference(A-SSCC),2012年11月,第205-208页.
[17]Y.Fan和C.y.Tsui,"An efficient partial-sum network architecturefor semi-parallel polar codes decoder implementation,"IEEE Transactions onSignal Processing,第62卷,第12期,第3165-3179页,2014年6月.
[18]A.Balatsoukas-Stimming,A.J.Raymond,W.J.Gross和A.Burg,"Hardwarearchitecture for list successive cancellation decoding of polar codes,"IEEETransactions on Circuits and Systems II:Express Briefs,第61卷,第8期,第609-613页,2014年8月.
[19]J.Lin和Z.Yan,"An efficient list decoder architecture for polarcodes,"IEEE Transactions on Very Large Scale Integration(VLSI)Systems,第23卷,第11期,第2508-2518页,2015年11月.
[20]Y.Fan,J.Chen,C.Xia,C.y.Tsui,J.Jin,H.Shen和B.Li,"Low-latency listdecoding of polar codes with double thresholding,"in 2015 IEEE InternationalConference on Acoustics,Speech and Signal Processing(ICASSP),2015年4月,第1042-1046页.
[21]J.Lin,C.Xiong和Z.Yan,"A high throughput list decoder architecturefor polar codes,"IEEE Transactions on Very Large Scale Integration(VLSI)Systems,第24卷,第6期,第2378-2391页,2016年6月.
[22]Y.Fan,C.Xia,J.Chen,C.Y.Tsui,J.Jin,H.Shen和B.Li,"A low-latencylist successive-cancellation decoding implementation for polar codes,"IEEEJournal on Selected Areas in Communications,第34卷,第2期,第303-317页,2016年2月.
[23]G.Berhault,C.Leroux,C.Jego和D.Dallet,"Hardware implementation ofa soft cancellation decoder for polar codes,"in 2015 Conference on Design andArchitectures for Signal and Image Processing(DASIP),2015年9月,第1-8页.
[24]G.Sarkis,I.Tal,P.Giard,A.Vardy,C.Thibeault和W.J.Gross,"Flexibleand low-complexity encoding and decoding of systematic polar codes,"IEEETransactions on Communications,第64卷,第7期,第2732-2745页,2016年7月.
[25]C.Zhang,B.Yuan和K.K.Parhi,"Reduced-latency sc polar decoderarchitectures,"in 2012IEEE International Conference on Communications(ICC),2012年6月,第3471-3475页.
[26]B.Yuan和K.K.Parhi,"Low-latency successive-cancellation polardecoder architectures using 2-bit decoding,"IEEE Transactions on Circuits andSystems I:Regular Papers,第61卷,第4期,第1241-1254页,2014年4月.
[27]O.Dizdar和E.Arkan,"A high-throughput energy-efficientimplementation of successive cancellation decoder for polar codes usingcombinational logic,"IEEE Transactions on Circuits and Systems I:RegularPapers,第63卷,第3期,第436-447页,2016年3月.
[28]C.Xiong,J.Lin和Z.Yan,"A multimode area-efficient scl polardecoder,"IEEE Transactions on Very Large Scale Integration (VLSI)Systems,第24卷,第12期,第3499-3512页,2016年12月.
[29]C.Kim,H.Yun,S.Ajaz和H.Lee,"High-throughput low-complexitysuccessive-cancellation polar decoder architecture using ones complementscheme,"Journal of Semiconductor Technology and Science,第15卷,第3期,第427-435页,2015年.
[30]A.Pamuk和E.Arkan,"A two phase successive cancellation decoderarchitecture for polar codes,"in 2013IEEE International Symposium onInformation Theory,2013年7月,第957-961页.
[31]X.Liang,J.Yang,C.Zhang,W.Song和X.You,"Hardware efficient and low-latency ca-scl decoder based on distributed sorting,"in 2016IEEE GlobalCommunications Conference(GLOBECOM),2016年12月,第1-6页.
[32]C.Xiong,J.Lin和Z.Yan,"Symbol-decision successive cancellationlist decoder for polar codes,"IEEE Transactions on Signal Processing,第64卷,第3期,第675-687页,2016年2月.
[33]B.Yuan和K.K.Parhi,"Low-latency successive-cancellation listdecoders for polar codes with multibit decision,"IEEE Transactions on VeryLarge Scale Integration(VLSI)Systems,第23卷,第10期,第2268-2280页,2015年10月.
[34]C.Zhang和K.K.Parhi,"Low-latency sequential and overlappedarchitectures for successive cancellation polar decoder,"IEEE Transactions onSignal Processing,第61卷,第10期,第2429-2441页,2013年5月.
[35]T.Che和G.S.Choi,"An efficient partial sums generator forconstituent code based successive cancellation decoding of polar codes,"CoRR,第abs/1611.09452卷,2016年.[在线].可在:http://arxiv.org/abs/161 1.09452获得
[36]J.Sha,X.Liu,Z.Wang和X.Zeng,"A memory efficient belief propagationdecoder for polar codes,"China Communications,第12卷,第5期,第34-41页,2015年5月.
[37]H.Yoo和I.C.Park,"Partially parallel encoder architecture for longpolar codes,"IEEE Transactions on Circuits and Systems II:Express Briefs,第62卷,第3期,第306-310页,2015年3月.
Claims (19)
1.一种极化编码器电路(600、1600),其特征在于:
一条或多条数据路径(601、1601、1602、1603);
至少一个逻辑三维3D存储器块(602、603、1605),耦合到所述一条或多条数据路径(601、1601、1602、1603)并且包括逻辑3D存储器块的一个或多个随机存取存储器RAM(1107、2807)的数量作为第一维度,其中所述一个或多个RAM(1107、2807)包括一个或多个元素的宽度作为第二维度以及一个或多个地址的深度作为第三维度,并且其中第一维度或第二维度具有尺寸其中sd是在所述一条或多条数据路径(601、1601、1602、1603)中的数据路径中的级数;以及
控制器(604、1606),耦合到所述至少一个逻辑3D存储器块(602、603、1605)并且被配置为指引所述一条或多条数据路径(601、1601、1602、1603)处理跨第一维度和第二维度中的至少一个维度从所述至少一个逻辑3D存储器块(602、603、1605)读取的位,并且被配置为指引所述一条或多条数据路径(601、1601、1602、1603)将经处理的位跨第一维度和第二维度中的至少一个维度写入所述至少一个逻辑3D存储器块(602、603、1605)。
2.如权利要求1所述的极化编码器电路(600、1600),其中第一维度和第二维度中的另一个具有尺寸nd,其中nd是所述一条或多条数据路径(601、1601、1602、1603)的输入或输出中的元素数量。
3.如权利要求1或权利要求2所述的极化编码器电路(600、1600),其中sd是所述一条或多条数据路径(601、1601、1602、1603)中被配置为计算极化码子图的XOR运算的级数。
4.如权利要求2或权利要求3所述的极化编码器电路(600、1600),其中所述至少一个逻辑3D存储器块(602、603、1605)根据第一维度、第二维度和第三维度将元素存储在多个坐标中,并且所述控制器(604、1606)被配置为:
指引第一数据路径从第一逻辑3D存储器块(602、603、1605)中的nd个不同坐标读取nd个数据路径输入元素;以及
指引第二数据路径将nd个数据路径输出元素写入第二逻辑3D存储器块(602、603、1605)中的nd个不同坐标。
5.如权利要求4所述的极化编码器电路(600、1600),其中适用于以下中的至少一种情况:
读取nd个数据路径输入元素和写入nd个数据路径输出元素的操作在不同的时间实例发生;
单个数据路径包括第一数据路径和第二数据路径;
单个逻辑3D存储器块(602、603、1605)包括第一逻辑3D存储器块(602、603、1605)和第二逻辑3D存储器块(602、603、1605)。
6.如权利要求4所述的极化编码器电路(600、1600),其中:
所有nd个数据路径输入元素沿着第一逻辑3D存储器块(602、603、1605)的第三维度从具有相同坐标值的元素位置中被读取,以及
所有nd个数据路径输出元素沿着第二逻辑3D存储器块(602、603、1605)的第三维度被写入具有相同坐标值的元素位置。
7.如前述权利要求2至6中任一项所述的极化编码器电路(600、1600),还包括耦合到所述控制器(604、1606)的至少一个多路复用器(1104、2805),其中所述控制器(604、1606)被配置为指引所述至少一个多路复用器(1104、2805)从第一逻辑3D存储器块(602、603、1605)中的一个元素位置读取具有索引l∈[0,nd-1]的数据路径输入元素,该元素位置具有沿着第一维度或第二维度中的第一个维度的作为索引l的函数的坐标。
8.如前述权利要求2至7中任一项所述的极化编码器电路(600、1600),还包括耦合到所述控制器(604、1606)的至少一个多路复用器(1105、2806),其中所述控制器(604、1606)被配置为指引所述至少一个多路复用器(1105、2806)将具有索引l∈[0,nd-1]的数据路径输出元素写入第二逻辑3D存储器块(602、603、1605)中的一个元素位置,该元素位置具有沿着第一维度或第二维度中的第二个维度的坐标mod(l,d2),其中d2是第二逻辑3D存储器块(602、603、1605)的维度的尺寸。
9.如前述权利要求中任一项所述的极化编码器电路(600),被配置为使用所述一条或多条数据路径中的一条数据路径以及第一逻辑3D存储器块(602、603)和第二逻辑3D存储器块(602、603)执行极化编码操作,并且其中极化编码操作包括将极化码图分解成多个列(702),并且其中每一列被进一步分解成一个或多个极化码子图(701),其中在处理来自具有偶数索引(c∈{0,2,4,...})的任何列的极化码子图期间从第一逻辑3D存储器块(602、603)读取数据路径输入元素并将数据路径输出元素写入第二逻辑3D存储器块(602、603),并且在处理来自具有奇数索引(c∈{1,3,5,...})的列的极化码子图期间从第二逻辑3D存储器块读取数据路径输入元素并将数据路径输出元素写入第一逻辑3D存储器块。
11.如前述权利要求中任一项所述的极化编码器电路(1600),被配置为使用所述一条或多条数据路径中的Cmax-1条数据路径和Cmax-1个逻辑3D存储器块来执行极化解码操作,并且其中极化解码操作包括将极化码图(201、202、203)分解成C∈[1,Cmax]个列(1701、1702),其中C随块而变化并且Cmax是最大支持的列数,以及被分解成C∈[1,Cmax]个列(1701、1702),其中C能够随块而变化并且Cmax是最大支持的列数,并且其中每一列(1701、1702)包括多个行(1703)并且每一行包括多个子行(1704),其中在处理来自具有索引c∈[0,C-1]的列(1701、1702)的子行(1704)期间,具有索引c的数据路径从具有索引c的逻辑3D存储器块(602、603)读取数据路径输入元素并且将数据路径输出元素写入具有索引c+1的逻辑3D存储器块(602、603)。
13.如权利要求11或权利要求12所述的极化编码器电路(1600),其中所述一条或多条数据路径中的Cmax-1条数据路径的子集被同时操作,并且所述Cmax-1个逻辑3D存储器块(602、603)的子集被透明操作,以便使元素传播通过相继的列。
14.如前述权利要求中任一项所述的极化编码器电路(1600),其中在所述一条或多条数据路径中的数据路径的输出处提供的每组n位在单个写入操作中被写入所述至少一个逻辑3D存储器块(602、603),并且在所述一条或多条数据路径中的数据路径的输入处所需的每组n位能够在单个读取操作中从所述至少一个逻辑3D存储器块(602、603)无缝获得。
15.如前述权利要求中任一项所述的极化编码器电路(600、1600),其中当极化编码器电路(600、1600)被配置为执行极化编码操作和极化相继抵消SC解码操作中的一个时,所述一个或多个元素中的每一个元素是一位,或者当极化编码器电路(1600)被配置为以列表尺寸L执行相继抵消列表SCL解码操作时,所述一个或多个元素中的每一个元素包括L位的向量。
16.一种通信单元,包括极化编码器电路(600、1600),其特征在于:
一条或多条数据路径(601、1601、1602、1603);
至少一个逻辑三维3D存储器块(602、603、1605),耦合到所述一条或多条数据路径(601、1601、1602、1603)并且包括逻辑3D存储器块的一个或多个随机存取存储器RAM(1107、2807)的数量作为第一维度,其中所述一个或多个RAM(1107、2807)包括一个或多个元素的宽度作为第二维度以及一个或多个地址的深度作为第三维度,并且其中第一维度或第二维度具有尺寸其中sd是在所述一条或多条数据路径(601、1601、1602、1603)中的数据路径的级数;以及
控制器(604、1606),耦合到所述至少一个逻辑3D存储器块(602、603、1605)并且被配置为指引所述一条或多条数据路径(601、1601、1602、1603)处理跨第一维度和第二维度中的至少一个维度从所述至少一个逻辑3D存储器块(602、603、1605)读取的位,并且被配置为指引所述一条或多条数据路径(601、1601、1602、1603)将经处理的位跨第一维度和第二维度中的至少一个维度写入所述至少一个逻辑3D存储器块(602、603、1605)。
17.一种用于无线通信单元的集成电路,该集成电路包括极化编码器电路(600、1600),其特征在于:
一条或多条数据路径(601、1601、1602、1603);
至少一个逻辑三维3D存储器块(602、603、1605),耦合到所述一条或多条数据路径(601、1601、1602、1603)并且包括逻辑3D存储器块的一个或多个随机存取存储器RAM(1107、2807)的数量作为第一维度,其中所述一个或多个RAM(1107、2807)包括一个或多个元素的宽度作为第二维度以及一个或多个地址的深度作为第三维度,并且其中第一维度或第二维度具有尺寸其中sd是在所述一条或多条数据路径(601、1601、1602、1603)中的数据路径中的级数;以及
控制器(604、1606),耦合到所述至少一个逻辑3D存储器块(602、603、1605)并且被配置为指引所述一条或多条数据路径(601、1601、1602、1603)处理跨第一维度和第二维度中的至少一个维度从所述至少一个逻辑3D存储器块(602、603、1605)读取的位,并且被配置为指引所述一条或多条数据路径(601、1601、1602、1603)将经处理的位跨第一维度和第二维度中的至少一个维度写入所述至少一个逻辑3D存储器块(602、603、1605)。
18.一种在极化编码器电路中进行极化编码的方法,所述极化编码器电路包括一条或多条数据路径(601、1601、1602、1603)和耦合到所述一条或多条数据路径(601、1601、1602、1603)的至少一个逻辑三维3D存储器块(602、603、1605),所述方法的特征在于:
将所述至少一个逻辑3D存储器块(602、603、1605)分派为第一维度、第二维度和第三维度,其中第一维度是逻辑3D存储器块(602、603、1605)的一个或多个随机存取存储器RAM(1107、2807)的数量;第二维度是所述一个或多个RAM(1107、2807)中的每一个RAM的一个或多个元素的宽度;第三维度是所述一个或多个RAM(1107、2807)中的每一个RAM的一个或多个地址的深度;其中第一维度或第二维度具有尺寸其中sd是在所述一条或多条数据路径(601、1601、1602、1603)中的数据路径中的级数;以及
指引所述一条或多条数据路径(601、1601、1602、1603)处理跨第一维度和第二维度中的至少一个维度从所述至少一个逻辑3D存储器块(602、603、1605)读取的位;以及
指引所述一条或多条数据路径(601、1601、1602、1603)将经处理的位跨第一维度和第二维度中的至少一个维度写入所述至少一个逻辑3D存储器块(602、603、1605)。
19.一种非暂态有形计算机程序产品,包括存储在其中的用于极化编码的可执行代码,其中代码的特征在于,当在极化编码器处执行时,它能够操作以执行如权利要求18所述的方法。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1709505.0 | 2017-06-15 | ||
GB1709502.7 | 2017-06-15 | ||
GB1709502.7A GB2563418B (en) | 2017-06-15 | 2017-06-15 | Polar encoder, communication unit, integrated circuit and method therefor |
GB1709505.0A GB2563419B (en) | 2017-06-15 | 2017-06-15 | Polar decoder, communication unit, integrated circuit and method therefor |
GB1709507.6 | 2017-06-15 | ||
GBGB1709507.6A GB201709507D0 (en) | 2017-06-15 | 2017-06-15 | Flexible polar encoder and decoder architectures |
GB1801218.7A GB2563473B (en) | 2017-06-15 | 2018-01-25 | Polar coder with logical three-dimensional memory, communication unit, integrated circuit and method therefor |
GB1801218.7 | 2018-01-25 | ||
PCT/EP2018/065545 WO2018229071A1 (en) | 2017-06-15 | 2018-06-12 | Polar coder with logical three-dimensional memory, communicaton unit, integrated circuit and method therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110741558A true CN110741558A (zh) | 2020-01-31 |
CN110741558B CN110741558B (zh) | 2023-08-01 |
Family
ID=61558032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880039350.5A Active CN110741558B (zh) | 2017-06-15 | 2018-06-12 | 具有逻辑三维存储器的极化编码器、通信单元、集成电路及其方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11146294B2 (zh) |
EP (2) | EP3639375B1 (zh) |
CN (1) | CN110741558B (zh) |
GB (1) | GB2563473B (zh) |
WO (1) | WO2018229071A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11620510B2 (en) * | 2019-01-23 | 2023-04-04 | Samsung Electronics Co., Ltd. | Platform for concurrent execution of GPU operations |
CN111181573B (zh) * | 2020-03-09 | 2023-08-18 | 北京华力创通科技股份有限公司 | 数据译码方法、装置及电子设备 |
CN114257332A (zh) * | 2020-09-23 | 2022-03-29 | 华为技术有限公司 | 一种数据处理方法、通信装置及通信设备 |
US11677500B2 (en) * | 2020-09-30 | 2023-06-13 | Polaran Haberlesme Teknolojileri Anonim Sirketi | Methods and apparatus for encoding and decoding of data using concatenated polarization adjusted convolutional codes |
US11664828B1 (en) * | 2021-09-24 | 2023-05-30 | Apple Inc. | Systems and methods for multithreaded successive cancellation list polar decoding |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188905A1 (en) * | 2001-06-08 | 2002-12-12 | Broadcom Corporation | System and method for interleaving data in a communication device |
KR20140050152A (ko) * | 2012-10-17 | 2014-04-29 | 삼성전자주식회사 | 불휘발성 메모리 장치를 제어하도록 구성되는 컨트롤러 및 컨트롤러의 동작 방법 |
CN103929280A (zh) * | 2014-03-31 | 2014-07-16 | 电信科学技术研究院 | 多级码本的生成方法和装置、以及码本反馈方法和装置 |
US20150077277A1 (en) * | 2013-09-16 | 2015-03-19 | Lsi Corporation | Reduced polar codes |
US20150220387A1 (en) * | 2013-09-27 | 2015-08-06 | Zion S. Kwok | Error correction in non_volatile memory |
CN105049061A (zh) * | 2015-04-28 | 2015-11-11 | 北京邮电大学 | 基于超前计算的高维基极化码译码器和极化码译码方法 |
US20150333775A1 (en) * | 2014-05-15 | 2015-11-19 | Broadcom Corporation | Frozen-Bit Selection for a Polar Code Decoder |
CN105378843A (zh) * | 2013-07-11 | 2016-03-02 | 高通股份有限公司 | 具有位单元和逻辑单元划分的单片式三维(3d)随机存取存储器(ram)阵列架构 |
CN105515590A (zh) * | 2015-12-09 | 2016-04-20 | 东南大学 | 一种基于随机二进制数据流的有效低复杂度串行抵消列表极化码译码算法及其译码构架 |
CN106209113A (zh) * | 2016-07-29 | 2016-12-07 | 中国石油大学(华东) | 一种极化码的编解码方法 |
CN106416083A (zh) * | 2014-05-30 | 2017-02-15 | 华为技术有限公司 | 一种打孔的极化码的构造方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US20080263319A1 (en) * | 2007-04-17 | 2008-10-23 | Cypress Semiconductor Corporation | Universal digital block with integrated arithmetic logic unit |
KR20120054571A (ko) | 2012-04-09 | 2012-05-30 | 전북대학교산학협력단 | 래딕스 4 기반의 폴라코드를 이용한 부호화방법 |
US8347186B1 (en) * | 2012-04-19 | 2013-01-01 | Polaran Yazilim Bilisim Danismanlik Ithalat Ihracat Sanayi Ticaret Limited Sirketi | Method and system for error correction in transmitting data using low complexity systematic encoder |
US10310734B2 (en) * | 2014-12-27 | 2019-06-04 | Intel Corporation | Tier mode for access operations to 3D memory |
CN108370255B (zh) * | 2015-11-24 | 2022-04-12 | 相干逻辑公司 | 极性码连续消去列表解码器中的存储器管理和路径排序 |
US10579452B2 (en) * | 2016-06-17 | 2020-03-03 | Huawei Technologies Co., Ltd. | Systems and methods for rate matching via a heterogeneous kernel when using general polar codes |
US10291264B2 (en) * | 2016-06-17 | 2019-05-14 | Huawei Technologies Co., Ltd. | Systems and methods for rate matching when using general polar codes |
US10447435B2 (en) * | 2016-08-19 | 2019-10-15 | Huawei Technologies Co., Ltd. | Reduced-stage polar decoding |
US10313056B2 (en) * | 2017-02-06 | 2019-06-04 | Mitsubishi Electric Research Laboratories, Inc. | Irregular polar code encoding |
-
2018
- 2018-01-25 GB GB1801218.7A patent/GB2563473B/en active Active
- 2018-06-12 EP EP18730358.1A patent/EP3639375B1/en active Active
- 2018-06-12 US US16/622,903 patent/US11146294B2/en active Active
- 2018-06-12 WO PCT/EP2018/065545 patent/WO2018229071A1/en unknown
- 2018-06-12 EP EP24150456.2A patent/EP4333309A3/en active Pending
- 2018-06-12 CN CN201880039350.5A patent/CN110741558B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188905A1 (en) * | 2001-06-08 | 2002-12-12 | Broadcom Corporation | System and method for interleaving data in a communication device |
KR20140050152A (ko) * | 2012-10-17 | 2014-04-29 | 삼성전자주식회사 | 불휘발성 메모리 장치를 제어하도록 구성되는 컨트롤러 및 컨트롤러의 동작 방법 |
CN105378843A (zh) * | 2013-07-11 | 2016-03-02 | 高通股份有限公司 | 具有位单元和逻辑单元划分的单片式三维(3d)随机存取存储器(ram)阵列架构 |
US20150077277A1 (en) * | 2013-09-16 | 2015-03-19 | Lsi Corporation | Reduced polar codes |
US20150220387A1 (en) * | 2013-09-27 | 2015-08-06 | Zion S. Kwok | Error correction in non_volatile memory |
CN103929280A (zh) * | 2014-03-31 | 2014-07-16 | 电信科学技术研究院 | 多级码本的生成方法和装置、以及码本反馈方法和装置 |
US20150333775A1 (en) * | 2014-05-15 | 2015-11-19 | Broadcom Corporation | Frozen-Bit Selection for a Polar Code Decoder |
CN106416083A (zh) * | 2014-05-30 | 2017-02-15 | 华为技术有限公司 | 一种打孔的极化码的构造方法和装置 |
CN105049061A (zh) * | 2015-04-28 | 2015-11-11 | 北京邮电大学 | 基于超前计算的高维基极化码译码器和极化码译码方法 |
CN105515590A (zh) * | 2015-12-09 | 2016-04-20 | 东南大学 | 一种基于随机二进制数据流的有效低复杂度串行抵消列表极化码译码算法及其译码构架 |
CN106209113A (zh) * | 2016-07-29 | 2016-12-07 | 中国石油大学(华东) | 一种极化码的编解码方法 |
Non-Patent Citations (2)
Title |
---|
HOYOUNG YOO等: "Partially Parallel Encoder Architecture for Long Polar Codes", 《 IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS II: EXPRESS BRIEFS》 * |
郝雪洁: "极化码的改进置信传播译码算法研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
GB2563473A (en) | 2018-12-19 |
GB201801218D0 (en) | 2018-03-14 |
EP3639375A1 (en) | 2020-04-22 |
EP4333309A2 (en) | 2024-03-06 |
EP3639375B1 (en) | 2024-02-14 |
EP3639375C0 (en) | 2024-02-14 |
US11146294B2 (en) | 2021-10-12 |
US20210159916A1 (en) | 2021-05-27 |
CN110741558B (zh) | 2023-08-01 |
EP4333309A3 (en) | 2024-05-15 |
WO2018229071A1 (en) | 2018-12-20 |
GB2563473B (en) | 2019-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110741557B (zh) | 通过合并极化码图的级的低延迟极化编码和解码 | |
CN110741558A (zh) | 具有逻辑三维存储器的极化编码器、通信单元、集成电路及其方法 | |
KR102386191B1 (ko) | 폴라 코드용의 블록 단위의 병렬 동결 비트 생성 | |
Liang et al. | Hardware efficient and low-latency CA-SCL decoder based on distributed sorting | |
CN112134570A (zh) | 一种应用于深空通信的多模式ldpc译码器 | |
CN116964945A (zh) | 原模图准循环极化码及相关的低密度生成矩阵族 | |
WO2021252066A1 (en) | Universal guessing random additive noise decoding (grand) decoder | |
CN110741559B (zh) | 极化编码器、通信单元、集成电路及其方法 | |
JP4815228B2 (ja) | ビタビ復号回路および無線機 | |
CN110022158B (zh) | 一种译码方法及装置 | |
Presman et al. | Matthew Brejza, Southampton (GB); Shida Zhong, Southampton (GB); Isaac Perez-Andrade, Southampton | |
Edara et al. | Implementation of LDPC Decoder using Barrel Shifter |
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 |