Interleaved zipper code for forward error correction

WO2025184830A8PCT designated stage Publication Date: 2025-11-20HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/080321
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-06
Publication Date
2025-11-20

AI Technical Summary

Technical Problem

Existing FEC schemes for optical communication, such as CFEC and OFEC, fail to balance low power consumption with high performance, particularly at transmission rates exceeding 1.6T bits per second.

Method used

Implementing interleaved zipper codes with inner and outer FEC encoders and decoders, utilizing Bose-Chaudhuri-Hocquenghem and Hamming component codes, to encode and decode data messages, allowing for flexible overhead distribution between real and virtual buffers to optimize performance and power consumption.

Benefits of technology

Achieves improved error correction with reduced power consumption and enhanced performance by iteratively decoding interleaved zipper codes, balancing overhead distribution for optimal results.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024080321_20112025_PF_FP_ABST
    Figure CN2024080321_20112025_PF_FP_ABST
Patent Text Reader

Abstract

Methods, apparatus, and systems for forward error correction (FEC) that involves inner and outer zipper codes are disclosed. In some embodiments, a message being sent from a transmitter in a network is encoded with a first zipper code, bits of the message are interleaved, and a second zipper code is encoded. The encoded message can then be sent to a receiver in the network where it is decoded to correct transmission errors. Decoding involves decoding the first and second zipper codes and de-interleaving bits. In some embodiments, one soft decoder and one hard decoder are used, and decoding is performed iteratively. In some embodiments, encoding the first and / or second zipper codes involves excluding some parity bits of the respective zipper code from having copies in that code's virtual buffer. Embodiments may provide improvements in the power consumption and performance of FEC, especially for 1.6 terabit-per-second optical communication.
Need to check novelty before this filing date? Find Prior Art

Description

INTERLEAVED ZIPPER CODE FOR FORWARD ERROR CORRECTIONTECHNICAL FIELD

[0001] The present disclosure generally relates to communication networks, and more particularly methods, apparatus, and systems for error correction in optical communication networks.BACKGROUND

[0002] Commercial high-speed optical transceivers are capable of operating at transmission rates in excess of 800 gigabits per second. Forward error correction (FEC) that is both efficient and high-performing is important to enabling optical communication at these high rates. FEC protects the bits of a transmission by encoding redundancy into the transmission so that errors can be detected and corrected.

[0003] Concatenated FEC (CFEC) and open FEC (OFEC) are FEC schemes for the 400G ZR and 400G ZR+ standards for optical communication, respectively. CFEC is a doubly coded scheme, having inner and outer encoders and decoders, which provides low power consumption FEC. OFEC, in contrast, uses iterative error correction to provide high performance (typically measured by the bit error rate, BER) . Despite the strengths of each scheme, neither offers both low power consumption and high performance. In particular, FEC that has less power consumption than OFEC and better performance than CFEC is desired, especially for forthcoming 1, 600 gigabits-per-second (1.6T) communication.

[0004] Therefore, there is a need for error correction that obviates or mitigates one or more limitations of the prior art.

[0005] This background information is provided to reveal information believed by the applicant to be of possible relevance to the present invention. No admission is necessarily intended, nor should be construed, that any of the preceding information constitutes prior art against the present invention.SUMMARY

[0006] An object of embodiments of the present disclosure is to provide methods, apparatus, and systems for FEC.

[0007] A first aspect of the present disclosure is to provide a method for FEC of a data message between a transmitter and a receiver coupled through a communication link, with the data message having a plurality of data bits. The method may comprise, at the transmitter, encoding the data bits of the data message to produce a first zipper code having a first plurality of virtual bits and a first plurality of real bits. Each one of the first plurality of virtual bits may correspond to a respective one of the first plurality of real bits, and the first plurality of virtual bits and the first plurality of real bits may define a first zipping buffer pair. The method may further comprise, at the transmitter, interleaving the first zipper code to produce an interleaved code having a plurality of interleaved bits, with each one of the plurality of interleaved bits being one of the first plurality of virtual bits and the first plurality of real bits. The method may further comprise, at the transmitter, encoding the interleaved code to produce a second zipper code having a second plurality of virtual bits and a second plurality of real bits, with each one of the second plurality of virtual bits corresponding to a respective one of the second plurality of real bits. The second plurality of virtual bits and the second plurality of real bits may define a second zipping buffer pair. The method may still further comprise, at the transmitter, transmitting the second plurality of real bits to the receiver through the communication link.

[0008] In some embodiments of the first aspect, the second plurality of real bits may include a plurality of parity bits and the second plurality of virtual bits may exclude a set of the plurality of parity bits.

[0009] In some embodiments of the first aspect, at least one of the first zipper code and the second zipper code may include at least one of a plurality of Bose-Chaudhuri-Hocquenghem component codes and a plurality of Hamming component codes. In some embodiments, at least one of the first zipper code and the second zipper code is one of a staircase code, a diagonal zipper code, and a quasi-diagonal with extra level of protection zipper code. In some embodiments, the first zipper code may have an overhead comprised between 0 and 2 percent, and the second zipper code may have an overhead comprised between 13 and 16 percent.

[0010] A second aspect of the present disclosure is to provide a method for decoding an encoded message between a transmitter and a receiver coupled through a communication link. The method may comprise, at the receiver: receiving from the transmitter the encoded message, with the encoded message having a first zipper code and a second zipper code; decoding the encoded message in accordance with the second zipper code to produce a soft decoded message, with the soft decoded message including a plurality of interleaved values; de-interleaving the plurality of interleaved values of the soft decoded message to produce a de-interleaved message; and decoding the de-interleaved message in accordance with the first zipper code to produce a hard decoded message.

[0011] In some embodiments of the second aspect, decoding the encoded message in accordance with the second zipper code to produce the soft decoded message may be iterated one or more times to refine the soft decoded message. In some embodiments, decoding the de-interleaved message in accordance with the first zipper code to produce a hard decoded message is iterated one or more times to refine the hard decoded message.

[0012] In some embodiments of the second aspect, the second zipper code may have a plurality of virtual bits and a plurality of real bits, with each one of the plurality of virtual bits corresponding to a respective one of the plurality of real bits. The plurality of real bits may defining a real buffer, and the plurality of virtual bits may define a virtual buffer configured to zipper with the real buffer. In some of these embodiments, the plurality of real bits may include a plurality of parity bits, and the plurality of virtual bits may exclude a set of the plurality of parity bits.

[0013] In some embodiments of the second aspect, decoding the encoded message in accordance with the second zipper code to produce the soft decoded message may include determining one or more log likelihood ratios.

[0014] In some embodiments of the second aspect, at least one of the first zipper code and the second zipper code may include at least one of a plurality of Bose-Chaudhuri-Hocquenghem component codes and a plurality of Hamming component codes. In some embodiments, at least one of the first zipper code and the second zipper code may be one of a staircase code, a diagonal zipper code, and a quasi-diagonal with extra level of protection zipper code. In some embodiments, the first zipper code may have an overhead comprised  between 0 and 2 percent, and the second zipper code has an overhead comprised between 13 and 16 percent.

[0015] A third aspect of the present disclosure is to provide a method for FEC of a data message between a transmitter and a receiver coupled through a communication link, with the data message having a plurality of data bits. The method may comprise, at the transmitter, encoding the data bits of the data message to produce a zipper code having a plurality of virtual bits and a plurality of real bits. Each one of the plurality of virtual bits may correspond to a respective one of the plurality of real bits. The plurality of real bits may include a plurality of parity bits, and the plurality of virtual bits may exclude a set of the plurality of parity bits. The plurality of real bits may defining a real buffer, and the plurality of virtual bits may define a virtual buffer configured to zipper with the real buffer. The method may further comprise, at the transmitter, transmitting the plurality of real bits to the receiver through the communication link.

[0016] A fourth aspect of the present disclosure is to provide a network system comprising a transmitter, a communication link, and a receiver coupled to the transmitter through the communication link. The transmitter may include: a FEC encoder configured to encode a data message to produce a first zipper code, an interleaver configured to receive the first zipper code from the first FEC encoder and interleave the first zipper code to produce an interleaved code, and a second FEC encoder configured to encode the interleaved code to produce a second zipper code. The communication link may be configured to carry the second zipper code. The receiver may include: a first FEC decoder configured to decode the second zipper code to produce a soft decoded message, a de-interleaver configured to de-interleave the soft decoded message to produce a de-interleaved message, and a second FEC decoder configured to decode the de-interleaved message to produce a hard decoded message.

[0017] In some embodiments of the fourth aspect, the second zipper code has a plurality of virtual bits and a plurality of real bits, with each one of the plurality of virtual bits corresponding to a respective one of the plurality of real bits. The plurality of real bits may define a real buffer, and the plurality of virtual bits may define a virtual buffer configured to zipper with the real buffer. In some of these embodiments, the plurality of real bits may include a plurality of parity bits, and the plurality of virtual bits excludes a set of the plurality of parity bits.

[0018] A fifth aspect of the present disclosure is to provide a network transmitter device comprising: a FEC encoder configured to receive a data message and encode the data message to produce a first zipper code; an interleaver configured to receive the first zipper code from the first FEC encoder and interleave the first zipper code to produce an interleaved code; a second FEC encoder configured to encode the interleaved code to produce a second zipper code; and a symbol mapper configured to produce a sequence of transmission symbols in accordance with the second zipper code.

[0019] In some embodiments of the fifth aspect, the second zipper code may have a plurality of virtual bits and a plurality of real bits, with each one of the plurality of virtual bits corresponding to a respective one of the plurality of real bits. The plurality of real bits may define a real buffer, and the plurality of virtual bits may define a virtual buffer configured to zipper with the real buffer. In some of these embodiments, the plurality of real bits may include a plurality of parity bits, and the plurality of virtual bits may exclude a set of the plurality of parity bits.

[0020] A sixth aspect of the present disclosure is to provide a network receiver device comprising: a symbol de-mapper configured to receive a sequence of transmission symbols and produce an encoded message in accordance with the sequence of transmission symbols, with the encoded message having a first zipper code and a second zipper code; a first FEC decoder configured to decode the encoded message in accordance with the second zipper code to produce a soft decoded message; a de-interleaver configured to de-interleave the soft decoded message to produce a de-interleaved message; and a second FEC decoder configured to decode the de-interleaved message in accordance with the first zipper code to produce a hard decoded message.

[0021] In some embodiments of the sixth aspect, the second zipper code may have a plurality of virtual bits and a plurality of real bits, with each one of the plurality of virtual bits corresponding to a respective one of the plurality of real bits. The plurality of real bits may define a real buffer, and the plurality of virtual bits may define a virtual buffer configured to zipper with the real buffer. In some of these embodiments, the plurality of real bits may include a plurality of parity bits, and the plurality of virtual bits may exclude a set of the plurality of parity bits.

[0022] Embodiments have been described above in conjunction with aspects of the present invention upon which they can be implemented. Those skilled in the art will appreciate that embodiments may be implemented in conjunction with the aspect with which they are described but may also be implemented with other embodiments of that aspect. When embodiments are mutually exclusive, or are incompatible with each other, it will be apparent to those skilled in the art. Some embodiments may be described in relation to one aspect, but may also be applicable to other aspects, as will be apparent to those of skill in the art.BRIEF DESCRIPTION OF THE DRAWINGS

[0023] FIG. 1 shows an example of a zipper code for FEC, according to a method typical of the prior art.

[0024] FIG. 2A shows a schematic of a FEC encoder in accordance with an embodiment of the present disclosure.

[0025] FIG. 2B shows a schematic of a FEC decoder in accordance with an embodiment of the present disclosure.

[0026] FIG. 3 shows a modified zipper code for FEC in accordance with an embodiment of the present disclosure.

[0027] FIG. 4 shows a flowchart for a method for transmitting a data message with FEC in accordance with an embodiment of the present disclosure.

[0028] FIG. 5 shows a graph of FEC performance for implementations in accordance with embodiments of the present disclosure.

[0029] FIG. 6 shows a schematic of an apparatus for FEC according to embodiments of the present disclosure.

[0030] FIG. 7 shows a schematic of an embodiment of an electronic device that may implement at least part of the methods and features of the present disclosure.DETAILED DESCRIPTION

[0031] To improve error correction in communication networks, especially optical communication networks, embodiments of the present disclosure are generally directed towards providing forward error correction (FEC) involving inner and outer zipper codes,  termed herein ZFEC. The zipper codes may be any spatially coupled product-like error correction codes. In embodiments, a data message may be encoded with a first zipper code, interleaved, and encoded with a second zipper code. Decoding of the data message may subsequently include decoding the second zipper code, de-interleaving, and decoding the first zipper code. In embodiments, decoding the second zipper code may be done by a soft decoder, whereas decoding the first zipper code may be decoded by a hard decoder. Decoding may further be done iteratively. In some embodiments, encoding a zipper code may include forming a zippering pair of a real buffer and a virtual buffer wherein only a subset of parity bits of the real buffer are represented in the real buffer. Embodiments of the present disclosure may provide FEC with flexibility in the overhead of the first zipper code and second zipper code, such that trade-offs in performance and power consumption may be overcome.

[0032] The present disclosure sets forth various embodiments via the use of block diagrams, flowcharts, and examples. Insofar as such block diagrams, flowcharts, and examples contain one or more functions and / or operations, it will be understood by a person skilled in the art that each function and / or operation within such block diagrams, flowcharts, and examples can be implemented, individually or collectively, by a wide range of hardware, software, firmware, or combination thereof. As used herein, the term “about” should be read as including variation from the nominal value, for example, a + / -10%variation from the nominal value. It is to be understood that such a variation is always included in a given value provided herein, whether or not it is specifically referred to. The terms in each of the following sets may be used interchangeably throughout the disclosure: “input” and “data message” ; “interleaver map” and “mapping function” ; “zipping pair” , “zipper pair” , and “zipping buffer pair” ; “first FEC encoder” and “outer FEC encoder” ; and “second FEC encoder” and “inner FEC encoder” .

[0033] FIG. 1 shows an example of a zipper code for FEC for a data message in accordance with a method typical of the prior art. The zipper code comprises a plurality of component codes 101, arranged vertically as rows in FIG. 1. Each component code 101 comprises n bits, of which k are data bits 102 obtained from the data message and the remainder (i.e., n-k) are r parity bits 103. In each component code 101, the bits are arranged systematically such that the data bits 102 preceed the parity bits 103. The plurality of component codes 101 forms a buffer, which is divided into two portions: a virtual buffer 104 comprising virtual bits and a  real buffer 105 comprising real bits. Each virtual bit is a data bit 102, whereas each real bit is either a data bit 102 or a parity bit 103. The division of the buffer may vary at each component code 101. The virtual buffer 104 and real buffer 104 are complementary and form a zipping pair (i.e., “a zipping buffer pair” ) . The data bits 102 and parity bits 103 are encoded in the zipper code such that each virtual bit of the virtual buffer 104 corresponds to a respective real bit of the real buffer 105 within a moving window 106, with the respective real bit belonging to a different component code 101 than the respective virtual bit. In other words, each virtual bit is a copy of one real bit and the zipper code has spatial coupling. The moving window 106 may encompass, for example, 5, 000 to 45, 000 bits, with, for example, 128 or 256 bits in each component code 101. A real bit c 107 may be mapped to its corresponding virtual bit  108 through a mapping function  109. Conversely, virtual bit  108 may be mapped to its corresponding real bit c 107 through an inverse mapping function  110. The zipper code may be characterized by an overhead indicating redundancy in the zipper code, a correction capability factor t indicating the number of errors that can be corrected by the code, and a Galois field size indicating the size of the finite field over which mathematical operations of the code are performed.

[0034] FIG. 2A shows a schematic for ZFEC encoding 200 in accordance with an embodiment of the present disclosure. ZFEC encoding 200 may be implemented in a network transmitter device located at a transmitter of a network. The transmitter may be coupled to a receiver in the network through an optical communication link. With ZFEC encoding 200, input 201 may be received by a first FEC encoder 202 (i.e., an outer FEC encoder) that may be configured to encode a first zipper code using the input 201. The input 201 may comprise a data message including a plurality of data bits. The input 201 may, for example, be a sequence of electrical signals. The first FEC encoder 202 may partition the input 201 into a first plurality of component codes 101 each having n1 bits, in which there are k1 data bits 102 and r1 parity bits 103, to form the first zipper code. For example, a component code 101 may have 128 or 256 bits. The first zipper code may have a first plurality of virtual bits defining a first virtual buffer and may have a first plurality of real bits defining a first real buffer. Each one of the first plurality of virtual bits may correspond to a respective one of the first plurality of real bits. The first virtual buffer and the first real buffer may form a first zipping buffer pair. The first zipper code may, for example, take the form of a staircase code, a diagonal zipper code, a quasi-diagonal with extra level of protection (QDE) zipper code, or other suitable code. Each component code 101 of the first zipper code may, for example, be a  Bose-Chaudhuri-Hocquenghem (BCH) component code (e.g., an extended BCH code) or a Hamming component code (e.g., an extended Hamming code or a shortened Hamming code) . As a specific but non-limiting example, the first zipper code may be a QDE zipper code having BCH component codes 101, a correction capability of 2 or 3, an overhead between 1%and 4%, and a Galois field size between 11 and 13.

[0035] The first zipper code may be sent to an interleaver 203, such as a block interleaver or convolutional interleaver, to interleave, wholly or at least partially, the k1 data bits 102 and r1 parity bits 103 of one or more component codes 101 of the first zipper code. Interleaving may involve rearranging one or more bits of the first zipper code to disperse errors that may be introduced during transmission. Interleaving may result in an interleaved code that includes a plurality of interleaved bits, where each interleaved bit is from one of the first plurality of virtual bits and the first plurality of real bits.

[0036] The interleaved code may be sent to a second FEC encoder 204 that may be configured to encode a second zipper code using the interleaved code. The second FEC encoder 204 may partition the interleaved code into a second plurality of component codes 101 each having n2 bits, in which there are k1 data bits 102, r1 parity bits 103, and r2 parity bits 103, to form the second zipper code. The second zipper code may have a second plurality of virtual bits defining a second virtual buffer and may have a second plurality of real bits defining a second real buffer. Each one of the second plurality of virtual bits may correspond to a respective one of the second plurality of real bits. The second virtual buffer and the second real buffer may form a second zipping buffer pair. The second zipper code may, for example, take the form of a staircase code, a diagonal zipper code, a quasi-diagonal with extra level of protection (QDE) zipper code, or other suitable code. Each component code 101 of the second zipper code may, for example, be a Bose-Chaudhuri-Hocquenghem (BCH) component code or a Hamming component code (e.g., an extended Hamming code or a shortened Hamming code) .

[0037] The second zipper code may be sent to a symbol mapper 205 for transmission of the second plurality of real bits. The symbol mapper 205 may be configured to assign symbols for representing the second plurality of real bits as one or more optical properties. The symbols may then be modulated onto a light signal for transmission to the receiver.

[0038] FIG. 2B shows a schematic for ZFEC decoding 206 in accordance with an embodiment of the present disclosure. ZFEC decoding 206 may be implemented in a network receiver device located at a receiver. The receiver may be coupled to a transmitter in the network through an optical communication link. With ZFEC decoding 206, symbols modulated on a light signal (i.e., a “sequence of transmission symbols” ) , such as those described in relation to FIG. 2A, may be received by a symbol de-mapper 207. The symbol de-mapper 207 may be configured to determine a sequence of bits that forms an encoded message from the light signal. The encoded message may have a first zipper code and a second zipper, as described in relation to FIG. 2A.

[0039] The symbol de-mapper 207 may send the encoded message to a first FEC decoder 208 (i.e., an inner FEC decoder) , which may be configured to decode the encoded message in accordance with the second zipper code. The first FEC decoder 208 may be a soft decoder that considers the probability of each bit of the encoded message being correct. The probabilities may be represented by a respective log likelihood ratio (LLR) . The first FEC decoder 208 may produce a soft decoded message. Decoding of the second zipper code may further be done iteratively to refine the soft decoded message. Iterative decoding may use a bounded distance decoding (BDD) method.

[0040] The soft decoded message may include a plurality of interleaved values and so may be sent to a de-interleaver 209 to de-interleave the plurality of interleaved values. The interleaved values may include respective LLRs. De-interleaving may produce a de-interleaved message. The de-interleaved message may include k1 data bits 102 and r1 parity bits 103 of one or more component codes 101 of the first zipper code

[0041] The de-interleaved message may be sent to a second FEC decoder 210 (i.e., an outer FEC decoder) , which may be configured to decode the de-interleaved message in accordance with the first zipper code. The second FEC decoder 210 may be a hard decoder that determines each bit exactly to produce definite binary values. Hard decoding may, for example, be done using a Chase-Pyndiah method, which can receive soft values such as LLRs and output hard bits. The second FEC decoder 208 may produce a hard decoded message. Decoding in accordance with the first zipper code may further be done iteratively to refine the hard decoded message. The hard decoded message may form the output 211 of the ZFEC decoding 206 and may include the k1 data bits 102.

[0042] FIG. 3 shows a schematic of a modified zipper code for ZFEC in accordance with an embodiment of the present disclosure. The modified zipper code may protect only a portion of the parity bits 103 twice, i.e., only a portion of the parity bits 103 may be represented in the real buffer and the virtual buffer. The modified zipper code may comprise a plurality of component codes 101, arranged vertically as rows. Each component code 101 may comprise n bits, of which k may be data bits 102 obtained from a data message and the remainder (i.e., n-k) may be r parity bits 103. In each component code 101, the bits may be arranged systematically such that the data bits 102 preceed the parity bits 103. The plurality of component codes 101 may form a buffer, which may be divided into two portions: a virtual buffer 104 comprising virtual bits and a real buffer 105 comprising real bits. Each virtual bit may be a data bit 102, whereas each real bit may be either a data bit 102 or a parity bit 103. The division of the buffer may vary at each component code 101. The virtual buffer 104 and real buffer 104 may be complementary and form a zipping pair (i.e., “azipping buffer pair” ) . The data bits 102 and parity bits 103 may be encoded in the modified zipper code such that each virtual bit of the virtual buffer 104 corresponds to a respective real bit of the real buffer 105 within a moving window 106, with the respective real bit belonging to a different component code 101 than the respective virtual bit. In other words, each virtual bit is a copy of one real bit and the modified zipper code has spatial coupling. A real bit c 107 may be mapped to its corresponding virtual bit  108 through a mapping function  109. Conversely, virtual bit  108 may be mapped to its corresponding real bit c 107 through an inverse mapping function  110. This is similar to the zipper code discussed in relation to FIG. 1; however, in the modified zipper code, only a portion of the parity bits 103 in the real buffer may be represented by a corresponding virtual bit of the virtual buffer 104. In other words, a set of parity bits 103 of the real buffer 105 may be excluded from having a respective copy in the virtual buffer. Among the r parity bits 103, only r’ parity bits 300 may have copies in the virtual buffer, where 0 ≤ r’ ≤ r.

[0043] The modified zipper code may reduce the complexity and power consumption of ZFEC decoding by reducing the amount of memory needed for decoding. The modified zipper code may further improve the performance of ZFEC; for a fixed overhead, a greater portion of overhead would serve data bits 102. In embodiments of the present disclosure, the modified zipper code may be used for either a first zipper code (i. . e., an outer zipper code) or a second zipper code (i.e., an inner zipper code) , but may provide the most benefit when used as a second zipper code.

[0044] FIG. 4 shows a method for ZFEC for transmitting a data message between a transmitter and a receiver coupled through an optical communication link, in accordance with embodiments of the present disclosure. At action 401, the data message may be received at the transmitter. The data message may have a plurality of data bits. At action 402, the data bits of the data message may be encoded to produce a first zipper code. At action 403, the first zipper code may be interleaved to produce an interleaved code having a plurality of interleaved bits. At action 404, the interleaved code may be encoded to produce a second zipper code. This may include, at action 405, protecting only r’ parity bits 300 of the second zipper code such that the second zipper code is a modified zipper code. At action 406, the the real bits of the second zipper code may be sent as an encoded message from the transmitter and received at the receiver.

[0045] At action 407, the encoded message may be decoded in accordance with the second zipper code to produce a soft decoded message. By way of action 408, one or more iterations of action 407 may be completed to refine the soft decoded message. The soft decoded message may include a plurality of interleaved bits and may be de-interleaved at action 409 to produce a de-interleaved message. At action 410, the de-interleaved message may be decoded in accordance with the first zipper code to produce a hard decoded message. By way of action 411, one or more iterations of action 410 may be completed to refine the hard decoded message. At action 412, the hard decoded message may be output to communicate the data message received at the transmitter.

[0046] FIG. 5 shows a graph of the performance of various implementations of ZFEC in accordance with embodiments of the present disclosure. The graph shows the BER for each implementation before and after ZFEC, i.e., the pre-FEC BER 501 and the post-FEC BER 502 respectively. Data points for a first 503, second 504, third 505, and fourth 506 implementation of ZFEC are shown on the graph. The filled data points connected by solid lines indicate simulated performance results, whereas the unfilled data points connected by dashed lines indicate extrapolations to a post-FEC BER 502 of 10-15. Each implementation involved iteratively decoding the second zipper code, which was encoded as a modified zipper code. Table 1 below shows, for each implementation, the number of iterations that were used in decoding the second zipper code and the value of weight P used for determining a number of test error patterns used to represent different types of errors, as defined by 2P. Each ZFEC implementation has an overhead of 15.44%. The graph of FIG. 5 further includes  the performance of an OFEC implementation 507 with an overhead of 15.3%and a CFEC implementation 508 with an overhead of 14.8%, for comparison. All of the implementations of FIG. 5 were simulated with 16-quadrature amplitude modulation.

[0047] Table 1. ZFEC parameters for the example implementations of FIG. 5.

[0048] Embodiments of the present disclosure may provide flexibility in the distribution of overhead between the first zipper code and the second zipper code, such that an optimal balance between performance and power consumption can be achieved. Table 2 shows an example of parameters used in a ZFEC implementation having a total overhead of about 15.43%, in accordance with embodiments of the present disclosure. In some embodiments, the first zipper code may preferably have an overhead between about 0 and 2%and the second zipper code may preferably have an overhead between about 13 and 16%. In these embodiments, the total overhead may be about 15%.

[0049] Table 2. Example parameters of a ZFEC implementation.

[0050] Embodiments of the present disclosure may be implemented using electronics hardware, software, or a combination thereof. Some embodiments may be implemented by one or multiple computer processors executing program instructions stored in memory. Some embodiments may be implemented partially or fully in hardware, for example, using one or more field programmable gate arrays (FPGAs) or application specific integrated circuits (ASICs) to rapidly perform processing operations.

[0051] FIG. 6 shows an apparatus 600 for implementing, at least partly, methods for ZFEC according to embodiments of the present disclosure. The apparatus 600 may be located at a network element 610 of a communication network. The apparatus 600 may include a network interface 620 and processing electronics 630. The processing electronics 630 may include a computer processer executing program instructions stored in memory, or other electronics components such as digital circuitry, including, for example, FPGAs and ASICs. The network interface 620 may include an optical communication interface or radio communication interface, such as a transmitter and receiver. The apparatus 600 may include several functional components, each of which may be partially or fully implemented using the underlying network interface 620 and processing electronics 630. Examples of functional components may include modules for receiving 640 a data message, encoding 641 a zipper code, interleaving 642 data bits, transmitting 643 an encoded message, and decoding 644 an encoded message.

[0052] FIG. 7 is a schematic diagram of an electronic device 700 that may perform any or all of the operations of the above methods and features explicitly or implicitly described herein, according to different embodiments of the present disclosure. For example, a computer equipped with network functions may be configured as electronic device 700. The electronic device 700 may be used as part of one or more of: network transmitter device and / or a network receiver device.

[0053] As shown, the electronic device 700 includes a processor 710, such as a Central Processing Unit (CPU) or specialized processors such as a Graphics Processing Unit (GPU) or other such processor unit, memory 720, a network interface 730, and a bi-directional bus 740 to communicatively couple the components of electronic device 700. Electronic device 700 may also optionally include non-transitory mass storage 750, an I / O interface 760, and a transceiver 770. According to certain embodiments, any or all of the depicted elements may be utilized, or only a subset of the elements. Furthermore, the device 700 may contain multiple instances of certain elements, such as multiple processors, memories, or transceivers. In addition, elements of the hardware device may be directly coupled to other elements without the bi-directional bus. Additionally or alternatively to a processor 710 and memory 720, other electronics, such as integrated circuits, may be employed for performing the required logical operations.

[0054] The memory 720 may include any type of tangible, non-transitory memory such as static random access memory (SRAM) , dynamic random access memory (DRAM) , synchronous DRAM (SDRAM) , read-only memory (ROM) , any combination of such, or the like. Memory 720 may include more than one type of memory, such as ROM for use at boot-up, and DRAM for program and data storage for use while executing programs. The mass storage element 750 may include any type of tangible, non-transitory storage device, such as a solid state drive, a hard disk drive, a magnetic disk drive, an optical disk drive, a USB drive, or any computer program product configured to store data and machine executable program code. According to certain embodiments, the memory 720 or mass storage 750 may have recorded thereon statements and instructions executable by the processor 710 for performing any of the aforementioned method operations described above. In some embodiments, mass storage 750 may be remote to the electronic device 700 and accessible through use of a network interface such as interface 730. In the embodiment of FIG. 7, mass storage 750 is distinct from memory 720 and may generally perform storage tasks compatible with higher latency but may generally provide lesser or no volatility. In some embodiments, mass storage 750 may be integrated with the memory 720.

[0055] The bi-directional bus 740 may be one or more of any type of several bus architectures, including a memory bus or memory controller, a peripheral bus, or a video bus.

[0056] It will be appreciated that, although specific embodiments of the technology have been described herein for purposes of illustration, various modifications may be made without departing from the scope of the technology. The specification and drawings are, accordingly, to be regarded simply as an illustration of the invention as defined by the appended claims, and are contemplated to cover any and all modifications, variations, combinations or equivalents that fall within the scope of the present invention. In particular, it is within the scope of the technology to provide a computer program product or program element, or a program storage or memory device such as a magnetic or optical wire, tape or disc, or the like, for storing signals readable by a machine, for controlling the operation of a computer according to the method of the technology and / or to structure some or all of its components in accordance with the system of the technology.

[0057] Acts associated with the method described herein may be implemented as coded instructions in a computer program product. In other words, the computer program product may be a computer-readable medium upon which software code may be recorded to execute  the method when the computer program product is loaded into memory and executed on the microprocessor of the wireless communication device.

[0058] Further, each operation of the method may be executed on any computing device, such as a personal computer, server, PDA, or the like and pursuant to one or more, or a part of one or more, program elements, modules or objects generated from any programming language, such as C++, Java, or the like. In addition, each operation, or a file or object or the like implementing each said operation, may be executed by special purpose hardware or a circuit module designed for that purpose.

[0059] Embodiments of the present disclosure may be implemented by using hardware only or by using software and a necessary universal hardware platform. Based on such understandings, the technical solution of the present disclosure may be embodied in the form of a software product. The software product may be stored in a non-volatile or non-transitory storage medium, which may be a compact disk read-only memory (CD-ROM) , USB flash disk, or a removable hard disk. The software product includes a number of instructions that enable a computer device (personal computer, server, or network device) to execute the methods provided in the embodiments of the present disclosure. For example, such an execution may correspond to a simulation of the logical operations as described herein. The software product may additionally or alternatively include a number of instructions that enable a computer device to execute operations for configuring or programming a digital logic apparatus in accordance with embodiments of the present disclosure.

[0060] The word “a” or “an” when used in conjunction with the term “comprising” or “including” in the claims and / or the specification may mean “one” , but it is also consistent with the meaning of “one or more” , “at least one” , and “one or more than one” unless the content clearly dictates otherwise. Similarly, the word “another” may mean at least a second or more unless the content clearly dictates otherwise.

[0061] The terms “coupled” , “coupling” or “connected” as used herein can have several different meanings depending on the context in which these terms are used. For example, as used herein, the terms coupled, coupling, or connected can indicate that two elements or devices are directly connected to one another or connected to one another through one or more intermediate elements or devices via a mechanical element depending on the particular  context. The term “and / or” herein when used in association with a list of items means any one or more of the items comprising that list.

[0062] Although a combination of features is shown in the illustrated embodiments, not all of them need to be combined to realize the benefits of various embodiments of this disclosure. In other words, a system or method designed according to an embodiment of this disclosure will not necessarily include all features shown in any one of the Figures or all portions schematically shown in the Figures. Moreover, selected features of one example embodiment may be combined with selected features of other example embodiments.

[0063] Although the present invention has been described with reference to specific features and embodiments thereof, it is evident that various modifications and combinations can be made thereto without departing from the invention. The specification and drawings are, accordingly, to be regarded simply as an illustration of the invention as defined by the appended claims, and are contemplated to cover any and all modifications, variations, combinations or equivalents that fall within the scope of the present invention.

Claims

1.A method for forward error correction of a data message between a transmitter and a receiver coupled through a communication link, the data message having a plurality of data bits, the method comprising, at the transmitter:encoding the data bits of the data message to produce a first zipper code having a first plurality of virtual bits and a first plurality of real bits, each one of the first plurality of virtual bits corresponding to a respective one of the first plurality of real bits, the first plurality of virtual bits and the first plurality of real bits defining a first zipping buffer pair;interleaving the first zipper code to produce an interleaved code having a plurality of interleaved bits, each one of the plurality of interleaved bits being one of the first plurality of virtual bits and the first plurality of real bits;encoding the interleaved code to produce a second zipper code having a second plurality of virtual bits and a second plurality of real bits, each one of the second plurality of virtual bits corresponding to a respective one of the second plurality of real bits, the second plurality of virtual bits and the second plurality of real bits defining a second zipping buffer pair;andtransmitting the second plurality of real bits to the receiver through the communication link.2.The method of claim 1 wherein the second plurality of real bits includes a plurality of parity bits and the second plurality of virtual bits excludes a set of the plurality of parity bits.3.The method of claim 1 wherein at least one of the first zipper code and the second zipper code includes at least one of a plurality of Bose-Chaudhuri-Hocquenghem component codes and a plurality of Hamming component codes.4.The method of claim 1 wherein at least one of the first zipper code and the second zipper code is one of a staircase code, a diagonal zipper code, and a quasi-diagonal with extra level of protection zipper code.5.The method of claim 1 wherein:the first zipper code has an overhead comprised between 0 and 2 percent;andthe second zipper code has an overhead comprised between 13 and 16 percent.6.A method for decoding an encoded message between a transmitter and a receiver coupled through a communication link, the method comprising, at the receiver:receiving from the transmitter the encoded message, the encoded message having a first zipper code and a second zipper code;decoding the encoded message in accordance with the second zipper code to produce a soft decoded message, the soft decoded message including a plurality of interleaved values;de-interleaving the plurality of interleaved values of the soft decoded message to produce a de-interleaved message;anddecoding the de-interleaved message in accordance with the first zipper code to produce a hard decoded message.7.The method of claim 6 wherein decoding the encoded message in accordance with the second zipper code to produce the soft decoded message is iterated one or more times to refine the soft decoded message.8.The method of claim 6 wherein decoding the de-interleaved message in accordance with the first zipper code to produce a hard decoded message is iterated one or more times to refine the hard decoded message.9.The method of claim 6 wherein:the second zipper code has a plurality of virtual bits and a plurality of real bits,each one of the plurality of virtual bits corresponds to a respective one of the plurality of real bits,the plurality of real bits includes a plurality of parity bits,the plurality of virtual bits excludes a set of the plurality of parity bits,the plurality of real bits defines a real buffer,andthe plurality of virtual bits defines a virtual buffer configured to zipper with the real buffer.10.The method of claim 6 wherein decoding the encoded message in accordance with the second zipper code to produce the soft decoded message includes determining one or more log likelihood ratios.11.The method of claim 6 wherein at least one of the first zipper code and the second zipper code includes at least one of a plurality of Bose-Chaudhuri-Hocquenghem component codes and a plurality of Hamming component codes.12.The method of claim 6 wherein at least one of the first zipper code and the second zipper code is one of a staircase code, a diagonal zipper code, and a quasi-diagonal with extra level of protection zipper code.13.The method of claim 6 wherein:the first zipper code has an overhead comprised between 0 and 2 percent;andthe second zipper code has an overhead comprised between 13 and 16 percent.14.A method for forward error correction of a data message between a transmitter and a receiver coupled through a communication link, the data message having a plurality of data bits, the method comprising, at the transmitter:encoding the data bits of the data message to produce a zipper code having a plurality of virtual bits and a plurality of real bits, each one of the plurality of virtual bits corresponding to a respective one of the plurality of real bits, the plurality of real bits including a plurality of parity bits, the plurality of virtual bits excluding a set of the plurality of parity bits, the plurality of real bits defining a real buffer, the plurality of virtual bits defining a virtual buffer configured to zipper with the real buffer;andtransmitting the plurality of real bits to the receiver through the communication link.15.A network system comprising:a transmitter including:a first forward error correction (FEC) encoder configured to encode a data message to produce a first zipper code,an interleaver configured to receive the first zipper code from the first FEC encoder and interleave the first zipper code to produce an interleaved code,anda second FEC encoder configured to encode the interleaved code to produce a second zipper code;a communication link configured to carry the second zipper code;anda receiver coupled to the transmitter through the communication link and including:a first FEC decoder configured to decode the second zipper code to produce a soft decoded message,a de-interleaver configured to de-interleave the soft decoded message to produce a de-interleaved message,anda second FEC decoder configured to decode the de-interleaved message to produce a hard decoded message.16.The network system of claim 15 wherein:the second zipper code has a plurality of virtual bits and a plurality of real bits,each one of the plurality of virtual bits corresponds to a respective one of the plurality of real bits,the plurality of real bits includes a plurality of parity bits,the plurality of virtual bits excludes a set of the plurality of parity bits,the plurality of real bits defines a real buffer,andthe plurality of virtual bits defines a virtual buffer configured to zipper with the real buffer.17.A network transmitter device comprising:a first forward error correction (FEC) encoder configured to receive a data message and encode the data message to produce a first zipper code;an interleaver configured to receive the first zipper code from the first FEC encoder and interleave the first zipper code to produce an interleaved code;a second FEC encoder configured to encode the interleaved code to produce a second zipper code;anda symbol mapper configured to produce a sequence of transmission symbols in accordance with the second zipper code.18.The network transmitter device of claim 17 wherein:the second zipper code has a plurality of virtual bits and a plurality of real bits,each one of the plurality of virtual bits corresponds to a respective one of the plurality of real bits,the plurality of real bits includes a plurality of parity bits,the plurality of virtual bits excludes a set of the plurality of parity bits,the plurality of real bits defines a real buffer,andthe plurality of virtual bits defines a virtual buffer configured to zipper with the real buffer.19.A network receiver device comprising:a symbol de-mapper configured to receive a sequence of transmission symbols and produce an encoded message in accordance with the sequence of transmission symbols, the encoded message having a first zipper code and a second zipper code;a first forward error correction (FEC) decoder configured to decode the encoded message in accordance with the second zipper code to produce a soft decoded message;a de-interleaver configured to de-interleave the soft decoded message to produce a de-interleaved message;anda second FEC decoder configured to decode the de-interleaved message in accordance with the first zipper code to produce a hard decoded message.20.The network receiver device of claim 19 wherein:the second zipper code has a plurality of virtual bits and a plurality of real bits,each one of the plurality of virtual bits corresponds to a respective one of the plurality of real bits,the plurality of real bits includes a plurality of parity bits,the plurality of virtual bits excludes a set of the plurality of parity bits,the plurality of real bits defines a real buffer,andthe plurality of virtual bits defines a virtual buffer configured to zipper with the real buffer.