CN116114178A - 用于使用灵活不规则纠错码进行速率自适应前向纠错的方法和设备 - Google Patents
用于使用灵活不规则纠错码进行速率自适应前向纠错的方法和设备 Download PDFInfo
- Publication number
- CN116114178A CN116114178A CN202180057070.9A CN202180057070A CN116114178A CN 116114178 A CN116114178 A CN 116114178A CN 202180057070 A CN202180057070 A CN 202180057070A CN 116114178 A CN116114178 A CN 116114178A
- Authority
- CN
- China
- Prior art keywords
- parity
- syndrome
- row
- bit sequence
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 106
- 238000012937 correction Methods 0.000 title claims abstract description 86
- 230000001788 irregular Effects 0.000 title abstract description 63
- 230000003044 adaptive effect Effects 0.000 title abstract description 8
- 230000004044 response Effects 0.000 claims abstract description 15
- 208000011580 syndromic disease Diseases 0.000 claims description 199
- 239000011159 matrix material Substances 0.000 claims description 126
- 239000013598 vector Substances 0.000 claims description 86
- 238000009826 distribution Methods 0.000 claims description 34
- 239000000523 sample Substances 0.000 claims 8
- 238000004891 communication Methods 0.000 abstract description 19
- 230000003247 decreasing effect Effects 0.000 abstract description 4
- 230000003287 optical effect Effects 0.000 description 30
- 101100111270 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BCH2 gene Proteins 0.000 description 29
- 101100165224 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BCH1 gene Proteins 0.000 description 26
- 239000000872 buffer Substances 0.000 description 23
- 238000013461 design Methods 0.000 description 14
- 238000005192 partition Methods 0.000 description 9
- 101150054451 Rtel1 gene Proteins 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000007493 shaping process Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000012800 visualization Methods 0.000 description 5
- 238000004193 electrokinetic chromatography Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009432 framing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 241000611421 Elia Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1177—Regular LDPC codes with parity-check matrices wherein all rows and columns have the same row weight and column weight, respectively
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
-
- 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/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0009—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
- H04L1/0042—Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0067—Rate matching
-
- 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/152—Bose-Chaudhuri-Hocquenghem [BCH] 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/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
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/251—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with block coding
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3972—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
公开了用于使用阶梯码等灵活不规则纠错码(error‑correcting code,ECC)执行速率自适应前向纠错(forward error correction,FEC)的方法和设备。所述ECC的每个码字使用两个或两个以上不同编码中的一个,每个编码具有不同数目的奇偶校验位。通过调整数据块中包括的每个编码的码字的比例,可以精细地调整FEC开销,从而实现灵活的FEC开销级别,以响应通信信道中增加或减少的噪声或扰动。描述了三种灵活不规则拉链码:通用拉链码;阶梯码;以及oFEC码。
Description
相关申请交叉引用
本申请要求先前于2020年8月14日递交的申请号为16/994,103、发明名称为“用于使用灵活不规则纠错码进行速率自适应前向纠错的方法和设备(METHODS AND DEVICESFOR RATE ADAPTIVE FORWARD ERROR CORRECTION USING A FLEXIBLE IRREGULAR ERRORCORRECTING CODE)”的美国非临时申请的优先权,其内容通过在允许结合的管辖范围内引用结合在本申请中。
技术领域
本发明涉及数字通信领域的前向纠错,尤其涉及用于使用灵活不规则纠错码进行速率自适应前向纠错的方法和设备。
背景技术
大多数现代光纤通信系统采用前向纠错(forward-error-correction,FEC)来保护数据不受信道扰动和噪声的影响。在典型的FEC配置中,使用称为纠错码(errorcorrecting code,ECC)的编码,将冗余开销添加到发送器侧的有效载荷数据中。ECC允许在接收器侧检测和校正错误,直到达到某个阈值。该阈值取决于编码开销的数量和类型以及错误模式的类型。更高的位错误率(bit error rate,BER)阈值会提高纠错性能,但也可能会增加ECC的纠错开销,并因此降低数据吞吐量。在ECC编码期间,以添加到每个数据位块的纠错位的形式产生ECC开销。输出信号的给定块中的非数据位与数据位的比率越高,开销越高,吞吐量越低。
通常,FEC模块通过对接收信号的单位序列执行错误检测检验来实现纠错。该位序列包括有效载荷数据的多个数据位以及通过ECC编码过程添加的一个或多个非数据位,例如奇偶校验位。该奇偶校验位由发送器处的ECC编码器根据数学计算基于该序列中的数据位的位值来设置。接收器处的FEC模块可以使用所接收的该序列的数据位和奇偶校验位执行对应的数学计算,以确认该位序列是否构成ECC码字,即该位序列是否符合ECC编码方案并因此不包含位错误。如果接收器执行的计算表明存在位错误,则FEC模块通常也可以使用奇偶校验位来定位该位序列中存在的特定位错误,从而翻转这些位以纠正位错误。
在光通信系统中,BER阈值通常定义为输出BER(即,纠错后的输出信号的BER)保持在1e-15以下的最大输入BER(即,接收信号的BER)。在给定目标输入BER阈值的情况下,最为高效的FEC将使用最小开销(overhead,OH)来纠正目标数目的错误。在一些情况下,每个码字的开销是恒定的:发送器处的ECC编码器通过将固定数目的有效载荷数据位添加到固定数目的奇偶校验位来对码字进行编码。相对于该码字中的数据位的数目使用更多数目的奇偶校验位会增加开销,但是可以使得能够检测和/或纠正每个位序列的更多位错误。
一些现代光调制解调器能够适应一系列传输距离和信道条件。使用各种技术来实现这种灵活性,例如,不同的正交幅度调制(quadrature amplitude modulation,QAM)星座设计(例如,从16QAM到64QAM到128QAM)和概率星座整形(probabilistic constellationshaping,PCS)。这些技术应用于各种光信道噪声水平,在接收器处导致一系列不同的输入BER水平,因此需要可变且可适应的FEC开销级别以实现高频谱效率。
在PCS中,星座点的传输概率并不相等。这可以通过在数据位中包括不相等数目的0和1以及使用系统FEC来实现,该系统FEC保留编码序列中的信息位(具有不相等数目的0和1)。在这种情况下,映射函数会显示具有不相等概率的不同星座点标签,并因此输出具有不相等概率的星座点。这使得一些设计能够更频繁地传输低幅度(即,低能量)的星座点,而不是高幅度(即,高能量)的星座点。因此,在给定恒定信噪比(signal-to-noise ratio,SNR)的情况下,与均匀星座分布相比,星座点之间的欧几里德距离更大,相应地降低接收器处的输入BER,并且可以降低FEC开销。然而,通过限制数据位中0和1的数目,降低了数据位序列的熵,并降低了有效的数据速率(即,吞吐量)。为了实现最优数据速率,必须根据不同的信道条件配置PCS分布,以便平衡PCS和FEC开销。使用最优PCS设计,所需的FEC开销根据信道SNR和光传输距离变化,如J.Cho和P.J.Winzer在以下文献中所证明的:“用于光纤通信的概率星座整形(Probabilistic Constellation Shaping for Optical FiberCommunications)”,《光波技术杂志》,第37卷第6期,第1590-1607页,2019年3月15日,其全部内容通过引用结合在本申请中。
已提出许多方法来在光调制解调器中实现可变FEC开销。然而,每种现有方法都存在各种缺点。
第一种方法称为截短。使用配备具有固定开销的单个FEC模块的调制解调器。可以通过截短每个码字中包括的数据位的数目(即,截短该码字中包括的数据位序列)来实现更高的开销和更高的纠错能力,也可以通过对FEC进行打孔来实现更低的开销和更低的纠错能力。
为了截短FEC,在发送之前,码字中的某些位位置的值是固定的(例如,0),其中这些位置对发送器和接收器都是已知的。因此,这些位置中的位不需要发送,并且在接收器处直接设置为固定值。由于这些位置不能用于发送任何有效载荷数据,因此相对于固定数目的奇偶校验位,减少了每个码字的数据位的数目,并因此增加FEC的有效开销。然而,由于这些位位置不会存在错误,因此相对于每个码字的固定数目的奇偶校验位,减少了潜在错误的数据位的数目,使得还可增加有效的可容忍输入BER。
为了对FEC进行打孔,在编码之后,从发送中省略码字中的某些位位置,其中这些位置对发送器和接收器都是已知的。接收器FEC在执行解码时将这些位置视为擦除。该过程会减少通过信道发送的给定位序列的位数,降低有效开销,并降低可容忍输入BER。
截短方法和打孔方法存在很多缺点。与专门针对同样有效开销设计的FEC模块相比,经过截短或打孔的FEC模块的性能通常会降低。此外,截短方法和打孔方法都会改变给定码字的发送位数。因此,不同的开销级别需要不同的发送块长度、不同的成帧结构以及接收器处的不同缓冲区大小。在硬件实现方式中,这会进一步增加复杂性。
实现可变FEC开销的第二种方法是使用具有若干FEC模块的调制解调器,每个FEC模块针对不同的输入BER而设计。具有若干此类FEC模块的缺点在于,会导致FEC设计和调制解调器实现方式高度复杂。这种高度复杂性会限制调制解调器中可以包括的FEC模块的数目,这会导致可以支持的FEC开销级别数目有限。
因此,需要一种具有可变FEC开销的ECC编码和解码方案,以克服现有方法的一个或多个缺点。
发明内容
在本文描述的各实施例中,公开了使用阶梯码等灵活不规则纠错码(error-correcting code,ECC)来实现速率自适应前向纠错(forward error correction,FEC)的方法和设备。在一些实施例中,所述ECC的每个码字使用两个或两个以上不同编码中的一个,每个编码具有不同数目的奇偶校验位。通过调整数据块中包括的每个编码的码字的比例,在一些示例中,可以精细地调整FEC开销,从而实现灵活的FEC开销级别,以响应通信信道中增加或减少的噪声或扰动。
一些实施例可以克服上述现有方法的一个或多个缺点。在一些示例中,每个ECC码字具有固定长度但在数据位与奇偶校验位之间具有可重构划分,从而提供可调或可变的FEC开销级别,而不需要接收器处不同的发送块长度、不同的成帧结构或不同的缓冲区大小,并且不会因截短或打孔而导致性能损失。在一些示例中,使用具有不同FEC开销级别的少量编码(例如,两个或三个),从而仅需少量FEC解码单元,但是给定数据块可以包括不同比例的每个编码的码字的混合,以实现每个数据块的所需总体FEC开销的高度粒度级别。在一些示例中,接收器可以使用单个门控FEC解码器对两个或两个以上编码中的每个编码执行FEC,从而最小化与多个并行FEC模块相关联的复杂性。根据本发明全文,可以理解其它潜在优点。
本文中描述的“信号”或“数据信号”可以是指包含一定数目的有效载荷数据位(也称为“数据位”或“信息位”)以及(可选地)一定数目的ECC位(也称为“奇偶校验位”或“开销位”)(用于执行FEC解码、错误检测和纠错)的数字信号。根据对发送器和接收器已知(即,由所述发送器和所述接收器相互预定)的组织方案,信号位可以可视化为组织成二维“数据块”。因此,持续的信号可以构成位流,所述位流由编码器或解码器定期组织成数据块。因此,可以将信号位视为所发送和/或所接收的数据块序列,即使构成位是作为线性位序列发送和/或接收的。例如,可以从初始数据块开始发送数据块序列,然后发送所述序列中的后续数据块;因此,可以将所述初始数据块视为所述序列中相对于所述后续数据块的“先前”数据块。随着每个其它后续数据块被编码、解码、发送和/或接收,先前和后续数据块的这种关系继续保持。
本文中使用的纠错码(error correcting code,ECC)是用于纠错的码。不同类型的ECC根据不同的FEC编码和解码方案进行编码和解码。本文中描述了用于对ECC进行编码和解码的示例性FEC编码和解码方案。ECC的示例包括拉链码和乘积码。拉链码包括阶梯码和开放前向纠错(open forward error correction,oFEC)码作为特例,但是拉链码也可以用一般术语来描述。
“位错误”(或简称“错误”)可以是指在通过通信信道发送时由于噪声或其他损害而损坏的信号位,从而产生在所述接收器处检测到的与所述发送器设置的对应位值不同的位值。
本文中使用的关于第二项目(例如,信号、值、标量、向量、矩阵、计算或位序列)是“基于”第一项目的陈述可以意味着所述第二项目的特征至少部分地受到所述第一项目的特征的影响或由其决定。所述第一项目可以视为一项运算或计算或一系列运算或计算的输入,所述运算或计算会产生所述第二项目作为不独立于所述第一项目的输出。
在阶梯码的上下文中,本文描述的数据块可以概念化为二维位阵列。一些数据块(称为“行式”数据块)可以组织为与所述数据块的行对应的码字序列,而其它数据块(称为“列式”数据块)可以组织为与所述数据块的列对应的码字序列。本文中描述的关于数据块的所有运算和特征可以指行式数据块的行或列式数据块的列;除非另有说明,否则这些引用应当理解为同样适用于两种类型的数据块,其中行引用和列引用可酌情替换为其对应引用。因此,在给定示例中,对行或列的引用是任意的;在一些实施例中,可以根据相同的原则对行式数据块和列式数据块进行编码和解码。
本文中使用的“编码位序列”可以指包含奇偶校验位和数据位的编码ECC的数据块的位序列,例如阶梯码的数据块的行或列、拉链码的码字的真实缓冲区或oFEC码的码字的水平部分。
术语“码字”在FEC的上下文中有时理解为表示ECC的格式正确(即,无错误)的编码位序列,在本文中可以用于表示有效(即,无错误)码字和无效(即,包含错误)码字。无效码字可以是由于发送等原因而引入位错误的有效码字。在FEC解码中,可能不知道给定码字在解码之前是无效码字还是有效码字。
在拉链码和oFEC码的上下文中,下面结合图7A、图7B和图8定义术语“数据块”、“先前数据块”和“编码位序列”的含义。
除非另有说明,否则本文中将奇偶校验矩阵描述为数字格式矩阵,而不是二进制格式矩阵,使得所述奇偶校验矩阵的条目是伽罗瓦域的数字,而不是单个位。因此,当奇偶校验矩阵被描述为具有给定数目的行时,这是指所述矩阵的伽罗瓦域数字表示,而不是所述矩阵的二进制表示。
根据第一方面,本发明提供了一种方法。发送器的前向纠错(forward errorcorrection,FEC)编码器接收数字数据信号,所述数字数据信号包括多个数据位。所述FEC编码器生成启用FEC的数据信号。所述启用FEC的数据信号包括数据块序列。每个数据块包括多个编码位序列。每个编码位序列包括数据位序列和奇偶校验位序列,所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位。每个奇偶校验位序列基于其相应的数据位序列和先前数据块的一个或多个位。每个数据块包括第一编码的至少一个奇偶校验位序列和第二编码的至少一个奇偶校验位序列。所述第一编码的每个奇偶校验位序列具有第一预定数目的奇偶校验位。所述第二编码的每个奇偶校验位序列具有第二预定数目的奇偶校验位,所述第二预定数目大于所述第一预定数目。(当一个数目在应用之前的任何时间以任何方式定义或以其它方式决定时,所述数目是“预定数目”。)发送所述启用FEC的数据信号。
在一些示例中,所述启用FEC的数据信号编码为阶梯码。所述数据块序列在行式数据块与列式数据块之间交替。每个行式数据块的所述多个编码位序列包括多行。所述多行定义多列。每个奇偶校验位序列基于其相应的数据位序列和先前列式数据块的对应行。每个列式数据块的所述多个编码位序列包括多列。所述多列定义多行。每个奇偶校验位序列基于其相应的数据位序列和先前行式数据块的对应行。
在一些示例中,所述数据块序列中的至少一个数据块包含第三编码的至少一个奇偶校验位序列,所述第三编码的每个奇偶校验位序列具有第三预定数目的奇偶校验位,所述第三预定数目大于所述第二预定数目。
在一些示例中,所述数据块序列中的每个数据块包括:所述第一编码的第一数目的奇偶校验位序列;所述第二编码的第二数目的奇偶校验位序列;所述第三编码的第三数目的奇偶校验位序列。所述第一数目、所述第二数目和所述第三数目是根据目标纠错开销级别确定的。所述方法还包括:接收信道条件信息;根据所述信道条件信息,更新所述目标纠错开销级别;根据所述更新的目标纠错开销级别,更改所述第一数目、所述第二数目和所述第三数目。
在一些示例中,对于每个数据块,每个编码的所述奇偶校验位序列分布在所述行或所述列中,使得同一编码的相邻奇偶校验位序列的数目最小化。
在一些示例中,每个行式数据块在其行中具有每个编码的奇偶校验位序列的相同分布;每个列式数据块在其列中具有每个编码的奇偶校验位序列的相同分布。
在一些示例中,所述方法还包括:在行式数据块中生成奇偶校验位序列。识别二进制向量,所述二进制向量包括:未知奇偶校验位序列;所述行式数据块中的所述奇偶校验位序列的所述行的所述数据位;所述先前列式数据块的所述对应行的所述位。识别有效的奇偶校验位序列,使得通过将所述未知奇偶校验位序列设置为所述有效的奇偶校验位序列并将所述二进制向量与奇偶校验矩阵的转置相乘以生成校正子,所述校正子包括向量,所述向量的元素数目等于所述奇偶校验矩阵的行数目,所述校正子的每个元素等于0。将所述奇偶校验位序列设置为所述有效奇偶校验位序列。
在一些示例中,所述奇偶校验位序列属于所述第一编码。所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的单行矩阵,使得:所述奇偶校验矩阵的第一元素为1;所述奇偶校验矩阵的每个后续元素是前一元素的α倍。
在一些示例中,所述奇偶校验位序列属于所述第二编码。所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的两行矩阵,使得:所述奇偶校验矩阵的第一行的第一元素为1;所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;所述奇偶校验矩阵的第二行的第一元素为1;所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍。
在一些示例中,所述奇偶校验位序列属于所述第三编码。所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的三行矩阵,使得:所述奇偶校验矩阵的第一行的第一元素为1;所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;所述奇偶校验矩阵的第二行的第一元素为1;所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍;所述奇偶校验矩阵的第三行的第一元素为1;所述奇偶校验矩阵的所述第三行的每个后续元素是前一元素的α5倍。
根据另一方面,本发明提供了一种方法。接收器的FEC解码器接收启用前向纠错(forward error correction,FEC)的接收信号。所述启用FEC的接收信号包括数据块序列。每个数据块包括多个编码位序列。每个编码位序列包括数据位序列和奇偶校验位序列,所述数据位序列包括一个或多个数据位,所述奇偶校验位序列包括一个或多个奇偶校验位。每个数据块包括第一编码的至少一个奇偶校验位序列和第二编码的至少一个奇偶校验位序列。所述第一编码的每个奇偶校验位序列具有第一预定数目的奇偶校验位。所述第二编码的每个奇偶校验位序列具有第二预定数目的奇偶校验位,所述第二预定数目大于所述第一预定数目。对于每个所接收数据块的每个编码位序列,所述FEC解码器使用所述编码位序列的所述奇偶校验位序列执行奇偶校验,以检测先前数据块中的至少一个位错误。
在一些示例中,所述数据块序列在行式数据块与列式数据块之间交替;每个行式数据块的所述多个编码位序列包括多行。每行包括数据位序列和奇偶校验位序列,所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位。所述多行定义多列。每个列式数据块的所述多个编码位序列包括多列。每列包括数据位序列和奇偶校验位序列,所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位。所述多列定义多行。使用行式数据块的行的奇偶校验位序列执行奇偶校验包括使用所述奇偶校验位序列来检测先前列式数据块的对应行中的至少一个位错误。使用列式数据块的列的奇偶校验位序列执行奇偶校验包括使用所述奇偶校验位序列来检测先前行式数据块的对应列中的至少一个位错误。
在一些示例中,所述数据块序列中的至少一个数据块包含第三编码的至少一个奇偶校验位序列,所述第三编码的每个奇偶校验位序列具有第三预定数目的奇偶校验位,所述第三预定数目大于所述第二预定数目。
在一些示例中,每个行式数据块在其行中具有每个编码的奇偶校验位序列的相同分布;每个列式数据块在其列中具有每个编码的奇偶校验位序列的相同分布。
在一些示例中,使用奇偶校验位序列来检测所述先前列式数据块的所述对应行中的位错误包括:识别二进制向量,所述二进制向量包括:所述奇偶校验位序列;所述行式数据块的所述行的所述数据位;所述先前列式数据块的所述对应行的所述位。将所述二进制向量与奇偶校验矩阵的转置相乘以生成校正子。所述校正子包括向量,所述向量的元素数目等于所述奇偶校验矩阵的行数目。根据所述校正子的所述元素,确定所述二进制向量包含至少一个位错误。
在一些示例中,所述奇偶校验位序列属于所述第一编码。所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的单行矩阵,使得:所述奇偶校验矩阵的第一元素为1;所述奇偶校验矩阵的每个后续元素是前一元素的α倍。所述方法还包括:响应于确定所述校正子的所述第一元素不为0,使用所述FEC解码器的校正子解码器模块来纠正所述检测的一个或多个错误。所述校正子解码器模块用于:向所述FEC解码器的单错误解码器单元提供所述校正子的所述第一元素;根据所述校正子的所述第一元素,使用所述单错误解码器单元来定位所述二进制向量中的单个位错误;纠正所述单个位错误。
在一些示例中,所述奇偶校验位序列属于所述第二编码。所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的两行矩阵,使得:所述奇偶校验矩阵的第一行的第一元素为1;所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;所述奇偶校验矩阵的第二行的第一元素为1;所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍。所述方法还包括:响应于确定所述校正子的所述第一元素或所述第二元素不为0,使用所述FEC解码器的校正子解码器模块来纠正所述检测的一个或多个错误。所述校正子解码器模块用于:通过将所述校正子的所述第一元素的立方与所述校正子的所述第二元素相加,计算值D3。如果D3为0,则所述校正子解码器模块用于:向所述FEC解码器的单错误解码器单元提供所述校正子的所述第一元素;根据所述校正子的所述第一元素,使用所述单错误解码器单元来定位所述二进制向量中的单个位错误;纠正所述单个位错误。如果D3不为0,则所述校正子解码器模块用于:向所述FEC解码器的两错误解码器单元提供所述校正子的所述第一元素和所述第二元素;根据所述校正子的所述第一元素和所述第二元素,使用所述两错误解码器单元来定位所述二进制向量中的两个位错误;纠正所述两个位错误。
在一些示例中,所述奇偶校验位序列属于所述第三编码。所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的三行矩阵,使得:所述奇偶校验矩阵的第一行的第一元素为1;所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;所述奇偶校验矩阵的第二行的第一元素为1;所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍;所述奇偶校验矩阵的第三行的第一元素为1;所述奇偶校验矩阵的所述第三行的每个后续元素是前一元素的α5倍。所述方法还包括:响应于确定所述校正子的所述三个元素中的任何一个均不为0,使用所述FEC解码器的校正子解码器模块来纠正所述检测的一个或多个错误。所述校正子解码器模块用于:通过将所述校正子的所述第一元素的立方与所述校正子的所述第二元素相加,计算值D3。如果D3为0,则所述校正子解码器模块用于:向所述FEC解码器的单错误解码器单元提供所述校正子的所述第一元素;根据所述校正子的所述第一元素,使用所述单错误解码器单元来定位所述二进制向量中的单个位错误;纠正所述单个位错误。如果D3不为0,则所述校正子解码器模块用于:通过将所述校正子的所述第一元素的5次方与所述校正子的所述第三元素相加,计算值D5;如果所述校正子的所述第一元素与D5的乘积等于所述校正子的所述第二元素与D3的乘积,则:向所述FEC解码器的两错误解码器单元提供所述校正子的所述第一元素和所述第二元素;根据所述校正子的所述第一元素和所述第二元素,使用所述两错误解码器单元来定位所述二进制向量中的两个位错误;纠正所述两个位错误。如果所述校正子的所述第一元素与D5的乘积不等于所述校正子的所述第二元素与D3的乘积;或所述校正子的所述第一元素等于0,则所述校正子解码器模块用于:向所述FEC解码器的三错误解码器单元提供所述校正子的所述第一元素、所述第二元素和所述第三元素;根据所述校正子的所述第一元素、所述第二元素和所述第三元素,使用所述三错误解码器单元来定位所述二进制向量中的三个位错误;纠正所述三个位错误。
在一些示例中,所述校正子解码器模块是门控校正子解码器模块,还用于使用所述第一编码或所述第二编码的奇偶校验位序列来检测和纠正所述行式数据块的所述行的所述数据位序列中或所述先前列式数据块的所述对应行中的位错误。
根据又一方面,提供了一种前向纠错(forward error correction,FEC)解码器。所述FEC解码器包括:校正子生成模块,用于接收启用前向纠错(forward errorcorrection,FEC)的接收信号。所述启用FEC的信号包括数据块序列。所述校正子生成模块用于:对于所接收数据块的编码位序列,使用所述编码位序列的奇偶校验位序列执行奇偶校验,以根据所计算的校正子的一个或多个元素来检测二进制向量中的任何位错误。所述二进制向量包括所述奇偶校验位序列、所述编码位序列的所述数据位序列和先前数据块的一个或多个位。所述FEC解码器包括:门控校正子解码器模块,包括第一解码器单元和第二解码器单元。响应于所述校正子生成模块检测到一个或多个位错误,所述门控校正子解码器模块用于执行若干步骤。如果根据所述校正子检测到第一数目的位错误,或者如果使用第一编码对所述奇偶校验位序列进行编码,则所述门控校正子解码器模块用于:向所述第一解码器单元提供所述校正子的至少一个元素;根据所述校正子,使用所述第一解码器单元来定位所述二进制向量中的所述位错误;纠正所述位错误。如果根据所述校正子检测到第二数目的位错误,并且如果使用第二编码对所述奇偶校验位序列进行编码,所述第二数目大于所述第一数目,则所述门控校正子解码器模块用于:向所述第二解码器单元提供所述校正子的至少一个元素;根据所述校正子,使用所述第二解码器单元来定位所述二进制向量中的所述位错误;纠正所述位错误。
附图说明
现在将通过示例参考示出本申请示例性实施例的附图,其中:
图1示出了光通信系统的框图,其中示出了本发明的示例性实施例可以在其中操作的环境的示例;
图2示出了本文描述的示例提供的用于前向纠错的灵活不规则阶梯码的示意图;
图3示出了本文描述的示例提供的可在图1所示的示例性光接收器中使用的示例性FEC解码器的框图;
图4示出了本文描述的示例提供的用于对图2所示的阶梯码进行编码的示例性方法的流程图;
图5示出了本文描述的示例提供的用于对图2所示的阶梯码进行解码以检测和纠正接收信号中的位错误的示例性方法的流程图;
图6示出了本文描述的示例提供的用于使用具有三个错误解码器单元的门控FEC解码器来定位和纠正不规则ECC中的位错误的示例性方法的流程图;
图7A示出了传统拉链码的可视化;
图7B示出了本文描述的示例提供的用于前向纠错的灵活不规则拉链码的可视化;
图8示出了本文描述的示例提供的用于前向纠错的灵活不规则oFEC码的示意图,其中示出了块行的单个块的扩展详情视图。
不同附图中可以使用类似的附图标记来表示类似的组件。
具体实施方式
在本文公开的示例中,描述了使用阶梯码等灵活不规则纠错码(error-correcting code,ECC)来实现速率自适应前向纠错(forward error correction,FEC)的方法和设备。在一些实施例中,所述ECC的每个码字使用两个或两个以上不同编码中的一个,每个编码具有不同数目的奇偶校验位。通过调整数据块中包括的每个编码的码字的比例,在一些示例中,可以精细地调整FEC开销,从而实现灵活的FEC开销级别,以响应通信信道中增加或减少的噪声或扰动。
示例性光通信系统
图1示出了使用FEC的光通信系统100的简化框图。将结合作为光发送器102(也简称为发送器102)和/或光接收器104(也简称为接收器104)的一部分的所述示例性光通信系统100来描述示例性实施例。应当理解的是,本发明并不限于光子通信或光通信,还可用于电、射频或其它有线或无线数字通信系统中的FEC;术语“发送器”或“接收器”的使用可以指使用FEC的任何类型的发送器或接收器。
所述发送器102通过光纤信道等光信道106发送数据,所述接收器104在所述数据通过所述光信道106之后接收所述数据。在一些实现方式中,通过使用FEC,可以实现非常低的错误概率,例如低于1e-15的位错误率(bit error rate,BER)。
在所述发送器102处,包括多个数据位110(即,信息位)的数字数据信号通过FEC编码器112,以生成启用FEC的数据信号114形式的编码位。在一些实施例中,所述启用FEC的数据信号114可以是阶梯码或其它ECC,下面将结合图2进一步详细描述。在一些实施例中,下面将结合图4进一步详细描述所述FEC编码器112的操作。
所述启用FEC的数据信号114的编码位的总数目(Lc)通常大于数据位的总数目(Li)。数量(Lc-Li)/Li称为所述FEC的开销(overhead,OH),而数量r=Li/Lc称为所述FEC的码率。所述启用FEC的数据信号114由映射和脉冲整形模块116接收,所述映射和脉冲整形模块116根据某个星座标签设计应用映射以将所述启用FEC的数据信号114的所述编码位转换为离散星座点,然后根据某个预定义脉冲整形函数将所述星座点转换为数字脉冲,从而生成数字电信号118。可选地,在所述发送器侧使用预均衡器120来补偿一些信道失真,从而根据所述数字电信号118生成均衡的数字电信号122,所述均衡的数字电信号122由调制模块124调制为模拟光信号126。
在所述接收器104处,所接收的模拟光信号128通过所述光信道106接收、由解调模块130解调为数字电信号132并由后均衡器134均衡以生成均衡的数字电信号136,所述均衡的数字电信号136补偿大部分剩余信道失真。然而,所述后均衡器通常无法补偿所述光信道106引入的噪声。然后,解映射模块138将所述均衡的数字电信号136转换回位序列,所述位序列相当于来自所述发送器的具有从所述光信道106引入的错误的编码位。在一些示例中,该位序列可以称为启用FEC的接收信号140。FEC解码器142用于纠正所述启用FEC的接收信号140的大部分错误,并产生恢复的信息位;在一些示例中,所述恢复的信息位可以称为纠错后的数字信号144。在一些实施例中,所述纠错后的数字信号144的恢复的信息位的错误概率设计为低于1e-15。在一些实施例中,下面将结合图5进一步详细描述所述FEC解码器142的操作。
示例性不规则阶梯码
在各实施例中,可以使用不同的FEC编码和解码方案或ECC。在一些实施例中,所述ECC是阶梯码。在一些实施例中,所述ECC是非阶梯拉链码。在一些实施例中,所述ECC是oFEC码。将结合图2至图6在阶梯码的上下文中描述示例性实施例,然后将结合图7A、图7B和图8描述非阶梯备选方案。
光系统中广泛使用的ECC的一个族是具有Bose–Chaudhuri–Hocquenghem(BCH)分量码(也称为BCH码或BCH编码)的空间耦合似乘积码族,如A.Y.Sukmadji、U.Martínez-和F.R.Kschischang在以下文献中所述:“拉链码:具有迭代代数解码的空间耦合似乘积码(Zipper Codes:Spatially-Coupled Product-Like Codes with IterativeAlgebraic Decoding)”,2019年第16届加拿大信息理论研讨会(CWIT),加拿大安大略省哈密尔顿市,2019年,第1-6页(以下简称“Sukmadji”),其全部内容通过引用结合在本申请中。在该码族中,每个位都受到两个BCH分量码字的保护。一些示例包括乘积码、阶梯码、oFEC码和拉链码。乘积码由P.Elias在以下文献中进一步详细描述:“无错误编码(Error-freecoding)”,《IEEE信息论汇刊》,第4卷第4期,第29-37页,1954年9月,其全部内容通过引用结合在本申请中。下面将简要描述乘积码。阶梯码由B.Smith、A.Farhood、A.Hunt、F.Kschischang和J.Lodge在以下文献中进一步详细描述:“阶梯码:适用于100Gb/s OTN的FEC(Staircase Codes:FEC for 100Gb/s OTN)”,《光波技术杂志》,第30卷,第110-117页,2012年,其全部内容通过引用结合在本申请中。下面将结合图2简要描述阶梯码。oFEC在以下文献中详细描述:“点对点相干光学物理层2.0规范P2PCO-SP-PHYv2.0-I01-190311(Point-to-Point Coherent Optics Physical Layer 2.0Specification P2PCO-SP-PHYv2.0-I01-190311)”,其全部内容通过引用结合在本申请中。下面将结合图8简要描述oFEC。拉链码在上述Sukmadji中进一步详细描述。下面将结合图7A至图7B简要描述拉链码。
BCH码形成一类循环纠错码,所述一类循环纠错码使用有限域(也称为伽罗瓦域)上的多项式构造。BCH码的其中一个关键特征在于,在设计码时,可以精确控制所述码可纠正的符号错误的数目。具体地,可以设计能够纠正多个位错误的二进制BCH码。BCH码的另一潜在优点在于易于解码,即易于通过一种称为校正子解码的代数方法解码。这可以简化使用BCH码的FEC解码器142的设计,从而使得所述FEC解码器142能够使用小型低功率电子硬件。
因此,存在简单的代数方法来求解1错误纠正BCH码、2错误纠正BCH码或3错误纠正BCH码(分别称为BCH1、BCH2和BCH3,其中1错误纠正BCH1码也称为汉明码)中的错误位置。光系统中采用的许多空间耦合似乘积ECC使用BCH码,所述BCH码可以纠正3个或更少的错误(即,BCH1、BCH2或BCH3),以受益于所述FEC解码器设计的低复杂性。
乘积码将位组织成矩形阵列或数据块,所述矩形阵列或数据块由多行和多列组成。在乘积码中,每个位都是“行码字”和“列码字”的一部分。因此,每行的一端包含多个奇偶校验位,每列的一端包含多个奇偶校验位,从而创建固定数目的奇偶校验位的垂直奇偶校验边缘(例如,可视化为矩形的右侧边缘)和水平奇偶校验边缘(例如,可视化为矩形的底部边缘)。所述两个奇偶校验边缘的奇偶校验位重叠的拐角(例如,可视化为矩形的右下角)实际上是“针对奇偶校验位的奇偶校验位”区域,所述“针对奇偶校验位的奇偶校验位”区域由奇偶校验位组成,所述奇偶校验位用于对完全由奇偶校验位组成的码字执行错误检验。所述“针对奇偶校验位的奇偶校验位”区域表示在不降低乘积码性能的情况下无法通过打孔消除的浪费位。因此,需要减小每个数据块中所述“针对奇偶校验位的奇偶校验位”区域的大小,以提高效率和吞吐量。
尽管传统乘积码在整个过程中使用单一类型的分量码,但是还存在用于设计不规则乘积码的提议,其中所述数据块的所述行具有不同数目的奇偶校验位。所述奇偶校验位的数目在所述两个奇偶校验边缘中的每个奇偶校验边缘的第一端以相对较高的数目开始,并且随着所述奇偶校验边缘接近其通常重叠的所述拐角而逐渐减小到0个奇偶校验位或相对较少的奇偶校验位。一些不规则乘积码设计可以提供相对于传统乘积码更多的固定开销选项和更好的性能;然而,无法提供灵活的(本文中用于表示动态可重新配置或可调)开销级别,并且还会导致提供不均匀的位保护级别(即,如果所述奇偶校验边缘是所述右侧边缘和所述底部边缘,则位于右下角的位实现最弱的保护级别,而位于左上角的位实现最强的保护级别)。
乘积码是一次对一个数据块进行编码和解码的块码,独立于数据块序列中的其它数据块。相比之下,阶梯码表现出一种永不终止的卷积结构。阶梯码可以可视化为以阶梯状结构堆叠的矩形数据块序列,其中第二数据块位于初始数据块的右侧,第三数据块位于所述第二数据块的上方,第四数据块位于所述第三数据块的左侧,依此类推。“阶梯”的每行和每列构成码字,因此,所述初始数据块的每行级联到所述第二数据块的对应行以形成单个行式码字,而所述第二数据块的每列与所述第三数据块的对应列级联以形成单个列式码字,依此类推。在该示例中,所述第二数据块可以称为“行式”数据块,而所述第三数据块可以称为“列式”数据块。通常,行式数据块包括位于远离先前数据块的边缘处的奇偶校验位的边缘(即,该示例中的所述第二数据块的所述右侧边缘),列式数据块包括位于远离先前数据块的边缘处的奇偶校验位的边缘(即,该示例中的所述第三数据块的所述顶部边缘)。由于阶梯码的所述卷积结构,因此可以采用迭代滑动窗口解码,其中,先前子块可以帮助当前块检测和纠正错误。因此,在给定相同开销的情况下,阶梯码相对于乘积码通常具有更高的输入BER阈值。
本发明描述了可以使用单个解码器结构对具有不同开销级别的码字进行解码的实施例。在一些实施例中,所述解码器具有较低的设计和实现复杂性、允许微调和动态地重新配置所述开销级别并实现与现有方法相当或更好的性能。在一些实施例中,在不增加算法设计复杂性的情况下,可以使用具有不规则BCH分量码(1错误纠正BCH、2错误纠正BCH或3错误纠正BCH)的空间耦合似乘积码来实现相对于截短的一个或多个优点,包括较低的硬件设计复杂性、较低的实现复杂性、较高的可维护性和/或更好的性能。在一些实施例中,所述三种类型的码字(BCH1、BCH2和BCH3)都可以通过BCH3解码器的门控版本进行解码,从而实现较低的设计和解码复杂性。在一些实施例中,可以根据目标开销级别来调整所述三个BCH码的比例,从而实现较高的可维护性。一些实施例的性能可以超过截短。
现在结合图2详细描述所述灵活不规则ECC的第一示例性基码结构,即灵活不规则阶梯码。
图2示出了本文描述的一些实施例提供的用于前向纠错的灵活不规则阶梯码的示意图。所述不规则阶梯码200是数据块序列,依次包括:初始数据块202、第一行式数据块204、第一列式数据块206、第二行式数据块208、第二列式数据块210和第三行式数据块212。因此,所述初始数据块202将在所述第一行式数据块204之前进行编码和发送,并且将构成相对于所述第一行式数据块204的“先前”数据块。所述发送器的FEC编码器112接收所述数字数据信号110并将其编码为所述不规则阶梯码200作为所述数据块序列,所述数据块序列在行式数据块与列式数据块之间交替。类似地,所述接收器的FEC解码器142接收所述启用FEC的接收信号140并将其解码为构成所述不规则阶梯码200的所述数据块序列。
每个行式数据块(204、208、212)包括多行。每行包括数据位序列(例如,所述第二行式数据块208的数据位序列232)和奇偶校验位序列(例如,所述第二行式数据块208的奇偶校验位序列234),所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位。总体而言,行式数据块的所述多行定义多列,使得给定位位于一行和一列中。每个行式码字的所述奇偶校验位序列(例如,所述第二行式数据块208的所述奇偶校验位序列234)根据其相应的数据位序列(例如,所述第二行式数据块208的所述数据位序列232)和先前列式数据块的对应行(例如,所述第一列式数据块206的行230)进行编码。
类似地,每个列式数据块(206、210)包括多列。每列包括数据位序列(例如,所述第一列式数据块206的数据位序列242)和奇偶校验位序列(例如,所述第一列式数据块206的奇偶校验位序列244),所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位。总体而言,列式数据块的所述多列定义多行,使得给定位位于一行和一列中。每个列式码字的所述奇偶校验位序列(例如,所述第一列式数据块206的所述奇偶校验位序列244)根据其相应的数据位序列(例如,所述第一列式数据块206的所述数据位序列242)和先前行式数据块的对应列(例如,所述第一行式数据块204的列240)进行编码。
如图2所示,该模式的唯一例外情况是所述初始数据块202;在一些实施例中,所述初始数据块202可以在通信开始时进行编码和解码。在一些实施例中,所述初始数据块202可以不包含奇偶校验位。在其它实施例中,所述初始数据块202可以仅包含对所述发送器102和所述接收器104已知的位值,例如完全为0位值的数据块,从而消除对发送所述初始数据块202的需要,即,可以通过相当于截短的过程从所述信号中消除整个所述初始数据块202。所述初始数据块202的所述行或所述列可以用作后续数据块(例如,所述第一行式数据块204)的行式码字或列式码字的一部分。
在一些实施例中,可以在包括多个数据块(在图2中示为5个数据块)的滑动窗口250内对所述阶梯码200进行解码。下面将结合图5进一步详细描述所述滑动窗口。
应当理解的是,图2所示的行、列以及数据位序列和奇偶校验位序列出于说明性目的而简化,并且未按比例示出。在一些实施例中,每个数据块可以具有数十、数百或数千行和列,并且所述奇偶校验位序列可以包括给定码字长度的一小部分。
因此,每个码字包含奇偶校验位序列。然而,所述示例性阶梯码200是“不规则”阶梯码,因为其各个码字可以使用具有不同数目的奇偶校验位的不同编码。在所述示例性不规则阶梯码200中,每个数据块包含:第一编码222(例如,BCH1)的至少一个奇偶校验位序列,其包括第一预定数目的奇偶校验位;第二编码224(例如,BCH2)的至少一个奇偶校验位序列,其包括第二预定数目的奇偶校验位,所述第二预定数目大于所述第一预定数目;第三编码226(例如,BCH3)的至少一个奇偶校验位序列,其包括第三预定数目的奇偶校验位,所述第三预定数目大于所述第二预定数目。应当理解的是,一些示例可以仅使用两个编码,也可以使用三个以上的编码。例如,一个替代实施例可以仅使用所述第一编码222和所述第二编码224。此外,在其它实施例中使用的所述两个编码可以是:例如,表示所述第一编码222的BCH1和表示所述第二编码224的BCH3;或者,表示所述第一编码222的BCH2和表示所述第二编码224的BCH3。
在一些实施例中,可以结合目标纠错开销级别来确定使用每个编码的码字的分配或分布。更高的期望纠错级别(即,更高的开销)可以指示相对于BCH2码字和BCH1码字的更大比例的BCH3码字(即,具有所述第三编码226的奇偶校验位序列的码字),而更低的期望纠错级别(即,更低的开销)可以指示相对于BCH2码字和BCH3码字的更大比例的BCH1码字(即,具有所述第一编码222的奇偶校验位序列的码字)。因此,可以对所述数据块序列的每个数据块进行编码,以包括:所述第一编码的第一数目的奇偶校验位序列;所述第二编码的第二数目的奇偶校验位序列;所述第三编码的第三数目的奇偶校验位序列;其中,所述第一数目、所述第二数目和所述第三数目是根据所述目标纠错开销级别确定的。
在一些实施例中,可以根据信道条件或其它操作参数动态地确定所述目标纠错开销级别。例如,在一些实施例中,所述接收器104可以用于向所述发送器102提供反馈,以指示所述接收信号的SNR或指示环境条件或信道条件的其它信息。所述接收器104和/或所述发送器102还可以根据正在发送的数据的性质、所述接收器104的工作模式或可能需要调整所述FEC开销级别的任何其它因素,来进一步通信以优化所述目标纠错开销级别。该通信可以在开机时、在通信开始时或在通信期间周期性地进行,以动态地调整所述FEC开销级别以适应不断变化的条件或要求。在一些实施例中,所述发送器102和/或所述接收器104可以是收发器或调制解调器,所述收发器或调制解调器用于通过所述光信道106或通过某个其它信道或介质发送和接收数据,从而使得能够将信息从所述接收器104传送到所述发送器102。在一些实施例中,可以评估(例如,由所述接收器104根据所述接收的光信号128的所述BER)并使用信道条件来动态地改变所述ECC的码字编码的分布。然后,所述接收器104或所述发送器102可以根据所述评估的信道条件来确定新的目标纠错开销级别。在一些实施例中,所述接收器104可以向所述发送器102发送信道条件信息,所述信道条件信息指示所述评估的信道条件。然后,所述发送器102可以根据所述接收的信道条件信息来更新所述目标纠错开销级别。所述第一数目、所述第二数目和所述第三数目以及所述ECC的每个数据块内码字编码的分布可以根据所述更新的目标纠错开销级别来改变。然后,所述FEC编码器112对所述改变的ECC进行编码。所述新的ECC码字编码分布将对所述接收器104已知(例如,直接从所述发送器102发送或使用所述接收器104生成的所述信道条件数据根据预定算法在所述接收器104处生成),并且所述FEC解码器142随后将使用所述新的ECC码字编码来对所述接收的ECC进行解码。
给定数据块内每个编码的码字分布可以由所述发送器102的所述FEC编码器112配置。所述FEC编码器112可以分布所述码字,以实现不同编码的码字在数据块的行或列中的均一或均匀分布,从而避免所述第一编码222的多个码字或所述第三编码226的多个码字在相邻行或列中聚类。在一些实施例中,每个编码的所述奇偶校验位序列分布在给定数据块的行或列中,使得同一编码的相邻奇偶校验位序列的数目最小化。
在一些实施例中,所述数据块具有彼此不同的码字编码分布,而在其它实施例中,所述数据块均具有相同的码字编码分布。在另一些实施例中,例如图2所示的示例性阶梯码200,所有行式数据块具有相同的码字编码分布,并且所有列式数据块具有相同的码字编码分布。通常,对所有数据块使用一种分布或两种分布(一种行式分布、一种列式分布)有利于协调所述发送器102与所述接收器104之间的编码和解码,因为所述数据信号不需要包括附加元数据,所述附加元数据指示每个发送的数据块的分布。然而,在一些实施例中,可以根据种子值或所述目标纠错开销级别为每个数据块自动生成分布,从而使得所述发送器102和所述接收器104能够知道每个数据块的分布,而无需交换除当前所述目标纠错开销级别之外的任何元数据。可以是预定义分布模式,在这种情况下可以存储所述分布模式,也可以根据一组参数重新生成所述分布模式。在一些实施例中,可以为每个模式(即,码字编码的分布)分配索引:这使得所述发送器和所述接收器在启动时仅传送该索引,以协调所述码字编码的分布。可以使用上述机制在所述发送器102与所述接收器104之间协调关于每个数据块内码字编码的分布的元数据,以交换关于所述目标纠错开销级别的信息。
所述灵活不规则ECC(例如,所述不规则阶梯码200)的编码可以由FEC编码器112执行,下面将结合图4进行详细描述。可以由FEC解码器142对所述ECC进行解码以执行错误检测和纠错,下面将结合图5进行详细描述。现在将结合图3描述FEC解码器142的示例性架构。
示例性FEC解码器
图3示出了用于对具有三个不同码字编码的不规则ECC进行解码的示例性FEC解码器142,所述三个不同码字编码用于分别纠正每个码字的至多一个位错误、两个位错误或三个位错误。下面将结合图5描述所述FEC解码器142的详细操作。
所述FEC解码器142接收包含编码位和错误的所述启用FEC的接收信号140,例如包含因通过所述光信道106发送而引起的位错误的所述不规则阶梯码200。所述接收的启用FEC的接收信号140的每两个相邻数据块用于识别行式位序列或列式位序列,以确定所述行式位序列或所述列式位序列是否构成码字(即,无位错误)。每行或每列独立处理,直到检测到位错误。
校正子生成模块302用于根据当前正在处理的行或列的位值来生成或计算校正子向量。对于所接收的行式数据块的行,所述校正子生成模块302使用所述行的奇偶校验位序列执行奇偶校验,以根据所述计算的校正子的一个或多个元素来检测所述行的数据位序列或先前列式数据块的对应行中的任何位错误。对列式数据块的每列执行对应的操作。
将所述生成的校正子向量传递到校正子解码器模块304,所述校正子解码器模块304包括三个错误解码器单元:单错误解码器单元306,能够检测和纠正至多一个位错误;两错误解码器单元308,能够检测和纠正至多两个位错误;三错误解码器单元310,能够检测和纠正至多三个位错误。在一些实施例中,所述单错误解码器单元306可以用于纠正BCH1码字中的错误,所述两错误解码器单元308可以用于纠正BCH2码字中的错误,所述三错误解码器单元310可以用于纠正BCH3码字中的错误。此外,当在BCH2码字或BCH3码字中检测到单个位错误时,可以使用所述单错误解码器单元306来纠正所述错误;当在BCH3码字中检测到两个错误时,可以使用所述两错误解码器单元308来纠正所述错误。因此,所述校正子解码器模块304用作门控解码器,以将上述多个并行FEC解码器的一些优点与灵活性和可调性相结合。在替代实施例中,所述校正子解码器模块304可以仅包含两个或三个以上错误解码器单元,所述两个或三个以上错误解码器单元用于纠正不同数目的位错误。
一旦所述位错误已纠正,所述FEC解码器142即输出所述纠错后的数字信号144。
示例性编码方法
现在结合图4描述用于对所述不规则阶梯码200进行编码的示例性方法400。由于阶梯码构成拉链码的特例(下面将结合图7A至图7B进行描述),应当理解的是,可以根据关于如何对此类码进行编码的具体细节将所述方法400推广到非阶梯拉链码,例如oFEC码(下面将结合图8进行描述)。
图4示出了用于对所述不规则阶梯码200进行编码的示例性方法400的流程图。在一些实施例中,所述方法400可以由发送器(例如,光发送器102)的FEC编码器112执行。所述方法400针对所接收的数字数据信号110的每个所接收数据块重复步骤402、步骤404和步骤418。类似地,所述方法400针对所述当前数据块的每行或每列重复步骤404的子步骤406、子步骤408和子步骤410。可选步骤420和可选步骤422以虚线示出。
如上文结合图2所述,所述初始数据块202的所述编码可以不遵循图4的流程图中所示的编码步骤的模式,因为在一些实施例中,所述初始数据块202可以不包括奇偶校验位。因此,在一些实施例中,所述初始数据块202可以完全使用所述接收的数字数据信号110的数据位来填充,或者在其它实施例中,可以使用非信息承载固定位值(例如,所有0位值)来填充。然而,所述方法400描述了所述不规则阶梯码200的每个后续行式数据块和列式数据块的编码。
在步骤402中,所述FEC编码器112接收所述数字数据信号110。针对所接收的足以填充所述阶梯码200的数据块的每组数据位重复所述步骤。应当理解的是,所述方法400的步骤呈现为线性序列,但在一些实施例中,可以并行地或以不同的顺序或并发地执行。例如,根据所述数字数据信号110的所述接收的数据位生成数据块的过程可以在发送所述数据块并对其进行编码时连续执行。
在步骤404中,所述FEC编码器112生成所述启用FEC的数据信号114的数据块,即所述不规则阶梯码200的行式数据块或列式数据块。步骤404由子步骤406、子步骤408和子步骤410组成。
在子步骤406中,所述FEC编码器112确定数据块的每行或每列的奇偶校验位序列编码。因此,为行式数据块的每行分配第一编码222(例如,BCH1)、第二编码224(例如,BCH2)或第三编码226(例如,BCH3)中的编码(对于使用三种编码的各实施例)。该分配可以基于码字编码的分布,如上文结合图2所述。
针对所述当前数据块的每行或每列,执行步骤408和步骤410。在步骤408中,使用来自所述接收的数字数据信号110的数据位来填充所述数据块的行(对于行式数据块)或列(对于列式数据块)。
在步骤410中,为所述行或所述列生成奇偶校验位序列。步骤410作为子步骤412、子步骤414和子步骤416执行。
在子步骤412中,识别二进制向量。所述二进制向量由尚未获知的奇偶校验位(例如,所述奇偶校验位序列234)组成,所述尚未获知的奇偶校验位级联到所述当前数据块的所述行或所述列的所述数据位(例如,所述数据位序列232),并且级联到所述先前数据块的对应行或列(例如,所述行230)的位。因此,所述二进制向量的所述奇偶校验位确定之后,所述二进制向量将是所述阶梯码200的码字。
在子步骤414中,识别有效奇偶校验位序列。该确定是根据用于所述码字的编码进行的。例如,如果所述奇偶校验位序列234使用BCH编码,则可以使用根据伽罗瓦域的数字定义的奇偶校验矩阵来识别有效奇偶校验位序列。现在,将详细描述BCH码字编码。
假设t是所述二进制向量。大小为2m的伽罗瓦域(Galois field,GF)上的(n,k)BCH编码器利用生成器矩阵G来生成码字x:
x=tG,
其中,t是1×k二进制向量,x是1×n二进制向量,G是k×n二进制矩阵。
BCH1、BCH2和BCH3的奇偶校验矩阵(分别为H1、H2和H3)的宽度均为n列(n是码字的长度),并且假设对于每个编码使用相同的伽罗瓦域(GF)(其中,α是所述伽罗瓦域的本原元素),可以如下所述以GF元素格式(而不是二进制格式)编写:
H1=[1 α α2…]
因此,对于所述第一编码222的奇偶校验位序列,其中所述第一编码是BCH1,所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的单行矩阵,使得:所述奇偶校验矩阵的第一元素为1;所述奇偶校验矩阵的每个后续元素是前一元素的α倍。对于所述第二编码224的奇偶校验位序列,其中所述第二编码是BCH2,所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的两行矩阵,使得:所述奇偶校验矩阵的第一行的第一元素为1;所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;所述奇偶校验矩阵的第二行的第一元素为1;所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍。对于所述第三编码226的奇偶校验位序列,其中所述第三编码是BCH3,所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的三行矩阵,使得:所述奇偶校验矩阵的第一行的第一元素为1;所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;所述奇偶校验矩阵的第二行的第一元素为1;所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍;所述奇偶校验矩阵的第三行的第一元素为1;所述奇偶校验矩阵的所述第三行的每个后续元素是前一元素的α5倍。
将所述二进制向量(采用数字格式)与所述奇偶校验矩阵的转置相乘以生成校正子,所述校正子包括向量,所述向量的元素数目等于所述奇偶校验矩阵的行数目(采用GF或数字格式,而不是二进制格式)。对于BCH1,所述校正子定义为S1;对于BCH2,所述校正子定义为[S1,S3];对于BCH3,所述校正子定义为[S1,S3,S5],其中, 其中,c是采用数值格式的所述二进制向量,是所述奇偶校验矩阵H1的所述转置,是所述奇偶校验矩阵H2的所述转置,是所述奇偶校验矩阵H3的所述转置。BCH1编码和解码仅使用S1,BCH2解码仅使用S1和S3,BCH3解码使用S1、S3和S5。
必须识别所述未获知的奇偶校验位的值,使得所述计算的校正子的所有元素(例如,BCH2的S1和S3)必须等于0。在不同的实施例中,可以通过多种不同的方式来识别此类编码的有效奇偶校验位序列。一些实施例通过以下方式执行该识别,即通过求解所述未获知的奇偶校验位,例如通过使用具有未获知位值的二进制向量执行与所述奇偶校验矩阵的乘法运算,然后求解所述未获知的奇偶校验位值的所得等式。应当理解的是,求解此类数学计算或约束可以由电子硬件和/或软件以各种方式执行。
在子步骤416中,所述奇偶校验位序列根据上述求解的约束或等式等设置为等于有效的奇偶校验位序列,使得所述二进制向量(包括有效的奇偶校验位)与所述奇偶校验矩阵的所述转置相乘生成校正子向量,其中每个元素等于0。该运算相当于将二进制向量t与生成器矩阵G相乘以生成码字x,如上所述。
在步骤418中,发送所述启用FEC的数据信号114。在一些实施例中,这可能意味着通过所述光发送器102的其它模块(116、120和124)传播所述启用FEC的数据信号114,以使用所述调制模块124通过所述光信道106发送所得到的光信号126。在一些实施例中,传播和发送所述启用FEC的数据信号114作为所述初始数据块202,然后依次传播和发送每个后续数据块204、206、208、210、212等。
在一些实施例中,所述不规则阶梯码200的所述编码可以动态地适应信道条件。如上所述,可以评估并使用信道条件来动态地改变所述不规则阶梯码200或其它灵活ECC的码字编码的分布。
在可选步骤420中,可以根据由于接收信道条件信息(例如,由所述接收器104根据BER或在所述接收的光信号128中检测到的其它失真发送)而评估的信道条件来(例如,由所述FEC编码器142)确定新的目标纠错开销级别。
在可选步骤422中,所述第一数目、所述第二数目和所述第三数目以及所述不规则阶梯码200或其它灵活ECC的每个数据块内码字编码的分布可以根据所述更新的目标纠错开销级别来改变。然后,所述FEC编码器112返回步骤402,以使用所述改变的ECC编码对下一数据块进行编码。
示例性解码方法
现在结合图5描述用于对所述不规则阶梯码200进行解码以检测和纠正位错误的示例性方法500。由于阶梯码构成拉链码的特例(下面将结合图7A至图7B进行描述),应当理解的是,可以根据关于如何对此类码进行解码的具体细节将所述方法500推广到非阶梯拉链码,例如oFEC码(下面将结合图8进行描述)。
图5示出了用于对图2所示的不规则阶梯码200进行解码以检测和纠正接收信号中的位错误的示例性方法的流程图。在一些实施例中,所述方法500可以由接收器(例如,光接收器104)的FEC解码器142执行。所述方法500针对所接收的启用FEC的接收信号140的每个所接收数据块重复步骤502、步骤504和步骤520。类似地,所述方法500针对所述当前数据块的每行或每列重复步骤504的子步骤506、子步骤508、子步骤516和子步骤518。
如上文结合图2和图4所述,所述初始数据块202的所述解码可以不遵循图5的流程图中所示的解码步骤的模式,因为所述初始数据块202在一些实施例中可以不包括奇偶校验位,并且在一些实施例中可以不包括任何类型的信息承载位。因此,在一些实施例中,所述初始数据块202可以完全使用所述接收的数字数据信号110的数据位来填充,也可以完全使用固定非信息承载位(例如,所有0位值)来填充,并且不对其执行奇偶校验。然而,所述方法500描述了所述不规则阶梯码200的每个后续行式数据块和列式数据块的解码。
在步骤502中,所述FEC解码器142从所述解映射模块138等接收所述启用FEC的接收信号140的数据块。
在步骤504中,所述FEC解码器142对所述启用FEC的接收信号140的所述数据块执行奇偶校验。这些奇偶校验作为子步骤506、子步骤508、子步骤516和子步骤518执行。
在子步骤506中,所述FEC解码器142确定所述数据块的每行或每列的奇偶校验位序列编码。给定数据块内每个编码的码字分布可以基于上文结合图2所述的码字编码的分布。例如,该信息可以在启动时从所述发送器102接收。
针对所述当前数据块的每行或每列,执行子步骤508、子步骤516和子步骤518。
在子步骤508中,所述FEC解码器142对所述行或所述列执行奇偶校验。该奇偶校验作为子步骤510、子步骤512和子步骤514执行。
在子步骤510中,如图4的方法400所示,识别二进制向量。所述二进制向量对应于码字(如果有效,即不包含位错误):所述二进制向量由所述当前行或所述当前列的奇偶校验位(例如,所述奇偶校验位序列234)、所述当前行或所述当前列的数据位(例如,所述数据位序列232)和先前数据块的行或列(例如,所述行230)组成。
在子步骤512中,所述校正子生成模块302用于生成所述校正子,如上文结合所述方法400所述。将所述二进制向量与所述给定编码的所述奇偶校验矩阵的所述转置相乘。现在,将详细描述在解码过程中生成校正子。
s=yHT,
其中,y是1×n向量,s是1×(n-k)向量,H是(n-k)×n矩阵。
在子步骤514中,所述校正子解码器模块304根据所述校正子s来检测位错误。当且仅当s=0时,所述二进制向量y才是码字。当s≠0且e的汉明权重小于或等于所述BCH码能够纠正的最大错误数时,仅向量s是计算e所需的足够信息。计算出e之后,可以恢复x,使得
如方法400所示,定义BCH1解码只需要S1,BCH2解码需要S1和S3,BCH3解码需要S1、S3和S5。在一些实施例中,BCH3解码器可以是门控解码器(例如,图3所示的门控FEC解码器142),以便如下所述对BCH1、BCH2和BCH3码字执行位错误检测、定位和纠正。
表1–BCH3解码器
鉴于表1定义了响应于BCH3解码器的不同值S1、S3、S5、D3和D5而执行的操作,应当理解的是,表1的子表表示BCH2编码器(行v=0至v=2,其中列S5和D5已消除)或BCH1编码器(行v=0和v=1,其中列S3、S5、D3和D5已消除)执行的操作。
由于H1和H2是H3的子矩阵(如上文结合图4所示),所述BCH1解码器和所述BCH2解码器可以实现为所述BCH3解码器的子模块。下面将结合图6详细描述示例性门控BCH3解码器的流程图。
因此,响应于确定所述校正子的任意元素不为0,所述校正子解码器模块304可以确定所述二进制向量包含至少一个位错误。在各实施例中,无论用于所述当前码字的编码如何,始终使用BCH3奇偶校验矩阵来计算所述校正子,该确定可以忽略BCH1和BCH2的所述校正子的第三元素,并且还可以忽略BCH1的所述校正子的第二元素。
在子步骤516中,所述校正子解码器模块304用于定位所述二进制向量中的位错误。在子步骤518中,定位所述位错误之后,所述校正子解码器模块304通过翻转所述位错误所在位的值等来纠正所述位错误。在一些实施例中,至少步骤516和(可能地)步骤518由所述错误解码器单元(306、308、310)中的一个根据上述表1中识别的操作来执行。
因此,对于BCH1,所述校正子解码器模块304用于:向所述单错误解码器单元306提供所述校正子的所述第一元素;根据所述校正子的所述第一元素,使用所述单错误解码器单元306来定位所述二进制向量中的单个位错误;纠正所述单个位错误。
对于BCH2,所述校正子解码器模块304用于:通过将所述校正子的所述第一元素的立方与所述校正子的所述第二元素相加,计算值D3。如果D3为0,则所述校正子解码器模块304用于:向所述单错误解码器单元306提供所述校正子的所述第一元素;根据所述校正子的所述第一元素,使用所述单错误解码器单元306来定位所述二进制向量中的单个位错误;纠正所述单个位错误。如果D3不为0,则所述校正子解码器模块304用于:向所述两错误解码器单元308提供所述校正子的所述第一元素和所述第二元素;根据所述校正子的所述第一元素和所述第二元素,使用所述两错误解码器单元308来定位所述二进制向量中的两个位错误;纠正所述两个位错误。
对于BCH3,所述校正子解码器模块304用于:通过将所述校正子的所述第一元素的立方与所述校正子的所述第二元素相加,计算值D3。如果D3为0,则所述校正子解码器模块304用于:向所述单错误解码器单元306提供所述校正子的所述第一元素;根据所述校正子的所述第一元素,使用所述单错误解码器单元306来定位所述二进制向量中的单个位错误;纠正所述单个位错误。如果D3不为0,则所述校正子解码器模块304用于:通过将所述校正子的所述第一元素的5次方与所述校正子的所述第三元素相加,计算值D5。如果所述校正子的所述第一元素与D5的乘积等于所述校正子的所述第二元素与D3的乘积,则所述校正子解码器模块304用于:向所述两错误解码器单元308提供所述校正子的所述第一元素和所述第二元素;根据所述校正子的所述第一元素和所述第二元素,使用所述两错误解码器单元308来定位所述二进制向量中的两个位错误;纠正所述两个位错误。如果D3不等于0且满足两个其它条件中的任意条件,则所述校正子解码器模块304用于:向所述三错误解码器单元310提供所述校正子的所述第一元素、所述第二元素和所述第三元素;根据所述校正子的所述第一元素、所述第二元素和所述第三元素,使用所述三错误解码器单元310来定位所述二进制向量中的三个位错误;纠正所述三个位错误。所述两个其它条件为:第一,所述校正子的所述第一元素与D5的乘积不等于所述校正子的所述第二元素与D3的乘积;第二,S1等于0。
在一些实施例中,可以在任何给定时间在包括多个数据块的滑动窗口250内对所述阶梯码200进行解码。图2所示的滑动窗口250包括5个数据块;然而,在各示例性实施例中,可以使用包括更多数目的数据块(n≥5)的滑动窗口。在所述滑动窗口250向上和向右滑动之前,通常以预定顺序对所述滑动窗口250内的每个数据块进行一次或多次解码,使得左侧和下方最旧的k个数据块退出所述滑动窗口250,并且右侧和上方新的k个块添加到所述滑动窗口250,其中1≤k≤n。
使用门控解码器的示例性纠错方法
如上文结合图5所述,灵活门控BCH3解码器可以用于对BCH1、BCH2或BCH3编码位序列进行解码。然而,所述FEC编码器112可能需要在三个不同的生成器矩阵之间切换,而所述门控FEC解码器142可能只需要单个灵活门控BCH3解码器结构。在一些实施例中,灵活门控BCH3解码器始终使用H3作为所述奇偶校验矩阵来对BCH1、BCH2和BCH3码字进行解码。在一些实施例中,BCH3校正子生成模块302可以用于使用所述单个BCH奇偶校验矩阵H3来生成BCH1和BCH2二进制向量的所述校正子,其中所得到的校正子的第三行和/或第二行被适当地丢弃或忽略。
图6示出了用于使用具有与三个编码(BCH1、BCH2和BCH3)对应的三个错误解码单元的门控FEC解码器来定位和纠正不规则ECC的二进制向量中的位错误的示例性方法600的流程图。
在步骤602中,所述校正子生成模块302计算所接收数据块的行或列的校正子。如上文结合图5所述,识别所述二进制向量(包括所述数据块的所述行或所述列以及先前数据块的行或列),并将所述二进制向量与所述奇偶校验矩阵的所述转置相乘以生成所述校正子。在这种情况下,所使用的唯一奇偶校验矩阵是BCH3的所述奇偶校验矩阵H3。因此,所述生成的校正子始终具有三行(采用其数字表示)。
在步骤603中,如果所述生成的校正子的元素指示所述二进制向量是有效码字(如上所述),则不应纠正所述二进制向量中的位错误,并且可以处理下一二进制向量:对于所述当前二进制向量,所述方法600终止。然而,响应于确定所述二进制向量不是有效码字(即,确定所述二进制向量包含一个或多个位错误),所述方法600转到步骤604。
在步骤604中,所述校正子解码器模块304检查所述当前码字是否为所述第一编码(即,该示例中的BCH1)的码字。如果是,则所述方法600转到步骤606,否则转到步骤608。
在步骤606中,使用所述单位错误解码器306来定位和/或纠正所述码字中的最多一个位错误。将所述校正子的所述第一元素S1传递到所述单位错误解码器306来定位所述位错误。
在步骤608中,如上文结合图5所述计算D3。
在步骤610中,所述校正子解码器模块304检查D3是否等于0。如果是,则所述方法600转到步骤606,否则转到步骤612。
在步骤612中,所述校正子解码器模块304检查所述当前码字是否为所述第二编码(即,该示例中的BCH2)的码字。如果是,则所述方法600转到步骤614,否则转到步骤616。
在步骤614中,使用所述两位错误解码器308来定位和/或纠正所述码字中的两个位错误。将所述校正子的所述前两个元素S1和S3传递到所述两位错误解码器308来定位所述位错误。
在步骤616中,如上文结合图5所述计算D5。
在步骤618中,所述校正子解码器模块304检查S1D5是否等于S3D3。如果是,则所述方法600转到步骤614,否则转到步骤620。
在步骤620中,使用所述三位错误解码器310来定位和/或纠正所述码字中的三个位错误。将所述校正子的全部三个元素S1、S3和S5传递到所述三位错误解码器310来定位所述位错误。
因此,所述门控校正子解码器模块304包括第一解码器单元(单错误解码器单元306)、第二解码器单元(两错误解码器单元308)和第三解码器单元(三错误解码器单元310)。响应于所述校正子生成模块302检测到一个或多个位错误,所述门控校正子解码器模块304用于执行所述方法600的步骤。如果根据所述校正子检测到第一数目(例如,一个)的位错误,或者如果使用第一编码(例如,BCH1)对所述奇偶校验位序列进行编码,则所述门控校正子解码器模块304用于:向所述第一解码器单元提供所述校正子的至少一个元素(例如,所述第一元素);根据所述校正子,使用所述第一解码器单元来定位所述二进制向量中的所述位错误;纠正所述位错误。如果根据所述校正子检测到第二数目(例如,两个)的位错误,并且如果使用第二编码(例如,BCH2)对所述奇偶校验位序列进行编码,所述第二数目大于所述第一数目,则所述门控校正子解码器模块304用于:向所述第二解码器单元提供所述校正子的至少两个元素(例如,所述前两个元素);根据所述校正子,使用所述第二解码器单元来定位所述二进制向量中的所述位错误;纠正所述位错误。在所述600的所述示例性实施例中,如果根据所述校正子检测到第三数目(例如,三个)的位错误,并且如果使用第三编码(例如,BCH3)对所述奇偶校验位序列进行编码,所述第三数目大于所述第二数目,则所述门控校正子解码器模块304用于:向所述第三解码器单元提供所述校正子的至少三个元素(例如,全部三个元素);根据所述校正子,使用所述第三解码器单元来定位所述二进制向量中的所述位错误;纠正所述位错误。
示例性不规则拉链码
如上所述,图2所示的阶梯码是拉链码的特例。拉链码由两个主要分量组成:拉链对和交织器映射。
拉链码由码字序列(c0,c1,…)组成,其中每个ci是构成码C(n,k,d)的码字,其中n、k和d分别表示C的块长度、维度和最小汉明距离。所述码字序列称为缓冲区。可以将缓冲区的第(i,j)条目表示为第i码字的第j条目,其中且[n]={0,1,…,n-1}。现在,假设(m0,m1,…)是整数序列,使得对于所有i,0≤mi≤k。表示为Ai={(i,j):j∈[mi]},Bi={(i,j):j∈n\,mi]},
A=∪iAi,B=∪iBi。
A称为虚拟集,B称为真实集。该对(A,B)一起称为拉链对。参数mi是所述第i-码字处虚拟缓冲区的宽度。对于具有拉链对(A,B)的缓冲区,其条目表示为:
图7A示出了示例性拉链码700的可视化。所述可视化的每个第i行对应于所述第i码字。因此,所述第一行包括虚拟缓冲区702和真实缓冲区704,所述真实缓冲区704包括一个或多个奇偶校验位706。在传统拉链码中,每个码字包含固定数目的奇偶校验位706,此处示为位长度r 718。所述整个码字的位长度为n 712,位长度k 714等于所述码字长度n 712减去所述奇偶校验位长度r 718。所述第一码字的所述虚拟缓冲区的位长度为m1 716;每个后续码字将具有位长度m2、m3,依此类推。
虚拟缓冲区集合(“虚拟集”)和真实缓冲区集合(“真实集”)使用所述拉链码的所述第二主要分量(所述交织器映射)指定的数据位来填充。交织器映射定义为函数
Φ:A→B
所述函数将所述虚拟集中的每个位与所述真实集中的位相关联。所述虚拟缓冲区中的每个符号是其在所述真实缓冲区的相关联符号的副本。换言之,在有效码字中,对于每个(i,j)∈A,存在位值ci,j=cΦ(i,j)。
在以下三个步骤中对拉链码的第i构成码进行编码。第一,使用来自要编码的所述数据信号的数据位来填充所述真实缓冲区704的位位置。第二,通过从所述交织器映射规定的位置复制所述符号来填充所述虚拟缓冲区702,即,对于每个j∈Ai,ci,j=cΦ(i,j)。第三,使用(ci,0,…,ci,n-r-1)(即,所述虚拟缓冲区702的重复位和所述真实缓冲区704的数据位)作为所述码字的信息位来计算奇偶校验符号ci,n-r,…,ci,n-1。
可以使用各种编码来计算拉链码的奇偶校验位。此外,还可以使用各种交织器映射。当前描述的示例并不限于任何特定交织器映射或一个或多个编码方案。
由若干连续码字组成的序列可以作为一个单元一起发送,类似于有时称为分块的数据块。应当理解的是,所述拉链码700的码字分块的所述虚拟缓冲区702集合可以包含先前分块的所述真实缓冲区704集合的数据位,具体取决于所使用的交织器映射。因此,使用所述奇偶校验位706对所述拉链码的行进行编码和解码,从而不仅检查所述当前数据块(即,所述当前分块)的当前行的数据位(即,所述真实缓冲区704)中的错误,而且检查交织到所述当前行的所述虚拟缓冲区702中的先前数据块(即,先前分块)的一个或多个位中的错误。从这个意义上来说,所述拉链码700的操作类似于所述阶梯码的操作,其中给定数据块中的给定码字使用其奇偶校验位,不仅检查所述当前数据块的当前行或当前列的数据位中的错误,而且检查先前数据块的数据位中的错误。
上述关于所述灵活不规则阶梯码200的技术可以同样地应用于拉链码。当使用BCH1/2/3码等多个不同编码作为拉链码的分量码时,可以应用上述相同理念来构建具有可调开销的灵活不规则拉链码。所述分量码可以从全部具有相同块长度的BCH1、BCH2和BCH3码字中选择。这三个不同的码字在给定分块内的比例可以根据目标开销进行调整。上文结合图6所示的方法600描述的灵活BCH3解码器设计可以用于灵活解码(用于硬解码和软解码)。
图7B示出了示例性灵活不规则拉链码750的可视化。所述不规则拉链码750的第一码字(即,行)包括虚拟缓冲区752和真实缓冲区754。然而,与所述传统拉链码700不同,每个码字包含可变数目的奇偶校验位756,所述可变数目的奇偶校验位756表示用于所述码字的两个或两个以上不同编码。在本文中,示出了三个编码:第一编码762(例如,BCH1)、第二编码764(例如,BCH2)和第三编码766(例如,BCH3)。与图2所示的阶梯码200一样,该图示出了三个编码,但是所述编码的数目可以是任意两个或两个以上。
编码和/或解码过程在滑动窗口776上进行,所述滑动窗口776可以指示所述交织映射在其中对位进行交织的行的数目;即,如果所述滑动窗口的高度为M行,则必须将位于行i的真实缓冲区中的位复制到编号介于i-M与i+M之间的行的虚拟缓冲区中。所述滑动窗口776将包含多个分块。该图示出了当前分块772(即,当前正在编码的分块),以及尚未编码的未来分块774。
上述所有技术(例如,关于协调数据块(即,分块)内每个编码的码字的分布的技术)可以同样应用于所述不规则拉链码752。不同于行式数据块的行和列式数据块的行,所述拉链码750的单个真实缓冲区754可以称为包含奇偶校验位和数据位的编码位序列。每个码字不仅包含所述编码位序列(即,所述真实缓冲区754),而且还包含所述虚拟缓冲区752,所述虚拟缓冲区752可以包含先前数据块(即,先前分块,例如先前分块778)的一个或多个位。
因此,在一些实施例中,为了对所述不规则拉链码750进行编码,FEC编码器接收包括多个数据位的数字数据信号并生成启用FEC的数据信号,即所述不规则拉链码750。所述启用FEC的数据信号包括数据块序列,即所述拉链码750的分块。每个数据块包括多个编码位序列(即,所述真实缓冲区754)。每个编码位序列包括数据位序列(即,所述真实缓冲区754的非奇偶校验位)和奇偶校验位序列,所述数据位序列包括来自所述接收的数字数据信号的所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位756。每个奇偶校验位序列基于其相应的数据位序列(即,所述真实缓冲区754的其余部分);在一些示例中,每个奇偶校验位序列基于先前数据块的一个或多个位,例如先前分块778的交织重复位。
每个数据块包括第一编码762的至少一个奇偶校验位序列和第二编码764的至少一个奇偶校验位序列。所述第一编码762的每个奇偶校验位序列具有第一预定数目的奇偶校验位,所述第二编码764的每个奇偶校验位序列具有第二预定数目的奇偶校验位,所述第二预定数目大于所述第一预定数目(例如,BCH2的每个码字的奇偶校验位的数目大于BCH1)。
生成所述启用FEC的数据信号之后,如上文结合所述阶梯码200所述发送所述启用FEC的数据信号。
在一些实施例中,为了对所述不规则拉链码750进行解码,FEC解码器接收启用FEC的接收信号,所述启用FEC的接收信号包括如上所述的数据块(即,所述拉链码750的分块)序列。对于每个所接收数据块的每个编码位序列(即,所述真实缓冲区754),所述FEC解码器使用所述编码位序列754的所述奇偶校验位序列756执行奇偶校验,以在一些示例中检测先前数据块中的至少一个位错误,例如所述先前分块778中的位错误。
示例性不规则oFEC码
类似技术可以应用于开放前向纠错(open forward error correction,oFEC)码,所述oFEC码是拉链码的另一特例。与阶梯码类似,oFEC码也可以使用BCH码作为分量码。每个位由两个分量码保护,并且形成卷积结构,就像上述拉链码和阶梯码一样。oFEC执行基于Chase的软解码而不是使用硬解码,并使用子块置换来增加最小距离。因此,在开销相同的情况下,oFEC码相对于阶梯码可以具有更高的输入BER阈值。
可以使用具有相同块长度的三个不同分量BCH码(例如,BCH1、BCH2和BCH3)构建不规则oFEC,与上文结合不规则阶梯码200和不规则拉链码750所述的技术类似。基于Chase的软解码还使用硬决策BCH解码器。可以使用上文结合图6所述的灵活BCH3解码器来替换oFEC解码器中的所述硬决策BCH解码器,以获取可用于对BCH1、BCH2和BCH3分量码进行解码的灵活oFEC解码器。
图8示出了与上述不规则阶梯码200和不规则拉链码750一样使用不同比例的多个编码的码字来实现可调FEC开销级别的示例性不规则oFEC码800。所述不规则oFEC码800包括分散在多个数据块上的码字。与阶梯码中的行式数据库和列式数据块或拉链码中具有交织重复位的分块不同,所述oFEC码800的所述数据块可以视为“块行”,每个块行由多个块804组成,每个块由多个位行806组成。
所述不规则oFEC码800的码字由横跨整个块行的水平位行804和位于先前块行802的块804中的多个垂直段组成。该图示出了由水平位行810和多个垂直段812组成的第一码字。该图示出了由水平位行820和多个垂直段822组成的第二码字。应当理解的是,所述垂直段由横跨先前码字的多个先前水平位行的位定义,例如,所述第二码字的第一垂直段830与所述第一码字的水平位行810相交。这类似于所述阶梯码200的当前数据块的码字(例如,行式码字)与先前块的多个码字(例如,列式码字)相交。
通过使用具有与多个编码(例如,BCH1、BCH2和BCH3)对应的可变数目的奇偶校验位(未示出)的码字,所述不规则oFEC码800可以实现上文结合所述不规则拉链码750所述的技术。
所述不规则oFEC码800等灵活不规则oFEC设计可以具有所述灵活不规则阶梯码200的所有优点。与阶梯码相比,oFEC码由于软解码和最小距离增加而可以增强对位的保护,但会增加解码复杂性。
概述
尽管本发明以特定的顺序描述了方法和流程,但可以视情况省略或更改方法和流程的一个或多个步骤。一个或多个步骤可以按顺序执行,但不是按描述的顺序执行(视情况而定)。
尽管描述了本发明,但至少部分地,就方法而言,本领域普通技术人员将理解,本发明还涉及各种组件,用于通过硬件组件、软件或两者的任意组合执行所描述的方法的至少一些方面和特征。相应地,本发明的技术方案可通过软件产品的形式体现。合适的软件产品可以存储在预先记录的存储设备或其它类似的非易失性或非瞬时性计算机可读介质中,例如,DVD、CD-ROM、USB闪存盘、可移动硬盘或其它存储介质等。软件产品包括其上存储的指令,这些指令使处理设备(例如个人计算机、服务器或网络设备)能够执行本文所公开的方法的示例。
本发明可以其它特定形式体现,而不脱离权利要求的主题。所描述的示例实施例在各方面都仅仅是示意性的,而不是限制性的。可以将上述一个或多个实施例中的选定特征组合以创建未明确描述的替代性实施例,理解适合此类组合的特征在本发明的范围内。
还公开了公开范围内的所有值和子范围。此外,虽然本文所公开和显示的系统、设备和过程可包括特定数量的元件/组件,但可以修改所述系统、设备和组合件,以包括此类元件/组件中的更多或更少的元件/组件。例如,尽管所公开的任何元件/组件可引用为单数,但可以修改本文所公开的实施例以包括多个此类元件/组件。本文所描述的主题旨在覆盖和涵盖所有适当的技术变更。
Claims (20)
1.一种方法,其特征在于,包括:
在发送器的前向纠错(forward error correction,FEC)编码器处接收数字数据信号,所述数字数据信号包括多个数据位;
在所述FEC编码器处生成启用FEC的数据信号;
所述启用FEC的数据信号包括数据块序列;
每个数据块包括多个编码位序列,每个编码位序列包括数据位序列和奇偶校验位序列,所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位,每个奇偶校验位序列基于其相应的数据位序列和先前数据块的一个或多个位;
每个数据块包括第一编码的至少一个奇偶校验位序列和第二编码的至少一个奇偶校验位序列;
所述第一编码的每个奇偶校验位序列具有第一预定数目的奇偶校验位;
所述第二编码的每个奇偶校验位序列具有第二预定数目的奇偶校验位,所述第二预定数目大于所述第一预定数目;
发送所述启用FEC的数据信号。
2.根据权利要求1所述的方法,其特征在于,所述启用FEC的数据信号编码为阶梯码,使得:
所述数据块序列在行式数据块与列式数据块之间交替;
每个行式数据块的所述多个编码位序列包括多行,所述多行定义多列,每个奇偶校验位序列基于其相应的数据位序列和先前列式数据块的对应行;
每个列式数据块的所述多个编码位序列包括多列,所述多列定义多行,每个奇偶校验位序列基于其相应的数据位序列和先前行式数据块的对应行。
3.根据权利要求2所述的方法,其特征在于,所述数据块序列中的至少一个数据块包含第三编码的至少一个奇偶校验位序列,所述第三编码的每个奇偶校验位序列具有第三预定数目的奇偶校验位,所述第三预定数目大于所述第二预定数目。
4.根据权利要求3所述的方法,其特征在于,所述数据块序列中的每个数据块包括:
所述第一编码的第一数目的奇偶校验位序列;
所述第二编码的第二数目的奇偶校验位序列;
所述第三编码的第三数目的奇偶校验位序列;
所述第一数目、所述第二数目和所述第三数目是根据目标纠错开销级别确定的;
所述方法还包括:
接收信道条件信息;
根据所述信道条件信息,更新所述目标纠错开销级别;
根据所述更新的目标纠错开销级别,更改所述第一数目、所述第二数目和所述第三数目。
5.根据权利要求4所述的方法,其特征在于,对于每个数据块,每个编码的所述奇偶校验位序列分布在所述行或所述列中,使得同一编码的相邻奇偶校验位序列的数目最小化。
6.根据权利要求4所述的方法,其特征在于,
每个行式数据块在其行中具有每个编码的奇偶校验位序列的相同分布;
每个列式数据块在其列中具有每个编码的奇偶校验位序列的相同分布。
7.根据权利要求3所述的方法,其特征在于,还包括通过以下步骤在行式数据块中生成奇偶校验位序列:
识别二进制向量,所述二进制向量包括:
未知奇偶校验位序列;
所述行式数据块中的所述奇偶校验位序列的所述行的所述数据位;
所述先前列式数据块的所述对应行的所述位;
识别有效的奇偶校验位序列,使得通过将所述未知奇偶校验位序列设置为所述有效的奇偶校验位序列并将所述二进制向量与奇偶校验矩阵的转置相乘以生成校正子,所述校正子包括向量,所述向量的元素数目等于所述奇偶校验矩阵的行数目,所述校正子的每个元素等于0;
将所述奇偶校验位序列设置为所述有效奇偶校验位序列。
8.根据权利要求7所述的方法,其特征在于,
所述奇偶校验位序列属于所述第一编码;
所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的单行矩阵,使得:
所述奇偶校验矩阵的第一元素为1;
所述奇偶校验矩阵的每个后续元素是前一元素的α倍。
9.根据权利要求7所述的方法,其特征在于,
所述奇偶校验位序列属于所述第二编码;
所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的两行矩阵,使得:
所述奇偶校验矩阵的第一行的第一元素为1;
所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;
所述奇偶校验矩阵的第二行的第一元素为1;
所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍。
10.根据权利要求7所述的方法,其特征在于,
所述奇偶校验位序列属于所述第三编码;
所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的三行矩阵,使得:
所述奇偶校验矩阵的第一行的第一元素为1;
所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;
所述奇偶校验矩阵的第二行的第一元素为1;
所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍;
所述奇偶校验矩阵的第三行的第一元素为1;
所述奇偶校验矩阵的所述第三行的每个后续元素是前一元素的α5倍。
11.一种方法,其特征在于,包括:
在接收器的前向纠错(forward error correction,FEC)解码器处接收启用FEC的接收信号;
所述启用FEC的接收信号包括数据块序列;
每个数据块包括多个编码位序列,每个编码位序列包括数据位序列和奇偶校验位序列,所述数据位序列包括一个或多个数据位,所述奇偶校验位序列包括一个或多个奇偶校验位;
每个数据块包括第一编码的至少一个奇偶校验位序列和第二编码的至少一个奇偶校验位序列;
所述第一编码的每个奇偶校验位序列具有第一预定数目的奇偶校验位;
所述第二编码的每个奇偶校验位序列具有第二预定数目的奇偶校验位,所述第二预定数目大于所述第一预定数目;
对于每个所接收数据块的每个编码位序列,在所述FEC解码器处使用所述编码位序列的所述奇偶校验位序列执行奇偶校验,以检测先前数据块中的至少一个位错误。
12.根据权利要求11所述的方法,其特征在于,
所述数据块序列在行式数据块与列式数据块之间交替;
每个行式数据块的所述多个编码位序列包括多行,每行包括数据位序列和奇偶校验位序列,所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位,所述多行定义多列;
每个列式数据块的所述多个编码位序列包括多列,每列包括数据位序列和奇偶校验位序列,所述数据位序列包括所述数据位中的一个或多个,所述奇偶校验位序列包括一个或多个奇偶校验位,所述多列定义多行;
使用行式数据块的行的奇偶校验位序列执行奇偶校验包括使用所述奇偶校验位序列来检测先前列式数据块的对应行中的至少一个位错误;
使用列式数据块的列的奇偶校验位序列执行奇偶校验包括使用所述奇偶校验位序列来检测先前行式数据块的对应列中的至少一个位错误。
13.根据权利要求12所述的方法,其特征在于,所述数据块序列中的至少一个数据块包含第三编码的至少一个奇偶校验位序列,所述第三编码的每个奇偶校验位序列具有第三预定数目的奇偶校验位,所述第三预定数目大于所述第二预定数目。
14.根据权利要求13所述的方法,其特征在于,
每个行式数据块在其行中具有每个编码的奇偶校验位序列的相同分布;
每个列式数据块在其列中具有每个编码的奇偶校验位序列的相同分布。
15.根据权利要求13所述的方法,其特征在于,使用奇偶校验位序列来检测所述先前列式数据块的所述对应行中的位错误包括:
识别二进制向量,所述二进制向量包括:
所述奇偶校验位序列;
所述行式数据块的所述行的所述数据位;
所述先前列式数据块的所述对应行的所述位;
将所述二进制向量与奇偶校验矩阵的转置相乘以生成校正子,所述校正子包括向量,所述向量的元素数目等于所述奇偶校验矩阵的行数;
根据所述校正子的所述元素,确定所述二进制向量包含至少一个位错误。
16.根据权利要求15所述的方法,其特征在于,
所述奇偶校验位序列属于所述第一编码;
所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的单行矩阵,使得:
所述奇偶校验矩阵的第一元素为1;
所述奇偶校验矩阵的每个后续元素是前一元素的α倍;
所述方法还包括:响应于确定所述校正子的所述第一元素不为0,使用所述FEC解码器的校正子解码器模块来纠正所述检测的一个或多个错误,所述校正子解码器模块用于:
向所述FEC解码器的单错误解码器单元提供所述校正子的所述第一元素;
根据所述校正子的所述第一元素,使用所述单错误解码器单元来定位所述二进制向量中的单个位错误;
纠正所述单个位错误。
17.根据权利要求15所述的方法,其特征在于,
所述奇偶校验位序列属于所述第二编码;
所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的两行矩阵,使得:
所述奇偶校验矩阵的第一行的第一元素为1;
所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;
所述奇偶校验矩阵的第二行的第一元素为1;
所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍;
所述方法还包括:响应于确定所述校正子的所述第一元素或所述第二元素不为0,使用所述FEC解码器的校正子解码器模块来纠正所述检测的一个或多个错误,所述校正子解码器模块用于:
通过将所述校正子的所述第一元素的立方与所述校正子的所述第二元素相加,计算值D3;
如果D3为0,则:
向所述FEC解码器的单错误解码器单元提供所述校正子的所述第一元素;
根据所述校正子的所述第一元素,使用所述单错误解码器单元来定位所述二进制向量中的单个位错误;
纠正所述单个位错误;如果D3不为0,则:
向所述FEC解码器的两错误解码器单元提供所述校正子的所述第一元素和所述第二元素;
根据所述校正子的所述第一元素,使用所述两错误解码器单元来定位所述二进制向量中的两个位错误;
纠正所述两个位错误。
18.根据权利要求13所述的方法,其特征在于,
所述奇偶校验位序列属于所述第三编码;
所述奇偶校验矩阵包括由伽罗瓦域的本原元素α定义的三行矩阵,使得:
所述奇偶校验矩阵的第一行的第一元素为1;
所述奇偶校验矩阵的所述第一行的每个后续元素是前一元素的α倍;
所述奇偶校验矩阵的第二行的第一元素为1;
所述奇偶校验矩阵的所述第二行的每个后续元素是前一元素的α3倍;
所述奇偶校验矩阵的第三行的第一元素为1;
所述奇偶校验矩阵的所述第三行的每个后续元素是前一元素的α5倍。
所述方法还包括:响应于确定所述校正子的所述三个元素中的任何一个均不为0,使用所述FEC解码器的校正子解码器模块来纠正所述检测的一个或多个错误,所述校正子解码器模块用于:
通过将所述校正子的所述第一元素的立方与所述校正子的所述第二元素相加,计算值D3;
如果D3为0,则:
向所述FEC解码器的单错误解码器单元提供所述校正子的所述第一元素;
根据所述校正子的所述第一元素,使用所述单错误解码器单元来定位所述二进制向量中的单个位错误;
纠正所述单个位错误;如果D3不为0,则:
通过将所述校正子的所述第一元素的5次方与所述校正子的所述第三元素相加,
计算值D5;
如果所述校正子的所述第一元素与D5的乘积等于所述校正子的所述第二元素与D3的乘积,则:
向所述FEC解码器的两错误解码器单元提供所述校正子的所述第一元素和所述第二元素;
根据所述校正子的所述第一元素和所述第二元素,使用所述两错误解码器单元来定位所述二进制向量中的两个位错误;
纠正所述两个位错误;
如果:
所述校正子的所述第一元素与D5的乘积不等于所述校正子的所述第二元素与D3的乘积;或
所述校正子的所述第一元素等于0,则:
向所述FEC解码器的三错误解码器单元提供所述校正子的所述第一元素、所述第二元素和所述第三元素;
根据所述校正子的所述第一元素、所述第二元素和所述第三元素,使用所述三错误解码器单元来定位所述二进制向量中的三个位错误;
纠正所述三个位错误。
19.根据权利要求18所述的方法,其特征在于,所述校正子解码器模块是门控校正子解码器模块,还用于使用所述第一编码或所述第二编码的奇偶校验位序列来检测和纠正所述行式数据块的所述行的所述数据位序列中或所述先前列式数据块的所述对应行中的位错误。
20.一种前向纠错(forward error correction,FEC)解码器,其特征在于,包括:
校正子生成模块,用于:
接收启用前向纠错(forward error correction,FEC)的接收信号,所述启用FEC的接收信号包括数据块序列;
对于所接收数据块的编码位序列,使用所述编码位序列的奇偶校验位序列执行奇偶校验,以根据所计算的校正子的一个或多个元素来检测二进制向量中的任何位错误,所述二进制向量包括所述奇偶校验位序列、所述编码位序列的所述数据位序列和先前数据块的一个或多个位;
门控校正子解码器模块,包括第一解码器单元和第二解码器单元;响应于所述校正子生成模块检测到一个或多个位错误,所述门控校正子解码器模块用于:
如果根据所述校正子检测到第一数目的位错误,或者如果使用第一编码对所述奇偶校验位序列进行编码,则:
向所述第一解码器单元提供所述校正子的至少一个元素;
根据所述校正子,使用所述第一解码器单元来定位所述二进制向量中的所述位错误;
纠正所述位错误;
如果根据所述校正子检测到第二数目的位错误,并且如果使用第二编码对所述奇偶校验位序列进行编码,所述第二数目大于所述第一数目,则:
向所述第二解码器单元提供所述校正子的至少一个元素;
根据所述校正子,使用所述第二解码器单元来定位所述二进制向量中的所述位错误;
纠正所述位错误。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/994,103 | 2020-08-14 | ||
US16/994,103 US11239944B1 (en) | 2020-08-14 | 2020-08-14 | Methods and devices for rate adaptive forward error correction using a flexible irregular error correcting code |
PCT/CN2021/085484 WO2022033053A1 (en) | 2020-08-14 | 2021-04-03 | Methods and devices for rate adaptive forward error correction using a flexible irregular error correcting code |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116114178A true CN116114178A (zh) | 2023-05-12 |
Family
ID=80034552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180057070.9A Pending CN116114178A (zh) | 2020-08-14 | 2021-04-03 | 用于使用灵活不规则纠错码进行速率自适应前向纠错的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11239944B1 (zh) |
CN (1) | CN116114178A (zh) |
WO (1) | WO2022033053A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11184112B1 (en) * | 2020-11-14 | 2021-11-23 | Ciena Corporation | OpenFEC error marking |
EP4050608B1 (en) | 2021-01-14 | 2023-06-28 | Changxin Memory Technologies, Inc. | Comparator with xor and xnor logic circuits |
US11990201B2 (en) * | 2021-01-14 | 2024-05-21 | Changxin Memory Technologies, Inc. | Storage system |
CN114765056B (zh) | 2021-01-14 | 2024-07-12 | 长鑫存储技术有限公司 | 存储系统 |
DE102021133678A1 (de) * | 2021-01-20 | 2022-07-21 | Infineon Technologies Ag | Korrektur von bitfehlern |
US11709734B2 (en) * | 2021-04-30 | 2023-07-25 | Micron Technology, Inc. | Error correction with syndrome computation in a memory device |
WO2024026584A1 (en) * | 2022-07-30 | 2024-02-08 | Qualcomm Incorporated | Techniques for staircase encoding with block-code-based shaping |
US12101101B2 (en) | 2022-10-26 | 2024-09-24 | Huawei Technologies Co., Ltd. | Zipper code framework-based communication systems and methods |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870412A (en) * | 1997-12-12 | 1999-02-09 | 3Com Corporation | Forward error correction system for packet based real time media |
US6934305B1 (en) * | 1999-01-15 | 2005-08-23 | Cisco Technology, Inc. | Method and apparatus for detecting errors in a backplane frame |
JP4260688B2 (ja) * | 2004-06-09 | 2009-04-30 | 富士通株式会社 | データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法 |
KR100896991B1 (ko) * | 2006-01-03 | 2009-05-14 | 삼성전자주식회사 | 무선 시스템에서 멀티캐스트 서비스의 링크 성능 향상을위한 장치 및 방법 |
US8555136B2 (en) | 2007-07-25 | 2013-10-08 | Qualcomm Incorporated | Optimized decoding in a receiver |
US8751910B2 (en) | 2011-04-13 | 2014-06-10 | Cortina Systems, Inc. | Staircase forward error correction coding |
JP5619280B2 (ja) | 2011-05-31 | 2014-11-05 | 三菱電機株式会社 | 誤り訂正符号化装置、誤り訂正復号装置、およびその方法 |
US10180875B2 (en) * | 2016-07-08 | 2019-01-15 | Toshiba Memory Corporation | Pool-level solid state drive error correction |
EP3419180B1 (en) | 2017-06-19 | 2022-11-02 | Universite De Bretagne Sud | Simplified, presorted, syndrome-based, extended min-sum (ems) decoding of non-binary ldpc codes |
US10998922B2 (en) | 2017-07-28 | 2021-05-04 | Mitsubishi Electric Research Laboratories, Inc. | Turbo product polar coding with hard decision cleaning |
-
2020
- 2020-08-14 US US16/994,103 patent/US11239944B1/en active Active
-
2021
- 2021-04-03 WO PCT/CN2021/085484 patent/WO2022033053A1/en active Application Filing
- 2021-04-03 CN CN202180057070.9A patent/CN116114178A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11239944B1 (en) | 2022-02-01 |
US20220052712A1 (en) | 2022-02-17 |
WO2022033053A1 (en) | 2022-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116114178A (zh) | 用于使用灵活不规则纠错码进行速率自适应前向纠错的方法和设备 | |
EP3659261B1 (en) | Turbo product code based on polar codes | |
US10320425B2 (en) | Staircase forward error correction coding | |
US11201695B2 (en) | Forward error correction with compression coding | |
US12057983B2 (en) | Systems and methods for dual coding concatenation in probabilistic amplitude shaping | |
US10211949B2 (en) | Receiver and signal processing method thereof | |
KR20060052488A (ko) | 연결된 반복 및 대수 코딩 | |
CA2505057A1 (en) | Rate-compatible low-density parity-check (ldpc) codes | |
US10374632B2 (en) | Low density parity check coded modulation for optical communications | |
KR20100070409A (ko) | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호매핑 방법 및 이를 위한 장치 | |
WO2008034286A1 (en) | An interleaving scheme for an ldpc coded 16apsk system | |
CN111373663A (zh) | 纠错装置及光收发装置 | |
JP5374156B2 (ja) | データを復号化及び符号化するための装置及び方法 | |
WO2003103152A2 (en) | Soft decoding of linear block codes | |
CN107919944A (zh) | 用于生成经优化的编码调制的方法和设备 | |
WO2021118395A1 (en) | Spatially coupled forward error correction encoding method and device using generalized error locating codes as component codes | |
KR102547369B1 (ko) | 수신 장치 및 그의 디코딩 방법 | |
Zhilin et al. | Generalized concatenated code constructions with low overhead for optical channels and nand-flash memory | |
US11770289B2 (en) | Communication device for transmitting data by using multilevel coding, and communication system | |
US10270474B1 (en) | Partial concatenated coding system using algebraic code and LDPC code | |
Zhilin et al. | Generalized error locating codes with soft decoding of inner codes | |
CN103081376A (zh) | 用于保持代码中邻域的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |