A method, apparatus, and system for deinterleaving data streams
By using FEC codeword boundaries to determine the deinterleaving position at the data receiver, the problems of low deinterleaving efficiency and high transmission cost caused by inserting fixed data segments in the prior art are solved, and efficient data recovery and network optimization are achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-06-25
- Publication Date
- 2026-03-10
AI Technical Summary
Existing technologies determine the deinterleaving position by inserting fixed data segments during data transmission, resulting in low deinterleaving efficiency and increased transmission costs.
By acquiring the FEC-encoded data stream, decomposing it into N sub-data streams based on the interleaving granularity, and using the FEC codeword boundaries of the sub-data streams to determine the deinterleaving position, the data order can be directly restored without inserting additional fixed data segments.
Improve deinterleaving efficiency, save hardware resources, reduce transmission costs, and enhance network efficiency.
Smart Images

Figure CN119948787B_ABST
Abstract
Description
[0001] This application claims priority to Chinese Patent Application No. 202410063609.7, entitled "Method, device and system for deinterleaving of data stream", filed on January 16, 2024, Chinese Patent Application No. 202310773216.0, entitled "Synchronization method for deinterleaving", filed on June 27, 2023, and Chinese Patent Application No. 202310808219.3, entitled "Method, device and system for deinterleaving of data stream", filed on July 3, 2023, the contents of which are incorporated herein by reference in their entirety. TECHNICAL FIELD
[0002] The present application relates to the field of communication, and in particular to a method, device and system for deinterleaving of data stream. BACKGROUND
[0003] In the process of Ethernet data transmission, due to environmental interference, system error and other factors, there will be inconsistency between the data received by the data receiving end and the data sent by the data sending end, i.e. bit error is inevitable. At present, the means such as forward error correction (FEC) and interleaver can reduce the bit error rate (BER). The data output by the interleaver is transmitted to the data receiving end through the communication channel, and then enters the deinterleaver of the data receiving end for deinterleaving, and then enters the FEC decoder for decoding.
[0004] In order to determine the correct deinterleaving position, the data sending end usually periodically inserts a fixed data segment in the data for determining the deinterleaving position, and the data receiving end determines the correct deinterleaving position by searching for the fixed data segment. However, this method needs to transmit an additional fixed data segment in addition to the original data to be transmitted, thereby bringing higher transmission cost. SUMMARY
[0005] A method for deinterleaving of data stream is provided to solve the technical problems of low deinterleaving efficiency and low network transmission efficiency caused by inserting a fixed data segment.
[0006] In a first aspect, a method for deinterleaving a data stream is provided. The method includes obtaining a first interleaved data stream that is forward error correction (FEC) encoded, obtaining N sub-data streams corresponding to the first interleaved data stream based on an interleaving granularity of the first interleaved data stream, N being an interleaving depth of the first interleaved data stream and N being a positive integer greater than 1, determining a deinterleaving position based on FEC codeword boundaries of at least two of the N sub-data streams, and obtaining a first deinterleaved data stream from the first interleaved data stream based on the deinterleaving position. The deinterleaving position can also be referred to as a correct deinterleaving position, which is used to correctly perform a deinterleaving process to recover original codewords and relative orders of the original codewords, so as to recover a position of a data stream before encoding. Through the method, deinterleaving can be completed without inserting an additional fixed data segment specially used to find the deinterleaving position, and data can be correctly recovered. Thus, additional data is avoided, hardware resources are saved, deinterleaving efficiency is improved, transmission costs are reduced, and network efficiency is improved.
[0007] In a possible implementation, the N sub-data streams are arranged in sequence, and the deinterleaving position is determined based on the FEC codeword boundary of the first sub-data stream being after the FEC codeword boundary of the second sub-data stream, the deinterleaving position being the FEC codeword boundary of the second sub-data stream, the first sub-data stream and the second sub-data stream being two adjacent sub-data streams in the N sub-data streams. The order of the FEC codeword boundaries refers to an order of data at the FEC codeword boundary positions in transmission of the first interleaved data stream, or a fast-slow order. When a difference exists between FEC codeword boundaries of two adjacent sub-data streams, the sub-data stream with the earlier FEC codeword boundary is a sub-data stream that is transmitted faster, and the FEC codeword boundary of the sub-data stream that is transmitted faster is the correct deinterleaving position.
[0008] In a possible implementation, the first sub-data stream is arranged before the second sub-data stream.
[0009] In a possible implementation, the FEC codeword boundary of the first sub-data stream is 1 symbol different from the FEC codeword boundary of the second sub-data stream.
[0010] In one possible implementation, the N sub-data streams are arranged sequentially. Determining the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams includes: determining the deinterleaving position as the FEC codeword boundary of the first sub-data stream based on the FEC codeword boundary alignment of each of the N sub-data streams; wherein the first sub-data stream is the first in the N sub-data streams. The FEC codeword boundary alignment of each sub-data stream means that the data at the FEC codeword boundary position of each sub-data stream is within the data corresponding to one deinterleaving distribution, that is, the data at the FEC codeword boundary position of each sub-data stream is within the data corresponding to a set of interleavings at the data sending end. When the FEC codeword boundaries of all sub-data streams are found to be aligned, the current deinterleaving distribution position is the correct deinterleaving position, that is, the FEC codeword boundary of the first sub-data stream in the N sub-data streams is the correct deinterleaving position.
[0011] In one possible implementation, obtaining the first deinterleaved data stream based on the deinterleaving position and the first interleaved data stream includes: determining the deinterleaving combination order of the N sub-data streams based on the deinterleaving position and the arrangement order of the N sub-data streams; and combining the data in the first interleaved data stream based on the deinterleaving combination order to obtain the first deinterleaved data stream.
[0012] In one possible implementation, obtaining N sub-data streams corresponding to the first interleaved data stream based on the interleaving granularity of the first interleaved data stream includes: selecting a data stream distribution start position from the first interleaved data stream, and distributing the first interleaved data stream into N sub-data streams based on the interleaving granularity of the first interleaved data stream; wherein the data stream distribution start position is a position randomly selected in the first interleaved data stream.
[0013] In one possible implementation, the method of obtaining N sub-data streams corresponding to the first interleaved data stream based on the interleaving granularity of the first interleaved data stream includes: distributing the data of the first interleaved data stream to the N sub-data streams in a polling manner based on the interleaving granularity of the first interleaved data stream.
[0014] In one possible implementation, the method further includes: determining the FEC codeword boundary of each of the N sub-data streams.
[0015] In one possible implementation, determining the FEC codeword boundary of each of the N sub-data streams includes: determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword characteristics.
[0016] In one possible implementation, determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword features includes: performing feature value verification based on the assumed FEC codeword boundary in each sub-data stream, and determining the FEC codeword boundary of each sub-data stream based on the verification results.
[0017] In one possible implementation, the FEC codewords of the N sub-data streams are in a cyclic shift relationship. The step of determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword characteristics includes: performing a reverse cyclic shift on the obtained FEC codewords of the N sub-data streams; and determining the FEC codeword boundary of each of the N sub-data streams after the reverse cyclic shift based on the FEC codeword characteristics.
[0018] In one possible implementation, the first interleaved data stream does not include periodic alignment data segments, which include alignment words, frame alignment words, or guide data.
[0019] In one possible implementation, the FEC encoding of the first interleaved data stream is either non-concatenated FEC encoding or concatenated FEC encoding.
[0020] In one possible implementation, N is 4 or 8.
[0021] In one possible implementation, the interleaving type of the first interleaved data stream is symbolic interleaving or convolutional interleaving.
[0022] In one possible implementation, the method is performed by a physical layer PHY chip, a forwarding device, or a pluggable module.
[0023] In one possible implementation, the channel rate of the first interleaved data stream is greater than or equal to 200 gigabits per second (Gbps).
[0024] In a second aspect, an Ethernet device is provided, including at least one module; the at least one module is used to perform the method provided by the first aspect or any alternative method of the first aspect described above. The at least one module may be implemented based on software, hardware, or a combination of software and hardware, and the module may be arbitrarily combined or divided based on a specific implementation.
[0025] Thirdly, an Ethernet device is provided, including a memory and a processor; the memory is used to store a computer program; the processor is used to execute the computer program stored in the memory to cause the Ethernet device to perform the methods provided by the first aspect or any alternative to the first aspect.
[0026] Fourthly, an Ethernet device is provided, including a main control board and an interface board, the main control board or the interface board being used to implement the method provided by the first aspect or any alternative method of the first aspect described above.
[0027] Fifthly, a communication system is provided, comprising a transmitting end device and a receiving end device, the receiving end device being configured to perform the method provided as described in the first aspect or any alternative method thereof.
[0028] In a sixth aspect, a computer-readable storage medium is provided, wherein a computer program is stored therein, which, when executed, implements the method provided as described in the first aspect or any alternative method of the first aspect.
[0029] In a seventh aspect, a computer program product is provided, comprising a program or code that, when executed, implements the method provided as described in the first aspect or any alternative method of the first aspect.
[0030] Eighthly, a chip is provided that, when operating, implements the methods provided by the first aspect or any alternative method of the first aspect. The chip may be a control chip or a forwarding chip, and the chip includes programmable logic circuitry and / or program instructions.
[0031] The technical effects of the second to eighth aspects mentioned above can be referred to the technical effects of the first aspect, and will not be elaborated here. Attached Figure Description
[0032] To more clearly illustrate the technical solutions of this application, the accompanying drawings used in the embodiments will be briefly described below. Obviously, the drawings below are only drawings of some embodiments of this application. For those skilled in the art, other technical solutions and drawings that can achieve the same purpose can be obtained based on these drawings without any creative effort.
[0033] Figure 1(a) is a schematic diagram of random error provided in an embodiment of the present invention;
[0034] Figure 1(b) is a schematic diagram of random bit error rate provided in an embodiment of the present invention;
[0035] Figure 2 This is a schematic diagram of an interleaving process provided in an embodiment of the present invention;
[0036] Figure 3 A schematic diagram illustrating an interleaved data processing procedure provided in an embodiment of the present invention;
[0037] Figure 4(a) is a schematic diagram of an interleaved data processing procedure provided in an embodiment of the present invention;
[0038] Figure 4(b) is a schematic diagram of an interleaved data processing procedure provided in an embodiment of the present invention;
[0039] Figure 5 A schematic diagram illustrating an interleaved data processing procedure provided in an embodiment of the present invention;
[0040] Figure 6 This is a schematic diagram illustrating a data insertion process provided in an embodiment of the present invention;
[0041] Figure 7 This is a schematic flowchart of a data stream deinterleaving method provided in an embodiment of the present invention;
[0042] Figure 8(a) shows an applicable scenario for a data stream deinterleaving method provided in an embodiment of this application;
[0043] Figure 8(b) illustrates an applicable scenario for a data stream deinterleaving method provided in an embodiment of this application;
[0044] Figure 8(c) illustrates an applicable scenario for a data stream deinterleaving method provided in an embodiment of this application:
[0045] Figure 9 A schematic diagram illustrating a cyclic shifting process provided in an embodiment of this application;
[0046] Figure 10 A schematic diagram illustrating an interleaving process with cyclic shifting provided in this application embodiment:
[0047] Figure 11 A schematic diagram illustrating a data stream deinterleaving process provided in this application embodiment:
[0048] Figure 12 A schematic diagram illustrating a data stream deinterleaving process provided in an embodiment of this application;
[0049] Figure 13 A schematic diagram illustrating a data stream deinterleaving process provided in an embodiment of this application;
[0050] Figure 14 A schematic diagram illustrating a data stream deinterleaving process provided in an embodiment of this application;
[0051] Figure 15 This is a schematic diagram of the structure of an Ethernet device provided in an embodiment of the present invention;
[0052] Figure 16 This is a schematic diagram of the structure of an Ethernet device provided in an embodiment of the present invention;
[0053] Figure 17This is a schematic diagram of a communication system provided in an embodiment of the present invention. Detailed Implementation
[0054] During communication transmission, due to various reasons such as environmental interference and system errors, there is a high possibility that the data received by the data receiver may be inconsistent with the data sent by the data sender. This inconsistency is known as bit error rate (BER). BER is unavoidable in communication transmission. BER can cause many problems. For example, when critical control signals between various devices in a network contain BER, it may lead to serious issues such as system crashes and data loss. Furthermore, BER significantly affects network communication latency, thus impacting the user experience for activities such as watching videos, playing online games, and making phone calls. Therefore, the BER has always been an important performance indicator for communication systems. The lower the BER value at the data receiver, the higher the reliability of network transmission.
[0055] To ensure high reliability of communication systems, the industry typically sets explicit requirements for the BER (Bit Error Rate) of communication systems. For example, the Institute of Electrical and Electronics Engineers (IEEE) standard 802.3bs requires that the BER of data received by the data receiver when entering the media access control (MAC) sublayer should be less than 1 × 10⁻⁶. -13 However, the bit error rate (BER) of data in a network typically reaches 2 × 10⁻⁶ after it has completed its transmission along the network link and reaches the receiving end. -4 At this point, the data receiver can use FEC to correct bit errors in the data stream to recover the transmitted data. FEC can eliminate most bit errors, resulting in a significant reduction in the bit error rate (BER) of the processed data.
[0056] The effectiveness of FEC (Fault-Corrected Efforts) is related to the error distribution. When the error distributions of two data streams are different, even if their pre-correction BER (BER) is the same, their post-correction BER will differ. Pre-correction BER refers to the BER before FEC, and post-correction BER refers to the BER after FEC. Error distribution can be mainly divided into two categories: random errors and non-random errors. For illustration, Figures 1(a) and 1(b) provide examples of random and non-random errors, where b represents the correct bits and x represents the erroneous bits. Random errors are characterized by a random error distribution, as shown in Figure 1(a), while non-random errors are characterized by multiple errors concentrated in a shorter data sequence, as shown in Figure 1(b). Therefore, non-random errors can also be called burst errors. Burst errors are common in practical communication networks. For example, continuous errors caused by Decision Feedback Equalization (DFE) and continuous errors caused by fast fading due to multipath effects in wireless information. As shown above, the data in Figure 1(a) and Figure 1(b) have the same initial BER, but different error distributions will lead to differences in the BER after FEC. Under most communication transmission conditions, based on the same pre-correction FEC, burst errors will result in a better post-correction BER than random errors.
[0057] To address burst error scenarios and further reduce post-correction FEC, an interleaver, also known as a channel interleaver, is typically introduced. The usage of an interleaver is as follows: Figure 2 As shown. Figure 2 In this diagram, Tx represents the data to be input to the FEC encoder at the data transmitter. This data is encoded by the FEC encoder at the data transmitter and then input to the interleaver for interleaving. The data output from the interleaver is transmitted to the data receiver via the communication channel. The data is input to the deinterleaver at the data receiver for deinterleaving and then enters the FEC decoder for decoding. Rx represents the data output from the FEC decoder at the data receiver. After FEC and interleaving processing, the BER in Rx will be significantly reduced.
[0058] In the embodiments of this application, the interleaving method of the interleaver can have multiple attributes. Interleaving type is one attribute of the interleaving method, including symbol interleaving or convolutional interleaving. Symbol interleaving can also be called block interleaving. Symbol interleaving and convolutional interleaving have essentially the same error correction performance, but to achieve the same error correction performance, the latency and power consumption of the two methods may differ. Interleaving depth is also an attribute of the interleaving method. Interleaving depth indicates the number of FEC codewords involved in the interleaving, and the number of FEC codewords involved in the interleaving affects the error correction performance.
[0059] Figure 3 An illustrative diagram of a symbol-interlaced data processing method is provided.
[0060] like Figure 3 As shown, multiple FEC-encoded codewords are obtained from the data stream to be interleaved as codewords participating in the interleaving, such as codeword A, codeword B, codeword C, codeword D, etc. When the codewords participating in the interleaving come from the same data stream, it is intra-data stream interleaving; when the codewords participating in the interleaving come from different data streams, it is inter-data stream interleaving. Each codeword includes p FEC-encoded symbols, and each symbol includes q bits, that is, each codeword includes pxq bits. Here, p and q are positive integers. For example, the length of each symbol can be 10 bits, i.e., symbol interleaving with a 10-bit granularity. As another example, in pulse amplitude modulation-4 (PAM4), the length of each symbol can be 2 bits, i.e., PAM4 can use 2-bit granularity symbol interleaving. For yet another example, p can also be 1, i.e., the length of each symbol can be 1 bit, i.e., symbol interleaving with a 1-bit granularity. Figure 3 Four codewords are selected from the data stream to be interleaved for interleaving, i.e., the interleaving depth is 4 codewords. When these codewords are RS codewords, the interleaving depth is said to be 4×RS. These four codewords are alternated at the symbol level and distributed into n data streams on n lanes, such that adjacent symbols in each data stream come from different codewords. That is, symbols from the above four codewords appear alternately, thus forming the interleaved data sequence. Figure 3 The text refers to interleaved lane 1 to interleaved lane n.
[0061] Symbol interleaving can be performed on a single data stream or on multiple data streams. Figures 4(a) and 4(b) illustrate, respectively, schematic diagrams of data processing methods for symbol interleaving on one or multiple data streams.
[0062] As shown in Figure 4(a), the data stream to be interleaved is a single data stream Tx. Four FEC codewords are obtained from the data stream Tx for interleaving, namely cwA, cwB, cwC, and cwD in Figure 4(a). Each time, four FEC codewords are selected for interleaving, i.e., the interleaving depth is 4. Each codeword contains 8 symbols. For example, codeword cwA consists of 8 symbols, each symbol being 'a', meaning codeword cwA can be expanded to aaaaaaaa. Similarly, cwB, cwC, and cwD are expanded to bbbbbbbb, cccccccc, and dddddddd, respectively. These four codewords are alternately combined at the symbol level to form the interleaved data stream abcdabcdabcd...abcd, thus completing one interleaving cycle. Since the interleaving depth is 4, this can also be called a 4:1 interleaving cycle. Afterward, four more FEC codewords are selected to continue the next 4:1 interleaving cycle, and so on. Further details are omitted.
[0063] As shown in Figure 4(b), the data streams to be interleaved consist of four data streams: Tx1, Tx2, Tx3, and Tx4. One FEC codeword is extracted from each of the four data streams to be interleaved, as shown in Figure 4(b) as cwA, cwB, cwC, and cwD selected from Tx1, Tx2, Tx3, and Tx4, respectively. Four FEC codewords are selected for interleaving each time, resulting in an interleaving depth of 4. The composition of each codeword is the same as in Figure 4(a). That is, codewords cwA, cwB, cwC, and cwD are expanded to aaaaaaaaa, bbbbbbbb, cccccccc, and dddddddd, respectively. These four codewords are alternately combined at the symbol level to form the interleaved data stream abcdabcdabcd…abcd. Then, the next four FEC codewords are extracted from the four data streams to be interleaved and interleaved again, and so on. This process will not be repeated here.
[0064] Figure 5 An illustrative diagram illustrating one data processing method of convolutional interleaving is provided. Convolutional interleaving involves various design parameters, including the number of delay line numbers, delay block length, and number of delay blocks. For example... Figure 5 As shown, multiple FEC-encoded codewords are obtained from the data stream to be interleaved, including cwA, cwB, cwC, and cwD. The interleaving depth is 4 codewords, that is, 4 codewords are selected from the data stream to be interleaved, namely cwA, cwB, cwC, and cwD mentioned above, and the delay line number is 4, that is, 4 lines of data from top to bottom, line 0, 1, 2, and 3. Figure 5In the diagram, "D" represents a delay block. Each delay block consists of a shift register (LFSR) that temporarily stores a certain amount of data, and the number of delay blocks varies across each delay line. The interleaver has a switch on both its input and output sides to connect to a specific delay line. FEC codeword data is fed into the convolutional interleaver column-by-column, with the delay block length as the granularity. Figure 5 As shown in Figures a, b, c, and d. When the FEC codeword length is the same as the delay block length, the granularity of the data entering the convolutional interleaver is also the length of the FEC codeword. When the FEC codeword length and the delay block length are different, the FEC codeword data needs to be adjusted to enter the convolutional interleaver with the delay block length as the granularity. When the input side inputs data of one delay block length, the output side simultaneously outputs data of one delay block length. Afterward, the switchable connection switches on both sides will switch to the next delay line, polling in the order {line 0, line 1, line 2, line 3, line 0, line 1, line 2, line 3, line 0, line 1, ...}. Furthermore, Figure 5 The output x represents the data preceding the four codewords stored within the delay block. Furthermore, although... Figure 5 Taking the convolutional interleaving of a single data stream as an example, the convolutional interleaving between multiple data streams and... Figure 5 The process shown is similar, except that the codewords involved in the interleaving come from multiple data streams, which will not be elaborated here.
[0065] As mentioned earlier, the data output from the interleaver is transmitted to the data receiver via the communication channel. At the data receiver, the data is input to the deinterleaver for deinterleaving, and then enters the FEC decoder for decoding. The deinterleaver can also be called the channel deinterleaver. During the deinterleaving process at the data receiver, the deinterleaving position must first be found. This deinterleaving position can be, for example, the first FEC codeword boundary in a set of interleavings, as shown in Figure 4(a). The circled position is the deinterleaving position, which is also the first FEC codeword boundary position in a set of interleavings. Starting from this position, the interleaved data stream can be deinterleaved and combined to obtain a deinterleaved data stream. It is easy to understand that this deinterleaving position appears periodically in the interleaved data stream; for example, each set of interleavings has its first FEC codeword boundary position. After determining the deinterleaving position, the received interleaved data stream can be distributed based on the interleaving granularity and interleaving depth, starting from this position. Then, the distributed codewords are recombined sequentially to obtain the deinterleaved data stream. For example, for the interleaved data stream formed by 4:1 interleaving as shown in Figure 4(a), four FEC codewords are obtained based on the interleaving granularity. These four FEC codewords are then recombine in the order A, B, C, D to obtain a deinterleaved data stream. For the interleaved data stream shown in Figure 4(b), four FEC codewords are obtained based on the interleaving granularity. These four FEC codewords are then assigned to four deinterleaved data streams in the order A, B, C, D.
[0066] Therefore, determining the correct deinterleaving position is a prerequisite for deinterleaving. To determine the deinterleaving position, the data transmitter can periodically insert fixed data segments known to the data receiver before or after the deinterleaving position. These fixed data segments are specifically used to find the deinterleaving position, allowing the data receiver to determine the deinterleaving position by locating these fixed data segments. These fixed data segments may include alignment markers (AM), frame alignment words, or pilot data, etc. Figure 6 This is one method of inserting additional data, where pppp represents the inserted fixed data segment. It can be seen that this method requires transmitting an additional fixed data segment on top of the original data to be transmitted, resulting in higher transmission costs. Furthermore, under transmission conditions where bandwidth or PLL frequency points are limited, the applicability of this method is greatly reduced.
[0067] This application proposes a method for data stream deinterleaving, that is, a method for restoring the correct data order from interleaved data streams. This method can be executed by a physical layer PHY chip, a forwarding device, or a pluggable module in an Ethernet network. The physical layer PHY chip and pluggable module can be located in a forwarding device or server. Forwarding devices include, but are not limited to, Ethernet switches or routers; servers include, but are not limited to, compute servers or storage servers; and pluggable modules include, but are not limited to, optical modules. This method can begin processing at any point in the received data stream, finding the correct deinterleaving position by identifying FEC codeword features, and recovering the pre-interleaving data stream from the data sender. Using this method, deinterleaving can be completed and the data correctly recovered without inserting additional fixed data segments specifically for finding the deinterleaving position. This avoids adding extra data, saves hardware resources, improves deinterleaving efficiency, reduces transmission costs, and improves network efficiency.
[0068] Figure 7 This is a flowchart illustrating a data transmission method 700 according to an embodiment of this application. The method may include:
[0069] Step S701: Obtain the first interleaved data stream.
[0070] The data receiving end acquires the data stream. The first interleaved data stream is a data stream encoded with forward error correction (FEC). In one possible implementation, the FEC encoding of the first interleaved data stream can be either a non-concatenated code FEC encoding or a concatenated code FEC encoding as defined in the IEEE 802.3dj standard.
[0071] Figures 8(a), 8(b), and 8(c) illustrate the applicable scenarios of the data stream deinterleaving method in the embodiments of this application. Figure 8(a) shows the FEC encoding scenario for non-concatenated codes, while Figures 8(b) and 8(c) show the FEC encoding scenarios for concatenated codes in the IEEE 802.3dj standard. The dashed boxes indicate functions that can be removed. The specific details of each function in Figures 8(b) and 8(c) can be found in the IEEE 802.3dj standard and will not be repeated here. Both Figures 8(b) and 8(c) introduce a cyclic shift function. In Figure 8(b), the cyclic shift occurs before the second-stage FEC, while in Figure 8(c), the cyclic shift occurs after the second-stage FEC.
[0072] Cyclic shift is a feature introduced in concatenated code FEC encoding scenarios. By cyclically shifting, the internal structure of the inner code FEC codewords of the concatenated code can be scrambled, further dispersing burst errors and reducing their impact on the outer code FEC, thus enhancing error correction performance. The specific implementation of cyclic shift is as follows: Figure 9 As shown, Figure 9Taking a channel interleaving depth of 4 as an example, for each group of four adjacent inner code FEC codewords to be interleaved, the bit content within each FEC codeword is cyclically shifted by a certain length. Each line contains one inner code FEC codeword, including eight symbols from A to H. The length of each symbol can be, for example, 10 bits. The symbol blocks A, B, C, D, etc., represent symbols from different concatenated outer code FEC codewords. It can be seen that the cyclic shift will disrupt the original structure of the concatenated inner code FEC codeword, that is, disrupt the FEC codeword structure including information bits plus the end parity bit, thereby causing changes in the FEC codeword characteristics. Figure 10 The diagram shows a channel interleaved data sequence after cyclic shifting, where each symbol, such as A.1, A.2, etc., can be a 10-bit symbol.
[0073] In one possible implementation, the interleaving type of the first interleaved data stream is symbolic interleaving or convolutional interleaving. The specific details of symbolic interleaving or convolutional interleaving are described above and will not be repeated here.
[0074] In one possible implementation, the first interleaved data stream does not include periodic alignment data segments, which include alignment markers, frame alignment words, or pilot data. As mentioned above, the data stream deinterleaving method in this embodiment of the application can complete deinterleaving at the data receiving end and correctly recover the data without inserting additional fixed data segments specifically used to determine the deinterleaving position into the data stream at the data sending end.
[0075] In one possible implementation, the channel rate of the first interleaved data stream is greater than or equal to 200 gigabits per second (Gbps). The data stream deinterleaving method in this embodiment can be applied to high-speed Ethernet transmission scenarios, such as 800GbE or 1.6TbE scenarios defined by the IEEE standard. For example, the channel rate of the first interleaved data stream can be 200Gbps, 400Gbps, 800Gbps, or 1.6Tbps, etc.
[0076] Step S702: Based on the interleaving granularity of the first interleaved data stream, obtain N sub-data streams corresponding to the first interleaved data stream. Wherein, N is the interleaving depth of the first interleaved data stream, and N is a positive integer greater than 1.
[0077] After acquiring the first interleaved data stream, the data receiving end deinterleaves the first interleaved data stream. In one possible implementation, the data receiving end's processing can begin from any position in the first interleaved data stream. For example, the data receiving end can randomly select a starting position in the first interleaved data stream to begin processing.
[0078] In this embodiment of the application, the data receiving end can obtain the parameters of the data sending end during the processing of the first interleaved data stream, such as FEC codeword length, interleaving granularity, or interleaving depth. Based on this, the data receiving end deinterleaves the first interleaved data stream.
[0079] In one possible implementation, after determining the starting position, the data receiving end, starting from the starting position, distributes the first interleaved data stream into N sub-data streams based on the interleaving granularity of the first interleaved data stream. This starting position can also be referred to as the data stream distribution start position. The sub-data streams can also be referred to as sub-channel data streams.
[0080] In one possible implementation, the data receiving end distributes the data of the first interleaved data stream to the N sub-data streams in a polling manner based on the interleaving granularity of the first interleaved data stream.
[0081] In one possible implementation, N is 4 or 8.
[0082] In one possible implementation, the N sub-data streams are not obtained all at once based on distribution, but rather one sub-data stream is taken from the first interleaved data stream each time, processed, and then the next sub-data stream is taken, and so on, to obtain N sub-data streams.
[0083] Figure 11 An exemplary procedure is provided for distributing the first interleaved data stream into N sub-data streams. For example, the interleaving depth N is 4. The data receiver receives the interleaved data stream, which includes multiple symbols, such as D.3, A.4, B.4, C.4…A.0, B.0, C.0 in the figure. The data receiver selects any position from these symbols, for example… Figure 11 Starting from position C.5, the interleaved data stream is distributed based on the interleaving granularity to obtain four sub-data streams. Furthermore, the data in this interleaved data stream is distributed in a round-robin fashion into the four sub-data streams. That is, lane 0 receives the first symbol C.5, lane 1 receives the second symbol D.5, lane 2 receives the third symbol A.0, lane 3 receives the fourth symbol B.0, lane 0 receives the fifth symbol C.0, and so on. The data in each sub-data stream after distribution consists of a series of FEC codewords, used to determine the FEC codeword boundaries of each sub-data stream in subsequent steps.
[0084] In one possible implementation, if there is a cyclic shift as shown in Figure 8(c) at the data sending end, that is, when the cyclic shift at the data sending end is performed after the second-level FEC, then in the N sub-data streams obtained at the data receiving end, the data structure in each FEC codeword in each sub-data stream has been scrambled, that is, the FEC codewords of the N sub-data streams are in a cyclic shift relationship.
[0085] Step S703: Determine the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams.
[0086] In one possible implementation, after obtaining the N sub-data streams corresponding to the first interleaved data stream, the data receiving end further determines the FEC codeword boundary of each of the N sub-data streams. In this embodiment, the specific method for determining the FEC codeword boundary is not limited. In this embodiment, the deinterleaving position is used to correctly deinterleave the data, recover the original codewords and their relative order, so as to recover the data stream before encoding.
[0087] In one possible implementation, the data receiver can determine the FEC codeword boundary of each of the N sub-data streams based on FEC codeword features. For example, feature value verification can be performed on the sub-data streams based on assumed FEC codeword boundaries, and the FEC codeword boundaries can be determined based on the verification results. The feature values can be, for example, a check sequence or syndrome. Figure 11 As shown, in one example, the FEC codeword boundary of each of the four sub-data streams is the position of symbol 0. Specifically, the FEC codeword boundary in lane 0 is the position shown by symbol C.0, the FEC codeword boundary in lane 1 is the position shown by symbol D.0, the FEC codeword boundary in lane 2 is the position shown by symbol A.0, and the FEC codeword boundary in lane 3 is the position shown by symbol B.0. It should be noted that the FEC codeword boundaries in each sub-data stream appear periodically within that data stream, and the length of the interval between each FEC codeword boundary is the FEC codeword length.
[0088] In the embodiments of this application, the specific content of determining the FEC codeword boundary in the data stream based on the FEC codeword features can be found in the patent documents with application number 202010424884.9 filed on May 19, 2020, application number 202110904102.6 filed on August 6, 2021, and application number 202210520888.6 filed on May 12, 2022. All of their contents are incorporated herein by reference, as if they were all stated.
[0089] In one possible implementation, the data receiver can also determine the FEC codeword boundary of each of the N sub-data streams based on information other than FEC codeword features. This other information includes, but is not limited to, scrambling information and AMs in the N sub-data streams. For example, the AM in the N sub-data streams could be an AM inserted by the Physical Coding Sublayer (PCS). This AM is scrambled after data interleaving at the data transmitter; that is, the data receiver cannot find this AM when receiving the interleaved data stream, but may recover it from the obtained N sub-data streams and use it to determine the FEC codeword boundaries within the sub-data streams.
[0090] In one possible implementation, the data receiver can first determine the FEC codeword boundary of one of the N sub-data streams based on FEC codeword features or other information. Then, based on the FEC codeword boundary of this sub-data stream, it can further determine the FEC codeword boundaries of other sub-data streams. For example, it can first determine the FEC codeword boundary of any one of the N sub-data streams based on FEC codeword features or other information, and then estimate the possible locations of the FEC codeword boundaries of other sub-data streams based on the FEC codeword boundary of this sub-data stream, thereby significantly reducing the computational load or power consumption required to find the codeword boundaries of all sub-data streams. Figure 11 As shown, in one example, the data receiver first finds the FEC codeword boundary of lane 0 in the four sub-data streams, i.e., the position indicated by symbol C.0, also known as position 0. Based on the interleaving characteristics, it can be known that after distribution, the FEC codeword boundaries of all sub-data streams are distributed in the same column or in two adjacent columns. Therefore, after determining that the FEC codeword boundary of lane 0 is at position 0, the FEC codeword boundaries of other sub-data streams must also be at position 0 or adjacent to position 0, such as position 5. Taking lane 1 as an example, the FEC codeword boundary of lane 1 must be at position D.0 or position D.5 in the figure. Thus, for lane 1, only positions D.0 or D.5 need to be verified to find the FEC codeword boundary, without needing to verify other positions such as D.1 to D.4, greatly reducing the amount of computation. Similarly, for lane 2, only positions A.1 or A.0 need to be verified to find the FEC codeword boundary, without needing to verify other positions such as A.2 to A.5. For lane 3, verifying B.1 or B.0 is sufficient to find the FEC codeword boundary; verification of other positions such as B.2 to B.5 is unnecessary. It should be noted that the data receiver can first find the FEC codeword boundary position of any one of the four sub-data streams, such as the FEC codeword boundary of lane 2, and then determine the possible positions of the FEC codeword boundaries of the other three sub-data streams based on this. This reduces the computational load or power consumption required to find the FEC codeword boundaries of the three sub-data streams. The principle is the same and will not be elaborated further here.
[0091] In one possible implementation, as mentioned earlier, if a cyclic shift as shown in Figure 8(c) exists at the data transmitting end—that is, when the cyclic shift at the data transmitting end occurs after the second-level FEC—then in the N sub-data streams obtained at the data receiving end, the FEC codewords of the N sub-data streams are in a cyclic shift relationship, and the cyclic shift changes the FEC codeword characteristics within the sub-data streams. In this case, before determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword characteristics, it is necessary to first perform a reverse cyclic shift on the FEC codewords in each sub-data stream to restore the scrambled FEC codeword structure. Then, the FEC codeword boundary of each of the N sub-data streams after the reverse cyclic shift can be determined based on the FEC codeword characteristics.
[0092] After determining the FEC codeword boundary of each of the N sub-data streams, the data receiving end determines the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams. As mentioned above, after the data receiving end obtains the N sub-data streams corresponding to the first interleaved data stream, the N sub-data streams are arranged in sequence. Determining the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams can be divided into two cases.
[0093] In the first possible scenario, at least two adjacent sub-data streams have different FEC codeword boundaries; for example, these two adjacent sub-data streams could be a first sub-data stream and a second sub-data stream. The data receiver determines the deinterleaving position as the FEC codeword boundary of the second sub-data stream, based on the FEC codeword boundary of the first sub-data stream being after the FEC codeword boundary of the second sub-data stream.
[0094] In this embodiment, the order of FEC codeword boundaries refers to the order in which data at the FEC codeword boundary positions are transmitted in the first interleaved data stream, or the fast / slow order. When a difference is found between the FEC codeword boundaries of two adjacent sub-data streams, the sub-data stream with the earlier FEC codeword boundary is the faster sub-data stream, and the FEC codeword boundary of the faster sub-data stream is the correct deinterleaving position.
[0095] Generally speaking, the first sub-data stream is arranged before the second sub-data stream, and the FEC codeword boundaries of the two sub-data streams differ by 1 symbol.
[0096] In the second possible scenario, the FEC codeword boundaries of each sub-data stream are aligned. The data receiver determines the correct deinterleaving position as the FEC codeword boundary of the earliest-ordered sub-data stream among the N sub-data streams. In this case, if the current deinterleaving distribution start point is an FEC codeword boundary, then the current deinterleaving distribution start point is the correct deinterleaving position.
[0097] In the embodiments of this application, the FEC codeword boundary alignment of each sub-data stream means that the data at the FEC codeword boundary position of each sub-data stream is in the data corresponding to one deinterleaving distribution, that is, the data at the FEC codeword boundary position of each sub-data stream is in the data corresponding to a set of interleaving at the data sending end.
[0098] Figure 11 and Figure 12 The following shows two possible scenarios for determining the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams.
[0099] like Figure 11 As shown in the previous example, in one instance, the FEC codeword boundary of each of the four sub-data streams is the position of symbol 0. Specifically, the FEC codeword boundary in lane 0 is the position shown by symbol C.0, the FEC codeword boundary in lane 1 is the position shown by symbol D.0, the FEC codeword boundary in lane 2 is the position shown by symbol A.0, and the FEC codeword boundary in lane 3 is the position shown by symbol B.0. Comparing the FEC codeword boundaries in the four sub-data streams, it can be seen that the FEC codeword boundaries of at least two of the four sub-data streams are not in the same column, i.e., they are misaligned. Figure 11 As shown, the FEC codeword boundaries of lane1 and lane2 are different. The FEC codeword boundaries of lane1 are D.0 and those of lane2 are A.0. Furthermore, the FEC codeword boundary of lane1 is after the FEC codeword boundary of lane2. Therefore, the FEC codeword boundary A.0 of lane2 is the correct deinterleaving location.
[0100] Figure 12 Another process for distributing the first interleaved data stream into N sub-data streams is given as an example. For example, the interleaving depth N is 4. (The last sentence appears to be incomplete and possibly refers to a different process.) Figure 11 The difference is that the data receiver selects any position from the received interleaved data stream, for example... Figure 12Starting from position A.5, the interleaved data stream is distributed based on interleaving granularity to obtain four sub-data streams. Furthermore, data from this interleaved data stream is distributed in a round-robin fashion to the four sub-data streams. Specifically, lane 0 receives the first symbol A.5, lane 1 receives the second symbol B.5, lane 2 receives the third symbol C.5, lane 3 receives the fourth symbol D.5, lane 0 receives the fifth symbol A.0, and so on. The FEC codeword boundary of each of the four sub-data streams is the position of symbol 0; that is, the FEC codeword boundary in lane 0 is the position shown by symbol A.0, in lane 1 it is the position shown by symbol B.0, in lane 2 it is the position shown by symbol C.0, and in lane 3 it is the position shown by symbol D.0. Comparing the FEC codeword boundaries in the four sub-data streams, it can be seen that the FEC codeword boundaries in the four sub-data streams are in the same column, i.e., aligned. At this point, considering that lane0 is the first in the order of the four sub-data streams, the FEC codeword boundary A.0 of lane0 is the location of the deinterleaving.
[0101] Compare Figure 11 and Figure 12 It can be seen that the data sending end interleaves multiple FEC codewords with aligned FEC codeword boundaries. When the data receiving end deinterleaves from a randomly selected starting position, the FEC codeword boundaries in the resulting multiple sub-data streams can be aligned or misaligned. However, even when the FEC codeword boundaries in the multiple sub-data streams are misaligned, these codeword boundaries are still adjacent, differing by only one symbol. Furthermore, it should be noted that if the determined FEC codeword boundaries of the multiple sub-data streams are not adjacent, differing by more than two symbols, it indicates an error in the aforementioned steps. This could be due to an error in determining the FEC codeword boundaries in the sub-data streams, or an error in other processes. In this case, it is necessary to return to step S702, re-determine a starting position, and obtain N sub-data streams from the first interleaved data stream.
[0102] Step S704: Based on the deinterleaving position, obtain the first deinterleaving data stream according to the first interleaving data stream.
[0103] After determining the deinterleaving position order, the data receiver can combine the FEC codewords in the first interleaved data stream to obtain the deinterleaved data stream and recover the data before interleaving.
[0104] In one possible implementation, in addition to determining the FEC codeword boundary of each of the N sub-data streams, the data receiver also needs to determine the deinterleaving combination order of the N sub-data streams, and then, based on the deinterleaving combination order, combine the FEC codewords in the N sub-data streams to obtain the first deinterleaved data stream.
[0105] In one possible implementation, when determining the deinterleaving and reassembly order of the N sub-data streams, the data receiving end determines the deinterleaving and reassembly order of the N sub-data streams based on the distribution order of the first interleaved data stream into the N sub-data streams and the FEC codeword boundary position relationship of each of the N sub-data streams. The position relationship is determined according to the order of data at the FEC codeword boundary positions of each of the N sub-data streams within the first interleaved data stream. It is easy to understand that the order of data within the first interleaved data stream refers to the order in which the data is received; that is, data received earlier has a higher order in the first interleaved data stream, and data received later has a higher order.
[0106] In one possible implementation, when the data receiver obtains the first deinterleaved data stream based on the first interleaved data stream, it does not require that all data in the first interleaved data stream be in the first deinterleaved data stream. In one example, some data in the first interleaved data stream are in the first deinterleaved data stream.
[0107] In one possible implementation, the data used to assemble the first deinterleaved data stream may be a portion of the data in the first interleaved data stream, or in other words, a portion of the data in the first interleaved data stream may not be assembled into the deinterleaved data stream. For example, the data used to assemble the deinterleaved data stream may be different from the data distributed to the N sub-data streams and used to determine the deinterleaving position, which may be data in the first interleaved data stream. For example, the data distributed to the N sub-data streams and used to determine the deinterleaving position may be discarded after the deinterleaving position is found and not introduced into the deinterleaved data stream. For example, the data used to assemble the deinterleaved data stream may be data in the first interleaved data stream that follows the data distributed to the N sub-data streams.
[0108] In this embodiment, the specific method of obtaining the deinterleaved data stream after finding the deinterleaving position is not limited. In one possible implementation, after finding the deinterleaving position, the interleaved data stream may not be distributed into N sub-data streams, but the deinterleaved data stream may be obtained based on the interleaved data stream according to the deinterleaving position.
[0109] Figure 13 An example of a data stream deinterleaving method from an embodiment of this application is given. For example... Figure 13 The data transmitter receives a single data stream to be interleaved. This data stream consists of multiple FEC codewords, each containing 12 bits. Every two adjacent bits form a PAM4 symbol, such as... Figure 13 The data stream is interleaved and distributed into four sub-streams, namely A.0, A.1, etc. The data sender then interleaves this data stream, distributing it into four sub-streams. Figure 13 The T0, T1, T2, and T3 values in the dataset are then interleaved based on PAM4 symbolo1 to obtain the interleaved data stream. The data receiver obtains this interleaved data stream and selects any position from it, for example... Figure 13 Starting from position C.5, the interleaved data stream is deinterleaved and distributed using PAM4 symbols based on the interleaving granularity to obtain four sub-data streams: lane0, lane1, lane2, and lane3. Based on FEC codeword characteristics, the FEC codeword boundary of each of the four sub-data streams is determined to be the location of the symbol 0. Furthermore, by comparing the FEC codeword boundaries of the four sub-data streams and considering the positional relationship of the FEC codeword boundaries of each sub-data stream, as well as the distribution order of the four sub-data streams, the arrangement order of the four sub-data streams is determined to be lane2, lane3, lane0, lane1, and the FEC codeword boundary A.0 of lane2 is the location of the deinterleaving position. The FEC codewords from the four sub-data streams are combined in this order. For example, FEC codewords A.0 to A.5 are taken from lane 2, B.0 to B.5 from lane 3, C.0 to C.5 from lane 0, and D.0 to D.5 from lane 1. Combining these sequentially yields one set of deinterleaved data. This process is repeated to obtain more sets of deinterleaved data. It can be seen that the deinterleaved data is identical to the pre-interleaved data at the data transmission end.
[0110] Figure 14 Another example of the data stream deinterleaving method in this application is given. For example, the number of sub-data streams is 8, each small square represents a PAM4 symbol, and the gray small square represents the first FEC codeword in a set of interleavings, i.e., the correct deinterleaving position. Figure 14 As shown, the data sender interleaves the eight sub-data streams to obtain the interleaved data stream, which is then sent to the data receiver. The data receiver receives the interleaved data stream and begins processing it from any position, for example... Figure 14The small squares are filled with diagonal lines. Based on the FEC codeword characteristics, the FEC codeword boundary of each sub-data stream is determined. When there is a difference of one PAM4 symbol between the FEC codeword boundaries of two adjacent sub-data streams, such as... Figure 14 The FEC codeword boundary between the second and third sub-data streams shown differs by one PAM4 symbol. The FEC codeword boundary of the third sub-data stream is earlier, meaning the third sub-data stream is the faster-transmitting sub-data stream in the interleaved data stream. Therefore, the FEC codeword boundary of the third sub-data stream is the correct deinterleaving position (e.g., ...). Figure 14 (The location of the small gray square in the third sub-data stream shown). It is easy to understand that if there is no difference in the FEC codeword boundaries of each of the eight sub-data streams, then any of the above positions is the correct deinterleaving position.
[0111] Using the method described above, deinterleaving can be completed without inserting additional fixed data segments, thus correctly recovering the data. This avoids adding extra data, reduces transmission costs, and improves network efficiency.
[0112] Figure 15 This is a schematic diagram of the structure of an Ethernet device provided in an embodiment of this application. The Ethernet device can be used to receive data. The Ethernet device can be... Figure 7 The Ethernet device in the deinterleaving method of the data stream shown. Based on Figure 15 The structure shown indicates that the Ethernet device 1500 is capable of performing... Figure 7 All or part of the operations in the illustrated method. It should be understood that the Ethernet device may include more additional structures than the illustrated structure or omit a portion of the illustrated structure; this application embodiment does not impose limitations in this regard. Figure 15 As shown, the Ethernet device includes:
[0113] The deinterleaving circuit 1501 is used to acquire a first interleaved data stream, which is a data stream encoded by forward error correction (FEC); based on the interleaving granularity of the first interleaved data stream, obtain N sub-data streams corresponding to the first interleaved data stream, where N is the interleaving depth of the first interleaved data stream and N is a positive integer greater than 1; determine the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams; and obtain a first deinterleaved data stream based on the deinterleaving position and the first interleaved data stream.
[0114] In one possible implementation, the Ethernet device may further include interface circuitry. This interface circuitry can be used to receive the first interleaved data stream. This interface circuitry can also be used to transmit the first deinterleaved data stream.
[0115] In one possible implementation, the N sub-data streams are arranged sequentially, and determining the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams includes: determining the deinterleaving position as the FEC codeword boundary of the second sub-data stream after the FEC codeword boundary of the first sub-data stream; wherein the first sub-data stream and the second sub-data stream are two adjacent sub-data streams among the N sub-data streams.
[0116] In one possible implementation, the first sub-data stream is arranged before the second sub-data stream.
[0117] In one possible implementation, the FEC codeword boundary of the first sub-data stream differs from the FEC codeword boundary of the second sub-data stream by one symbol.
[0118] In one possible implementation, the N sub-data streams are arranged sequentially, and determining the deinterleaving position based on the FEC codeword boundaries of at least two of the N sub-data streams includes: determining the deinterleaving position as the FEC codeword boundary of the first sub-data stream based on the alignment of the FEC codeword boundaries of each of the N sub-data streams; wherein the first sub-data stream is arranged first among the N sub-data streams.
[0119] In one possible implementation, the N sub-data streams are arranged in sequence, and obtaining the first deinterleaved data stream based on the deinterleaving position and the first interleaved data stream includes: determining the deinterleaving combination order of the N sub-data streams based on the deinterleaving position and the arrangement order of the N sub-data streams; and combining the data in the first interleaved data stream based on the deinterleaving combination order to obtain the first deinterleaved data stream.
[0120] In one possible implementation, obtaining N sub-data streams corresponding to the first interleaved data stream based on the interleaving granularity of the first interleaved data stream includes: selecting a data stream distribution start position from the first interleaved data stream, and distributing the first interleaved data stream into N sub-data streams based on the interleaving granularity of the first interleaved data stream; wherein the data stream distribution start position is a position randomly selected in the first interleaved data stream.
[0121] In one possible implementation, obtaining the N sub-data streams corresponding to the first interleaved data stream based on the interleaving granularity of the first interleaved data stream includes: distributing the data of the first interleaved data stream to the N sub-data streams in a round-robin fashion based on the interleaving granularity of the first interleaved data stream.
[0122] In one possible implementation, the deinterleaving circuit is further configured to: determine the FEC codeword boundary of each of the N sub-data streams.
[0123] In one possible implementation, determining the FEC codeword boundary of each of the N sub-data streams includes: determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword characteristics.
[0124] In one possible implementation, determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword features includes: performing feature value verification based on the assumed FEC codeword boundary in each sub-data stream, and determining the FEC codeword boundary of each sub-data stream based on the verification results.
[0125] In one possible implementation, the FEC codewords of the N sub-data streams are in a cyclic shift relationship. The step of determining the FEC codeword boundary of each of the N sub-data streams based on the FEC codeword characteristics includes: performing an inverse cyclic shift on the obtained FEC codewords of the N sub-data streams; and determining the FEC codeword boundary of each of the N sub-data streams after the inverse cyclic shift based on the FEC codeword characteristics.
[0126] In one possible implementation, the first interleaved data stream does not include periodic alignment data segments, which include alignment words, frame alignment words, or guide data.
[0127] In one possible implementation, the FEC encoding of the first interleaved data stream is either non-concatenated FEC encoding or concatenated FEC encoding.
[0128] In one possible implementation, N is 4 or 8.
[0129] In one possible implementation, the interleaving type of the first interleaved data stream is symbolic interleaving or convolutional interleaving.
[0130] In one possible implementation, the method is performed by a physical layer PHY chip, a forwarding device, or a pluggable module.
[0131] In one possible implementation, the channel rate of the first interleaved data stream is greater than or equal to 200 gigabits per second (Gbps).
[0132] For a detailed description of the operations performed by the Ethernet device, please refer to the above. Figure 7 The specific description of the method embodiments shown will not be repeated here.
[0133] The Ethernet device can be a physical layer PHY chip, a forwarding device, or a pluggable module. The forwarding device can be an Ethernet forwarding device such as a switch or router, and the pluggable module is not limited to pluggable optical modules or electrical modules, etc.
[0134] When the Ethernet device is an Ethernet forwarding device such as a switch or router, the Ethernet device may include an Ethernet chip, or a pluggable optical module or electrical module, wherein the Ethernet chip, or the pluggable optical module or electrical module is capable of performing... Figure 7 All or part of the operations in the method.
[0135] See Figure 16 , Figure 16 This invention provides a schematic diagram of the structure of an Ethernet device 2100 according to another exemplary embodiment of the present application. Figure 16 The Ethernet device 2100 shown is used to perform the above. Figure 7 The deinterleaving method for the data stream shown involves all or part of the operations. The network device 2100 is, for example, a physical layer PHY chip, a forwarding device, or a pluggable module, and the Ethernet device 2100 can be implemented using a general bus architecture.
[0136] like Figure 16 As shown, the Ethernet device 2100 includes a main control board 2110 and an interface board 2130.
[0137] The main control board, also known as the main processing unit (MPU) or route processor card, is used to control and manage the various components in the Ethernet device 2100, including routing calculation, device management, device maintenance, and protocol processing functions. The main control board 2110 includes a central processing unit 2111 and a memory 2112.
[0138] Interface board 2130 is also called a line processing unit (LPU), linecard, or service board. Interface board 2130 provides various service interfaces and implements packet forwarding. Service interfaces include, but are not limited to, Ethernet interfaces, POS (Packet over SONET / SDH) interfaces, etc., with Ethernet interfaces including, for example, Flexible Ethernet Clients (FlexE Clients). Interface board 2130 includes: a central processing unit 2131, a network processor 2132, a forwarding table entry memory 2134, and a physical interface card (PIC) 2133.
[0139] The central processing unit 2131 on the interface board 2130 is used to control and manage the interface board 2130 and communicate with the central processing unit 2111 on the main control board 2110.
[0140] Network processor 2132 is used to implement packet forwarding processing. Network processor 2132 can be in the form of a forwarding chip. The forwarding chip can be a network processor (NP). In some embodiments, the forwarding chip can be implemented using an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA). Specifically, network processor 2132 forwards received packets based on the forwarding table stored in forwarding table master memory 2134. If the destination address of the packet is the address of Ethernet device 2100, the packet is sent to the CPU (such as central processing unit 2131) for processing; if the destination address of the packet is not the address of Ethernet device 2100, the next hop and outgoing interface corresponding to the destination address are looked up in the forwarding table according to the destination address, and the packet is forwarded to the outgoing interface corresponding to the destination address. Uplink packet processing may include: packet ingress interface processing, forwarding table lookup; downlink packet processing may include: forwarding table lookup, etc. In some embodiments, the central processing unit can also perform the functions of the forwarding chip, such as implementing software forwarding based on a general-purpose CPU, thus eliminating the need for a forwarding chip on the interface board.
[0141] The physical interface card 2133 is used to implement physical layer interfacing functions. Raw traffic enters the interface board 2130 through this card, and processed packets are sent out from the physical interface card 2133. The physical interface card 2133, also called a daughter card, can be installed on the interface board 2130. It is responsible for converting photoelectric signals into packets, performing validity checks on the packets, and forwarding them to the network processor 2132 for processing. In some embodiments, the central processing unit 2131 can also perform the functions of the network processor 2132, such as implementing software forwarding based on a general-purpose CPU, thus eliminating the need for the network processor 2132 in the physical interface card 2133.
[0142] Optionally, the Ethernet device 2100 includes multiple interface boards. For example, the Ethernet device 2100 also includes an interface board 2140, which includes a central processing unit 2141, a network processor 2142, a forwarding table entry memory 2144, and a physical interface card 2143. The functions and implementation methods of the components in the interface board 2140 are the same as or similar to those in the interface board 2130, and will not be described in detail here.
[0143] Optionally, the Ethernet device 2100 also includes a switching fabric board 2120. The switching fabric board 2120 can also be referred to as a switch fabric unit (SFU). When the network device 2100 has multiple interface boards, the switching fabric board 2120 is used to complete data exchange between the interface boards. For example, interface boards 2130 and 2140 can communicate through the switching fabric board 2120.
[0144] The main control board 2110 and the interface boards are coupled. For example, the main control board 2110, interface boards 2130 and 2140, and the switching network board 2120 communicate with each other via a system bus connected to the system backplane. In one possible implementation, an inter-process communication (IPC) channel is established between the main control board 2110 and interface boards 2130 and 2140, and communication between the main control board 2110 and interface boards 2130 and 2140 is achieved through the IPC channel.
[0145] Logically, the Ethernet device 2100 includes a control plane and a forwarding plane. The control plane includes a main control board 2110 and a central processing unit 2111, while the forwarding plane includes various components that perform forwarding, such as a forwarding table entry memory 2134, a physical interface card 2133, and a network processor 2132. The control plane performs functions such as router operation, generating forwarding tables, processing signaling and protocol messages, and configuring and maintaining the status of network devices. The control plane distributes the generated forwarding tables to the forwarding plane. In the forwarding plane, the network processor 2132 forwards messages received by the physical interface card 2133 based on the forwarding tables distributed by the control plane. The forwarding tables distributed by the control plane can be stored in the forwarding table entry memory 2134. In some embodiments, the control plane and the forwarding plane can be completely separated and not on the same network device.
[0146] It's worth noting that a network device may have one or more main control boards, including a primary and a backup main control board. It may also have one or more interface boards; the more powerful the network device's data processing capabilities, the more interface boards it provides. Each interface board may also have one or more physical interface cards. A switching board may or may not exist; multiple boards can share load and provide redundancy. In a centralized forwarding architecture, the network device may not need a switching board, as the interface boards handle the entire system's business data processing. In a distributed forwarding architecture, the network device can have at least one switching board, which enables data exchange between multiple interface boards, providing high-capacity data exchange and processing capabilities. Therefore, the data access and processing capabilities of a distributed architecture network device are greater than those of a centralized architecture network device. Alternatively, the network device can also be a single board, without a switching board. The functions of the interface board and the main control board are integrated on this one board. In this case, the central processing unit (CPU) on the interface board and the CPU on the main control board can be combined into a single CPU to perform the combined functions. This type of network device has lower data exchange and processing capabilities (e.g., low-end switches or routers). The specific architecture adopted depends on the specific network deployment scenario, and no restrictions are imposed here.
[0147] In a specific embodiment, the Ethernet device 2100 corresponds to the above. Figure 15 The Ethernet device shown.
[0148] For example, Ethernet device 2100 can be Figure 15 The Ethernet devices shown are Ethernet forwarding devices such as switches and routers. At this time, execute... Figure 7 The Ethernet chip in the method shown can be located in the main control board 2110, or it can be located in the interface board 2130 or the interface board 2140. Specifically, the Ethernet chip can be located in the physical interface card 2133 or 2143.
[0149] like Figure 17 As shown in the illustration, this application also provides a communication system 3000, which includes a sending end device 3001 and a receiving end device 3002. Optionally, the receiving end device 3002 performs... Figure 7 The deinterleaving method for the data stream shown by Xinshi.
[0150] This application also provides a computer-readable storage medium storing at least one instruction, which is loaded and executed by a processor to enable the computer to implement any of the above data transmission or data reception methods.
[0151] This application also provides a computer program (product) that, when executed by a computer, causes the processor or computer to perform the corresponding steps and / or processes in the above method embodiments.
[0152] This application also provides a chip, including a processor, for calling and executing instructions stored in a memory, causing a communication device with the chip installed to perform any of the above data transmission or data reception methods.
[0153] This application embodiment also provides another chip, including: an input interface, an output interface, a processor, and a memory. The input interface, output interface, processor, and memory are connected through an internal connection path. The processor is used to execute code in the memory. When the code is executed, the processor is used to execute any of the above data sending methods or data receiving methods.
[0154] In the above embodiments, implementation can be achieved, in whole or in part, through software, hardware, firmware, or any combination thereof. When implemented in software, it can be implemented, in whole or in part, as a computer program product. A computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the processes or functions according to this application are generated, in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, computer instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via wired (e.g., coaxial cable, fiber optic, digital subscriber line) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state disk), etc.
[0155] Those skilled in the art will recognize that the method steps and modules described in conjunction with the embodiments disclosed herein can be implemented in software, hardware, firmware, or any combination thereof. To clearly illustrate the interchangeability of hardware and software, the steps and components of each embodiment have been generally described in terms of functionality in the foregoing description. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.
[0156] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by a program instructing related hardware. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.
[0157] When implemented using software, it can be implemented wholly or partially as a computer program product. This computer program product includes one or more computer program instructions. As an example, the methods of this application embodiment can be described in the context of machine-executable instructions, such as program modules that execute on a device on a real or virtual processor of the target. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc., which perform specific tasks or implement specific abstract data structures. In various embodiments, the functionality of program modules can be combined or divided among the described program modules. The machine-executable instructions for the program modules can execute within a local or distributed device. In a distributed device, the program modules can reside on both local and remote storage media.
[0158] Computer program code used to implement the methods of the embodiments of this application may be written in one or more programming languages. This computer program code may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus, such that when executed by the computer or other programmable data processing apparatus, the program code causes the functions / operations specified in the flowcharts and / or block diagrams to be implemented. The program code may be executed entirely on a computer, partially on a computer, as a standalone software package, partially on a computer and partially on a remote computer, or entirely on a remote computer or server.
[0159] In the context of the embodiments of this application, computer program code or related data may be carried by any suitable carrier to enable a device, apparatus, or processor to perform the various processes and operations described above. Examples of carriers include signals, computer-readable media, etc.
[0160] Examples of signals may include electrical, optical, radio, sound, or other forms of propagation signals, such as carrier waves, infrared signals, etc.
[0161] A machine-readable medium can be any tangible medium that contains or stores programs for or relating to an instruction execution system, apparatus, or device. A machine-readable medium can be a machine-readable signal medium or a machine-readable storage medium. Machine-readable media can include, but are not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, or devices, or any suitable combination thereof. More detailed examples of machine-readable storage media include electrical connections with one or more wires, portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical storage devices, magnetic storage devices, or any suitable combination thereof.
[0162] Those skilled in the art will clearly understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and modules described above can be found in the corresponding processes in the foregoing method embodiments, and will not be repeated here.
[0163] In the embodiments provided in this application, it should be understood that the disclosed systems, devices, and methods can be implemented in other ways. For example, the device embodiments described above are merely illustrative; for instance, the division of modules is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple modules or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the couplings or direct couplings or communication connections shown or discussed may be indirect couplings or communication connections through some interfaces, devices, or modules, or they may be electrical, mechanical, or other forms of connection.
[0164] The modules described as separate components may or may not be physically separate. The components shown as modules may or may not be physical modules; that is, they may be located in one place or distributed across multiple network modules. Some or all of the modules can be selected to achieve the purpose of the embodiments of this application, depending on actual needs.
[0165] Furthermore, the functional modules in the various embodiments of this application can be integrated into one processing module, or each module can exist physically separately. Alternatively, two or more modules can be integrated into one module. The integrated modules described above can be implemented in hardware or as software functional modules.
[0166] If the integrated module is implemented as a software functional module and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0167] In this application, the terms "first," "second," etc., are used to distinguish identical or similar items that have substantially the same function and purpose. It should be understood that there is no logical or temporal dependency between "first," "second," and "nth," nor does it limit the quantity or order of execution. It should also be understood that although the following description uses the terms "first," "second," etc., to describe various elements, these elements should not be limited by the terms. These terms are merely used to distinguish one element from another. For example, without departing from the scope of various examples, a first image can be referred to as a second image, and similarly, a second image can be referred to as a first image. Both the first image and the second image can be images, and in some cases, they can be separate and distinct images.
[0168] It should also be understood that, in the various embodiments of this application, the sequence number of each process does not imply the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.
[0169] In this application, the term "at least one" means one or more, and the term "multiple" means two or more. For example, multiple second messages refer to two or more second messages. The terms "system" and "network" are often used interchangeably in this document.
[0170] It should be understood that the terminology used in the description of the various examples herein is for the purpose of describing particular examples only and is not intended to be limiting. As used in the description of the various examples and the appended claims, the singular forms “a” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise.
[0171] It should also be understood that the term "and / or" as used herein refers to and covers any and all possible combinations of one or more of the associated listed items. The term "and / or" describes an association between related objects, indicating that three relationships can exist; for example, A and / or B can represent: A alone, A and B simultaneously, or B alone. Additionally, the character " / " in this application generally indicates that the preceding and following related objects are in an "or" relationship.
[0172] It should also be understood that the term “comprising” (also referred to as “includes”, “including”, “comprises” and / or “comprising”) as used in this specification specifies the presence of the stated features, integers, steps, operations, elements, and / or components, but does not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0173] It should also be understood that the terms “if” and “if” can be interpreted as meaning “when” or “upon”, or “in response to determination” or “in response to detection”. Similarly, depending on the context, the phrases “if determination” or “if detection [the stated condition or event]” can be interpreted as meaning “when determination”, or “in response to determination”, or “when detection [the stated condition or event]” or “in response to detection [the stated condition or event]”.
[0174] It should be understood that determining B based on A does not mean determining B solely based on A; B can also be determined based on A and / or other information.
[0175] It should also be understood that the phrases "an embodiment," "an embodiment," and "a possible implementation" used throughout the specification mean that a specific feature, structure, or characteristic related to an embodiment or implementation is included in at least one embodiment of this application. Therefore, the phrases "in an embodiment," "an embodiment," or "a possible implementation" appearing throughout the specification do not necessarily refer to the same embodiment. Furthermore, these specific features, structures, or characteristics can be combined in any suitable manner in one or more embodiments.
[0176] The above description is only an optional embodiment of this application and is not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the principles of this application should be included within the protection scope of this application.
Claims
1. A method of determining deinterleaving positions, characterized by, The method comprises: obtaining a first interleaved data stream, the first interleaved data stream being a data stream subjected to forward error correction (FEC) encoding; based on an interleaving granularity of the first interleaved data stream, obtaining N sub-data streams corresponding to the first interleaved data stream, the N being an interleaving depth of the first interleaved data stream, the N being a positive integer greater than 1; based on FEC code word boundaries of at least two sub-data streams in the N sub-data streams, determining a de-interleaving position.
2. The method of claim 1, wherein, The N sub-data streams are arranged in sequence, and the de-interleaving position is determined based on the FEC code word boundaries of the at least two sub-data streams in the N sub-data streams, comprising: based on the FEC code word boundary of the first sub-data stream being after the FEC code word boundary of the second sub-data stream, determining the de-interleaving position as the FEC code word boundary of the second sub-data stream; wherein the first sub-data stream and the second sub-data stream are two adjacent sub-data streams in the N sub-data streams.
3. The method of claim 2, wherein, The arrangement order of the first sub-data stream is before the second sub-data stream.
4. The method according to claim 2 or 3, characterized in that, The FEC code word boundary of the first sub-data stream is 1 symbol different from the FEC code word boundary of the second sub-data stream.
5. The method of claim 1, wherein, The N sub-data streams are arranged in sequence, and the de-interleaving position is determined based on the FEC code word boundaries of at least two sub-data streams in the N sub-data streams, comprising: based on the FEC code word boundaries of each sub-data stream in the N sub-data streams being aligned, determining the de-interleaving position as the FEC code word boundary of the first sub-data stream; wherein the first sub-data stream is arranged in sequence first in the N sub-data streams.
6. The method according to any one of claims 1 to 3, characterized in that, The method further comprises: based on the de-interleaving position, obtaining a first de-interleaved data stream corresponding to the first interleaved data stream.
7. The method of claim 6, wherein, The N sub-data streams are arranged in sequence, and the first de-interleaved data stream corresponding to the first interleaved data stream is obtained based on the de-interleaving position, comprising: based on the de-interleaving position and the arrangement order of the N sub-data streams, determining a combination order of the N sub-data streams; based on the combination order, combining data in the first interleaved data stream to obtain the first de-interleaved data stream.
8. The method according to any one of claims 1 to 3, characterized in that, The N sub-data streams corresponding to the first interleaved data stream are obtained based on the interleaving granularity of the first interleaved data stream, comprising: selecting a data stream distribution start position from the first interleaved data stream, and distributing the first interleaved data stream into N sub-data streams based on the interleaving granularity of the first interleaved data stream; wherein the data stream distribution start position is a position randomly selected in the first interleaved data stream.
9. The method according to any one of claims 1 to 3, characterized in that, The N sub-data streams corresponding to the first interleaved data stream are obtained based on the interleaving granularity of the first interleaved data stream, comprising: polling data of the first interleaved data stream into the N sub-data streams based on the interleaving granularity of the first interleaved data stream.
10. The method according to any one of claims 1 to 3, characterized in that, The method further comprises: determining the FEC code word boundary of each sub-data stream in the N sub-data streams.
11. The method of claim 10, wherein, The FEC code word boundary of each sub-data stream in the N sub-data streams is determined, comprising: The FEC code word boundary of each of the N sub-data streams is determined according to the FEC code word feature.
12. The method of claim 11, wherein, The FEC code word boundary of each of the N sub-data streams is determined according to the FEC code word feature. In each of the N sub-data streams, the feature value is verified based on the assumed FEC code word boundary, and the FEC code word boundary of each of the N sub-data streams is determined according to the verification result.
13. The method according to claim 11 or 12, characterized in that, The FEC code word boundary of each of the N sub-data streams is determined according to the FEC code word feature. The obtained FEC code word of the N sub-data streams is subjected to inverse cyclic shift; The FEC code word boundary of each of the N sub-data streams is determined according to the FEC code word feature.
14. The method of claim 10, wherein, The FEC code word boundary of each of the N sub-data streams is determined according to the FEC code word feature. The FEC code word boundary of the third sub-data stream of the N sub-data streams is determined; The FEC code word boundary of each of the other sub-data streams of the N sub-data streams is determined based on the FEC code word boundary of the third sub-data stream.
15. The method of claim 14, wherein, The FEC code word boundary of the third sub-data stream is located in the first column of the third sub-data stream, The FEC code word boundary of each of the other sub-data streams of the N sub-data streams is determined based on the FEC code word boundary of the third sub-data stream. The FEC code word boundary of each of the other sub-data streams is located in the first column or the adjacent column of the first column of the other sub-data streams.
16. The method of any one of claims 1-3, wherein, The first interleaved data stream does not include a periodic alignment data segment, and the periodic alignment data segment includes an alignment word, a frame alignment word, or pilot data.
17. The method of any one of claims 1-3, wherein, The FEC encoding mode of the first interleaved data stream is non-cascaded code FEC encoding or cascaded code FEC encoding.
18. The method of any one of claims 1-3, wherein, The N is 4 or 8.
19. The method of any one of claims 1-3, wherein, The interleaving type of the first interleaved data stream is symbol interleaving or convolution interleaving.
20. The method of any one of claims 1-3, wherein, The method is performed by a physical layer (PHY) chip, a forwarding device, or a pluggable module.
21. The method of any one of claims 1-3, wherein, The channel rate of the first interleaved data stream is greater than or equal to 200 gigabits per second (Gbps).
22. A network device, comprising: The network device includes a de-interleaving circuit configured to perform the method of any one of claims 1-21.
23. A network device, comprising: The network device includes a processing module configured to perform the method of any one of claims 1-21.
24. A chip, characterized by The chip includes a de-interleaving circuit configured to perform the method of any one of claims 1-21.
25. A communication system, characterized by The communication system includes a sending end device and a receiving end device, The receiving end device is configured to perform the method of any one of claims 1-21.
Citation Information
Patent Citations
Code word synchronization method, receiver, network device and network system
CN113517949A
Code word synchronization method, receiver, network device and network system
CN115250162A
Method for realizing code word synchronization, communication equipment, chip and chip system
CN116566543A
Extended deinterleaver for an iterative decoder
CN102171934A
Interleaving and de-interleaving methods and apparatuses
WO2022141326A1