CN108886369A - 用于执行里德-所罗门编码的方法和装置 - Google Patents

用于执行里德-所罗门编码的方法和装置 Download PDF

Info

Publication number
CN108886369A
CN108886369A CN201780008319.0A CN201780008319A CN108886369A CN 108886369 A CN108886369 A CN 108886369A CN 201780008319 A CN201780008319 A CN 201780008319A CN 108886369 A CN108886369 A CN 108886369A
Authority
CN
China
Prior art keywords
matrix
circuit
reed
parity check
vector
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
Application number
CN201780008319.0A
Other languages
English (en)
Other versions
CN108886369B (zh
Inventor
M·朗哈默尔
S·蒙塔兹
S·芬恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Publication of CN108886369A publication Critical patent/CN108886369A/zh
Application granted granted Critical
Publication of CN108886369B publication Critical patent/CN108886369B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/159Remainder calculation, e.g. for encoding and syndrome calculation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/159Remainder calculation, e.g. for encoding and syndrome calculation
    • H03M13/1595Parallel or block-wise remainder calculation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/617Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本实施例涉及里德‑所罗门编码,并且涉及用于执行这种编码的电路,特别是集成电路。里德‑所罗门编码器电路可以接收具有数据符号的消息,并通过将数据符号与第一矩阵相乘来计算部分校正子向量。里德‑所罗门编码器电路可以进一步通过求解包括部分校正子向量和第二矩阵的线性方程组来计算奇偶校验符号。作为示例,可以将第二矩阵分解为下三角矩阵和上三角矩阵,并且可以通过使用下三角矩阵和上三角矩阵执行前向替换和后向替换来计算奇偶校验符号。里德‑所罗门编码器电路可以通过组合数据符号和奇偶校验符号来生成里德‑所罗门码字,并且在输出端口处提供里德‑所罗门码字。

Description

用于执行里德-所罗门编码的方法和装置
相关申请的交叉引用
本发明要求保护于2014年9月22日提交的美国专利申请No.15/054,395的益处,其由此以其整体通过引用并入在本文中。
背景技术
本实施例涉及里德-所罗门编码,并且涉及用于执行这种编码的电路,特别是集成电路。
许多现代应用在网络上传输数据之前使用诸如里德-所罗门码之类的纠错码对数据进行编码。这些码能够提供强大的纠错能力。例如,长度为n且包括n-k个校验符号的里德-所罗门码可以检测到多达2t=n-k个错误符号的任意组合并且校正多达t个符号的任意组合。
用于里德-所罗门编码的大多数已知技术基于多项式除法。该方法的直接应用允许计算校验符号,这些校验符号有时还被称为奇偶校验符号,其基于每次输入一个数据符号。对于消息字中的k个符号,需要k个时钟周期来计算n-k个校验符号。通过替换,可能的是,基于一次输入多个数据符号来计算校验符号,但是这种计算手段的反馈性质意味着关键路径随着每个附加的并行输入的符号而增长,并且编码器操作频率迅速下降。
此外,增加的通信、存储和处理需求需要更有效的纠错,包括里德-所罗门前向纠错(FEC)。因此,希望提供用于实现纠错的改进机制。
发明内容
里德-所罗门编码器电路可以接收具有数据符号的消息,并通过使用里德-所罗门编码器电路中的乘法器将数据符号与第一矩阵相乘来计算部分校正子向量。里德-所罗门编码器电路还可以通过求解包括部分校正子向量和第二矩阵的线性方程组来计算奇偶校验符号,并通过组合数据符号和奇偶校验符号来生成里德-所罗门码字。如果需要,里德-所罗门编码器电路可以在输出端口处提供里德-所罗门码字。
应当意识到的是,本文中描述的实施例可以以各种方式来实现,例如,在处理机上执行的过程、装置、系统、设备或者方法。下面描述了本发明的若干发明实施例。
在某些实施例中,上述第二矩阵可以分解为下三角矩阵和上三角矩阵。如果需要,里德-所罗门编码器电路可以通过基于部分校正子向量来执行前向替换以及将下三角矩阵与前向向量相乘,以在有限域中计算前向向量。里德-所罗门编码器电路可以通过基于前向向量来执行后向替换,以及将上三角矩阵与奇偶校验符号相乘,以在有限域中计算奇偶校验符号,由此求解线性方程组,并且组合数据符号和奇偶校验符号以形成里德-所罗门码字。
根据附图和下文优选实施例的具体实施方式,本发明的进一步特征、本发明的性质以及各种优点将更显而易见。
附图说明
图1是根据实施例的示出性集成电路的图。
图2是根据实施例的示出性里德-所罗门编码器电路的图。
图3是根据实施例的计算用于里德-所罗门码字的奇偶校验符号的示出性线性方程求解器电路的图。
图4是根据实施例的执行前向替换的示出性L-求解器电路的图。
图5是根据实施例的执行后向替换的示出性U-求解器电路的图。
图6是根据实施例的组合数据符号与奇偶校验符号以形成里德-所罗门码字的示出性聚合电路的图。
图7是根据实施例的显示用于操作里德-所罗门编码器电路的示出性步骤的流程图的图。
图8是根据实施例的显示用于生成里德-所罗门码字的示出性步骤的流程图的图。
具体实施方式
本文中提供的本实施例涉及里德-所罗门编码,并且涉及用于执行这种编码的电路,特别是集成电路。
许多现代应用在网络上传输数据之前对数据进行编码。作为数据编码的部分,经常包括诸如里德-所罗门码之类的纠错码,以允许检测和/或校正在数据传输期间被破坏的数据信号。因为里德-所罗门码提供了强大的纠错能力,所以经常使用里德-所罗门码。
然而,用于里德-所罗门编码的大多数已知技术是基于多项式除法的,并且这样的技术的反馈性质表明关键路径随着每个附加的并行输入而增长。因此,编码器操作频率迅速降低。同时,增加的通信、存储和处理需求需要更有效的纠错。
因此,希望提供对里德-所罗门码字进行编码的改进机制。例如,希望提供一种里德-所罗门编码器,其可以容易地被并行化并且具有明显的插入流水线的点,使得里德-所罗门编码器可以用于非常快速的系统(例如,100G以太网或400G以太网)。
在某些实施例中,作为示例,里德-所罗门编码和/或解码电路可以在耦合到网络的集成电路中实现。
本领域技术人员将认识到,本示例性实施例可以在没有这些特定细节中的一些或全部的情况下实践。在其它实例中,为了不使不必要地模糊本实施例,没有详细描述公知的操作。
图1中示出了集成电路101的示出性实施例。集成电路101可以具有多个组件。这些组件可以包括处理电路102、存储电路110以及输入-输出电路104。处理电路102可以包括嵌入式微处理器、数字信号处理器(DSP)、微控制器或其它处理电路。
存储电路110可以具有随机存取存储器(RAM)、只读存储器(ROM)或其它可寻址存储器元件。存储电路110可以是单端口存储器、双端口存储器、四端口存储器、或者具有任何其它任意数量的端口。如果需要,存储电路110可以实现为具有仿真双端口、四端口或其它多端口行为的控制电路的单端口存储器。处理电路102可以通过经由互连资源103向存储电路110发送读取和/或写入请求来存取存储电路110。在一些实施例中,外部组件可以经由外部互连资源105、输入-输出电路104以及互连资源103来存取存储电路110。响应于接收到读取请求,存储电路110可以取回请求的数据并且通过互连资源103将取回的数据发送到请求者。在写入请求的情况下,存储电路110可以存储接收到的数据。
诸如导线和总线之类的内部互连资源103可以用于将数据从一个组件发送到另一组件,或将数据从一个组件广播到一个或多个其它组件。诸如导线和总线、光互连基础设施、或者具有可选中间交换机的有线和无线网络之类的外部互连资源105可以用于与其它设备通信。
输入-输出电路104可以包括并行输入-输出电路、差分输入-输出电路、串行数据收发器电路、或适于发送和接收数据的其它输入-输出电路。如果需要,输入-输出电路104可以包括错误检测和/或纠错电路。例如,输入-输出电路104可以包括里德-所罗门编码和/或解码电路,其通过在数据传输之前基于数据信号创建里德-所罗门码字来对数据信号进行编码,或者在数据接收之后对里德-所罗门码字进行解码以允许对数据信号的纠错和重建。
图2示出了这种里德-所罗门编码器电路。如所示的,里德-所罗门编码器电路210可以包括输入端口240、242和244、输出端口250、乘法器280、线性方程求解器270、聚合电路260以及可选的存储电路296和298。
里德-所罗门编码器电路210可以在输入端口240处接收数据符号向量m(X)(图2中的220),其有时还被称为消息,并且在输出端口250处提供里德-所罗门码字C(X)(图2中的230)。作为示例,数据符号向量m(X)可以具有k个符号,并且里德-所罗门码字C(X)可以具有n个符号,其中n>k。n个符号的里德-所罗门码字230可以包括t=n-k个奇偶校验符号p(X),其允许检测多达t个错误符号和校正多达个符号,其中是向下取整运算符。
里德-所罗门编码在有限域上操作,并且n个符号的里德-所罗门码字230可以定义为:
C(X)=X^(n-k) m(X)+p(X) (1)
其中,X^(n-k)对数据符号向量m(X)进行移位,使得数据符号向量m(X)不与奇偶校验符号p(X)重叠。可以将公式(1)重新写为以下形式:
C(a^i)=a^((n-k)i) m(a^i)+p(a^i) (2)
里德-所罗门码字230可以通过连接发送,并由里德-所罗门解码器电路接收作为具有n个符号的字R。除了里德-所罗门码字C之外,字R可以包括错误字E(即,R=C+E)。里德-所罗门解码器电路可以检查字R以检测和校正错误,目的是恢复消息。例如,里德-所罗门解码器电路可以使用奇偶校验矩阵S的转置SΛT来计算针对接收到的字的校正子SYN,该校正子SYN可以具有n行和t=(n-k)列:
SYN=R*S^T=C*S^T+E*S^T (3)
考虑接收字R而没有错误(即,E=0且R=C)的场景。在这种场景下,因为S是里德-所罗门码字C的奇偶校验矩阵,并且以任意根求里德-所罗门码字C的值都为零,所以公式(3)等于零(即,SYN=C*SΛT=0)。
因此,如果需要,假设已无错误地接收到里德-所罗门码字,里德-所罗门编码器电路210可以在里德-所罗门编码期间计算奇偶校验符号p(X)。在这种场景下,里德-所罗门编码问题可以表达为以下形式的矩阵问题:
m*Su+p*Sd=0 (4)
其中m为k个符号的消息,p为(n-k)个奇偶校验符号,Su包括S中的前k行,Sd包括S中的后(n-k)行。例如,矩阵Su和Sd可以定义为
可以使用有限域的生成多项式来计算矩阵Su和Sd,生成多项式有时还可以被称为域多项式。生成多项式通常由行业标准提供。例如,100G以太网标准IEEE 802.3bj定义了n=528、k=514、t=14的里德-所罗门码和生成多项式g(X)=X^10+X^3+1。
因此,可以一次性计算矩阵Su和Sd中的所有元素。如果需要,矩阵Su和Sd可以存储在存储电路中。例如,里德-所罗门编码器电路210可以包括存储电路296和298,以分别存储矩阵Su和Sd。如果需要,里德-所罗门编码器电路210外部的存储电路292和294可以分别存储矩阵Su和Sd,并且里德-所罗门编码器电路210可以分别在输入端口242和244处接收矩阵。在一些场景下,矩阵Su和Sd中的一个矩阵可以存储在里德-所罗门编码器电路210的内部,而另一矩阵可以存储在里德-所罗门编码器电路210的外部。
在一些实施例中,存储电路292、294、296和298中的一个或多个可包括多于一个的存储电路。作为示例,矩阵Sd可以分解为下三角矩阵和上三角矩阵,并且存储电路294(或存储电路298)中的第一存储电路和第二存储电路可以分别存储下三角矩阵和上三角矩阵。作为另一示例,存储电路292(或存储电路296)可以包括k个存储电路,每个存储电路存储矩阵Su的k行中的一行。其它布置是可能的,例如,存储电路292(或存储电路296)可以包括(n-k)个存储电路,每个存储电路存储矩阵Su的(n-k)列中的一列,等等。
里德-所罗门编码器电路210可以在输入端口240处接收消息m作为数据符号向量220。乘法器280可以将消息m与矩阵Su相乘以确定部分校正子向量SYN(即,SYN=m*Su)。例如,乘法器280可以对消息执行校正子计算并且在未知奇偶符号处插入零来继续校正子计算。在另一示例中,乘法器280可以对消息执行校正子计算,在最后一个消息符号之后停止校正子计算,并且通过将部分计算的校正子与一组常数相乘来在频域中对部分计算的校正子进行频移。
因此,可以通过求解一组(n-k)个方程和(n-k)个未知数来计算奇偶校验符号p:
p=SYN/Sd (7)
如果需要,线性方程求解器270可以从乘法器280接收部分校正子向量SYN,并且从里德-所罗门编码器电路外部的存储电路294或从里德-所罗门编码器电路内部的存储电路298接收矩阵Sd,并且通过求解公式(7)的一组(n-k)个方程来确定p。
图2的聚合电路260可以组合数据符号向量与奇偶校验符号,由此生成里德-所罗门码字230,并且在里德-所罗门编码器电路210的输出端口250处提供里德-所罗门码字230。
图3是根据实施例的计算用于里德-所罗门码字的奇偶校验符号的示出性线性方程求解器电路的图。如所示的,线性方程求解器电路310可以接收部分校正子向量SYN(图3中的340)并且生成奇偶校验符号p(图3中的350)。
作为示例,考虑LU分解(例如,Crout矩阵分解)将矩阵(例如,公式(7)的矩阵Sd)分解成下三角矩阵L-矩阵(图3中的320)与上三角矩阵U-矩阵(图3中的330)的乘积的场景:
Sd=L-矩阵*U-矩阵 (8)
在这种场景下,线性方程求解器电路310可以在两个步骤中求解方程组,例如公式(7)中所示的一组(n-k)个方程。在第一步骤中,线性方程求解器电路310可以基于部分校正子向量SYN和L-矩阵320使用L-求解器312执行前向替换,来计算前向向量F:
F=SYN/L-matrix (9)
在第二步骤中,线性方程求解器电路310可以基于前向向量F和U-矩阵330使用U-求解器317执行后向替换,以计算奇偶校验符号p:
P=F/U-matrix (10)
如果需要,可以使用矩阵Sd的转置(即,矩阵Sd')
和反向的部分校正子向量SYN来计算奇偶校验符号p。
作为示例,考虑校正子计算电路基于消息m和矩阵Su来计算部分校正子向量SYN的场景:
SYN=(SYN_1,SYN_2,...,SYN_(n-k)) (12)
例如,校正子计算电路可以对消息执行校正子计算,并且在未知奇偶符号处插入零来继续校正子计算。在另一示例中,校正子计算电路可以对消息执行校正子计算,在最后一个消息符号之后停止校正子计算,并且使用一组常数对部分计算的校正子进行频移。
进一步考虑Crout矩阵分解将矩阵Sd'分解为L-矩阵和U-矩阵,并且a^0=1:
因此,下三角矩阵L-矩阵可以在位置L_11处为1并且在主对角线上方为0,并且U-矩阵可以是主对角线(即,从U_11到U_(n-k)(n-k))上和第一行(即,从U_11到U_1(n-k))为1而主对角线下方为0的单位上三角矩阵。
在这种场景下,图4的L-求解器电路400可以基于部分校正子向量SYN(图4中的450)和公式(13)的L-矩阵来执行前向替换,以计算前向向量F(图4中的460)。作为将转置矩阵Sd'分解为L-矩阵和U-矩阵的Crout矩阵分解的结果,部分校正子的顺序可以被反转:
L-matrix*(F_1,F_2,...,F_(n-k))=(SYN_(n-k),...,SYN_1) (15)
并且图5的U-求解器电路500可以基于前向向量F(图5中的550)和公式14的U-矩阵来执行后向替换,以计算奇偶校验符号p(图5中的560):
U-matrix*(F_1,F_2,...,F_(n-k))=(p_1,p_2,...,p_(n-k)) (16)
一个或多个存储电路可以存储公式(13)的L-矩阵和公式(14)的U-矩阵。在一些实施例中,一个或多个存储电路可以省略存储L-矩阵的主对角线上方的0和U-矩阵的主对角线下方的0和/或U-矩阵的主对角线上的1。换言之,一个或多个存储电路可以存储公式(13)的L-矩阵的主对角线上的元素和L-矩阵的主对角线下方的元素,以及公式(14)的U-矩阵的主对角线上方的元素。
对前向向量460的计算可以包含除以L-矩阵的主对角线上的元素。例如,前向向量460的第一元素(即,F_1)可以被计算为F_1=SYN_(n-k)/L_11,前向向量460的第二元素(即,F_2)可以在有限域上被计算为F_2=(L_21*F_1+SYN_(n-k-1))/L_22,前向向量460的第三元素(即,F_3)可以在有限域上被计算为F_3=(L_31*F_1+L_32*F_2+SYN_(n-k-2))/L_33等。
因此,对前向向量460的当前元素的计算可以包括计算前向向量460的先前计算的元素与L-矩阵的当前行的元素相乘后和部分校正子向量450的当前元素的加和,并且将该加和除以L-矩阵的当前行中的最后一个非零值(即,除以当前行的主对角线上的元素)。
如果需要,乘以当前行的主对角线上的元素的倒数值可以代替除法。例如,上述一个或多个存储电路可以存储L-矩阵的主对角线上的元素的倒数值。
如图4所示,乘法器410可以通过将元素L_11的倒数与部分校正子向量450的元素SYN_(n-k)相乘来计算前向向量460的第一元素(即,F_1)。如果需要,因为L_11具有值1,所以可以省略乘法器410。因此,也可以省略存储元素L_11或元素L_11的倒数。
乘法器411可以计算F_1与L_21的乘积,加法器420可以计算该乘积与SYN_(n-k-1)的加和,并且乘法器412可以将该加和与L_22的倒数相乘以产生F_2。乘法器413可以计算F_1与L_31的乘积,乘法器414可以计算F_2与L_32的乘积,加法器421可以计算两个乘积的第一加和,加法器423可以计算第一加和与SYN_(n-k-2)的第二加和,并且乘法器415可以将第二加和与L_33的倒数相乘以产生F_3。可以以类似的方式计算前向向量460的剩余元素。
如果需要,L-求解器电路400可以包括可选的流水线级。例如,第一流水线级可以包括流水线寄存器434、432、430等。在计算F_2之前,流水线寄存器434、432、430等可以分别存储F_1、SYN_(n-k-1)、SYN_(n-k-2)等。类似地,在计算F_3之前,包括流水线寄存器444、442、440等的第二流水线级可以分别存储F_1、F_2、SYN_(n-k-2)等。
如果需要,L-求解器电路400可以包括附加的流水线级。例如,第一流水线寄存器级的流水线寄存器434、432、430等可以每个包括多于一个的串联布置的寄存器。在一些实施例中,L-求解器电路400可以在相应乘法器(例如,410、411、413等)的输出处,包括存储L-矩阵(例如,470、480和490)的元素的存储电路与相应乘法器之间的流水线级,仅举几例。
如上所述,图5的U-求解器电路500可以执行基于前向向量F(图5中的550)和公式(14)的U-矩阵来后向替换,以计算奇偶校验符号p(图5中的560)。由于公式(14)的U-矩阵包括主对角线上的1,因此在计算奇偶校验符号p期间可以省略与U-矩阵的主对角线上的元素的倒数的除法与乘法。
因此,U-求解器电路500可以通过计算奇偶校验符号560的先前计算的元素与U-矩阵的当前行的元素相乘后和前向向量550的当前元素的加和来执行对奇偶校验符号的当前元素的计算。
如图5所示,奇偶校验符号560的第一元素可以等于F_(n-k)(即,p_1=F_(n-k))。乘法器510可以通过将U-矩阵的元素U_(n-k-1)(n-k)与前向向量550的元素F_(n-k)相乘,并将该结果与F_(n-k-1)相加来计算奇偶校验符号560的第二元素(即,p_2)。乘法器511可以计算F_(n-k)与U_(n-k-2)(n-k)的乘积,乘法器513可以计算p_2与U_(n-k-2)(n-k-1)的乘积,加法器522可以计算两个乘积的第一加和,并且加法器524可以计算第一加和与F_(n-k-2)的第二加和。可以以类似的方式计算奇偶校验符号560的剩余元素。
如果需要,U-求解器电路500可以包括可选的流水线级。例如,第一流水线级可以包括流水线寄存器534、532、530等。在计算p_2之前,流水线寄存器534、532、530等可以分别存储F_(n-k)、F_(n-k-1)、F_(n-k-2)等。在计算p_3之前,包括流水线寄存器544、542、540等的第二流水线级可以分别存储F_(n-k)、p_2、F_(n-k-2)等。在计算p_4之前,包括流水线寄存器549、547、545等的第三流水线级可以分别存储F_(n-k)、p_2、p_3等。
如果需要,U-求解器电路500可以包括附加的流水线级。例如,第一流水线寄存器级的流水线寄存器534、532、530等可以每个包括多于一个的串联布置的寄存器。在一些实施例中,U-求解器电路500在相应乘法器(例如,510、511等)的输出处,可以包括存储U-矩阵(例如,570、580和590)的元素的存储电路与相应乘法器之间的流水线级,仅举几例。
由于由L-求解器电路400执行的前向替换与由U-求解器电路500执行的后向替换是类似的,所以如果需要,单个电路可以执行两个操作。
里德-所罗门码字的生成可以包括奇偶校验符号与数据符号的组合。图6是根据实施例的组合数据符号620与奇偶校验符号630以形成里德-所罗门码字640的示出性聚合电路610的图。
如图6所示,聚合电路610可以包括移位器612和加法器614。考虑聚合电路610接收k个数据符号和n-k个奇偶校验符号的场景。在这种场景下,移位器612可以将数据符号在时域中向左移位n-k个位置,并且在最不重要的符号位置处插入n-k个零。加法器614可以计算移位的数据符号与奇偶校验符号630的加和以生成里德-所罗门码字640。
如果需要,可以组合数据符号和奇偶校验符号而不执行移位和/或加法操作。例如,聚合电路610可以通过在n个并行连接上提供(n-k)个奇偶校验符号630和k个数据符号620来生成里德-所罗门码字640,由此n个并行连接中的每个传送奇偶校验符号630的一个符号或者数据符号620的一个符号。路由器电路可以按期望的顺序布置组合的数据符号620和奇偶校验符号630。
图7是根据实施例的显示用于操作里德-所罗门编码器电路(例如,图2的里德-所罗门编码器电路210)的示出性步骤的流程图的图。在步骤710期间,里德-所罗门编码器电路可以接收具有数据符号的消息。例如,图2的里德-所罗门编码器电路210可以在输入端口240处接收数据符号向量220。
在步骤720期间,里德-所罗门编码器电路可以通过使用乘法器将数据符号与第一矩阵相乘来计算部分校正子向量。例如,图2的里德-所罗门编码器电路210中的乘法器280可以从输入端口240接收数据符号向量,并且从存储电路296或者经由输入端口242从存储电路292接收矩阵,并且将数据符号向量与矩阵相乘以产生部分校正子向量。
在步骤730期间,里德-所罗门编码器电路可以通过求解包括部分校正子向量和第二矩阵的线性方程组来计算奇偶校验符号。例如,图2的里德-所罗门编码器电路210中的线性方程求解器电路270可以从乘法器280接收部分校正子向量,并且从存储电路298或者经由输入端口244从存储电路295接收另一矩阵,并且通过求解线性方程组来计算奇偶校验符号,包括将另一矩阵与奇偶校验符号相乘以产生部分校正子向量。
在步骤740期间,里德-所罗门编码器电路可以通过组合数据符号和奇偶校验符号来生成里德-所罗门码字。例如,图2的里德-所罗门编码器电路210中的聚合电路260可以从输入端口240接收数据符号向量,并且从线性方程求解器电路270接收奇偶校验符号,以及组合数据符号向量与奇偶校验符号以生成里德-所罗门码字230。
图8是根据实施例的显示用于生成里德-所罗门码字的示出性步骤的流程图的图。在步骤810期间,里德-所罗门编码器电路可以从第一存储电路、第二存储电路和第三存储电路取回第一矩阵、第二矩阵和第三矩阵,其中,第二矩阵的对角线上方的元素为0,并且其中,第三矩阵的对角线下方的元素为0。例如,Crout矩阵分解可以将矩阵Sd分解为L-矩阵与U-矩阵的乘积,如公式(8)所示,并且公式(5)的矩阵Su与来自分解的L-矩阵和U-矩阵一起可以存储在相应的存储电路中。
在步骤820期间,里德-所罗门编码器电路可以在预定的有限域中将数据符号向量与第一矩阵相乘以生成部分校正子向量。例如,图2的乘法器280可以将数据符号向量220与可存储在存储电路292中的矩阵Su相乘以生成部分校正子向量。
在步骤830期间,里德-所罗门编码器电路可以使用部分校正子向量和第二矩阵来执行前向替换以生成前向向量。例如,图3的线性方程求解器电路310可以实现图2的线性方程求解器电路270。L-求解器电路312可以从存储电路294的第一存储电路取回L-矩阵320,并使用部分校正子向量340和L-矩阵320执行前向替换以生成前向向量F。
在步骤840期间,里德-所罗门编码器电路可以使用前向向量和第三矩阵执行后向替换以生成奇偶校验符号向量。例如,图3的U-求解器电路317可以从存储电路294的第二存储电路取回U-矩阵330,并使用前向向量F和U-矩阵330执行后向替换以生成奇偶校验符号350。
在步骤850期间,里德-所罗门编码器电路可以对数据符号向量和奇偶校验符号向量进行级联以生成里德-所罗门码字。例如,图2的里德-所罗门编码器电路210中的聚合电路260可以将数据符号向量220与来自线性方程求解器电路270的奇偶校验符号级联,以生成里德-所罗门码字230。
本文中描述的方法和装置可以并入任意合适的电子设备或电子设备系统。例如,方法和装置可以并入各种类型的设备,例如,微处理器或其它集成电路。示例性集成电路包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPGA)、电可编程逻辑设备(EPLD)、电可擦除可编程逻辑设备(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、粗粒度可重构架构(CGRA)、数字信号处理(DSP)电路、专用标准产品(ASSP)、专用集成电路(ASIC)等等。
本文中描述的集成电路可以是包括以下组件中的一个或多个的数据处理系统的部分;处理器;存储器;I/O电路;以及外围设备。数据处理系统可用于各种各样的应用,例如,计算机网络、数据网络、仪器、视频处理、数字信号处理、或者期望有使用里德-所罗门编码的优点的任意合适的其它应用。
集成电路可以被配置为执行各种不同的逻辑功能。例如,集成电路可以被配置为与系统处理器协同工作的处理器或控制器。集成电路还可以用作仲裁器,其用于仲裁对数据处理系统中的共享资源的存取。在又一示例中,集成电路可以被配置为处理器与系统中的其它组件中的一个之间的接口。在一个实施例中,集成电路可以是受让人拥有的设备家族中的一个。
尽管以特定顺序描述了方法操作,但是应该理解,可以在描述的操作之间执行其它操作,可以调整描述的操作使得这些操作发生在稍不同的时间,或者描述的操作可以分布在允许以与处理相关联的各种间隔发生处理操作的系统中,只要是以期望的方式执行对覆盖操作的处理即可。
前述内容仅仅是对本发明原理的示出,并且在不偏离本发明的范围和精神的情况下本领域技术人员可以进行各种修改。前述实施例可以单独实现或以任意组合实现。

Claims (20)

1.一种用于操作里德-所罗门编码器电路的方法,包括:
利用所述里德-所罗门编码器电路来接收具有数据符号的消息;
通过使用所述里德-所罗门编码器电路中的乘法器将所述数据符号与第一矩阵相乘来计算部分校正子向量;
利用所述里德-所罗门编码器电路,通过求解包括所述部分校正子向量和第二矩阵的线性方程组来计算奇偶校验符号;并且
利用所述里德-所罗门编码器电路,通过组合所述数据符号和所述奇偶校验符号来生成里德-所罗门码字。
2.根据权利要求1所述的方法,进一步包括:
在所述里德-所罗门编码器电路的输出端口处提供所述里德-所罗门码字。
3.根据权利要求1所述的方法,其中,所述第二矩阵被分解为下三角矩阵和上三角矩阵。
4.根据权利要求3所述的方法,进一步包括:
在至少一个存储电路中存储所述下三角矩阵和所述上三角矩阵中的非零元素。
5.根据权利要求3所述的方法,其中,求解所述线性方程组进一步包括:
通过基于所述部分校正子向量执行前向替换以及将所述下三角矩阵与前向向量相乘,来在有限域中计算所述前向向量。
6.根据权利要求5所述的方法,进一步包括:
通过基于所述前向向量来执行后向替换以及将所述上三角矩阵与所述奇偶校验符号相乘,来在所述有限域中计算所述奇偶校验符号。
7.根据权利要求1所述的方法,其中,计算部分校正子向量进一步包括:
使用常数乘法器来在频域中对所述部分校正子向量移位。
8.根据权利要求1所述的方法,其中,组合所述数据符号和所述奇偶校验符号进一步包括:
将所述数据符号和所述奇偶校验符号进行级联以形成所述里德-所罗门码字。
9.一种里德-所罗门编码器电路,包括:
输入端口,其接收数据符号向量;
乘法电路,其接收来自所述输入端口的所述数据符号向量和来自第一存储电路的第一矩阵,并且通过将所述第一矩阵与所述数据符号向量相乘来计算部分校正子向量;
线性方程求解器电路,其接收来自所述乘法电路的所述部分校正子向量和来自第二存储电路的第二矩阵,并且基于所述部分校正子向量和所述第二矩阵来计算奇偶校验符号;以及
聚合电路,其接收来自所述输入端口的所述数据符号向量和来自所述线性方程求解器电路的所述奇偶校验符号,并且通过组合所述数据符号向量和所述奇偶校验符号来生成里德-所罗门码字。
10.根据权利要求9所述的里德-所罗门编码器电路,其中,所述第二存储电路对所述第二矩阵分解为下三角矩阵和上三角矩阵的分解进行存储,并且其中,所述线性方程求解器电路进一步包括:
第一求解器电路,其具有第一处理级和第二处理级,其中,所述第一求解器电路接收来自所述乘法电路的所述部分校正子向量和来自所述第二存储电路的所述下三角矩阵,并且通过求解包括所述下三角矩阵和所述部分校正子向量的第一线性方程组来计算前向向量;以及
第二求解器电路,其具有第三处理级和第四处理级,其中,所述第二求解器电路接收来自所述第一求解器的所述前向向量和来自所述第二存储电路的所述上三角矩阵,并且通过求解包括所述上三角矩阵和所述前向向量的第二线性方程组来计算所述奇偶校验符号。
11.根据权利要求10所述的里德-所罗门编码器电路,其中,所述第一求解器电路的所述第一处理级计算所述前向向量的第一元素,并且其中,所述第一求解器电路的所述第二处理级进一步包括:
有限域乘法器,其接收来自所述第一处理级的所述前向向量的所述第一元素和来自所述第二存储电路的所述下三角矩阵的第一条目,并且通过在预定义的伽罗瓦域中执行有限域乘法来计算所述前向向量的所述第一元素与所述下三角矩阵的所述第一条目的乘积。
12.根据权利要求11所述的里德-所罗门编码器电路,进一步包括:
有限域加法器,其接收来自所述有限域乘法器的所述乘积和来自所述乘法电路的所述部分校正子向量的元素,并且通过在所述预定义的伽罗瓦域中执行有限域加法来计算所述乘积和所述部分校正子向量的所述元素的加和。
13.根据权利要求12所述的里德-所罗门编码器电路,进一步包括:
附加的有限域乘法器,其接收来自所述有限域加法器的所述加和与来自所述第二存储电路的所述下三角矩阵的第二条目,并且在所述预定义的伽罗瓦域中执行对来自所述有限域加法器的所述加和与所述下三角矩阵的所述第二条目的附加的有限域乘法,以计算所述前向向量的第二元素。
14.根据权利要求10所述的里德-所罗门编码器电路,其中,所述第一求解器电路进一步包括:
所述第一处理级与所述第二处理级之间的流水线寄存器级,其由具有时钟周期的时钟信号同步,其中,所述流水线寄存器级接收来自所述第一处理级的信号并且将所述信号存储至少一个时钟周期。
15.根据权利要求10所述的里德-所罗门编码器电路,其中,所述第二求解器电路的所述第三处理级计算所述奇偶校验符号的第一元素,并且其中,所述第二求解器电路的所述第四处理级进一步包括:
有限域乘法器,其接收来自所述第三处理级的所述奇偶校验符号的所述第一元素和来自所述第二存储电路的所述上三角矩阵的第一条目,并且通过在预定义的伽罗瓦域中执行有限域乘法来计算所述奇偶校验符号的所述第一元素与所述上三角矩阵的所述第一条目的乘积;以及
有限域加法器,其接收来自所述有限域乘法器的所述乘积和来自所述第一求解器电路的所述前向向量的元素,并且在所述预定义的伽罗瓦域中执行对来自所述有限域乘法器的所述乘积与所述前向向量的所述元素的有限域加法,以计算所述奇偶校验符号的第二元素。
16.根据权利要求9所述的里德-所罗门编码器电路,其中,所述聚合电路进一步包括:
左移位器,其将所述数据符号向量向左移位奇偶校验符号的数量,以生成移位的数据符号向量。
17.一种用于生成数据符号向量的里德-所罗门码字的非暂时性计算机可读存储介质,包括用于以下操作的指令:
从第一存储电路、第二存储电路以及第三存储电路取回第一矩阵、第二矩阵以及第三矩阵,其中,所述第二矩阵的对角线上方的元素为零,并且其中,所述第三矩阵的对角线下方的元素为零;
在预定有限域中将数据符号向量与所述第一矩阵相乘以生成部分校正子向量;
使用所述部分校正子向量和所述第二矩阵来执行前向替换以生成前向向量;
使用所述前向向量和所述第三矩阵来执行后向替换以生成奇偶校验符号向量;并且
将所述数据符号向量和所述奇偶校验符号向量进行级联以生成里德-所罗门码字。
18.根据权利要求17所述的非暂时性计算机可读存储介质,进一步包括用于以下操作的指令:
在所述前向替换的第一处理级与第二处理级之间插入流水线寄存器。
19.根据权利要求17所述的非暂时性计算机可读存储介质,进一步包括用于以下操作的指令:
使用如由行业标准定义的域多项式来生成第四矩阵;并且
生成所述第四矩阵的转置矩阵。
20.根据权利要求19所述的非暂时性计算机可读存储介质,进一步包括用于以下操作的指令:
通过对所述第四矩阵的所述转置矩阵执行LU分解来生成所述第二矩阵和所述第三矩阵,其中,所述第二矩阵是下三角矩阵,并且所述第三矩阵是上三角矩阵。
CN201780008319.0A 2016-02-26 2017-02-15 用于执行里德-所罗门编码的方法和装置 Active CN108886369B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/054,395 2016-02-26
US15/054,395 US10181864B2 (en) 2016-02-26 2016-02-26 Methods and apparatus for performing reed-solomon encoding
PCT/US2017/017860 WO2017146946A1 (en) 2016-02-26 2017-02-15 Methods and apparatus for performing reed-solomon encoding

Publications (2)

Publication Number Publication Date
CN108886369A true CN108886369A (zh) 2018-11-23
CN108886369B CN108886369B (zh) 2022-11-08

Family

ID=59678580

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780008319.0A Active CN108886369B (zh) 2016-02-26 2017-02-15 用于执行里德-所罗门编码的方法和装置

Country Status (4)

Country Link
US (1) US10181864B2 (zh)
EP (1) EP3420640B1 (zh)
CN (1) CN108886369B (zh)
WO (1) WO2017146946A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10193574B1 (en) * 2016-05-19 2019-01-29 Apple Inc. Efficient syndrome calculation in processing a GLDPC code
US10291258B2 (en) * 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors
JP7341980B2 (ja) * 2017-08-15 2023-09-11 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ 無線ネットワークおよび装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1757165A (zh) * 2002-01-23 2006-04-05 汤姆森许可公司 译码器内的部件块消息传送
CN101102115A (zh) * 2006-07-03 2008-01-09 国际商业机器公司 编码和解码分组信息的方法、编码器和解码器
US20120005561A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Reduced circuit implementation of encoder and syndrome generator
US20130275839A1 (en) * 2008-08-13 2013-10-17 Infineon Technologies Ag Programmable Error Correction Capability for BCH Codes
CN103986475A (zh) * 2013-02-08 2014-08-13 阿尔特拉公司 里德-所罗门伞型代码的并行分解

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4998252A (en) * 1987-08-06 1991-03-05 Sony Corporation Method and apparatus for transmitting digital data
US4835775A (en) 1987-10-13 1989-05-30 Cyclotomics, Inc. Hypersystolic reed-solomon encoder
US5383204A (en) * 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
US5754563A (en) * 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6625774B1 (en) 1999-10-29 2003-09-23 Stmicroelectronics, Inc. Redundancy system and method for locating errors in interleaved code words
WO2002071770A1 (en) 2001-03-06 2002-09-12 Beamreach Networks, Inc. Adaptive communications methods for multiple user packet radio wireless networks
US7228490B2 (en) 2004-02-19 2007-06-05 Quantum Corporation Error correction decoder using cells with partial syndrome generation
US8347192B1 (en) 2010-03-08 2013-01-01 Altera Corporation Parallel finite field vector operators
US8707143B1 (en) 2011-06-13 2014-04-22 Altera Corporation Multiplication-based reed-solomon encoding architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1757165A (zh) * 2002-01-23 2006-04-05 汤姆森许可公司 译码器内的部件块消息传送
CN101102115A (zh) * 2006-07-03 2008-01-09 国际商业机器公司 编码和解码分组信息的方法、编码器和解码器
US20130275839A1 (en) * 2008-08-13 2013-10-17 Infineon Technologies Ag Programmable Error Correction Capability for BCH Codes
US20120005561A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Reduced circuit implementation of encoder and syndrome generator
CN103986475A (zh) * 2013-02-08 2014-08-13 阿尔特拉公司 里德-所罗门伞型代码的并行分解

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HANG YIN等: "Design of Improved LDPC Encoder for CMMB Based on SIMD", 《THIRD INTERNATIONAL CONFERENCE ON INFORMATION SCIENCE AND TECHNOLOGY 》 *

Also Published As

Publication number Publication date
WO2017146946A1 (en) 2017-08-31
CN108886369B (zh) 2022-11-08
EP3420640B1 (en) 2023-03-29
EP3420640A1 (en) 2019-01-02
US10181864B2 (en) 2019-01-15
EP3420640A4 (en) 2019-10-23
US20170250713A1 (en) 2017-08-31

Similar Documents

Publication Publication Date Title
EP0158510B1 (en) Error detection and correction in digital communication systems
US5440570A (en) Real-time binary BCH decoder
EP2946348A1 (en) Syndrome of degraded quantum redundancy coded states
CN104247274B (zh) 非二进制线性块码的并行编码
WO2010115371A1 (zh) 一种循环冗余校验crc码的实现方法和装置
CN108886369A (zh) 用于执行里德-所罗门编码的方法和装置
CN103986475B (zh) 里德-所罗门伞型代码的并行分解
Hamidi et al. Analysis and design of an abft and parity-checking technique in high performance computing systems
JPS6316929B2 (zh)
Hamidi et al. A framework for fault tolerance techniques in the analysis and evaluation of computing systems
CN101834616B (zh) 里德-索罗蒙解码器实现方法
RU2314639C1 (ru) Устройство декодирования кодов рида-соломона
US7320101B1 (en) Fast parallel calculation of cyclic redundancy checks
US20150007000A1 (en) Additional Error Correction Apparatus and Method
CN112468160A (zh) 一种基于钱搜索算法和福尼算法的并行电路
JPH10112660A (ja) リード・ソロモン符号を利用した誤り復号方法および装置
US10218386B1 (en) Methods and apparatus for performing variable and breakout Reed Solomon encoding
US20180006664A1 (en) Methods and apparatus for performing reed-solomon encoding by lagrangian polynomial fitting
US10623018B2 (en) Method of arrangement of an algorithm in cyclic redundancy check
CN104378121A (zh) 一种译码方法及译码装置
JP2000295116A (ja) 誤り修正符号化方法
CN106961283A (zh) 一种基于bch译码器的ibm算法的优化方法
US11750222B1 (en) Throughput efficient Reed-Solomon forward error correction decoding
CN115567164A (zh) 向量信令码信道的流水线式前向纠错方法和装置
US12034458B1 (en) Throughput efficient Reed-Solomon forward error correction decoding

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