IP Library Granted Patent US 10,608,672
Granted Patent B2
US 10,608,672 · App. 16/026,811 · Granted Mar 31, 2020

Decoding concatenated codes by guessing noise

Inventors: Muriel Medard (Belmont, MA); Kenneth R. Duffy (Dublin, IE); Jiange Li (Cambridge, MI)
Assignees: MASSACHUSETTS INSTITUTE OF TECHNOLOGY; NATIONAL UNIVERSITY OF IRELAND, MAYNOOTH
H03M13/2951H03M13/05H03M13/2906H03M13/2927H03M13/37H03M13/3746H03M13/6337H04L1/005H04L1/0045H04L1/0054H04L1/0065H04L1/0057
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,608,672
App. No.
16/026,811
Granted
Mar 31, 2020
Kind
B2
Abstract

Devices and methods described herein decode a sequence of coded symbols by guessing noise. In various embodiments, noise sequences are ordered, either during system initialization or on a periodic basis. Then, determining a codeword includes iteratively guessing a new noise sequence, removing its effect from received data symbols (e.g. by subtracting or using some other method of operational inversion), and checking whether the resulting data are a codeword using a codebook membership function. This process is deterministic, has bounded complexity, asymptotically achieves channel capacity as in convolutional codes, but has the decoding speed of a block code. In some embodiments, the decoder tests a bounded number of noise sequences, abandoning the search and declaring an erasure after these sequences are exhausted. Abandonment decoding nevertheless approximates maximum likelihood decoding within a tolerable bound and achieves channel capacity when the abandonment threshold is chosen appropriately.

Claims (47)

1. A method, in a decoder, of decoding data that was encoded with an outer code then encoded with an inner code, the method comprising:

receiving a collection of m pluralities of data symbols from a data sender using a noisy data channel, the number m being determined by the outer code;

for each received plurality of data symbols, until a termination condition is obtained, repeatedly:

selecting, by a noise guesser according to a noise guessing order, a sequence of noise symbols previously unselected for the given received plurality of data symbols;

forming, in a buffer, a block of formed symbols by inverting a noise effect, of the selected sequence of noise symbols, on the given received plurality of data symbols; and

obtaining the termination condition, by a codeword validator, if the formed symbols comprise a codeword for the inner code;

when the termination condition is obtained for each received plurality of data symbols, storing in a memory the formed symbols as a codeword for the inner code; and

when the memory stores at least a number k of codewords for the inner code wherein the number k≤m is determined by the outer code, collectively decoding the at least k stored codewords according to the outer code and outputting the decoded data.

2. A method according to claim 1 , performed simultaneously by a plurality of distributed decoders, each distributed decoder decoding, with respect to the inner code, one or more of the m pluralities of data symbols received from the data sender.

3. A method according to claim 1 , wherein decoding according to the outer code comprises decoding one or more of:

a maximum distance separable (MDS) block code capable of correcting m−k codeword erasures;

an MDS block code capable of correcting m−k errors made by the codeword validator;

a rateless code, wherein the data sender is capable to dynamically change the number m and to communicate the change to the decoder; and

a code whose codewords comprise data symbols randomly chosen from an alphabet of symbols.

4. A method according to claim 1 , wherein either the outer code or the inner code comprises a network code.

5. A method according to claim 4 , wherein the network code is a concatenation of encodings.

6. A method according to claim 4 , wherein the network code is a random code, a random linear network code, a Hamming code, or a Low Density Parity Check code.

7. A method according to claim 1 , wherein obtaining the termination condition further comprises validating, by the codeword validator, the formed symbols using one or more of: validation information received from the data sender, a codebook memory, and a function taking the formed symbols as input and having a binary output.

8. A method according to claim 1 , wherein obtaining the termination condition further comprises validating, by the codeword validator, the formed symbols using a codebook oracle that verifies the decoding of the inner code according to one or more dependencies induced by the outer code.

9. A method according to claim 1 , wherein outputting, by the sent codeword outputter, comprises outputting either or both of an error signal and information pertaining to an error.

10. A method according to claim 1 , further comprising:

incrementing a repetition count each time the codeword validator attempts to validate formed symbols for the given received sequence of data symbols; and

obtaining the termination condition, by the codeword validator, when the repetition count reaches a first threshold.

11. A method according to claim 10 , wherein obtaining the termination condition further comprises determining that the repetition count has reached at least a second threshold that is a function of a codebook rate, an estimated noise property, or both.

12. A method according to claim 10 , wherein obtaining the termination condition further comprises determining that the codebook rate is greater than 1 due to a temporary decrease in channel capacity caused by transient noise.

13. A method according to claim 10 , wherein obtaining the termination condition further comprises the codeword validator declaring an erasure for the inner code.

14. A method according to claim 13 , wherein decoding the k stored codewords according to the outer code comprises declaring an erasure for the outer code when the codeword validator has declared m+1−k erasures for the inner code.

15. A method according to claim 1 , wherein a node, intermediate the data sender and the decoder, performs a method comprising:

receiving a collection of m′ pluralities of data symbols from the data sender or another such node using the noisy data channel, wherein the number m′≤m;

for each received plurality of data symbols, until a termination condition is obtained, repeatedly:

selecting, by a noise guesser according to a noise guessing order, a sequence of noise symbols previously unselected for the given received plurality of data symbols;

forming, in a buffer, a block of formed symbols by inverting a noise effect, of the selected sequence of noise symbols, on the given received plurality of data symbols; and

obtaining the termination condition, by a codeword validator, if the formed symbols comprise a codeword for the inner code;

when the termination condition is obtained for each received plurality of data symbols, storing in a memory the formed symbols as a codeword for the inner code; and

when the memory stores at least a number k′ of codewords for the inner code wherein the number k′≤m′, transmitting the k′ codewords to the decoder.

16. A method according to claim 15 , wherein the method of the intermediate node further comprises receiving soft information pertaining to at least one of the k′ codewords for the inner code.

17. A method according to claim 16 , wherein collectively decoding the at least k′ stored codewords comprises declaring an erasure.

18. A method according to claim 15 , wherein the method of the intermediate node further comprises recoding the outer code at a different rate, without decoding the outer code.

19. A method according to claim 18 , wherein either or both of the outer code and the recoded outer code comprises a random linear network code.

20. A decoder for decoding data that was encoded with an outer code then encoded with an inner code, the decoder comprising:

a receiver for receiving each sequence of data symbols in the plurality from a noisy data channel;

a noise guesser for selecting, according to a noise guessing order, a sequence of noise symbols previously unselected for each given received sequence of data symbols;

a buffer for storing symbols formed by inverting a noise effect, of the selected sequence of noise symbols, on the given received sequence of data symbols;

a codeword validator for obtaining a termination condition when the formed symbols comprise a codeword for the inner code;

a memory for storing, for the given received sequence of data symbols when the termination condition is obtained, the formed symbols as a codeword for the inner code;

an outer decoder for collectively decoding, when the memory stores a number k of codewords for the inner code wherein the number k≤m is determined by the outer code, the k stored codewords according to the outer code; and

an outputter for outputting the decoded data.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2018
From: MEDARD, MURIEL; LI, JIANGE
To: MASSACHUSETTS INSTITUTE OF TECHNOLOGY
Reel/Frame 047728/0176 →
CONFIRMATORY LICENSE Recorded Jul 25, 2018
From: MASSACHUSETTS INSTITUTE OF TECHNOLOGY
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 046656/0180 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2018
From: MEDARD, MURIEL
To: MASSACHUSETTS INSTITUTE OF TECHNOLOGY
Reel/Frame 046272/0282 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2018
From: DUFFY, KENNETH R.
To: NATIONAL UNIVERSITY OF IRELAND, MAYNOOTH
Reel/Frame 046272/0301 →
Continuity (3)
Provisional Application 62631104 · Feb 15, 2018
Provisional Application 62609765 · Dec 22, 2017
Related Publication 20190199473A1 · Jun 27, 2019
Cited By (1)
US 12,273,194