Rateless Zigzag Bidirectional Greedy Decoding Method for Forward Error Correction Codes

By using the forward error correction code rate Zigzag bidirectional greedy decoding method in the rateless Zigzag decoding method, decoding from the head and tail simultaneously, the problem of too small subset range and insufficient decoding real-time performance is solved, the intermediate symbol reply rate is improved and the cache space occupation and decoding overhead is reduced.

CN116470988BActive Publication Date: 2025-02-28ZHE JIANG PEARMAIN ELECTRONICS
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202211604816.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-12-14
Publication Date
2025-02-28
Estimated Expiration
2042-12-14

AI Technical Summary

Technical Problem

In the rateless Zigzag decoding method, the range of the solveable subset is too small, and the decoding real-timeness needs to be improved, resulting in a large buffer space occupancy and a high decoding overhead.

Method used

The forward error correction code rate Zigzag bidirectional greedy decoding method is adopted, and the coupling of the decoding method is improved by initializing the decoder, packet-level preprocessing, data bit-level preprocessing and Zigzag bidirectional greedy decoding algorithm, and decoding is performed simultaneously from the head and the tail.

Benefits of technology

The intermediate symbol reply rate is improved, the cache space usage and overall decoding overhead are reduced, making the decoding method more suitable for streaming services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure FDA0005231584530000011
    Figure FDA0005231584530000011
  • Figure FDA0005231584530000012
    Figure FDA0005231584530000012
  • Figure FDA0005231584530000014
    Figure FDA0005231584530000014
Patent Text Reader

Abstract

The present invention belongs to the field of communication technology, specifically to erasure code technology in channel coding, and relates to a forward error correction code rate Zigzag bidirectional greedy decoding method. The existing methods all split the rateless Zigzag decoding method into the rateless decoding method and the Zigzag decoding method, resulting in a too small feasible solution set, which affects the rateless Zigzag decoding efficiency. The present method first expands the feasible solution range, improves the coupling of the rateless decoding algorithm and the Zigzag decoding algorithm, and then decodes from the head and tail of the encoded data packet at the same time to improve the real-time decoding, and finally further utilizes the greedy idea to maximize the number of decoded data bits after each judgment. Under the premise of ensuring that it is applicable to all rateless Zigzag methods, the present invention greatly improves the probability of intermediate symbol recovery in the rateless Zigzag decoding process and reduces the overall decoding overhead by adjusting the decoding structure and the special decoding process.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The invention belongs to the field of communication technology, in particular to erasure code technology in channel coding, and relates to a forward error correction code rate Zigzag bidirectional greedy decoding method. Background Art

[0002] With the comprehensive upgrade of 5G networks, the volume of data transmission has exploded. However, data packets may be discarded due to various reasons when transmitted in the network, such as packet loss caused by network congestion and network rerouting, packet loss due to incomplete transmission of data packets caused by channel interference, etc. Forward error correction code is a technology to deal with packet loss in network transmission. Considering the actual scenario of streaming media services, in scenarios with high packet loss and high latency, the appropriate addition of forward error correction coding can save a lot of waiting time for timeout retransmission, thereby improving the service quality of streaming media. However, 5G terminals are generally mobile devices (such as mobile phones, embedded devices, etc.), and the CPU computing power and power consumption of these devices are limited, so it is necessary to design a suitable forward error correction code encoding and decoding algorithm based on limited hardware conditions.

[0003] Some scholars have proposed a Zigzag decoding method, which is a data bit-level decoding method. It searches for decodable data bits from each coded data packet and decodes them by traversing, with a computational complexity of O(K3L). Some scholars have proposed another type of rateless Zigzag code, the block Zigzag fountain code, which, at the cost of slightly lengthening the coded data packet, enables the coded data packets involved in each complete Zigzag block to be directly decoded using a low-complexity Zigzag decoding algorithm. By constructing more subsets that can be Zigzag-decoded, the decoding process has a lower buffer occupancy rate, which is more suitable for multicast and broadcast scenarios under limited hardware conditions. If the intermediate symbol reply probability of the rateless Zigzag decoding method can be further improved, the buffer space occupancy of the decoding method can be further reduced and the overall decoding overhead can be reduced, so that it can be more effectively applied to streaming media services. Summary of the invention

[0004] The present invention provides a forward error correction code rate Zigzag bidirectional greedy decoding method, which can solve the problem that the range of solvable subsets in rateless Zigzag decoding is too small and the decoding real-time performance needs to be improved. The method is applicable to the rateless Zigzag encoding method.

[0005] According to the forward error correction code rate-free Zigzag bidirectional greedy decoding method of the present invention, it comprises the following steps:

[0006] 1) Initialization, waiting for receiving encoded data packets;

[0007] 2) Determine whether the encoded data packet is received;

[0008] 3) According to the received coded data packet c * (z), and obtain the corresponding decoding shift vector δ * ; Get the corresponding coded data packet degree d * ;

[0009] 4) Remove the known complete original data packet from the coded data packet to obtain the coded data packet c after data packet level processing p (z);

[0010] 5) Remove the data bits of the decoded original data packet from the encoded data packet to obtain the encoded data packet y after data bit level processing p (z), y p (z) is put into the cache and the shift vector is saved as T p ;

[0011] 6) Determine y p (z) Whether there is an original data packet sequence number q that meets the conditions * ;

[0012] 7) Header decoding: length of decoded data bits p' is the number of the encoded data packet, q' is the number of the original data packet, and the corresponding k' data bits are obtained. represents the shift relationship, Ω k' The operation represents the k' items with the lowest number of times, and updates the undecoded data bits n of the original data packet with sequence number q' q' (z) = η q' (z)-Ω k' (η q' (z)), proceed to the next step; tail decoding: the length of the decoded data bits Get the corresponding k' data bits Operate the k' items with the highest representation times and update the undecoded data bits of the original data packet with sequence number q' Execute the next step;

[0013] 8) Update the original data packet x with sequence number q' q' (z); remove the k' data bits of information in all coded data packets and update all cached coded data packets y p** (z); if η q' (z) is empty, indicating that the original data packet has been completely decoded, and step (9) is executed; otherwise, step (10) is executed;

[0014] 9) Update the set of raw data packets that have not been fully decoded Update the set of sequence numbers of the original packets that have been fully decoded if If it is empty, the decoding ends, indicating that the decoding has been completed and the original data packet is output;

[0015] 10) Find the original data packet sequence number that meets the conditions in all encoded data packets and the coded packet sequence number

[0016] Preferably, in step 1), the initialization step is: initializing the set of original data packets that have not been completely decoded Initialize the set of all encoded data packet sequence numbers Initialize K original data packets x(z), initialize the undecoded data bit η of the jth original data packet j (z), initialize the currently received coded data packet sequence number p = 1; initialize the set of all cached coded data packet sequence numbers Empty; initialize the set of sequence numbers of the original data packets that have been completely decoded Is empty.

[0017] Preferably, in step 2), if no coded data packet is received, wait for reception; if received, proceed to the next step.

[0018] Preferably, in step 4), if the degree of the encoded data packet after the data packet level processing is d p =0, return to step (2), otherwise proceed to the next step.

[0019] Preferably, in step 6), if the condition is met And p is used as parameter p', q * As parameter q', perform the next step of header decoding; if it meets the conditions And p is used as the parameter p', q * As parameter q', perform the next step of tail decoding; if p=p+1 does not exist, return to step (2); p is the sequence number of the currently received encoded data packet; where ω() expresses the number of the lowest order term, Expresses the degree of the highest-degree term.

[0020] Preferably, in step 10), if and will As parameter p', As parameter q', perform header decoding in step 7); if it meets and will As parameter p', As parameter q', perform tail decoding of step 7); if p=p+1 does not exist, return to step 2) and wait for receiving a new encoded data packet.

[0021] The method of the present invention includes decoder initialization, data packet level preprocessing, data bit level preprocessing, and Zigzag bidirectional greedy decoding algorithm. Under the premise of ensuring successful decoding of rateless Zigzag, the method of the present invention uses a special decoding process to improve the coupling of the rateless decoding method and the Zigzag decoding method. Compared with the existing rateless Zigzag decoding method, the intermediate symbol recovery rate is improved while reducing the space required for the cache, thereby reducing the overall decoding method overhead. BRIEF DESCRIPTION OF THE DRAWINGS

[0022] Figure 1 It is a flow chart of a forward error correction code rate Zigzag bidirectional greedy decoding method in an embodiment. DETAILED DESCRIPTION

[0023] In order to further understand the content of the present invention, the present invention is described in detail in conjunction with the accompanying drawings and embodiments. It should be understood that the embodiments are only for explaining the present invention and are not intended to limit it.

[0024] Example

[0025] like Figure 1 As shown, this embodiment provides a forward error correction code rate Zigzag bidirectional greedy decoding method, the encoding end performs Zigzag encoding on the received original data packet group, the original data packet group has K original data packets, and the encoded data packet obtained after encoding is obtained by shifting and XORing the original data packet randomly selected from the K original data packets according to the robust solitary wave degree distribution; wherein the j-th original data packet polynomial expression The polynomial expression of the ith coded packet The decoding end first initializes the decoder and waits to receive the encoded data packet. Each time an encoded data packet is received, cache decoding is performed. L is the length of the original data packet. z has no actual physical meaning. It just expresses the information of each data bit in a polynomial way. The data bit number is determined by the order of z. r is the increased data bit length.

[0026] The details are as follows:

[0027] 1) Initialization, waiting for receiving encoded data packets;

[0028] Initializes a set of raw packets that have not been fully decoded Initialize the set of all encoded data packet sequence numbers Initialize K original data packets x(z)=[0 L ,0 L ,...,0 L ] T , initialize η j (z) = 1 + z + z 2 +...,+zL-1 , Indicates the data bits of the original data packet with sequence number j that have not been decoded; initializes the sequence number of the currently received coded data packet p=1; initializes the set of sequence numbers of all cached coded data packets Empty; initialize the set of sequence numbers of the original data packets that have been completely decoded Is empty.

[0029] 2) Determine whether the encoded data packet is received; if not, wait for reception; if yes, proceed to the next step;

[0030] 3) According to the received coded data packet c * (z), and obtain the corresponding decoding shift vector Each element represents the corresponding original data packet shift relationship; the corresponding coded data packet degree d is obtained * ;

[0031] 4) Remove the known complete original data packet from the encoded data packet to obtain the encoded data packet after data packet level processing If the degree of the encoded packet after packet-level processing is d p =0, return to step (2), otherwise proceed to the next step;

[0032] 5) Remove the data bits of the decoded original data packet from the encoded data packet to obtain the encoded data packet after data bit level processing y p (z) is put into the cache and the shift vector is saved as T p ; T p =[t p,1 ,t p,2 ,...,t p,K ]=δ * ; δ * is the corresponding decoding shift vector;

[0033] 6) Determine y p (z) Whether there is an original data packet sequence number q that meets the conditions * : If the conditions are met And p is used as the parameter p', q * As parameter q', perform the next step of header decoding, where ω(f(x)) expresses the degree of the lowest degree term of the polynomial f(x); if the condition is met And p is used as the parameter p', q * As parameter q', the next step of tail decoding is performed, where The highest degree of the polynomial f(x) is expressed; if p=p+1 does not exist, return to step (2); p is the sequence number of the currently received coded data packet;

[0034] 7) Header decoding: the length of the data bits that can be decoded p' is the number of the encoded data packet, q' is the number of the original data packet, and the corresponding k' data bits are obtained. is the k' decomposable data bits in the encoded data packet, Ω k' The operation represents the k' items with the lowest number of times, and updates the undecoded data bits n of the original data packet with sequence number q' q' (z) = η q' (z)-Ω k' (η q' (z)), proceed to the next step; tail decoding: the length of the data bits that can be decoded Get the corresponding k' data bits are the k' decodable data bits in the encoded packet, Operate the k' items with the highest representation times and update the undecoded data bits of the original data packet with sequence number q' Execute the next step; wherein, Represents a shift relationship, indicating that in the coded data packet with sequence number p', the original data packet with sequence number q' needs to be shifted right by t p',q' data bits.

[0035] 8) Update the original data packet with sequence number q' Remove k' bits of information from all coded packets and update all cached coded packets p ** ∈{1,2,...,p}; if η q' (z) is empty, indicating that the original data packet has been completely decoded, and step (9) is executed; otherwise, step (10) is executed;

[0036] 9) Update the set of raw data packets that have not been fully decoded Update the set of sequence numbers of the original packets that have been fully decoded if If it is empty, the decoding ends, indicating that the decoding has been completed and the original data packet is output;

[0037] 10) Find the original data packet sequence number that meets the conditions in all encoded data packets and the coded packet sequence number If it meets and will As parameter p', As parameter q', perform header decoding in step 7); if it meets and will As parameter p', As parameter q', perform tail decoding of step 7); if p=p+1 does not exist, return to step 2) and wait for receiving a new encoded data packet.

[0038] The method of the present invention is based on the adjustment of the decoding process, improves the coupling of the rateless decoding algorithm and the Zigzag decoding algorithm, and decodes from the head and the tail simultaneously. Compared with the prior art, the intermediate symbol recovery rate is higher, the occupied cache space is smaller, and the decoding overhead is lower.

[0039] The present invention and its embodiments are described schematically above, and the description is not restrictive. The drawings show only one embodiment of the present invention, and the actual structure is not limited thereto. Therefore, if a person skilled in the art is inspired by it and designs a structural method and an embodiment similar to the technical solution without creativity without departing from the purpose of the invention, they shall all fall within the protection scope of the present invention.

Claims

1. A rateless Zigzag bidirectional greedy decoding method for forward error correction codes, characterized in that: The following steps are involved: 1) Initialization, waiting for receiving encoded data packets; 2) Determine whether the encoded data packet is received; 3) According to the received coded data packet c * (z), and obtain the corresponding decoding shift vector δ * ; Get the corresponding coded data packet degree d * ; 4) Remove the known complete original data packet from the coded data packet to obtain the coded data packet c after data packet level processing p (z); 5) Remove the data bits of the decoded original data packet from the encoded data packet to obtain the encoded data packet y after data bit level processing p (z), y p (z) is put into the cache and the shift vector is saved as T p ; 6) Determine y p (z) Whether there is an original data packet sequence number q that meets the conditions * If the conditions are met And p is used as the parameter p', q * As parameter q', perform the next step of header decoding; if it meets the conditions And p is used as the parameter p', q * As parameter q', perform the next step of tail decoding; if p=p+1 does not exist, return to step (2); p is the sequence number of the currently received encoded data packet; where ω() expresses the number of the lowest order term, Express the degree of the highest degree term; 7) Header decoding: length of decoded data bits p' is the number of the encoded data packet, q' is the number of the original data packet, and the corresponding k' data bits are obtained. represents the shift relationship, Ω k' The operation represents the k' items with the lowest number of times, and updates the undecoded data bits n of the original data packet with sequence number q' q' (z) = η q' (z)-Ω k' (η q' (z)), proceed to the next step; tail decoding: the length of the decoded data bits Get the corresponding k' data bits Operate the k' items with the highest representation times and update the undecoded data bits of the original data packet with sequence number q' Execute the next step; 8) Update the original data packet x with sequence number q' q' (z); remove the k' data bits of information in all coded data packets and update all cached coded data packets y p** (z); if η q' (z) is empty, indicating that the original data packet has been completely decoded, and step (9) is executed; otherwise, step (10) is executed; 9) Update the set K of original data packets that have not been completely decoded 0 ; Update the set I of sequence numbers of the original data packets that have been completely decoded; if K 0 If it is empty, the decoding ends, indicating that the decoding has been completed and the original data packet is output; 10) Find the original data packet sequence number that meets the conditions in all encoded data packets and the coded packet sequence number 2. The forward error correction code rateless Zigzag bidirectional greedy decoding method according to claim 1, characterized in that: In step 1), the initialization steps are: initializing the original data packet set K' that has not been completely decoded; initializing the set K of all encoded data packet sequence numbers 0 ; Initialize K original data packets x(z), initialize the undecoded data bit η of the jth original data packet j (z), initialize the sequence number p of the currently received coded data packet to 1; initialize the set M of the sequence numbers of all cached coded data packets to be empty; initialize the set I of the sequence numbers of the original data packets that have been completely decoded to be empty.

3. The forward error correction code rateless Zigzag bidirectional greedy decoding method according to claim 2, characterized in that: In step 2), if no coded data packet is received, wait for reception, if received, proceed to the next step.

4. The forward error correction code rateless Zigzag bidirectional greedy decoding method according to claim 3, characterized in that: In step 4), if the degree of the encoded data packet after packet level processing is d p =0, return to step (2), otherwise proceed to the next step.

5. The forward error correction code rateless Zigzag bidirectional greedy decoding method according to claim 1, characterized in that: In step 10), if and will As parameter p', As parameter q', perform header decoding in step 7); if it meets and will As parameter p', As parameter q', perform tail decoding of step 7); if p=p+1 does not exist, return to step 2) and wait for receiving a new encoded data packet.

Citation Information

Patent Citations

  • Fountain code method based on Zigzag expansion greedy rotation decoding

    CN115085866A