CN103986475B - 里德-所罗门伞型代码的并行分解 - Google Patents
里德-所罗门伞型代码的并行分解 Download PDFInfo
- Publication number
- CN103986475B CN103986475B CN201410045928.1A CN201410045928A CN103986475B CN 103986475 B CN103986475 B CN 103986475B CN 201410045928 A CN201410045928 A CN 201410045928A CN 103986475 B CN103986475 B CN 103986475B
- Authority
- CN
- China
- Prior art keywords
- reed
- solomon
- word
- subcode
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- 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/1515—Reed-Solomon 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/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/1525—Determination and particular use of error location polynomials
- H03M13/153—Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
-
- 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/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- 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/155—Shortening or extension of 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/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/1585—Determination of error values
-
- 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/159—Remainder calculation, e.g. for encoding and syndrome calculation
- H03M13/1595—Parallel or block-wise remainder calculation
-
- 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/6561—Parallelized implementations
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明的各实施方式总体上涉及里德‑所罗门伞型代码的并行分解。具体地,呈现了一种用于处理码字的系统、方法、装置和技术。接收长度为n个符号并且具有k个校验符号的里德‑所罗门母码字,并且接收的里德‑所罗门母码字的n个符号被分成v个里德‑所罗门子码字,其中v是与接收的里德‑所罗门母码字相关联的分解因子。在v个并行处理的相应子集中处理v个里德‑所罗门子码字以输出v个解码的码字。
Description
背景技术
许多现代应用在使用循环纠错代码(诸如里德-所罗门代码)在网络上传输数据之前对数据进行编码。此类代码能够提供强大的纠错能力。例如,长度为n并且包括n-k个校验符号的里德-所罗门代码可以检测多达t=n-k个错误符号的任意组合并且纠正多达个符号的任意组合,其中表示地板函数。
里德-所罗门代码逐渐地用于高速数据应用。例如,针对底板的IEEE802.3标准规定了里德-所罗门代码的使用。然而,足够快地对里德-所罗门代码解码以满足此类高速数据应用的吞吐量要求可能是具有挑战的。在一个方法中,多个前向纠错(FEC)电路被视为解码器的一部分,以便达到期望的数据吞吐量。虽然多个FEC电路可以以与整体器件成本(整体器件成本可以包括用于所需大小的裸片、数字逻辑和收发器以及封装的成本)相比相对低的成本实现,但是考虑到其他因素可能使得此类设计并不是所期望的。例如,实例化与最大情况下所需一样多的FEC可能导致现场可编程门阵列(FPGA)中包括太多的专用组件。
针对使用FEC代码(诸如里德-所罗门代码)的许多应用,其被设计用于“典型”信道。在已知信道具有比代码被设计更低的错误率的情况下,可以执行码字的部分解码。针对里德-所罗门代码,可以采取完整码字被编码并且仅解码错误多项式的子集的形式。备选地,码字可以仅被部分编码。
发明内容
呈现了一种用于处理码字的系统、方法、装置和技术。在某些布置中,接收长度为n个符号并且具有k个校验符号的里德-所罗门母码字,接收的里德-所罗门母码字的n个符号被分成v个里德-所罗门子(daughter)码字,其中v是与接收的里德-所罗门母码字相关联的分解因子。在v个并行处理的相应子集中处理v个里德-所罗门子码字以输出v个解码的码字。
在某些布置中,码字处理电路包括:接收器电路,被配置为接收长度为n个符号并且具有k个校验符号的里德-所罗门母码字;并行化电路,被配置为将接收的里德-所罗门母码字的n个符号分成v个里德-所罗门子码字,其中v是与里德-所罗门母码字相关联的分解因子;以及解码电路,被配置为在v个并行处理的相应集合中处理v个里德-所罗门子码字以输出v个解码的码字。
在某些布置中,错误定位多项式电路包括:以循环移位结构布置的寄存器组,其中该寄存器组被配置为存储里德-所罗门母代码的校验子(syndrome)值并且可分解成多个寄存器子组,每个寄存器子组以循环移位结构布置并且被配置为存储与里德-所罗门母代码相关联的里德-所罗门子代码的校验子值。
在某些布置中,钱氏搜索电路包括基于伽罗瓦域的乘和加结构,以及分解的乘和加结构。在钱氏搜索电路的某些实现方式中,基于伽罗瓦域的乘和加结构包括多个伽罗瓦域变量乘法器,其中该多个伽罗瓦域变量乘法器被配置为将校验子值集合中的每个校验子值与元素集合中的相应元素相乘,并且将每次乘法运算的结果相加以产生多项式的根。另外,分解的乘和加结构包括与基于伽罗瓦域的乘和加结构的一部分相同的电路,该分解的乘和加结构被配置为向与基于伽罗瓦域的乘和加结构的一部分相同的电路应用元素集合的子集。
在钱氏搜索电路的某些其他实现方式中,钱氏搜索电路包括基于伽罗瓦域的乘和加结构,该基于伽罗瓦域的乘和加结构包括多个伽罗瓦域固定乘法器,其被配置为选择该多个伽罗瓦域固定乘法器的子集,使用该多个伽罗瓦域固定乘法器的子集中的一个伽罗瓦域固定乘法器逐步地将校验子值集合中的每个校验子值与元素集合中的相应元素相乘,并且将每次乘法运算的结果相加以产生多项式的根。另外,分解的乘和加结构包括与基于伽罗瓦域的乘和加结构的一部分相同的电路,并且被配置为向与基于伽罗瓦域的乘和加结构的一部分相同的电路应用元素集合的子集。
附图说明
本发明的上述及其他优势在结合附图考虑了以下详细描述之后将容易理解,其中贯穿全文相似的参考字符指代相似的部分,其中:
图1图示了根据一个布置的里德-所罗门解码架构;
图2图示了根据一个布置用于从接收的码字的校验子值确定错误定位多项式的架构;
图3图示了根据一个布置用于基于里德-所罗门代码的伞型分解从接收的码字的校验子值确定错误定位多项式的多核架构;
图4图示了根据一个布置用于执行钱氏搜索并且计算错误值的架构;
图5图示了根据一个布置用于执行钱氏搜索并且计算错误值的、基于里德-所罗门代码的伞型分解的架构;
图6图示了根据一个布置对应于具有长度为16个系数的错误定位多项式(即,能够纠正多达16个符号错误)、并且具有并行度为21的里德-所罗门母代码的移位系数;
图7图示了根据一个布置对应于图6的里德-所罗门母代码的两个里德-所罗门子代码的移位系数;
图8图示了根据一个布置对应于图6的里德-所罗门母代码的四个里德-所罗门子代码的移位系数;以及
图9比较并对比用于根据一个布置处理里德-所罗门母代码和里德-所罗门子代码的对应子集的数据流。
具体实施方式
本文公开了一种用于在网络环境中实现里德-所罗门解码器和其他类型的解码器的方法、系统和装置。所公开的方法、系统和装置的优势在于使用了伞型代码以减少与解码里德-所罗门码字相关联的延迟。
在许多情况下,为了减少的延迟权衡编码增益是占有优势的。此类权衡可以基于里德-所罗门伞型代码在单个架构中实现。具体地,里德-所罗门伞型代码被限定为更大里德-所罗门(RS)代码的整数个子集。例如,(n,k)里德-所罗门代码分解成两个(n/2,k/2)里德-所罗门代码,或者四个(n/4,k/4)里德-所罗门代码。在本公开中,(n,k)里德-所罗门代码将被称为“母代码”,而基于该(n,k)里德-所罗门代码分解的里德-所罗门代码(例如,(n/2,k/2)里德-所罗门代码或(n/4,k/4)里德-所罗门代码)将被称为“子代码”。作为第一说明性示例,(440,424)里德-所罗门母代码可以被分解成两个(220,212)里德-所罗门子代码,或者四个(110,106)里德-所罗门子代码。作为另一示例,(528,516)里德-所罗门母代码可以被分解成两个(264,258)里德-所罗门子代码,或者四个(132,129)里德-所罗门子代码。在四个(132,129)里德-所罗门子代码的情况下,每个代码包括三个校验符号,因此能够纠正一个符号错误,这与仅使用两个校验符号纠正的错误的数目相同。然而,这种由(132,129)代码使用奇数个校验符号是有用的,这是因为相比于校验符号的数目仅为二(即,偶数),码字之间增加的距离可以用于更精确地检测错误。
用于改进FEC伞型代码实现方式的效率的一种可能是基于里德-所罗门代码的伞型分解将里德-所罗门解码器分解成多个并行核。具体地,通过里德-所罗门解码架构的延迟通常与2n成比例,因此如果n被减少了,则延迟也被减少。无论使用多个并行核还是串行分解架构,总功耗将是近似相同的,但是与串行分解情况相比,在多个并行核的情况下延迟将被减少。另外,在多个并行核的情况下,相同的接口和变速箱(gearbox)可以用于母代码和任意子代码。
图1图示了根据一个布置的里德-所罗门解码架构。解码器100用于连续地处理接收的码字以恢复对应的数据字。解码器100通过有线、无线或混合网络上的接收器电路(图1中未示出)接收码字。在一个布置中,码字在100G底板上接收。
解码器100接收码字110,该码字110具有n个符号,其中k个符号对应于数据符号以及n-k个符号对应于校验符号。因此,接收的码字110还可以由其符号r1,...,rn或者一般地由符号ri表示。在一个布置中,接收的码字110由(440,424)里德-所罗门代码(即,k=424并且n=440)生成,其中每个符号输送m=9比特的信息。常规地,针对给定代码符号的可能值的数目由qm表示,其中q和m均是整数(换言之,代码符号选自GF(qm),其中GF(u)表示u阶伽罗瓦域)。这里,q=2并且m=9。在本发明的其他布置中,可以使用k、n和/或qm的其他值。
接收的码字110被提供至数据延迟缓冲器120和校验子计算模块130。如这里所使用,术语“模块”指代用于实现关系该模块所述的功能的任意适当电路。在一个布置中,给定模块的功能主要(或全部)以基于FPGA的逻辑实现。数据延迟缓冲器120将接收的码字110的输出延迟(例如,存储在寄存器中)以下时间长度(即,时钟周期的数目),其足够接收的码字110的全部或一部分被校验子计算模块130、错误定位多项式模块140以及钱氏搜索和错误计算模块150处理。如下文所述,校验子计算模块130、错误定位多项式模块140以及钱氏搜索和错误计算模块150中的每一个均采用基于里德-所罗门伞型代码的并行架构。
校验子计算模块130处理接收的码字110以获得对应于该接收的码字110的2t个校验子值135。该校验子值135将由S1,...,S2 t 表示。例如,在(255,251)解码器的情况下,其特征在于值t=2,校验子值由S1、S2、S3和S4表示。该校验子值根据以下等式计算
其中j=1、2…2t,并且其中xij是来自m阶伽罗瓦域的元素。
虽然用于校验子计算的乘法器可以是变量乘法器(其中两个输入可以被改变),使得并行分解可以通过仅改变系数实现,但是这并不是非常高效。常量有限域乘法器(其中一个输入是可变的,而其他输入是固定的)通常更小并且更快(更短的组合深度)。下面描述了一种用于校验子值的计算的并行分解的技术。
由于校验子计算通常是解码器中最小的一部分,因此通常更有效用于复制针对每个子代码的校验子计算的子集。针对母代码的校验子计算可以用于通过将输入归零至更高阶校验子计算(更高的j值)来计算针对任意子代码的校验子。所需的附加校验子计算结构继而为Sj{0,t}、Sj{0,t/2}、Sj{0,t/4}等,假设总校验子计算区域多达单独母代码的两倍。由于校验子计算是解码器中最小的一部分,因此将设计的该部分的区域双倍将对整个区域的影响最小。
错误定位多项式模块140处理校验子值135以产生错误定位多项式143和错误评估多项式146。错误定位多项式143和错误评估多项式146在这里也可以分别由Λ(x)和Ω(x)表示。基于这里的公开和教导,本领域普通技术人员容易理解错误定位多项式143和错误评估多项式146可以使用适当的技术从校验子值135导出。例如,在各布置中,错误定位多项式模块140包括实现欧几里得算法、彼得生-哥伦斯汀-纪尔勒演算法、伯利坎普-梅西算法和伽罗瓦域傅里叶变换方法之一的功能。
不考虑用于导出错误定位多项式143和错误评估多项式146的技术,这些量中的每个量可以由m阶伽罗瓦域中的多项式表示。具体地,错误评估多项式146由以下多项式表示
Ω(x)=(Ω1+Ω2x+Ω3x2....) (1)
其中每个系数Ωi均来自m阶伽罗瓦域。类似地,错误定位多项式143由以下多项式表示
Λ(x)=Λ0+Λ1x+Λ2x2+Λ3x3+Λ4x4+Λ5x5+.... (2)
其中系数Λi来自m阶伽罗瓦域。基于这里的公开和教导,本领域普通技术人员容易理解错误定位多项式143用于执行钱氏搜索,而错误定位多项式143的导数用于评估错误值。错误定位多项式143被提供至钱氏搜索和错误计算模块150以产生错误值160。该错误值160也可以由e1,...en表示,其中ei表示接收的码字110第i个位置中错误的值。
为了确定错误值160,钱氏搜索和错误计算模块150实现钱氏搜索模块和错误值计算模块两者,其中钱氏搜索模块用于标识接收的码字110中包含错误的符号位置,而错误值计算模块用于确定在所标识符号位置处的错误值。基于这里的公开和教导,本领域普通技术人员容易理解钱氏搜索模块确定错误定位多项式143的根(如果有的话)。具体地,钱氏搜索模块通过评估适当伽罗瓦域中对应于接收的码字110中相应位置的每个值处的错误定位多项式以确定该错误定位多项式是否在该位置具有等于0的值来实现。如果是,则接收的码字110被标识为在该位置具有错误。如果否,则接收的码字110被标识为在该位置没有错误。
等价地,为了便于实现,钱氏搜索模块可以通过代数上相同或等价的方式将错误定位多项式减去值1的值与该值1进行比较,而不是将错误定位多项式的评估值与值0进行比较。类似地,钱氏搜索模块可以执行与这里所述相比任意其他代数上等价形式。
钱氏搜索和错误计算模块150将针对接收的码字110中由钱氏搜索模块标识的每个位置的错误值ei确定为包含符号错误。具体地,钱氏搜索模块使用基于福尼算法的技术来评估错误值。使用福尼算法,钱氏搜索模块根据以下关系确定错误值ei
基于这里的公开和教导,本领域普通技术人员容易理解钱氏搜索模块还可以使用代数上等价关系确定错误值ei。
图2图示了根据一个布置用于从接收的码字的校验子值确定错误定位多项式的架构。在一个布置中,架构200包括在错误定位多项式模块140中。图2图示了错误定位多项式模块140基于伯利坎普-梅西算法计算错误定位多项式并且校验符号的数目n-k为16的情况。因此,存在16个校验子值S1,...,S16,其被存储在寄存器组201的16个对应寄存器中。因为存在16个校验子值,因此架构200需要16次迭代以产生错误定位多项式(即,存在与校验子同样多的迭代)。具体地,存储在寄存器组201中的校验子值随每次迭代循环移位。错误定位多项式是将所有符号连接在一起的多项式,即,任意校验子值可以通过将先前校验子多项式与错误定位多项式相乘找到。
架构200的每次迭代的第一步骤是找到错误定位多项式当前状态的校验子与先前校验子之间的差或增量值。这可以通过采取寄存器组201中存储的校验子的数目与错误定位多项式当前状态(其存储在寄存器组219中)的点积完成,从而使用乘法器组220的伽罗瓦域乘法器将这些两个量相乘在一起,使用伽罗瓦域加法器209、210和212将各结果相加,并且使用伽罗瓦域加法器211加上第一校验子。在对应的迭代结束时,将计算的增量值存储在寄存器213中。
如果增量值非零,则更新错误定位多项式。这通过将存储在寄存器组221中的先前错误定位多项式逐项与包括被先前增量值相除的增量值的值(后一个值由除法器214计算)相乘来完成。乘法器组220的各乘法器输出继而使用加法器组217相加至相应的错误定位多项式项,并且其结果被存储在寄存器组219中。增量值继而被存储在寄存器213中,并且错误定位多项式(在乘法器结果被相加之前)被存储在寄存器组221中。控制块223用于控制用以实现上文所述功能的信号电压电平和时序。
因为由架构200执行的迭代的数目与校验子的数目相同,因此一种用于产生架构200的并行分解的方式可以是存储多个校验子集(每个校验子集均是母代码校验子数目的整数部分(integer fraction)),并且依次对每个校验子集进行操作。这仍然会在等同于母代码计算时间的总时间内执行所有错误定位多项式计算。然而,在最差情况下,子代码延迟将与母代码延迟相同(至少通过处理流水线这部分)而不是时间的整数部分。一种备选方法用于将伯利坎普-梅西架构拆成如接下来解释的整数个并行核。
图3图示了根据一个布置用于基于里德-所罗门代码的伞型分解从接收的码字的校验子值确定错误定位多项式的多核架构。虽然架构300图示了两个并行核的情况,但是同一原理和技术可以用于设计具有任意整数个并行核的架构,该整数等于母代码与对应的子代码之间的分解因子。例如,在FPGA利用(n,k)母代码和(n/4,k/4)子代码的情况下,架构300可以基于这里所述的技术适用于包括四个并行核。
如图3所示,架构300的两个核沿虚线350拆分。虽然引入第二核要求附加的(即,第二)控制块,但是与逻辑相关联的控制块324(或备选地,控制块323)与架构300中呈现的其他逻辑元件相比在尺寸上相对较小。如与架构200的寄存器组201相比,架构300包括两个单独的寄存器组(即,寄存器组380和寄存器组382),并且包括附加多路复用器(即,多路复用器304)。多路复用器304包括表示微量的附加逻辑(另外,在FPGA中,与寄存器相关联的逻辑可以执行多路复用器304的功能使得不需要附加逻辑)。类似地,鉴于架构200包括加法器组217、寄存器组219和寄存器组221,架构300包括这些组件的分离版本,即,加法器组317和318、寄存器组319和320以及寄存器组321和322。
继续与架构300相比,分解增量值计算所需的伽罗瓦域加法器树。具体地,图3的加法器309和310(这在图2中具有对应的加法器209和210)不向图2的加法器212馈送对应物(counterpart),而是其相应加法器树的最终状态。这一关于架构200的改变将在每核分解时最多利用一个附加多路复用器。另外,每个附加核分解利用附加伽罗瓦域除法器(即,架构300包括除法器314和316,而架构200仅包括单个此类除法器,即除法器214)以及相关联电路,即图3中的加法器311和312以及寄存器313和315。
图4图示了根据一个布置用于执行钱氏搜索并且计算错误值的架构。在一个布置中,架构400包括在钱氏搜索和错误计算模块150中。出于说明的目的,图4图示了校验符号的数目n-k为8的情况。因此,存在8个校验子值S1,...,S8。如图4所示,架构400采用度为x+1的并行结构,其中x是伽罗瓦域乘法器409的根幂的指数。
由错误定位多项式模块140计算的错误定位多项式项被输入至架构400,并且由乘法器组401中的乘法器移位至第一移位位置。第一搜索位置由原根的幂移位。此值是域大小与码字中符号数目之间的差。例如,由IEEE802.3指定的NRZ FEC标准具有n=528个总符号、k=514个数据符号、每符号m=10个比特。因此,域大小为2m=1024,并且移位值为1024-528=496。另外,因为此根指数的倍数大于该域大小,因此以域大小为模计算更高阶根指数。
备选地,在一个布置中,由乘法器组401的乘法器执行的移位可以通过在向架构400发送每个错误定位多项式系数之前将该系数乘以适当的移位值来由架构200的乘法器组220的乘法器代替执行。
考虑并行度为1(即,x=0)的情况。在此情况下,由乘法器组401输出的移位错误定位多项式被输入至乘法器组403的乘法器。具体地,乘法器组403中的每个乘法器是具有通过启用乘法器组402的对应乘法器产生的系数指数中递增根幂(α1,α2,α3,α4等)的常量乘法器。乘法器继而被迭代用于测试的位置的数目,其总共为n个符号。乘法器组403的输出由加法器404全部相加以检验错误定位多项式的根,即,用于确定在指定符号位置是否存在错误。
备选地,在一个布置中,由乘法器组510和511的乘法器执行的移位可以通过在向架构400发送每个错误定位多项式系数之前将该系数乘以适当的移位值来由架构300的乘法器组307和308的乘法器代替执行。
考虑并行度为x>0的情况。在此情况下,针对乘法器组403中乘法器的系数的根幂被乘以量x+1,其导致输出α(x+1)、α2(x+1)、α3(x+1)、α4(x+1)等。这意味着由乘法器组403中的乘法器搜索的位置可以增加x+1个位置。中间值继而可以被搜索而不需要使用错误定位多项式,而是通过将乘法器组403的乘法器输出移位一个或多个(多达x个)位置。这可以使用乘法器405、407和409执行。类似地,加法器406、408和410继而可以将移位值相加以检验错误定位多项式的根。
图5图示了根据一个布置用于执行钱氏搜索并且计算错误值的、基于里德-所罗门代码的伞型分解的架构。具体地,图5描绘了类似于架构400但被分解成两个并行子结构的架构。具体地,架构500描绘了母(n,k)里德-所罗门代码至两个(n/2,k/2)子里德-所罗门代码的伞型分解。基于这里的公开和教导,本领域普通技术人员容易理解虽然架构500图示了分解因子为二,但是同一原理和技术可以用于设计等于母代码与对应的子代码之间的任意有效分解因子的架构。
如与架构400相比,架构500要求附加的输入移位乘法器组510和乘法器组523(为了清楚该组中仅绘制了一个乘法器)。乘法器组511的乘法器用于将母代码错误定位多项式移位至第一搜索位置,并且乘法器组510的乘法器用于将两个子代码多项式移位至其第一搜索位置。因此,乘法器组511中的四个乘法器的移位值是不同的,而乘法器组510中的四个乘法器的移位值表示相同移位值的两个集合。
针对两个子代码搜索,乘法器组514中的四个乘法器被拆成两组两个乘法器,其中每组搜索相应的子代码错误定位多项式。类似地,乘法器组520中的四个乘法器和乘法器组517中的四个乘法器各被拆成两组两个乘法器。具体地,乘法器组517和520中的每个乘法器组内的每组乘法器将其相应子代码基础搜索值移位至与母代码相同数目的并行位置。
如同架构400的情况一样(例如,参见加法器406、408和410的输出),架构500不对分组中所有乘法器的输出相加。相反,在架构500中,针对每个移位的搜索位置以及每个子代码仅对乘法器输出的子集相加。例如,加法器521仅对乘法器541和542的输出相加,并且加法器519仅对乘法器543和544的输出相加。此外,与架构400的那些加法器406和408相同的加法器也存在于架构500,但出于视觉上清楚从图5中省去。
注意,将t=2母代码拆成由架构500所示的两个t=1子代码的简单情况仅是说明性的。在实践中,使用具有越大多项式长度的母代码,节省越大。这是因为更大的多项式长度使得特定多项式项的移位乘值更可能存在于乘以所有移位值的所有多项式项的矩阵中,因此可以获得节省。
图6图示了根据一个布置对应于具有长度为16个系数的错误定位多项式(即,能够纠正多达16个符号错误)、并且具有并行度为21的里德-所罗门母代码的移位值的幂(即,移位值αx中x的相应值)。在表600中,每列对应于应用于将搜索位置的基础状态移位至不同位置的移位值的幂。表600的20个列对应于每时钟周期搜索的20个附加搜索位置(除基础位置外)。表600的值为可以被输入至对应于图5的乘法器组517和520的乘法器组(或者,取决于里德-所罗门代码的参数、那些乘法器组的适当修改版本)。具体地,架构500中由表600描绘的里德-所罗门母代码的实现方式可以要求320个乘法器,这是由于表600中存在320个条目。
图7图示了根据一个布置对应于图6的里德-所罗门母代码的两个里德-所罗门子代码的移位系数。具体地,表725图示了应用于将搜索位置的基础状态移位至与第一子代码相关联的八个乘法器中的每个乘法器的不同位置的移位值的幂,并且表775图示了应用于将搜索位置的基础状态移位至与第二子代码相关联的八个乘法器中的每个乘法器的不同位置的移位值的幂。
实现表700的两个子代码所需的乘法器数目小于实现对应于表600的母代码所需的320个乘法器。具体地,在一个布置中,第一子代码使用160个乘法器的“全集”(对应于表725中的160个条目)来实现。然而,给定此实现方式中,小于160个乘法器被需要用于实现第二子代码。这是因为存在从第一子代码的实现可获得的母代码和第二子代码的实现中计算的某些多项式项的移位版本。图6图示了通过第二子代码的实现重用来自第一子代码和母代码的实现的乘法器输出。具体地,表775中的下划线值表示乘(即,计算的乘法运算值)针对第一子代码的实现中给定多项式项的电路中。由于表775中存在27个下划线项,因此存在27个可以被重用的乘法器。因此,对应于表700的两个子代码的实现需要总共仅293个乘法器(而不是总共320个乘法器)。
图8图示了根据一个布置对应于图6的里德-所罗门母代码的四个里德-所罗门子代码的移位值的幂。具体地,表820图示了应用于将搜索位置的基础状态移位至与第一子代码相关联的四个乘法器中的每个乘法器的不同位置的移位值的幂。类似地,表840、860和880图示了应用于将搜索位置的基础状态移位至分别与第二子代码、第三子代码和第四子代码相关联的四个乘法器中的每个乘法器的不同位置的移位值的幂。
如表840和880中下划线条目所示,第二子代码和第四子代码的实现可以重用来自母代码(图6)和第一子代码分解(图7)两者的乘法器。图8的下划线中示出了经复制的乘。如表820和840中所示,重用了51个乘,使得需要总共仅109个乘法器(而不是160个乘法器)用于实现第一子代码和第二子代码。另外,如表860和880中所示,第三子代码具有69个重用的乘,使得需要总共仅91个乘法器(而不是160个乘法器)用于实现第三子代码和第四子代码。通过类似方式,里德-所罗门母代码的实现可以被分解成八个里德-所罗门子代码以达到更高的乘重用度。另外,在使用了16个里德-所罗门子代码的情况下,所有乘的一半可以被重用,使得总共仅需要160乘法器。注意,通常在解码器实现中并非需要母代码中的所有子代码分解。具体地,给定实现方式可以仅支持里德-所罗门母代码的可能里德-所罗门子代码分解的子集。
例如,在t=16代码被分解成两个t=8、四个t=4、八个t=2以及十六个t=1的子代码的情况下,640个附加乘法器需要用于实现所有硬件结构,并且在一个布置中,这可能是钱氏搜索电路(其已经是高度并行解码器)区域的几乎三倍。相反,通过使用如上文所述的优化系数矩阵,针对这些分解结构的每个分解结构,总共仅需要133+109+91+80=413个附加乘法器。
图9比较并对比用于根据一个布置处理里德-所罗门母代码和里德-所罗门子代码的对应子集的数据流。如图9所示,两个(n/2,k/2)里德-所罗门子代码可以在与(n,k)里德-所罗门母代码近似相同的时间量(时间Δ)内处理。另外,校验子计算所需的计算的数目与n2–nk成比例,使得确定两个(n/2,k/2)里德-所罗门子代码的校验子所需的计算复杂度与确定一个(n,k)里德-所罗门母代码的校验子所需的计算复杂度近似相同。
另外,计算错误定位多项式所需的计算复杂度与(n-k)2成比例,使得确定(n/2,k/2)里德-所罗门子代码两者的多项式所需的计算复杂度与确定一个(n,k)里德-所罗门母代码的多项式所需的计算复杂度近似相同。正如校验子计算,钱氏搜索的计算复杂度也与(n2–nk)成比例,但是如上文参考图6至图8所解释的,此逻辑的一般大尺寸意味着需要逻辑重用。
应当理解,上文仅说明了本发明的原理,本领域技术人员可以在不脱离本发明的范围和精神的前提下进行各种修改,并且本发明仅受限于以下的权利要求书。
Claims (20)
1.一种码字处理电路,包括:
接收器电路,被配置为接收长度为n个符号并且具有k个校验符号的里德-所罗门母码字;
并行化电路,被配置为将所接收的里德-所罗门母码字的所述n个符号分成v个里德-所罗门子码字,其中v是与所接收的里德-所罗门母码字相关联的分解因子;以及
解码电路,被配置为在v个并行处理的相应集合中处理所述v个里德-所罗门子码字以输出v个解码的码字。
2.根据权利要求1所述的码字处理电路,进一步包括标识电路,所述标识电路被配置为至少部分基于其上传输所述里德-所罗门母码字的信道质量来确定所述分解因子v。
3.根据权利要求1所述的码字处理电路,其中所述解码电路包括校验子校验子计算模块,所述校验子计算模块被配置为处理对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的符号,以产生对应于所接收的里德-所罗门母码字的校验子校验子值。
4.根据权利要求1所述的码字处理电路,其中所述解码电路包括错误定位多项式模块,所述错误定位多项式模块被配置为:
接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的校验子校验子值;以及
在v个并行处理中处理所接收的校验子校验子值以产生v个错误定位多项式,其中每个并行处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
5.根据权利要求1所述的码字处理电路,其中所述解码电路包括错误定位多项式模块,所述错误定位多项式模块被配置为:
接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的校验子校验子值;以及
在v个连续处理中处理所接收的校验子校验子值以产生v个错误定位多项式,其中每个连续处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
6.根据权利要求1所述的码字处理电路,其中所述解码电路包括:
钱氏搜索和错误计算模块,被配置为接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的错误定位多项式系数;以及
在v个并行处理中处理所接收的错误定位多项式系数以产生v个输出码字,其中每个并行处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
7.根据权利要求1所述的码字处理电路,其中所述v个里德-所罗门子码字中的每个里德-所罗门子码字是(n/v,k/v)里德-所罗门码字。
8.根据权利要求1所述的码字处理电路,其中所述分解因子v至少部分基于网络数据吞吐量要求。
9.一种用于处理码字的方法,包括:
接收长度为n个符号并且具有k个校验符号的里德-所罗门母码字;
将所接收的里德-所罗门母码字的所述n个符号分成v个里德-所罗门子码字,其中v是与所接收的里德-所罗门母码字相关联的分解因子;以及
在v个并行处理的相应集合中处理所述v个里德-所罗门子码字以输出v个解码的码字。
10.根据权利要求9所述的方法,其中所述分解因子v的确定至少部分基于其上传输所述里德-所罗门母码字的信道质量。
11.根据权利要求9所述的方法,进一步包括:
处理对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的符号,以产生对应于所接收的里德-所罗门母码字的校验子校验子值。
12.根据权利要求9所述的方法,进一步包括:
接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的校验子校验子值;以及
在v个并行处理中处理所接收的校验子校验子值以产生v个错误定位多项式,其中每个并行处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
13.根据权利要求9所述的方法,进一步包括:
接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的校验子校验子值;以及
在v个连续处理中处理所接收的校验子校验子值以产生v个错误定位多项式,其中每个连续处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
14.根据权利要求9所述的方法,进一步包括:
接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的错误定位多项式系数;以及
在v个并行处理中处理所接收的错误定位多项式系数以产生v个输出码字,其中每个并行处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
15.根据权利要求9所述的方法,其中所述v个里德-所罗门子码字中的每个里德-所罗门子码字是(n/v,k/v)里德-所罗门码字。
16.一种码字处理电路,包括:
接收器电路,被配置为接收长度为n个符号并且具有k个校验符号的里德-所罗门母码字;
包括校验子校验子计算模块的解码电路,所述校验子校验子计算模块被配置为处理对应于v个里德-所罗门子码字中的每个里德-所罗门子码字的符号,以产生对应于所接收的里德-所罗门母码字的校验子校验子值,其中v是与所接收的里德-所罗门母码字相关联的分解因子。
17.根据权利要求16所述的码字处理电路,进一步包括标识电路,所述标识电路被配置为至少部分基于其上传输所述里德-所罗门母码字的信道质量来确定所述分解因子v。
18.根据权利要求16所述的码字处理电路,其中所述解码电路包括错误定位多项式模块,所述错误定位多项式模块被配置为:
接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的校验子校验子值;以及
在v个并行处理中处理所接收的校验子校验子值以产生v个错误定位多项式,其中每个并行处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
19.根据权利要求16所述的码字处理电路,其中所述解码电路包括:
钱氏搜索和错误计算模块,被配置为接收对应于所述v个里德-所罗门子码字中的每个里德-所罗门子码字的错误定位多项式系数;以及
在v个并行处理中处理所接收的错误定位多项式系数以产生v个输出码字,其中每个并行处理对应于所述v个里德-所罗门子码字中相应的里德-所罗门子码字。
20.根据权利要求16所述的码字处理电路,其中所述v个里德-所罗门子码字中的每个里德-所罗门子码字是(n/v,k/v)里德-所罗门码字。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/762,739 | 2013-02-08 | ||
US13/762,739 US8977938B2 (en) | 2013-02-08 | 2013-02-08 | Parallel decomposition of Reed Solomon umbrella codes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103986475A CN103986475A (zh) | 2014-08-13 |
CN103986475B true CN103986475B (zh) | 2018-12-28 |
Family
ID=51278313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410045928.1A Active CN103986475B (zh) | 2013-02-08 | 2014-02-08 | 里德-所罗门伞型代码的并行分解 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8977938B2 (zh) |
CN (1) | CN103986475B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9166623B1 (en) * | 2013-03-14 | 2015-10-20 | Pmc-Sierra Us, Inc. | Reed-solomon decoder |
US9954553B1 (en) | 2015-06-05 | 2018-04-24 | Altera Corporation | Circuitry and methods for continuous parallel decoder operation |
US10075189B2 (en) | 2015-06-22 | 2018-09-11 | Altera Corporation | Techniques for variable forward error correction |
US10181864B2 (en) * | 2016-02-26 | 2019-01-15 | Altera Corporation | Methods and apparatus for performing reed-solomon encoding |
CN112491500B (zh) * | 2017-07-07 | 2022-07-29 | 华为技术有限公司 | 传输数据的方法、装置、发送设备和接收设备 |
KR20210150149A (ko) * | 2020-06-03 | 2021-12-10 | 삼성전자주식회사 | 신드롬과 부분 계수 정보를 병렬적으로 생성하는 에러 정정 장치 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4633471A (en) * | 1983-09-19 | 1986-12-30 | Storage Technology Partners Ii | Error detection and correction in an optical storage system |
CN1467918A (zh) * | 2002-06-07 | 2004-01-14 | ��ķɭ���ó��˾ | 里得-索罗门解码器 |
CN1653699A (zh) * | 2002-05-08 | 2005-08-10 | 汤姆森特许公司 | 软判定解码里德-索洛蒙码的方法 |
CN101079640A (zh) * | 2007-07-12 | 2007-11-28 | 中兴通讯股份有限公司 | 一种Reed-Solomon码解码器 |
CN101834617A (zh) * | 2010-06-01 | 2010-09-15 | 福建新大陆电脑股份有限公司 | 一种rs纠错码解码器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100277764B1 (ko) * | 1998-12-10 | 2001-01-15 | 윤종용 | 통신시스템에서직렬쇄상구조를가지는부호화및복호화장치 |
US6633856B2 (en) * | 2001-06-15 | 2003-10-14 | Flarion Technologies, Inc. | Methods and apparatus for decoding LDPC codes |
KR100856235B1 (ko) * | 2005-09-26 | 2008-09-03 | 삼성전자주식회사 | 가변 부호화율을 가지는 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법 |
US7930611B2 (en) * | 2007-03-09 | 2011-04-19 | Microsoft Corporation | Erasure-resilient codes having multiple protection groups |
US8972829B2 (en) * | 2012-10-30 | 2015-03-03 | Broadcom Corporation | Method and apparatus for umbrella coding |
-
2013
- 2013-02-08 US US13/762,739 patent/US8977938B2/en active Active
-
2014
- 2014-02-08 CN CN201410045928.1A patent/CN103986475B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4633471A (en) * | 1983-09-19 | 1986-12-30 | Storage Technology Partners Ii | Error detection and correction in an optical storage system |
CN1653699A (zh) * | 2002-05-08 | 2005-08-10 | 汤姆森特许公司 | 软判定解码里德-索洛蒙码的方法 |
CN1467918A (zh) * | 2002-06-07 | 2004-01-14 | ��ķɭ���ó��˾ | 里得-索罗门解码器 |
CN101079640A (zh) * | 2007-07-12 | 2007-11-28 | 中兴通讯股份有限公司 | 一种Reed-Solomon码解码器 |
CN101834617A (zh) * | 2010-06-01 | 2010-09-15 | 福建新大陆电脑股份有限公司 | 一种rs纠错码解码器 |
Also Published As
Publication number | Publication date |
---|---|
US20140229791A1 (en) | 2014-08-14 |
US8977938B2 (en) | 2015-03-10 |
CN103986475A (zh) | 2014-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103986475B (zh) | 里德-所罗门伞型代码的并行分解 | |
US8352847B2 (en) | Matrix vector multiplication for error-correction encoding and the like | |
KR101211433B1 (ko) | 낮은 복잡도를 가지는 고속의 qc-ldpc 부호의 부호화 장치 및 방법 | |
US9356623B2 (en) | LDPC decoder variable node units having fewer adder stages | |
JP2007089064A (ja) | 復号装置および受信装置 | |
CN102970049B (zh) | 基于钱搜索算法和福尼算法的并行电路及rs译码电路 | |
RU2010135817A (ru) | Реконфигурируемый декодер кодов бчх | |
WO2007053126A1 (en) | Methods and devices for decoding and encoding data | |
Halbawi et al. | Balanced Reed-Solomon codes for all parameters | |
US9614550B2 (en) | Parallel BCH coding circuit, encoder and method | |
CN106708654A (zh) | 一种用于NANDflash的BCH纠错码的电路结构 | |
Jun et al. | Optimized design for high-speed parallel BCH encoder | |
Li et al. | Unified architecture for Reed-Solomon decoder combined with burst-error correction | |
CN101834616A (zh) | 里德-索罗蒙解码器实现方法 | |
CN108886369A (zh) | 用于执行里德-所罗门编码的方法和装置 | |
CN118251844A (zh) | 在极化码中使用特殊节点进行极化编码的系统和方法 | |
CN101777922B (zh) | 用于BCH译码器的高速低延时Berlekamp-Massey迭代译码电路 | |
US11515964B2 (en) | Systems and methods for using not perfectly polarized bit channels in parallel polar codes | |
US8583994B2 (en) | Coding apparatus and method for handling quasi-cyclical codes | |
US9467173B2 (en) | Multi-code Chien's search circuit for BCH codes with various values of m in GF(2m) | |
Yeon et al. | Low-complexity triple-error-correcting parallel BCH decoder | |
Qiao et al. | Low-complexity parallel syndrome computation for BCH decoders based on cyclotomic FFT | |
US9032277B1 (en) | Parallel low and asymmetric rate Reed Solomon coding | |
CN117254823B (zh) | 一种并行rs编码方法、装置、系统及计算机存储介质 | |
Hui et al. | Design and Implementation of RS (1023, 847) Parallel Decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |