Decoding method, electronic equipment, storage medium and program product
By performing initial and secondary decoding on codewords within a sliding window in an optical communication system and updating bit reliability, the problem of zipper codes being unable to correct decoding errors is solved, thus improving decoding accuracy and system reliability. This method is suitable for optical fiber communication and digital storage.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-11
- Publication Date
- 2026-03-13
AI Technical Summary
In existing optical communication systems, the decoding methods for zipper codes cannot effectively correct decoding errors and decoding failures, resulting in limited performance gains, an inability to cope with multiple error scenarios, and an impact on the reliability of the communication system.
Within the preset maximum number of decoding attempts, the codewords in the sliding window are initially decoded to determine if there are any errors in the decoding result. Bit flipping is then performed, followed by secondary decoding to update the bit reliability in the virtual buffer, thereby improving decoding accuracy and reliability.
It improves the performance gain of zipper codes, better handles bit error situations, enhances the reliability and stability of optical communication systems, reduces bit error rate, and is suitable for fiber optic communication and digital storage fields.
Smart Images

Figure CN121664205A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of communications, and in particular to a decoding method, electronic device, storage medium, and program product. Background Technology
[0002] With the rapid development of mobile internet and cloud computing technologies, people have increasingly higher demands for data transmission rates and bandwidth. Optical communication technology, as a high-speed, high-capacity, and low-power data transmission method, has become an important means of meeting these demands. However, in practical applications, due to factors such as fiber loss and photoelectric conversion, signal errors may occur. Furthermore, the forward error correction process consumes a significant amount of power in optical communication systems. Therefore, using efficient forward error correction (FEC) technology in communication systems to ensure the reliability and stability of data during transmission has become a necessary and important technology.
[0003] In recent years, zipper codes, as a more advanced coding structure, have been used to describe spatially coupled product codes in optical communication systems. Many well-known codes, such as staircase codes and braided block codes, are included in this framework. Existing zipper codes employ an iterative sliding window decoding method. The sliding window decoding method is an efficient method for FEC decoding. Its basic principle is to define a fixed-size window, progressively scan the codeword sequence, and make local decoding decisions, gradually moving the window as decoding progresses. This method effectively utilizes local information, reducing the computational complexity and time consumption of decoding. Therefore, it is widely used in real-time video transmission and high-speed network communication to improve the reliability and efficiency of data transmission.
[0004] However, existing decoding methods perform only one hard-decision decoding for each line of codewords (hard decision means that the receiver makes a definite, discrete decision directly based on the received signal or data), and cannot make further decoding decisions for decoding errors and decoding failures. This means that the sliding window cannot further correct erroneous bits during the iteration process, and thus cannot realize the potential gain. Summary of the Invention
[0005] This disclosure provides a decoding method, an electronic device, a storage medium, and a program product.
[0006] In a first aspect, embodiments of this disclosure provide a decoding method, the method comprising: performing at least once the following operation within a preset maximum number of decoding attempts:
[0007] Perform initial decoding on the codewords to be decoded within the sliding window;
[0008] For the initial decoding, determine whether the decoding result shows a decoding failure or a decoding error;
[0009] If the initial decoding result fails or is incorrect, the bits in the codeword to be decoded are flipped according to the bit reliability.
[0010] Perform secondary decoding on the bit-flipped codeword;
[0011] For the secondary decoding, determine whether the decoding result shows a decoding failure or a decoding error;
[0012] In the event of decoding failure or error in the secondary decoding result, the affected bits in the virtual buffer and the bit reliability of the flipped bits in the virtual buffer are updated.
[0013] Secondly, embodiments of this disclosure also provide an electronic device, including:
[0014] One or more processors;
[0015] A memory having stored one or more programs, which, when executed by one or more processors, cause the one or more processors to implement the decoding method;
[0016] One or more input / output (I / O) interfaces are connected between the processor and the memory and configured to enable information exchange between the processor and the memory.
[0017] Thirdly, embodiments of this disclosure also provide a computer-readable storage medium storing a computer program that, when executed by a processor, implements the decoding method described above.
[0018] Fourthly, embodiments of this disclosure also provide a computer program product, which includes a computer program that, when executed by a processor, implements the decoding method.
[0019] The scheme of this embodiment performs at least one of the following operations within a preset maximum number of decoding attempts: performing initial decoding on the codeword to be decoded within the sliding window; determining whether the decoding result of the initial decoding has resulted in decoding failure or decoding error; if the decoding result of the initial decoding has resulted in decoding failure or decoding error, performing a bit flipping operation on the bits in the codeword to be decoded according to the bit reliability; by judging the decoding result of the initial decoding and providing corresponding processing, timely correction of the decoding result is achieved during the decoding process. The codeword after bit flipping is decoded a second time. For the second decoding, it is determined whether the decoding result has failed or resulted in a decoding error. If the decoding result of the second decoding fails or results in a decoding error, the affected bits in the virtual buffer and the bit reliability of the flipped bits in the virtual buffer are updated. This achieves the goal of ensuring that the reliability of bits tends to be more stable in the iteration process by utilizing the influence between decoding results of codewords. It can provide a better reference for the decoding iteration process, improve the decoding accuracy, improve the performance gain of the chained code, enable the chained code to cope with more bit error situations, and improve the reliability of the chained code in communication system applications. Attached Figure Description
[0020] In the accompanying drawings of the embodiments disclosed herein:
[0021] Figure 1 A flowchart of the decoding method provided in this embodiment of the disclosure;
[0022] Figure 2 A schematic diagram of the decoding method provided in the embodiments of this disclosure;
[0023] Figure 3 This is a schematic diagram of a sliding window provided in an embodiment of the present disclosure;
[0024] Figure 4 This is a block diagram of an electronic device provided in an embodiment of the present disclosure. Detailed Implementation
[0025] To enable those skilled in the art to better understand the technical solutions of this disclosure, the communication-sensing data processing method and computer-readable storage medium provided in the embodiments of this disclosure will be described in detail below with reference to the accompanying drawings.
[0026] The present disclosure will be described more fully below with reference to the accompanying drawings; however, the embodiments shown may be embodied in different forms, and the present disclosure should not be construed as limited to the embodiments set forth below. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will enable those skilled in the art to fully understand the scope of the disclosure.
[0027] The accompanying drawings of the embodiments disclosed herein are provided to further illustrate the embodiments of this disclosure and form part of the specification. They are used together with the detailed embodiments to explain this disclosure and do not constitute a limitation thereof. The above and other features and advantages will become more apparent to those skilled in the art from the description of the detailed embodiments with reference to the accompanying drawings.
[0028] This disclosure may be described with reference to plan and / or cross-sectional views using the ideal schematic diagrams of this disclosure. Therefore, the example illustrations may be modified according to manufacturing techniques and / or tolerances.
[0029] Where there is no conflict, the various embodiments of this disclosure and the features thereof in the embodiments may be combined with each other.
[0030] The terminology used in this disclosure is for the purpose of describing particular embodiments only and is not intended to limit the disclosure. The term "and / or" as used in this disclosure includes any and all combinations of one or more of the associated enumerated entries. The singular forms "a" and "the" as used in this disclosure are also intended to include the plural forms, unless the context clearly indicates otherwise. The terms "comprising," "made of," etc., as used in this disclosure specify the presence of the stated feature, integral, step, operation, element, and / or component, but do not exclude the presence or addition of one or more other features, integrals, steps, operations, elements, components, and / or groups thereof.
[0031] Unless otherwise specified, all terms used in this disclosure (including technical and scientific terms) have the same meaning as commonly understood by one of ordinary skill in the art. It will also be understood that terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant art and this disclosure, and will not be interpreted as having an idealized or overly formal meaning, unless expressly so defined in this disclosure.
[0032] Traditional chained code decoding schemes typically employ iterative bounded distance decoding and hard decision-making. However, this decoding method is very simple and can only handle cases with a maximum of t errors (t being the error correction capability of the current codeword, i.e., it can correct a maximum of t errors within the codeword), with the number of errors in the decoded codeword indicated by a flag. When the received codeword contains more than t errors, decoding failure occurs, and the decoding flag displays invalid data (data not between 0 and t); or, a decoding error occurs, where the received codeword is incorrectly decoded into a different codeword, in which case the decoding flag displays valid data, but the number of errors does not match the actual number. It is well known that decoding errors degrade performance during iterative decoding because they not only fail to correct errors but also introduce additional errors. Therefore, the performance gain achieved by traditional chained code decoding is limited, necessitating the development of new decoding schemes to leverage the potential performance of chained codes.
[0033] This disclosure provides a decoding method based on dynamic bit reliability updates. Within a preset maximum number of decoding iterations, the following operations are performed at least once: initial decoding of the codeword to be decoded within a sliding window; determining whether the initial decoding result results in decoding failure or error; if the initial decoding result results in decoding failure or error, performing a bit-flipping operation on the bits in the codeword to be decoded based on bit reliability; by judging the initial decoding result and providing corresponding processing, timely correction of the decoding result is achieved during the decoding process. The codeword after bit flipping is decoded a second time. For the second decoding, it is determined whether the decoding result has failed or resulted in a decoding error. If the decoding result of the second decoding fails or results in a decoding error, the affected bits in the virtual buffer and the bit reliability of the flipped bits in the virtual buffer are updated. This achieves the goal of ensuring that the reliability of bits tends to be more stable in the iteration process by utilizing the influence between decoding results of codewords. It can provide a better reference for the decoding iteration process, improve the decoding accuracy, improve the performance gain of the chained code, enable the chained code to cope with more bit error situations, and improve the reliability of the chained code in communication system applications.
[0034] The solutions disclosed herein can be applied to, but are not limited to, zip code decoding scenarios, and can include, but are not limited to, the field of communication, such as optical fiber communication. Optical signal transmission may be affected by noise and attenuation, leading to frequent decoding errors and failures. The solutions disclosed herein can effectively address these issues, thereby enhancing the signal's anti-interference capability. The solutions disclosed herein can also be applied to digital storage applications, such as, but not limited to, hard disk drives, solid-state drives, and optical disks. By introducing the solutions disclosed herein, the technical effects of reducing bit error rate, improving data storage reliability, and preventing data corruption and loss can be achieved.
[0035] The solutions of this disclosure can also be combined with other known technologies. For example, they can be combined with advanced coding methods for zipper codes, such as GII-zipper (a multidimensional coupled zipper code based on generalized integrated interleaving codes). GII-zipper can achieve a lower bit error rate while maintaining comparable decoding capability and latency. When combined with the solutions of this disclosure, the bit error rate will be even lower, and the combined performance gain will be even higher, making it more suitable for communication systems with high reliability requirements.
[0036] The embodiments of this disclosure will be described in detail below.
[0037] This disclosure provides a decoding method, such as... Figure 1 , Figure 2 As shown, within the preset maximum number of decoding attempts, the following operation steps S11-S16 are performed at least once:
[0038] S11. Perform initial decoding on the codeword to be decoded within the sliding window.
[0039] In this embodiment of the present disclosure, the decoding device corresponding to the decoding method proposed in this embodiment can be built in a communication system. When the data stream sent by the source is encoded by the encoder, the encoded data (such as the codeword of the encoded zipper code) is placed into the transmitter and transmitted through the channel. After the receiver receives the data stream, it places the data stream into the decoder.
[0040] In this embodiment of the present disclosure, the data to be decoded (e.g., codewords encoded with zipper code) received by the receiver can be placed into the real area of a preset decoding device through a preset input unit. When the data stream flows through the input unit, the input unit initializes the parameters of the sliding window, such as the sliding window length L, the sliding window sliding distance D, and the maximum number of iterations within each sliding window (i.e., the maximum number of decoding iterations that can be executed). Based on the soft information obtained from channel transmission, and according to preset bit size thresholds δ1 and δ2, the bits in the real area are divided into three levels of bit reliability: HUB (Highly Unreliable Bit), HRB (Highly Reliable Bit), and UB (Uncertain Bit). For example, δ1 is greater than δ2. When the bit value is greater than δ1, the corresponding bit is determined to be HRB; when the bit value is greater than or equal to δ2 and less than or equal to δ1, the corresponding bit is determined to be UB; and when the bit value is less than δ2, the corresponding bit is determined to be HUB.
[0041] In this embodiment, bit reliability can serve as a reference during bit flipping, where HRB cannot be flipped and HUB is flipped preferentially. Using soft information, bits within the real region can be divided according to the aforementioned bit size thresholds δ1 and δ2, and the bit reliability is copied to the corresponding virtual region using the structural relationship of the chain code through a preset mapping equation.
[0042] In this embodiment of the disclosure, the bit size thresholds δ1 and δ2 can be defined according to the actual application scenario. The larger the bit value in the real area, the more reliable the corresponding bit is, that is, the higher the bit reliability.
[0043] In this embodiment of the disclosure, the bit size thresholds δ1 and δ2 ensure that the codeword to be decoded must contain three types of bits: HUB, HRB, and UB. If only one or two of these bits are contained, it indicates that the values of δ1 and δ2 are not set properly and can be reset.
[0044] In this embodiment of the disclosure, after initializing relevant parameters such as sliding window parameters and bit reliability of the real area, codewords can be allocated to the sliding window according to the zipper code structure.
[0045] In this embodiment of the disclosure, the codewords in each row of the sliding window can be marked using the SABM (soft-aided bit-marking) algorithm during decoding.
[0046] In the embodiments disclosed herein, such as Figure 3 As shown, at time i, the current sliding window contains L rows in the buffer, i.e., {Yi, Yi+1, ..., Yi+L-1}, where a, b, c, d, and e are codewords to be decoded. The data to be decoded within the sliding window can be initially decoded using a BCH code decoder (a hard-decision decoder, related to the component codes that make up the chained code; commonly used component code types include Hamming codes, Reed-Sol omon codes, and Bose-Chaudhurst i-Hocquenghem codes). For example, the codeword rj in row Yi is decoded, and the decoded codeword cj is transmitted to the preset decoding state decision unit.
[0047] S12. For the initial decoding, determine whether the decoding result shows decoding failure or decoding error.
[0048] In this embodiment of the disclosure, the decoding state decision unit can determine whether the decoding result has failed or resulted in a decoding error. For example, the decoding state decision unit can determine whether the codeword cj has failed or resulted in a decoding error.
[0049] In this embodiment of the disclosure, determining whether a decoding error or decoding failure has occurred in the decoding result can include any of the following:
[0050] Determine if the decoding result indicates a decoding failure;
[0051] Determine whether the decoding result contains a decoding error; and,
[0052] Determine whether the decoding result shows a decoding failure. If the decoding result does not show a decoding failure, determine whether the decoding result shows a decoding error.
[0053] In this embodiment of the present disclosure, in the decoding state decision unit, it can first determine whether the codeword cj has failed to decode. If decoding failure occurs, the decoding state label 1 (representing decoding failure) and the original codeword rj (i.e., the codeword before decoding) are returned to the decoding decision unit. Next, it can determine whether cj has a decoding error. If decoding error occurs, the decoding state label 2 (representing decoding error) and the codeword rj are returned to the decoding decision unit. If neither decoding failure nor decoding error occurs, the decoding state label 0 (representing successful decoding) and the decoded codeword c (c = cj) are returned and transmitted to the output unit.
[0054] In this embodiment of the disclosure, determining whether the decoding result has failed may include:
[0055] Determine whether the number of erroneous bits in the decoding result is greater than the error correction capability t; the error correction capability t is used to indicate the number of erroneous bits that can be processed.
[0056] If the number of erroneous bits in the decoding result is greater than the error correction capability t, the decoding result is determined to be a decoding failure.
[0057] If the number of erroneous bits in the decoding result is less than or equal to the error correction capability t, the decoding result is determined not to have failed.
[0058] In this embodiment of the disclosure, the error correction capability t refers to the error correction capability of the current codeword, that is, it can correct up to t errors in the codeword.
[0059] In this embodiment of the disclosure, if the number of erroneous bits in the codeword after preliminary decoding is greater than the error correction capability t, it can be determined as decoding failure; otherwise, it can be determined as decoding success, that is, no decoding failure occurs, and at this time, decoding failure verification is required.
[0060] In this embodiment of the disclosure, determining whether a decoding error has occurred in the decoding result may include:
[0061] Determine if a bit flip error exists;
[0062] In the presence of bit flipping errors, the decoding result is determined to have a decoding error.
[0063] If there is no bit flipping error, the decoding result is determined to be without decoding error.
[0064] In this embodiment of the disclosure, bit reliability includes: highly unreliable, uncertain, and highly reliable; correspondingly, the bits in the codeword include: highly unreliable bit HUB, uncertain bit UB, and highly reliable bit HRB;
[0065] Bit flipping errors may include, but are not limited to: HRBs being flipped, and / or a flipped bit being identified as a correct bit in a codeword with a mapping relationship.
[0066] In the embodiments disclosed herein, such as Figure 3 As shown, in cases where the judgment result of a codeword in the real area is different from that of the corresponding codeword mapped to the virtual area (i.e. conflict), a decoding error can be determined. For example, a codeword in the real area is judged to be of high reliability and does not need to be flipped, but the corresponding codeword in the virtual area is flipped, or a codeword in the real area is judged to be of high unreliability and needs to be flipped, but the corresponding codeword in the virtual area is not flipped. These situations are all considered decoding errors.
[0067] In the embodiments of this disclosure, if none of the above situations occur, that is, if the judgment result of a certain codeword in the real area is the same as that of the corresponding codeword mapped to the virtual area (i.e. conflict), then it can be determined that no decoding error has occurred.
[0068] In this embodiment of the disclosure, the initial decoding result may fail or result in a decoding error, including any of the following:
[0069] Decoding failed;
[0070] Decoding error; and,
[0071] Decoding successful but decoding error.
[0072] In this embodiment, if only decoding errors are detected, the initial decoding result is determined solely based on whether a decoding error occurred. If only decoding failure is detected, the initial decoding result is determined solely based on whether a decoding failure occurred. If both decoding failure and decoding errors are detected, the initial decoding result, after determining a decoding failure, does not need to be further determined on whether a decoding error occurred; it is directly classified as either a decoding failure or a decoding error in the initial decoding result. If decoding is determined to be successful, then a further determination is made on whether a decoding error occurred. If decoding is successful but an error occurs, it is classified as either a decoding failure or a decoding error in the initial decoding result.
[0073] In this embodiment of the disclosure, the method may further include:
[0074] In the event of successful decoding but decoding error, if the location of the decoding error is detected as the HUB position, the decoding error is determined to be a misjudgment, and the flipped bit in the virtual buffer is directly updated to HRB.
[0075] In this embodiment of the disclosure, when the decoding error is caused by the flipping of highly unreliable bits, it can be considered that there is no error in the flipping. Therefore, the decoding error can be judged as a misjudgment, that is, there is no decoding error. At this time, the decoding should be successful and correct. In this case, no secondary decoding is performed. The flipped bits in the virtual area can be directly changed to HRB, and the decoding result is output. Then, the next sliding window is entered to perform the decoding of the next row of data.
[0076] In this embodiment of the disclosure, the method may further include:
[0077] If the initial decoding result does not contain any decoding errors or decoding failures, or if the secondary decoding result does not contain any decoding errors or decoding failures, the decoding result can be output, and the process can proceed to the next sliding window to decode the next row of data.
[0078] S13. If the decoding result of the initial decoding fails or is incorrect, perform a bit flipping operation on the bits in the codeword to be decoded according to the bit reliability.
[0079] In this embodiment of the disclosure, decoding failure indicates that the receiving end has failed to effectively reconstruct the data sent by the sending end, which may result in information loss or processing errors. Decoding error indicates that the received codeword has been incorrectly decoded into another codeword.
[0080] In this embodiment of the disclosure, the bits in the codeword to be decoded are subjected to a bit-flipping operation based on bit reliability, including:
[0081] Prioritize randomly selecting a HUB for flipping, and record the flip position and number of flips of the flipped bits.
[0082] In this embodiment, if the initial decoding result fails or an error occurs, corresponding decoding decision processing can be performed on the codeword. For example, bit flipping operations can be performed on the bits in the codeword based on their reliability. This decoding decision processing can be implemented by a decoding decision unit. The decoding decision unit may include a bit flipping processor, a BCH code decoder, and a decoding state decision unit. The bit flipping processor randomly selects highly unreliable bits for flipping based on reliability priority, and records the flip position and number of flips. After bit flipping, the codeword is decoded by the BCH code decoder. After decoding, it enters the decoding state decision unit to determine whether a decoding error or decoding failure has occurred, and outputs the determined decoding state and codeword to the update unit.
[0083] In this embodiment of the disclosure, for example, the codeword cj that is determined to have a decoding failure or decoding error can be processed by the decoding decision unit.
[0084] In this embodiment of the disclosure, prioritizing random selection of HUBs for flipping may include:
[0085] If decoding fails, randomly select any bit of the codeword and flip it.
[0086] To address decoding errors, the number of bits n to be flipped is calculated according to a preset formula, and any n bits of the codeword are randomly selected for flipping; n is a positive integer.
[0087] In this embodiment, to address decoding failure, the decoding decision unit can first identify whether the decoding status label is 1. If the decoding status label is 1, the bit-flipping processor is run, randomly selecting one bit HUB in rj to flip and obtain codeword rj1. The flip position and number of flips of the flipped bit are recorded. By randomly flipping bits, it can be ensured that the generated bit sequence rj1 is relatively close to the original transmitted bit sequence. To prevent the flipped bit sequence rj1 from being erroneously decoded, rj1 can be transmitted to the BCH code decoder for secondary decoding.
[0088] In this embodiment, for decoding errors, the decoding decision unit first identifies whether the decoding status label is 2. If the decoding status label is 2, the bit-flipping processor is run, indicating a decoding error. The bit-flipping processor needs to calculate the number of bits that should be flipped, calculated as: n = d0 - wH(ej) - t, where n is the number of bits that should be flipped, d0 is the minimum Hamming distance of rj, wH(*) is the Hamming weight, t is the error correction capability, and ej is the error mode detected in the initial decoding. The d0 - wH(ej) - t bits of rj can be randomly selected and flipped to obtain codeword rj 1, which is then transmitted to the BCH code decoder for secondary decoding.
[0089] In this embodiment, if both decoding errors and decoding failures occur simultaneously, the decoding state decision unit will prioritize determining that a decoding failure has occurred. In this case, the number of erroneous bits exceeds the error correction capability t. Therefore, the bit-flipping processor prioritizes bit flipping to obtain rj1, thus controlling the number of erroneous bits within the error correction capability t. After bit flipping, the bit is transmitted to the BCH code decoder for secondary decoding. If the decoding failure is still determined, it indicates that the bit flipping failed to control the number of erroneous bits within the error correction capability. The output codeword is c = rj, and bit flipping is performed again in the next iteration to control the number of erroneous bits. If the decoding error is determined, it means that the number of erroneous bits is now within the error correction capability. The position of the flipped bit is recorded, and the codeword c = rj1 is output. In the next iteration, the processing method for decoding errors described above can be applied.
[0090] In this embodiment of the disclosure, the method further includes: after each bit is flipped, the flip count corresponding to the bit to be flipped is incremented by 1, so as to accurately count the flip count of each bit.
[0091] S14. Perform secondary decoding on the codeword after bit flipping.
[0092] In this embodiment of the disclosure, the bit-flipped codeword can also be decoded a second time using a BCH code decoder. For example, the bit-flipped codeword rj 1 is decoded a second time to obtain the second-decoded codeword cj 1.
[0093] S15. For secondary decoding, determine whether the decoding result shows decoding failure or decoding error.
[0094] In this embodiment of the disclosure, after the bit-flipped codeword is decoded a second time, the second-decoded codeword cj1 and the decoding status label can be transmitted to the decoding decision unit to determine whether the second-decoded codeword cj1 has a decoding failure or decoding error.
[0095] In the embodiments disclosed herein, the scheme for determining decoding errors or decoding failures is as described above and will not be repeated here.
[0096] In this embodiment of the disclosure, the decoding result of the secondary decoding may fail or result in a decoding error, including any of the following:
[0097] Decoding failed;
[0098] Decoding error; and,
[0099] Decoding successful but decoding error.
[0100] In this embodiment, if only decoding errors are detected, the secondary decoding result is determined solely based on whether a decoding error occurred. If only decoding failure is detected, the secondary decoding result is determined solely based on whether a decoding failure occurred. If both decoding failure and decoding errors are detected, the secondary decoding result, after determining decoding failure, does not need to further determine whether a decoding error occurred; it is directly classified as either a decoding failure or a decoding error. If decoding is determined to be successful, a further determination is made regarding whether a decoding error occurred. If decoding is successful but an error occurs, it is classified as either a decoding failure or a decoding error.
[0101] In this embodiment of the disclosure, the method may further include:
[0102] If no decoding error and / or decoding failure occurs in the secondary decoding result, clear the number of flips.
[0103] In this embodiment, if only decoding errors are detected, the toggle count is cleared if no decoding error occurs. If only decoding failures are detected, the toggle count is cleared if no decoding failure occurs. If both decoding failures and decoding errors are detected, the toggle count is cleared if neither decoding error nor decoding failure occurs. In this embodiment, if the codeword obtained after secondary decoding by the BCH code decoder is successfully decoded (i.e., no decoding failure occurs) and correctly decoded (i.e., no decoding error occurs), the toggle count is cleared. For successful and correct decoding, the codeword output by the decoding decision unit is c = cj1.
[0104] S16. In the event of a decoding error or decoding failure in the secondary decoding result, update the affected bits in the virtual buffer and the bit reliability of the flipped bits in the virtual buffer.
[0105] In this embodiment of the disclosure, if the codeword obtained after the BCH code decoder performs secondary decoding still shows decoding failure or decoding error, corresponding processing solutions can be provided for the decoding failure or decoding error respectively.
[0106] In this embodiment of the disclosure, if the decoding is still determined to be a failure, it indicates that the bit flip failed to control the number of erroneous bits within the error correction capability range, and the codeword output by the decoding decision unit is c = rj; if the decoding is still determined to be a failure, the codeword output by the decoding decision unit is also c = rj.
[0107] In this embodiment of the disclosure, after determining whether the decoding result of the secondary decoding has resulted in decoding failure or decoding error, the codeword and bit reliability after the decision can be output to the update unit according to the determination result of the secondary decoding result (i.e. whether decoding failure or decoding error has occurred), so as to update the codeword of the virtual buffer and the bit reliability of the bits in the codeword in a timely manner through the update unit.
[0108] In this embodiment of the disclosure, updating the affected bits in the virtual buffer and the bit reliability of the flipped bits in the virtual buffer may include:
[0109] Flip the affected bits; and,
[0110] The reliability of the flipped bit is updated based on the ratio of the number of flips to the number of iterations in the virtual buffer.
[0111] In this embodiment of the disclosure, the updating unit mainly updates the bits in the virtual region affected by bit flips performed after the initial decoding due to decoding failure or decoding error, and the bit reliability corresponding to these affected bits. After a correction operation (e.g., performing a bit flip operation to flip the value of one or more bits in a row) is performed on consecutive L rows of codewords within the sliding window, the affected bits determined by the mapping are corrected (e.g., the affected bits are flipped), and the bit reliability of the virtual region is updated according to the ratio of the number of times the bits are repeatedly flipped to the number of iterations of decoding.
[0112] In this embodiment of the disclosure, the bit reliability of the flipped bit is updated based on the ratio of the number of flips of each flipped bit in the virtual buffer to the number of iterations of decoding, including:
[0113] If the ratio of the number of flips to the number of iterations of decoding is greater than a preset threshold, the bit reliability of the corresponding bit is updated to HUB;
[0114] If the ratio of the number of flips to the number of iterations for decoding is less than or equal to a preset threshold, the bit reliability of the corresponding bit remains unchanged.
[0115] In this embodiment of the disclosure, the output 'c' and decoding status label of the decoding decision unit under different conditions such as decoding failure and / or decoding error are transmitted to the update unit. The update unit first identifies the decoding status label. If the decoding status label is 0, the flip count of the bit is cleared according to the flip position of the flipped bit, and the affected bits in the virtual area are updated. If the decoding status label is not 0, the flip count of the bit is incremented by 1. For bits with too high a flip count (the flip count accounts for more than the preset threshold of the flip count), the reliability is reduced to HUB.
[0116] In this embodiment of the disclosure, the method may further include:
[0117] Determine whether the decoding process within the sliding window meets preset conditions;
[0118] If the preset conditions are met, based on the current codeword and bit reliability, return to the step of performing the initial decoding of the codeword to be decoded in the sliding window; if the preset conditions are not met, output the current codeword and enter the next sliding window to perform the decoding of the next row of data.
[0119] In any of the embodiments disclosed herein, within any sliding window, the number of decoding operations can be updated after each round of decoding operations and recorded in the update unit. The update unit can also detect whether the current decoding process meets the preset conditions, and if the preset conditions are met, it feeds back to the input unit to continue decoding the current codeword at the next moment, thereby realizing iterative decoding within the sliding window. If the preset conditions are not met (i.e., the sliding condition is met), the next sliding window is entered.
[0120] In this embodiment of the disclosure, the preset condition may include, but is not limited to: the number of decoding attempts within the sliding window has not reached the maximum number of decoding attempts and there are error bits within the sliding window.
[0121] In this embodiment, the update unit can provide feedback on whether the preset condition is met based on the recorded number of decoding attempts and the bit reliability of each bit in the received codeword. Specifically, if the number of decoding attempts within the sliding window has not reached the maximum number of decoding attempts or if there are erroneous bits within the sliding window, a new round of iterative decoding is performed on the codeword within the sliding window; if the number of decoding attempts within the sliding window has reached the maximum number of decoding attempts and / or there are no erroneous bits within the sliding window, the next sliding window is entered to perform the decoding of the next row of data.
[0122] In this embodiment, when the maximum number of decoding attempts within the sliding window is reached and / or no erroneous bits exist within the sliding window (i.e., all errors within the sliding window are corrected), the codewords within the sliding window can be output to the output unit, and the bit reliability of these codewords can be updated to HRB. The affected bits within the sliding window are also updated. Then, the sliding window is slid down, and all decoding steps within the previous sliding window are repeated to decode the data in the next sliding window. This process continues, moving the sliding window until all data to be decoded is decoded.
[0123] In this embodiment of the present disclosure, the output unit can transmit the data stream after the entire decoding device decodes the data to be decoded (such as zipper code) to the sink.
[0124] In this disclosed embodiment, at least the following advantages are available:
[0125] 1. By utilizing soft information (i.e., soft decision information, where the receiver not only considers the state of the received signal but also provides the probability or measure of each possible state) and the reliability of each bit based on the number of bit flips, and by leveraging the structural characteristics of chained codes, and based on the utilization of soft information, by utilizing the influence between decoding results between multiple lines of codewords, the reliability of bits in the iterative process is ensured to be more stable, and a better reference is provided for the decoding iteration process of existing technologies.
[0126] 2. The decoding method proposed in this embodiment is essentially a hard decision method. Unlike the soft decision method, which is soft-in and soft-out, this embodiment only uses soft information to initialize the bit reliability of the bits in the real area (i.e., real buffer) corresponding to the codeword of each sliding window, and stores and updates the bit during decoding within the sliding window. It does not store and update the bit throughout the entire zip code decoding iteration process. Therefore, it can greatly reduce the complexity compared with the soft decision method.
[0127] 3. The solution of this embodiment can make full use of the structural characteristics of the zipper code, and compared with other code types (such as ladder code), it can occupy less memory while having roughly the same performance.
[0128] 4. For the decoding of each line, a reliability tag bit method is proposed. This method can cope with decoding errors and decoding failures, and provides decoding processing decisions for these two phenomena.
[0129] 5. Compared with the prior art, the solution of this disclosure can dynamically update and adjust the decoding processing decision using bit reliability, which can cope with decoding errors and decoding failures. The prior art cannot cope with these phenomena in the iterative decoding process, which leads to a waste of computing resources. Introducing the solution of this disclosure can improve the performance gain of the zipper code, enabling the zipper code to cope with more bit error situations and improve the reliability of the zipper code in communication system applications.
[0130] This disclosure also provides an electronic device 100, such as... Figure 4 As shown, it includes:
[0131] One or more processors 101;
[0132] The memory 102 stores one or more programs, which, when executed by one or more processors 101, enable the one or more processors to implement the decoding method.
[0133] One or more input / output I / O interfaces 103 are connected between the processor and the memory and configured to enable information exchange between the processor and the memory.
[0134] This disclosure also provides a computer-readable storage medium storing a computer program that, when executed by a processor, implements the decoding method described above.
[0135] This disclosure also provides a computer program product, which includes a computer program that, when executed by a processor, implements the decoding method.
[0136] Those skilled in the art will understand that all or some of the functional modules / units disclosed above can be implemented as software, firmware, hardware, or suitable combinations thereof.
[0137] In hardware implementations, the division between functional modules / units mentioned in the above description does not necessarily correspond to the division of physical components; for example, a physical component may have multiple functions, or a function or step may be executed by several physical components working together.
[0138] Some or all of the physical components may be implemented as software executed by a processor, such as a central processing unit (CPU), digital signal processor, or microprocessor, or as hardware, or as an integrated circuit, such as an application-specific integrated circuit (ASIC). Such software may be distributed on a computer-readable medium, which may include computer storage media (or non-transitory media) and communication media (or transient media). As is known to those skilled in the art, the term computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technique for storing information (such as computer-readable instructions, data structures, program modules, or other data). Computer storage media include, but are not limited to, random access memory (RAM, more specifically SDRAM, DDR, etc.), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory (FLASH) or other disk storage; read-only optical disc (CD-ROM), digital versatile disc (DVD) or other optical disc storage; magnetic cartridges, magnetic tapes, disk storage or other magnetic storage; and any other media that can be used to store desired information and can be accessed by a computer. Furthermore, as is known to those skilled in the art, communication media typically contain computer-readable instructions, data structures, program modules, or other data in modulated data signals such as carrier waves or other transmission mechanisms, and may include any information delivery medium.
[0139] This disclosure has disclosed exemplary embodiments, and although specific terminology has been used, it is for general illustrative purposes only and should not be construed as limiting. In some instances, it will be apparent to those skilled in the art that features, characteristics, and / or elements described in conjunction with particular embodiments may be used alone, or in combination with features, characteristics, and / or elements described in conjunction with other embodiments, unless otherwise expressly indicated. Therefore, those skilled in the art will understand that various changes in form and detail may be made without departing from the scope of this disclosure as set forth by the appended claims.
Claims
1. A decoding method, the method comprising: Within the preset maximum number of decoding attempts, perform the following operation at least once: Perform initial decoding on the codewords to be decoded within the sliding window; For the initial decoding, determine whether the decoding result shows a decoding failure or a decoding error; If the initial decoding result fails or is incorrect, the bits in the codeword to be decoded are flipped according to the bit reliability. Perform secondary decoding on the bit-flipped codeword; For the secondary decoding, determine whether the decoding result shows a decoding failure or a decoding error; In the event of decoding failure or error in the secondary decoding result, the affected bits in the virtual buffer and the bit reliability of the flipped bits in the virtual buffer are updated.
2. The decoding method according to claim 1, wherein, The determination of whether the decoding result contains a decoding error or decoding failure includes any of the following: Determine whether the decoding result indicates a decoding failure; Determine whether the decoding result contains a decoding error; as well as, Determine whether the decoding result has failed. If the decoding result has not failed, determine whether the decoding result has a decoding error.
3. The decoding method according to claim 2, wherein, The determination of whether the decoding result has failed includes: Determine whether the number of erroneous bits in the decoding result is greater than the error correction capability t; the error correction capability t is used to indicate the number of erroneous bits that can be processed. If the number of erroneous bits in the decoding result is greater than the error correction capability t, the decoding result is determined to have failed. If the number of erroneous bits in the decoding result is less than or equal to the error correction capability t, the decoding result is determined not to have failed.
4. The decoding method according to claim 2, wherein, The determination of whether the decoding result contains a decoding error includes: Determine if a bit flip error exists; If the bit flipping error is present, it is determined that the decoding result has a decoding error; If the bit flipping error is not present, the decoding result is determined to be free of decoding errors.
5. The decoding method according to claim 4, wherein, The bit reliability includes: highly unreliable, uncertain, and highly reliable; the bits in the codeword include: highly unreliable bit HUB, uncertain bit UB, and highly reliable bit HRB. The bit-flipping errors include: HRBs being flipped, and / or, flipped bits being identified as correct bits in codewords with mapping relationships.
6. The decoding method according to claim 1, wherein, The following situations may occur: the initial decoding result fails or an error occurs; the secondary decoding result fails or an error occurs; and any of the following situations may occur: Decoding failed; Decoding error; as well as, Decoding successful but decoding error.
7. The decoding method according to claim 6, wherein, The method further includes: In the event of successful decoding but decoding error, if the location of the decoding error is detected as the HUB position, the decoding error is determined to be a misjudgment, and the flipped bit in the virtual buffer is directly updated to HRB.
8. The decoding method according to claim 1, wherein, The bit reliability includes: highly unreliable, uncertain, and highly reliable; the bits in the codeword include: highly unreliable bit HUB, uncertain bit UB, and highly reliable bit HRB. The bit-flipping operation on the bits in the codeword to be decoded according to bit reliability includes: Prioritize randomly selecting a HUB for flipping, and record the flip position and number of flips of the flipped bits.
9. The decoding method according to claim 8, wherein, The preferred random selection of HUBs for flipping includes: In response to the decoding failure, randomly select any bit HUB in the codeword and flip it; In response to the decoding error, the number of bits n to be flipped is calculated according to a preset formula, and any n bits of the codeword are randomly selected for flipping; n is a positive integer.
10. The decoding method according to claim 1, wherein, The reliability of the affected bits in the updated virtual buffer and the bits whose flipped bits are in the virtual buffer includes: The affected bits are toggled; and, The reliability of the flipped bit is updated based on the ratio of the number of flips to the number of iterations in the virtual buffer.
11. The decoding method according to claim 10, wherein, The step of updating the bit reliability of the flipped bit based on the ratio of the number of flips to the number of iterations in the virtual buffer includes: If the ratio of the number of flips to the number of iterative decodings is greater than a preset threshold, the bit reliability of the corresponding bit is updated to HUB; If the ratio of the number of flips to the number of iterative decodings is less than or equal to the preset threshold, the bit reliability of the corresponding bit remains unchanged.
12. The decoding method according to claim 10, wherein, The method further includes: After each bit flip, the number of flips corresponding to the flipped bit is incremented by 1, and / or, If no decoding error and / or decoding failure occurs in the secondary decoding result, the number of flips is cleared.
13. The decoding method according to claim 1, wherein, The method further includes: Determine whether the decoding process within the sliding window meets preset conditions; If the preset conditions are met, based on the current bit reliability, return to the step of performing the initial decoding of the codeword to be decoded in the sliding window; if the preset conditions are not met, output the current codeword and enter the next sliding window to perform the decoding of the next row of data.
14. The decoding method according to claim 13, wherein, The method further includes: updating the decoding count after each decoding; The preset conditions include: the number of decoding attempts within the sliding window has not reached the maximum number of decoding attempts, and there are error bits within the sliding window.
15. The decoding method according to claim 1, wherein, The method further includes: If the initial decoding result does not contain any decoding errors or decoding failures, or if the secondary decoding result does not contain any decoding errors or decoding failures, the decoding result is output, and the process proceeds to the next sliding window to decode the next row of data.
16. An electronic device comprising: One or more processors; A memory having stored one or more programs, which, when executed by one or more processors, cause the one or more processors to implement the decoding method according to any one of claims 1-15; One or more input / output (I / O) interfaces are connected between the processor and the memory and configured to enable information exchange between the processor and the memory.
17. A computer-readable storage medium storing a computer program that, when executed by a processor, implements the decoding method according to any one of claims 1-15.
18. A computer program product comprising a computer program that, when executed by a processor, implements the decoding method according to any one of claims 1-15.