WO2015147711A1 - Method and devices for decoding - Google Patents

Method and devices for decoding Download PDF

Info

Publication number
WO2015147711A1
WO2015147711A1 PCT/SE2014/050368 SE2014050368W WO2015147711A1 WO 2015147711 A1 WO2015147711 A1 WO 2015147711A1 SE 2014050368 W SE2014050368 W SE 2014050368W WO 2015147711 A1 WO2015147711 A1 WO 2015147711A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
message
transmitting
packets
decoded
Prior art date
Application number
PCT/SE2014/050368
Other languages
French (fr)
Inventor
Ather GATTAMI
Original Assignee
Telefonaktiebolaget L M Ericsson (Publ)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget L M Ericsson (Publ) filed Critical Telefonaktiebolaget L M Ericsson (Publ)
Priority to PCT/SE2014/050368 priority Critical patent/WO2015147711A1/en
Publication of WO2015147711A1 publication Critical patent/WO2015147711A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • H04L1/0044Realisations of complexity reduction techniques, e.g. use of look-up tables specially adapted for power saving

Definitions

  • the technology disclosed herein relates generally to the field of communication and coding techniques, and in particular to encoding and decoding of messages using fountain codes.
  • Fountain codes such as Raptor codes
  • rate-less erasure codes where the main idea is to transmit a continuous stream of smaller packets without requiring feedback signals from the receiving part. This minimizes the latency which would otherwise be caused by the transmitting part waiting for the receiving part to acknowledge reception or asking for a retransmission.
  • Figure 1 illustrates a message M of block-length L, which message M is partitioned into n smaller units.
  • these smaller units are denoted sub-blocks Mi, M2,..., Mn of the message M before being encoded.
  • a fountain code encodes the message M into n packets, Pi, P2,..., Pn, such that each packet has a block-length equal to L/n, wherein each packet Pi is thus an encoded sub-block Mi.
  • a stream of packets is then transmitted continuously. The packet is either decoded correctly by the receiving part or it is erased by the receiving part.
  • the fountain codes use an encoding matrix C, and the packets are given by a linear combination of the original message sub-blocks Ml, Mn, according to:
  • Cii*Mi + ... + Cin*Mn P2 C2i*Mi + ... + C2n
  • the receiving part needs at least n packets to be able to decode the original message M. This means that the receiving part needs to wait for all the n packets to arrive before it starts decoding. Further, in decoding the n packets, the receiving part needs to perform n3 operations in order to invert the matrix C to thereby obtain the message M from the arrived packets Pi, Pn. This requires processing time as well as processing capacity.
  • An object of the present disclosure is to solve or at least alleviate at least one of the above mentioned problems.
  • the object is according to a first aspect achieved by a method performed in a receiving device for decoding a message.
  • the message is encoded by a transmitting device into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block.
  • the method comprises:
  • the method provides advantages in that it offers and maintains a high reliability of a communication using fountain codes by introducing feedback. Further, the receiving part may decode a message faster owing to the triangular structure of the fountain codes, and may receive missing parts of a message faster owing to the feedback. The transmitting part, receiving the feedback, may focus on transmitting message pieces not yet correctly decoded by the receiving part. Hence the method provides advantages also by increasing the efficiency of communication (both reception and transmission) in terms of power, time and energy consumption.
  • the object is according to a second aspect achieved by a receiving device for decoding a message.
  • the message is encoded by a transmitting part into n packets using triangularly structured fountain codes, each packet being an encoded message sub- block.
  • the receiving device comprises a processor and memory, the memory containing instructions executable by the processor, whereby the receiving device is operative to:
  • the object is according to a third aspect achieved by a computer program for a receiving device for decoding a message.
  • the message is encoded by a transmitting part into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block.
  • the computer program comprises computer program code, which, when run on the receiving device causes the receiving device to: - receive a packet, and:
  • the object is according to a fourth aspect achieved by a computer program product comprising a computer program as above, and a computer readable means on which the computer program is stored.
  • the object is according to a fifth aspect achieved by a receiving device for decoding a message, the message being encoded by a transmitting part into n packets using triangularly structured fountain codes, each packet being an encoded message sub- block.
  • the receiving device comprises:
  • - means for receiving a packet, and:
  • the object is according to a sixth aspect achieved by a method performed in a transmitting device for transmitting a message.
  • the method comprises:
  • the object is according to a seventh aspect achieved by a transmitting device for transmitting a message.
  • the transmitting device comprises a processor and memory, the memory containing instructions executable by the processor, whereby the transmitting device is operative to:
  • the object is according to a eight aspect achieved by a computer program for a transmitting device for transmitting a message.
  • the computer program comprises computer program code, which, when run on the transmitting device causes the transmitting device to:
  • the object is according to an ninth aspect achieved by a computer program product comprising a computer program as above, and a computer readable means on which the computer program is stored.
  • the object is according to a tenth aspect achieved by a transmitting device for transmitting a message, the transmitting device comprising:
  • Figure 1 illustrates a message divided into message sub-blocks.
  • Figure 2 illustrates on a time scale arrival of packets and decoding according to prior art.
  • Figure 3 illustrates on a time scale arrival of packets and decoding according to an aspect of the present disclosure.
  • Figure 4 is a sequence diagram illustrating communication according to an aspect of the present disclosure.
  • Figure 5 is a flow chart illustrating an embodiment of the present disclosure.
  • Figure 6 is a flow chart illustrating an embodiment of the present disclosure.
  • Figure 7 illustrates a flow chart over steps of a method in a receiving device in accordance with the present disclosure.
  • Figure 8 illustrates schematically a receiving device and means for implementing methods of the present disclosure.
  • Figure 9 illustrates a receiving device comprising function modules/ software modules for implementing methods of the present disclosure.
  • Figure 10 illustrates a flow chart over steps of a method in a transmitting device in accordance with the present disclosure.
  • Figure 11 illustrates schematically a transmitting device and means for implementing methods of the present disclosure.
  • Figure 12 illustrates a transmitting device comprising function modules/software modules for implementing methods of the present disclosure.
  • triangular fountain codes are instead used.
  • the triangular fountain codes have a structure given by:
  • This structure allows for decoding already after the reception of the first packet and continues as long as the packets arrive without error, as illustrated in figure 3.
  • P2 C2i*Mi + C22*M2.
  • the receiving part can thus decode it and obtain corresponding sub-block of the message M by using available information and the information of the newly arrived packet.
  • the receiving part stops the decoding and awaits n packets to arrive.
  • the k-i packets first packets of the stream of packets (i.e. encoded sub-blocks of the message M) have already been successfully decoded and the remaining n-k+i packets will take a shorter time to decode compared to the prior art not using these triangular fountain codes and where all N pieces thus are decoded at once.
  • the total number of operations to find the first k sub-blocks Mi, Mk from packets Pi, Pk is k 2 , i.e. considerable reduction of required operations compared to prior art.
  • the present disclosure provides, in an aspect, a feedback scheme.
  • feedback is not used, or only limited type of feedback such as ACK and/or NACK is used.
  • the present disclosure provides an even further reduced delay when using the triangular fountain codes.
  • the receiving part awaits N packets to arrive, and then decodes the remaining packets.
  • the receiving part may thus ignore the already decoded packets of the N packets that it receives.
  • the transmitting part may start the transmission with the first unsuccessfully decoded packet.
  • the receiving part may thus continue the decoding at the k:th packet, and needs not await N packets first. This reduces latency even further.
  • figure 4 is a sequence diagram illustrating communication according to an aspect of the present disclosure.
  • the transmitting part 50 partitions a message M into a number of sub-blocks and encodes each sub- block into packets.
  • the transmitting part 50 then transmits (arrow Ai) the packets to the receiving part 30 in a stream of packets.
  • the receiving part 30 tries to decode each correctly received packet, until an error occurs (arrow A2).
  • the receiving part 30 transmits (arrow A3) feedback to the transmitting part 50, informing about the need of a retransmission.
  • the feedback may comprise indicating which packet was not decoded correctly (refer also to figure 5).
  • the feedback may alternatively comprise indicating that a certain number of packets have been decoded successfully (refer also to figure 6).
  • the transmitting part 50 receiving this feedback information, then acts accordingly by e.g. retransmitting (arrow A4) the packets, starting from the packet indicated in the feedback information.
  • the receiving part 30 then continues decoding (arrow A5).
  • the receiving part 30 may thus receive and decode the remaining packets much faster than compared to conventional fountain codes. This also improves on the triangular fountain codes, in that the stream of packets may begin with a first erroneously decoded packet.
  • FIG. 5 is a flow chart illustrating the above case of the receiving part 30 sending packet index of a packet not being successfully decoded.
  • the method 10 is thus performed in the receiving part 30 and begins with the receiving part awaiting a packet.
  • a packet decoded (box 11)
  • box 12 it is established whether the received packet k is successfully decoded (box 12). If yes, then the sub- block Mk of the message M can be decoded (block 14) and k is set equal to k+i, i.e. the receiving part 30 is ready for reception of the next packet.
  • the receiving part 30 then awaits this next packet and flow continues back to initial box 11.
  • the receiving part 30 sends an indication about this to the transmitting part 50 (box 13).
  • the receiving part may for example send packet index k to the transmitting part 50, which is then able to use this feedback information to start the transmission at packet k, i.e. instead of transmitting packet Pi, P2,..., Pk-i again, it starts the transmission of the stream of packets by first sending packet Pk, then packet Pk+i etc.
  • an alternative feedback is given, namely feedback comprising indication of a certain number of packets having been decoded successfully.
  • the method 20 starts at box 21, wherein it is determined whether a packet k has been received. If no, the receiving part 30 continues awaiting a packet. When a packet is received, flow continues to box 22, wherein it is
  • the receiving part 30 determines if the number of decoded packets now equals a set number of packets. Thus, in box 22, it is determined whether the number of decoded packets is equal to j- 1. If so, then the receiving part 30 sends feedback information about this to the transmitting part 50. That is, flow continues to box 23, wherein the receiving part 30 sends packet index j to the transmitting part 50. In box 23, the receiving part 30 may also reset a counter to 1, the counter counting number of successfully decoded packets. If, in box 22, the number of successfully decoded packets is less than the set number, the receiving part 30 decodes the packet and the counter then counts up its current value by one.
  • This method 20 makes the transmitting part 50 aware of which packets have been successfully received and thereby it does not need to include these packets in the coding of future transmissions; the feedback information informs the transmitting part 50 about the number of consecutive packets that have been decoded successfully and thus corresponding message sub-blocks having been obtained. If the first k-i packets are decoded successfully, then the index k is transmitted. This is thus repeated for every batch of j-i packets. The number of packets of a batch to acknowledge should not be too small (e.g. a single packet), since this reduces efficiency.
  • the transmitting part 50 thus receives the feedback from the receiving part 30, which feedback is the index k.
  • the transmitting part 50 then sends the packets of the packet stream according to the triangular structured fountain codes, starting at encoded message sub-block Mk (i.e. packet k) and continues with encoded message sub-block Mk+i (i.e. packet k+i), etc. but not including packets that have been acknowledged.
  • the embodiments of figures 5 and 6 may be combined, such that the receiving part 30 in the method 10 described in relation to figure 5, keeps count of number of successfully decoded packets according to the method 20 described in relation to figure 6.
  • the receiving part 30 may thus acknowledge batches of packets, and when detecting an erroneously decoded packet, send the corresponding packet index.
  • the transmitting part 50 may then start at the indicated packet and omit to include acknowledged packets in the stream of packets.
  • figure 7 is a flow chart over steps of a method in a receiving device in accordance with the present disclosure.
  • a method 100 is thus provided which may be performed in a receiving device 30 for decoding a message M.
  • the message M is encoded by a transmitting device 50 into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
  • the method 100 comprises:
  • the method 100 comprises repeating the receiving 101 and decoding 102 until the entire message M has been decoded or until a packet is erroneously decoded or received.
  • the method 100 comprises, upon erroneously decoding a packet, awaiting 104 reception of retransmission of the packet that was the first erroneously decoded packet and then continuing decoding 102 the message M.
  • the method 100 comprises transmitting, to the transmitting device 50 feedback information indicating a number of packets having been successfully decoded. This enables the transmitting device to only transmit packets of the message M for which such feedback information has not been received. A more efficient transmission scheme is thus enabled.
  • FIG. 8 illustrates schematically a receiving device and means for implementing methods of the present disclosure.
  • the receiving device 30 comprises at least one receiver 36 and one transmitter 37 and antenna devices for communicating over a wireless link with a transmitting device 50.
  • the receiving device 30 comprises a processor 31 comprising any combination of one or more of a central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit etc. capable of executing software instructions stored in a memory 33, which can thus be a computer program product 33.
  • a processor 31 comprising any combination of one or more of a central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit etc. capable of executing software instructions stored in a memory 33, which can thus be a computer program product 33.
  • the receiving device 30 may comprise further components and devices
  • a receiver chain comprising the receiver 36, a demodulator 35 and decoder 34, which are operatively interconnected such as to provide data relating to the received signal to the processor 31.
  • the receiving device 30 may comprise further components and devices conventionally used for encoding signals, e.g. a transmitter chain comprising an encoder 39, a modulator 38 and the transmitter 37, which are operatively interconnected such as to enable transmission of signals processed by the processor 3 1 ⁇
  • a transmitter chain comprising an encoder 39, a modulator 38 and the transmitter 37, which are operatively interconnected such as to enable transmission of signals processed by the processor 3 1 ⁇
  • the processor 31 can be configured to execute any of the various embodiments of the methods as have been described, e.g. in relation to figure 7.
  • the receiving device 30 is configurable for decoding a message M, the message M being encoded by a transmitting part 50 into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
  • the receiving device 30 comprises a processor 31 and memory 33, the memory 33 containing instructions executable by the processor 31, whereby the receiving device 30 is operative to:
  • the receiving device 30 may thus comprise a processor 31 and a memory 33 storing instructions that, when executed by the processor 31, causes the receiving device 30 to perform the various steps of the method.
  • the receiving device 30 may for example comprise processing circuitry or processing means configured to receive a packet, and for the packet being successfully decoded, configured to decode corresponding message sub-block Mi,..., Mn, and for the packet being erroneously decoded, configured to transmit to the transmitting part 50 feedback information indicating a packet index of the erroneously decoded packet.
  • the same processing circuitry or processing means or other processing circuitry may be configured to perform such encoding, reception of a packet Pi, Pn (e.g. with the aid of receiving circuitry etc.), and transmission of feedback (e.g. with the aid of transmitting circuitry etc.) to the transmitting device 50.
  • the receiving device 30 is configured to repeat the receiving and decoding until the entire message M has been decoded or until the packet is erroneously decoded.
  • the receiving device 30 is configured to, upon erroneously decoding a packet, await reception of a retransmission of the packet that was the first erroneously decoded packet and configured to continue decoding the message M.
  • the receiving device 30 is configured to transmit, to the transmitting device 50 feedback information indicating a number of packets having been successfully decoded.
  • the memory 33 can be any combination of read and write memory (RAM) and read only memory (ROM).
  • the memory 33 may also comprise persistent storage, which, for example, can be any single one or
  • a data memory may also be provided for reading and/or storing data during execution of software instructions in the processor 31.
  • Such data memory can be any combination of read and write memory (RAM) and read only memory (ROM).
  • the present disclosure also encompasses a computer program product 33 comprising a computer program 32 for implementing the methods as described above, and a computer readable means (i.e. storage means) on which the computer program 32 is stored.
  • a computer program product 33 comprising a computer program 32 for implementing the methods as described above, and a computer readable means (i.e. storage means) on which the computer program 32 is stored.
  • the present disclosure thus comprises a computer program for a receiving device 3 for decoding a message M, the message M being encoded by a transmitting part 50 into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
  • the computer program 32 comprises computer program code, which, when run on the receiving device 30 causes the receiving device 30 to:
  • the computer program product 33 thus comprises instructions executable by the processor 31.
  • Such instructions maybe comprised in a computer program, or in one or more software modules or function modules.
  • the receiving device 30 comprises first means, e.g. a first function module 41, for receiving a packet.
  • the receiving device 30 comprises second means, e.g. a second function module 42, for decoding the packet.
  • the receiving device 30 comprises third means, e.g. a third function module 43, for transmitting to the transmitting device 50 feedback information indicating a packet index of the erroneously decoded packet.
  • the means e.g. the functional modules 41, 42, 43, can be implemented using software instructions such as computer program executing in a processor and/ or using hardware, such as application specific integrated circuits, field programmable gate arrays, discrete logical components etc.
  • the receiving device 30 may comprise further means for implementing the various features and steps of the embodiments of the present disclosure that have been described.
  • the receiving device 30 may comprise means, e.g. a functional module, for awaiting reception of retransmission of the packet that was the first erroneously decoded packet and continuing decoding the message M.
  • Figure 10 illustrates a flow chart over steps of a method in a transmitting device in accordance with the present disclosure.
  • the method 200 may thus be performed in a transmitting device 50 for transmitting a message M.
  • the method 200 comprises encoding 201 a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
  • the method 200 comprises transmitting 202 the n packets Pi, Pn.
  • the method 200 comprises receiving 203, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet.
  • the method 200 comprises retransmitting 204 the encoded message M starting with the packet corresponding to the received packet index.
  • the method 200 comprises receiving, from the receiving device 30 feedback information indicating a number of packets having been successfully decoded, and in response thereto transmitting only packets of the message M for which such feedback information has not been received.
  • FIG 11 illustrates schematically a transmitting device and means for implementing methods of the present disclosure.
  • the transmitting device 50 comprises at least one receiver 56 and one transmitter 57 and antenna devices for communicating over a wireless link with a receiving device 30.
  • the transmitting device 50 comprises a processor 51 comprising any combination of one or more of a central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit etc. capable of executing software instructions stored in a memory 53, which can thus be a computer program product 53.
  • a processor 51 comprising any combination of one or more of a central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit etc. capable of executing software instructions stored in a memory 53, which can thus be a computer program product 53.
  • the transmitting device 50 may comprise further components and devices
  • a receiver chain comprising the receiver 56, a demodulator 58 and decoder 59, which are operatively interconnected such as to provide data relating to the received signal to the processor 51.
  • the transmitting device 50 may comprise further components and devices conventionally used for encoding signals, e.g. a transmitter chain comprising an encoder 54, a modulator 55 and the transmitter 57, which are operatively interconnected such as to enable transmission of signals processed by the processor 5 1 ⁇
  • a transmitter chain comprising an encoder 54, a modulator 55 and the transmitter 57, which are operatively interconnected such as to enable transmission of signals processed by the processor 5 1 ⁇
  • the processor 51 can be configured to execute any of the various embodiments of the methods as have been described, e.g. in relation to figure 10.
  • the transmitting device 50 is configurable for transmitting a message M.
  • transmitting device 50 comprises a processor 51 and memory 53, the memory 53 containing instructions executable by the processor 51, whereby the transmitting device 50 is operative to:
  • the transmitting device 50 may thus comprise a processor 51 and a memory 53 storing instructions that, when executed by the processor 51, causes the transmitting device 50 to perform the various steps of the method.
  • the transmitting device 50 may for example comprise processing circuitry or processing means configured to perform the encoding of a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
  • the same processing circuitry or processing means or other processing circuitry may be configured to transmit the packets Pi, Pn (via transmitting circuitry etc.), and to receive, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet and retransmitting the encoded message M starting with the packet corresponding to the received packet index.
  • the transmitting device 50 is configured to retransmit the encoded message M starting with the packet corresponding to the received packet index.
  • the transmitting device 50 is configured to receive, from the receiving device 30 feedback information indicating a number of packets having been successfully decoded, and in response thereto transmitting only packets of the message M for which such feedback information has not been received.
  • the memory 53 can be any combination of read and write memory (RAM) and read only memory (ROM).
  • the memory 53 may also comprise persistent storage, which, for example, can be any single one or
  • a data memory may also be provided for reading and/or storing data during execution of software instructions in the processor 51.
  • Such data memory can be any combination of read and write memory (RAM) and read only memory (ROM).
  • the present disclosure also encompasses a computer program product 53 comprising a computer program 52 for implementing the embodiments of the method as has been described, and a computer readable means (i.e. storage means) on which the computer program 52 is stored.
  • a computer program product 53 comprising a computer program 52 for implementing the embodiments of the method as has been described, and a computer readable means (i.e. storage means) on which the computer program 52 is stored.
  • the present disclosure thus comprises a computer program for a computer program 52 for a transmitting device 50 for transmitting a message M.
  • the computer program 52 comprises computer program code, which, when run on the transmitting device 50 causes the transmitting device 50 to:
  • the computer program product 53 thus comprises instructions executable by the processor 51. Such instructions may be comprised in a computer program, or in one or more software modules or function modules.
  • the transmitting device 50 comprises first means, e.g. a first function module 61, for encoding a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
  • the transmitting device 50 comprises second means, e.g. a second function module 62, for
  • the transmitting device 50 comprises third means, e.g. a third function module 63, for receiving, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet.
  • third means e.g. a third function module 63, for receiving, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet.
  • the means e.g. the functional modules 61, 62, 63, can be implemented using software instructions such as computer program executing in a processor and/or using hardware, such as application specific integrated circuits, field programmable gate arrays, discrete logical components etc.
  • the transmitting device 50 may comprise further means for implementing the various features and steps of the embodiments of the present disclosure that have been described.
  • the transmitting device 50 may comprise means, e.g. a functional module, for retransmitting the encoded message M starting with the packet corresponding to the received packet index.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Communication Control (AREA)

Abstract

The disclosure relates to a method 100 performed in a receiving device 30 for decoding a message M. The message M is encoded by a transmitting device 50 into n packets P1,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block M1,..., Mn. The method 100 comprises receiving 101 a packet, and: for the packet being successfully decoded, decoding 102 corresponding message sub-block; for the packet being erroneously decoded, transmitting 103 to the transmitting part 50 feedback information indicating a packet index of the erroneously decoded packet. The disclosure also relates to corresponding receiving device, computer program and computer program product. The disclosure further relates to a corresponding method in a transmitting device, the transmitting device and related computer program and computer program product.

Description

Method and devices for decoding
Technical field
The technology disclosed herein relates generally to the field of communication and coding techniques, and in particular to encoding and decoding of messages using fountain codes.
Background
The industry is getting more and more automated, relying on machine-to-machine communications in order to coordinate e.g. movements of the machines. Such examples can be found in vehicle-to-vehicle communications where autonomous vehicles communicate their state (e.g. position, velocity, etc.) to each other in order to maintain a safe and robust distance between each other thus reducing the risk of collisions. One key feature for such a system to work is to have low communication delay, acceptable delays for example being in the range of milliseconds and less. This in turn will impose high demands on the performance of the communication links between the machine devices in terms of providing low latency.
Fountain codes, such as Raptor codes, are so called rate-less erasure codes where the main idea is to transmit a continuous stream of smaller packets without requiring feedback signals from the receiving part. This minimizes the latency which would otherwise be caused by the transmitting part waiting for the receiving part to acknowledge reception or asking for a retransmission.
Figure 1 illustrates a message M of block-length L, which message M is partitioned into n smaller units. In the following these smaller units are denoted sub-blocks Mi, M2,..., Mn of the message M before being encoded. A fountain code encodes the message M into n packets, Pi, P2,..., Pn, such that each packet has a block-length equal to L/n, wherein each packet Pi is thus an encoded sub-block Mi. A stream of packets is then transmitted continuously. The packet is either decoded correctly by the receiving part or it is erased by the receiving part.
The fountain codes use an encoding matrix C, and the packets are given by a linear combination of the original message sub-blocks Ml, Mn, according to:
Pi = Cii*Mi + ... + Cin*Mn P2 = C2i*Mi + ... + C2n
Pn = Cni*Mi + ... + Cnn*Mn
The above system of equations may be written as P = C*M, where C is a matrix with element Cij in position (i,j), and P and M are vectors P = (Pi, Pn) and M = (Ml, Mn). The encoding matrix C is often randomly generated, and thus, the elements Cij are most likely nonzero. C should be constructed such that it is invertible.
The receiving part needs at least n packets to be able to decode the original message M. This means that the receiving part needs to wait for all the n packets to arrive before it starts decoding. Further, in decoding the n packets, the receiving part needs to perform n3 operations in order to invert the matrix C to thereby obtain the message M from the arrived packets Pi, Pn. This requires processing time as well as processing capacity.
There is, as mentioned, typically no feedback signaling in fountain codes, which reduces latency compared to if a retransmission scheme is implemented. However, it would be desirable to decrease the latency further still. Further, it would be desirable to increase transmission efficiency, while providing increased reliability of the transmission or at least without decreasing transmission reliability. Transmission efficiency and transmission reliability are typically conflicting requirements: the transmission efficiency, e.g. in terms of communication resources, is reduced when increasing transmission reliability by means of feedback.
Summary
An object of the present disclosure is to solve or at least alleviate at least one of the above mentioned problems.
The object is according to a first aspect achieved by a method performed in a receiving device for decoding a message. The message is encoded by a transmitting device into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block. The method comprises:
- receiving a packet, and: - for the packet being successfully decoded, decoding corresponding message sub-block,
- for the packet being erroneously decoded, transmitting to the transmitting part feedback information indicating a packet index of the erroneously decoded packet.
The method provides advantages in that it offers and maintains a high reliability of a communication using fountain codes by introducing feedback. Further, the receiving part may decode a message faster owing to the triangular structure of the fountain codes, and may receive missing parts of a message faster owing to the feedback. The transmitting part, receiving the feedback, may focus on transmitting message pieces not yet correctly decoded by the receiving part. Hence the method provides advantages also by increasing the efficiency of communication (both reception and transmission) in terms of power, time and energy consumption.
The object is according to a second aspect achieved by a receiving device for decoding a message. The message is encoded by a transmitting part into n packets using triangularly structured fountain codes, each packet being an encoded message sub- block. The receiving device comprises a processor and memory, the memory containing instructions executable by the processor, whereby the receiving device is operative to:
- receive a packet, and:
- for the packet being successfully decoded, configured to decode corresponding message sub-block,
- for the packet being erroneously decoded, configured to transmit to the transmitting part feedback information indicating a packet index of the erroneously decoded packet.
The object is according to a third aspect achieved by a computer program for a receiving device for decoding a message. The message is encoded by a transmitting part into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block. The computer program comprises computer program code, which, when run on the receiving device causes the receiving device to: - receive a packet, and:
- for the packet being successfully decoded, decode corresponding message sub-block,
- for the packet being erroneously decoded, transmit to the transmitting device feedback information indicating a packet index of the erroneously decoded packet.
The object is according to a fourth aspect achieved by a computer program product comprising a computer program as above, and a computer readable means on which the computer program is stored.
The object is according to a fifth aspect achieved by a receiving device for decoding a message, the message being encoded by a transmitting part into n packets using triangularly structured fountain codes, each packet being an encoded message sub- block. The receiving device comprises:
- means for receiving a packet, and:
- means for decoding, for the packet being successfully decoded, corresponding message sub-block,
- means for transmitting, for the packet being erroneously decoded, to the
transmitting part feedback information indicating a packet index of the erroneously decoded packet.
The object is according to a sixth aspect achieved by a method performed in a transmitting device for transmitting a message. The method comprises:
- encoding a message into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block,
- transmitting the n packets, and
- receiving, from a receiving device, a feedback signal indicating a packet index of an erroneously decoded packet.
The object is according to a seventh aspect achieved by a transmitting device for transmitting a message. The transmitting device comprises a processor and memory, the memory containing instructions executable by the processor, whereby the transmitting device is operative to:
- encode a message into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block,
- transmit the n packets, and
- receive, from a receiving device, a feedback signal indicating a packet index of an erroneously decoded packet.
The object is according to a eight aspect achieved by a computer program for a transmitting device for transmitting a message. The computer program comprises computer program code, which, when run on the transmitting device causes the transmitting device to:
- encode a message into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block,
- transmit the n packets, and
- receive, from a receiving device, a feedback signal indicating a packet index of an erroneously decoded packet.
The object is according to an ninth aspect achieved by a computer program product comprising a computer program as above, and a computer readable means on which the computer program is stored.
The object is according to a tenth aspect achieved by a transmitting device for transmitting a message, the transmitting device comprising:
- means for encoding a message into n packets using triangularly structured fountain codes, each packet being an encoded message sub-block,
- means for transmitting the n packets, and
- means for receiving, from a receiving device, a feedback signal indicating a packet index of an erroneously decoded packet. Further features and advantages of the present disclosure will become clear upon reading the following description and the accompanying drawings.
Brief description of the drawings
Figure 1 illustrates a message divided into message sub-blocks.
Figure 2 illustrates on a time scale arrival of packets and decoding according to prior art.
Figure 3 illustrates on a time scale arrival of packets and decoding according to an aspect of the present disclosure.
Figure 4 is a sequence diagram illustrating communication according to an aspect of the present disclosure.
Figure 5 is a flow chart illustrating an embodiment of the present disclosure.
Figure 6 is a flow chart illustrating an embodiment of the present disclosure.
Figure 7 illustrates a flow chart over steps of a method in a receiving device in accordance with the present disclosure.
Figure 8 illustrates schematically a receiving device and means for implementing methods of the present disclosure.
Figure 9 illustrates a receiving device comprising function modules/ software modules for implementing methods of the present disclosure.
Figure 10 illustrates a flow chart over steps of a method in a transmitting device in accordance with the present disclosure.
Figure 11 illustrates schematically a transmitting device and means for implementing methods of the present disclosure.
Figure 12 illustrates a transmitting device comprising function modules/software modules for implementing methods of the present disclosure.
Detailed description In the following description, for purposes of explanation and not limitation, specific details are set forth such as particular architectures, interfaces, techniques, etc. in order to provide a thorough understanding. In other instances, detailed descriptions of well-known devices, circuits, and methods are omitted so as not to obscure the description with unnecessary detail. Same reference numerals refer to same or similar elements throughout the description.
First elaborating a bit more on the prior art fountain code encoded messages and reception thereof, which is illustrated in figure 2; before a receiving part can start decoding a stream of transmitted fountain code encoded packets (indicated 1st packet, 2nd packet etc. in the figure 2), it must wait for the expected number of packets to be received. In the illustrated case thus, the receiving part must await N packets. With reference to the system of equations given in the background section, if a kth packet is lost (e.g. due to a transmission error) the receiving part cannot begin decoding and needs to wait for the k:th packet to be received before all N packets can be decoded as it lacks the required information until all packets are received. All N packets need to be decoded at once and this adds delay to the decoding of messages.
In an aspect of the present disclosure, triangular fountain codes are instead used. The triangular fountain codes have a structure given by:
Pi = Cii*Mi
P2 = C21*Ml + C22*M2
P3 = C3i*Mi + C32*M2 + C33*M3
Pn = Cni*M + Cn2*M2 + Cn3*M3 + ... + Cnn*Mn
This structure allows for decoding already after the reception of the first packet and continues as long as the packets arrive without error, as illustrated in figure 3. In particular, once the receiving part has received the first packet it can start decoding this packet (see leftmost arrow of figure 3) based on the first equation above, Pi = Cii*Mi. After receiving the first packet, the receiving part can decode it and obtain the corresponding sub-block Mi of the message M by using: Mi = Cir1 * Pi. When the second packet arrives the receiving part can decode it using already available information and the second equation above, P2 = C2i*Mi + C22*M2. In particular, after receiving P2, the second packet can be decoded and thus sub-block M2 can be obtained by using: M2 = C22 1 * (P2 - C2i*Mi).
For each correctly received packet, the receiving part can thus decode it and obtain corresponding sub-block of the message M by using available information and the information of the newly arrived packet.
Each correctly received packet is thus decoded one at a time in corresponding manner using the above triangular fountain codes, i.e. the packets are decoded "on- the-fly". This decoding continues until a packet k has not arrived correctly or if k=n+i has arrived correctly, i.e. all packets have been decoded and the entire message M thus been obtained.
For the case that a kth packet is not received correctly, the receiving part stops the decoding and awaits n packets to arrive. The k-i packets first packets of the stream of packets (i.e. encoded sub-blocks of the message M) have already been successfully decoded and the remaining n-k+i packets will take a shorter time to decode compared to the prior art not using these triangular fountain codes and where all N pieces thus are decoded at once. The total number of operations to find the first k sub-blocks Mi, Mk from packets Pi, Pk is k2, i.e. considerable reduction of required operations compared to prior art.
The above described use of triangular fountain codes reduces the end-to-end communication time, i.e. the latency. To address the need for reliability of the transmission when using fountain codes to encode the message sub-blocks, the present disclosure provides, in an aspect, a feedback scheme. In known use of fountain codes, feedback is not used, or only limited type of feedback such as ACK and/or NACK is used.
In an embodiment, the present disclosure provides an even further reduced delay when using the triangular fountain codes. In the above described case, when the k:th packet is not received correctly, the receiving part awaits N packets to arrive, and then decodes the remaining packets. The receiving part may thus ignore the already decoded packets of the N packets that it receives. By introducing a feedback indicating successfully decoded message sub-blocks or indicating a first unsuccessfully decoded packet, the transmitting part may start the transmission with the first unsuccessfully decoded packet. The receiving part may thus continue the decoding at the k:th packet, and needs not await N packets first. This reduces latency even further.
The above is illustrated in figure 4, which is a sequence diagram illustrating communication according to an aspect of the present disclosure. The transmitting part 50 partitions a message M into a number of sub-blocks and encodes each sub- block into packets. The transmitting part 50 then transmits (arrow Ai) the packets to the receiving part 30 in a stream of packets. The receiving part 30 tries to decode each correctly received packet, until an error occurs (arrow A2). Upon encountering such error, the receiving part 30 transmits (arrow A3) feedback to the transmitting part 50, informing about the need of a retransmission. The feedback may comprise indicating which packet was not decoded correctly (refer also to figure 5). The feedback may alternatively comprise indicating that a certain number of packets have been decoded successfully (refer also to figure 6). The transmitting part 50, receiving this feedback information, then acts accordingly by e.g. retransmitting (arrow A4) the packets, starting from the packet indicated in the feedback information. The receiving part 30 then continues decoding (arrow A5). The receiving part 30 may thus receive and decode the remaining packets much faster than compared to conventional fountain codes. This also improves on the triangular fountain codes, in that the stream of packets may begin with a first erroneously decoded packet.
Figure 5 is a flow chart illustrating the above case of the receiving part 30 sending packet index of a packet not being successfully decoded. The method 10 is thus performed in the receiving part 30 and begins with the receiving part awaiting a packet. Once a packet (denoted packet k) is received (box 11), it is established whether the received packet k is successfully decoded (box 12). If yes, then the sub- block Mk of the message M can be decoded (block 14) and k is set equal to k+i, i.e. the receiving part 30 is ready for reception of the next packet. The receiving part 30 then awaits this next packet and flow continues back to initial box 11. If, in box 12, the packet k is not successfully decoded, then the receiving part 30 sends an indication about this to the transmitting part 50 (box 13). The receiving part may for example send packet index k to the transmitting part 50, which is then able to use this feedback information to start the transmission at packet k, i.e. instead of transmitting packet Pi, P2,..., Pk-i again, it starts the transmission of the stream of packets by first sending packet Pk, then packet Pk+i etc.
In an alternative embodiment, illustrated in figure 6, an alternative feedback is given, namely feedback comprising indication of a certain number of packets having been decoded successfully. The method 20 starts at box 21, wherein it is determined whether a packet k has been received. If no, the receiving part 30 continues awaiting a packet. When a packet is received, flow continues to box 22, wherein it is
determined if the number of decoded packets now equals a set number of packets. Thus, in box 22, it is determined whether the number of decoded packets is equal to j- 1. If so, then the receiving part 30 sends feedback information about this to the transmitting part 50. That is, flow continues to box 23, wherein the receiving part 30 sends packet index j to the transmitting part 50. In box 23, the receiving part 30 may also reset a counter to 1, the counter counting number of successfully decoded packets. If, in box 22, the number of successfully decoded packets is less than the set number, the receiving part 30 decodes the packet and the counter then counts up its current value by one. This method 20 makes the transmitting part 50 aware of which packets have been successfully received and thereby it does not need to include these packets in the coding of future transmissions; the feedback information informs the transmitting part 50 about the number of consecutive packets that have been decoded successfully and thus corresponding message sub-blocks having been obtained. If the first k-i packets are decoded successfully, then the index k is transmitted. This is thus repeated for every batch of j-i packets. The number of packets of a batch to acknowledge should not be too small (e.g. a single packet), since this reduces efficiency.
The transmitting part 50 thus receives the feedback from the receiving part 30, which feedback is the index k. The transmitting part 50 then sends the packets of the packet stream according to the triangular structured fountain codes, starting at encoded message sub-block Mk (i.e. packet k) and continues with encoded message sub-block Mk+i (i.e. packet k+i), etc. but not including packets that have been acknowledged.
The embodiments of figures 5 and 6 may be combined, such that the receiving part 30 in the method 10 described in relation to figure 5, keeps count of number of successfully decoded packets according to the method 20 described in relation to figure 6. The receiving part 30 may thus acknowledge batches of packets, and when detecting an erroneously decoded packet, send the corresponding packet index. The transmitting part 50 may then start at the indicated packet and omit to include acknowledged packets in the stream of packets.
The described features of the various embodiments may be combined in different ways, and figure 7 is a flow chart over steps of a method in a receiving device in accordance with the present disclosure. A method 100 is thus provided which may be performed in a receiving device 30 for decoding a message M. The message M is encoded by a transmitting device 50 into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn. The method 100 comprises:
- receiving 101 a packet Pk, and:
- for the packet being successfully decoded, decoding 102 corresponding message sub-block Mk,
- for the packet being erroneously decoded, transmitting 103 to the transmitting part 50 feedback information indicating a packet index of the
erroneously decoded packet.
In an embodiment, the method 100 comprises repeating the receiving 101 and decoding 102 until the entire message M has been decoded or until a packet is erroneously decoded or received.
In an embodiment, the method 100 comprises, upon erroneously decoding a packet, awaiting 104 reception of retransmission of the packet that was the first erroneously decoded packet and then continuing decoding 102 the message M.
In an embodiment, the method 100 comprises transmitting, to the transmitting device 50 feedback information indicating a number of packets having been successfully decoded. This enables the transmitting device to only transmit packets of the message M for which such feedback information has not been received. A more efficient transmission scheme is thus enabled.
Figure 8 illustrates schematically a receiving device and means for implementing methods of the present disclosure. The receiving device 30 comprises at least one receiver 36 and one transmitter 37 and antenna devices for communicating over a wireless link with a transmitting device 50.
The receiving device 30 comprises a processor 31 comprising any combination of one or more of a central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit etc. capable of executing software instructions stored in a memory 33, which can thus be a computer program product 33.
The receiving device 30 may comprise further components and devices
conventionally used for decoding signals, e.g. a receiver chain comprising the receiver 36, a demodulator 35 and decoder 34, which are operatively interconnected such as to provide data relating to the received signal to the processor 31.
Correspondingly, the receiving device 30 may comprise further components and devices conventionally used for encoding signals, e.g. a transmitter chain comprising an encoder 39, a modulator 38 and the transmitter 37, which are operatively interconnected such as to enable transmission of signals processed by the processor 31·
The processor 31 can be configured to execute any of the various embodiments of the methods as have been described, e.g. in relation to figure 7. In particular, the receiving device 30 is configurable for decoding a message M, the message M being encoded by a transmitting part 50 into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn. The receiving device 30 comprises a processor 31 and memory 33, the memory 33 containing instructions executable by the processor 31, whereby the receiving device 30 is operative to:
- receive a packet, and:
- for the packet being successfully decoded, configured to decode corresponding message sub-block Mi,..., Mn,
- for the packet being erroneously decoded, configured to transmit to the transmitting part 50 feedback information indicating a packet index of the
erroneously decoded packet. The receiving device 30 may thus comprise a processor 31 and a memory 33 storing instructions that, when executed by the processor 31, causes the receiving device 30 to perform the various steps of the method. The receiving device 30 may for example comprise processing circuitry or processing means configured to receive a packet, and for the packet being successfully decoded, configured to decode corresponding message sub-block Mi,..., Mn, and for the packet being erroneously decoded, configured to transmit to the transmitting part 50 feedback information indicating a packet index of the erroneously decoded packet. The same processing circuitry or processing means or other processing circuitry may be configured to perform such encoding, reception of a packet Pi, Pn (e.g. with the aid of receiving circuitry etc.), and transmission of feedback (e.g. with the aid of transmitting circuitry etc.) to the transmitting device 50.
In an embodiment, the receiving device 30 is configured to repeat the receiving and decoding until the entire message M has been decoded or until the packet is erroneously decoded.
In an embodiment, the receiving device 30 is configured to, upon erroneously decoding a packet, await reception of a retransmission of the packet that was the first erroneously decoded packet and configured to continue decoding the message M.
In an embodiment, the receiving device 30 is configured to transmit, to the transmitting device 50 feedback information indicating a number of packets having been successfully decoded.
Still with reference to figure 8, the memory 33 can be any combination of read and write memory (RAM) and read only memory (ROM). The memory 33 may also comprise persistent storage, which, for example, can be any single one or
combination of magnetic memory, optical memory, solid state memory or even remotely mounted memory.
A data memory (not illustrated) may also be provided for reading and/or storing data during execution of software instructions in the processor 31. Such data memory can be any combination of read and write memory (RAM) and read only memory (ROM).
The present disclosure also encompasses a computer program product 33 comprising a computer program 32 for implementing the methods as described above, and a computer readable means (i.e. storage means) on which the computer program 32 is stored.
The present disclosure thus comprises a computer program for a receiving device 3 for decoding a message M, the message M being encoded by a transmitting part 50 into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn. The computer program 32 comprises computer program code, which, when run on the receiving device 30 causes the receiving device 30 to:
- receive a packet, and:
- for the packet being successfully decoded, decode corresponding message sub-block,
- for the packet being erroneously decoded, transmit to the transmitting device 50 feedback information indicating a packet index of the erroneously decoded packet.
The computer program product 33, or the memory, thus comprises instructions executable by the processor 31. Such instructions maybe comprised in a computer program, or in one or more software modules or function modules.
An example of an implementation using function modules/software modules is illustrated in figure 9, in particular illustrating receiving device 30 comprising function modules for implementing methods of the present disclosure. The receiving device 30 comprises first means, e.g. a first function module 41, for receiving a packet. The receiving device 30 comprises second means, e.g. a second function module 42, for decoding the packet. The receiving device 30 comprises third means, e.g. a third function module 43, for transmitting to the transmitting device 50 feedback information indicating a packet index of the erroneously decoded packet.
The means, e.g. the functional modules 41, 42, 43, can be implemented using software instructions such as computer program executing in a processor and/ or using hardware, such as application specific integrated circuits, field programmable gate arrays, discrete logical components etc. The receiving device 30 may comprise further means for implementing the various features and steps of the embodiments of the present disclosure that have been described. For example, the receiving device 30 may comprise means, e.g. a functional module, for awaiting reception of retransmission of the packet that was the first erroneously decoded packet and continuing decoding the message M.
Figure 10 illustrates a flow chart over steps of a method in a transmitting device in accordance with the present disclosure. The method 200 may thus be performed in a transmitting device 50 for transmitting a message M. The method 200 comprises encoding 201 a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn.
The method 200 comprises transmitting 202 the n packets Pi, Pn.
The method 200 comprises receiving 203, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet.
In an embodiment, the method 200 comprises retransmitting 204 the encoded message M starting with the packet corresponding to the received packet index.
In an embodiment, the method 200 comprises receiving, from the receiving device 30 feedback information indicating a number of packets having been successfully decoded, and in response thereto transmitting only packets of the message M for which such feedback information has not been received.
Figure 11 illustrates schematically a transmitting device and means for implementing methods of the present disclosure. The transmitting device 50 comprises at least one receiver 56 and one transmitter 57 and antenna devices for communicating over a wireless link with a receiving device 30.
The transmitting device 50 comprises a processor 51 comprising any combination of one or more of a central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit etc. capable of executing software instructions stored in a memory 53, which can thus be a computer program product 53.
The transmitting device 50 may comprise further components and devices
conventionally used for decoding signals, e.g. a receiver chain comprising the receiver 56, a demodulator 58 and decoder 59, which are operatively interconnected such as to provide data relating to the received signal to the processor 51.
Correspondingly, the transmitting device 50 may comprise further components and devices conventionally used for encoding signals, e.g. a transmitter chain comprising an encoder 54, a modulator 55 and the transmitter 57, which are operatively interconnected such as to enable transmission of signals processed by the processor 51·
The processor 51 can be configured to execute any of the various embodiments of the methods as have been described, e.g. in relation to figure 10. In particular, the transmitting device 50 is configurable for transmitting a message M. The
transmitting device 50 comprises a processor 51 and memory 53, the memory 53 containing instructions executable by the processor 51, whereby the transmitting device 50 is operative to:
- encode a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn,
- transmit the n packets Pi, Pn, and
- receive, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet.
The transmitting device 50 may thus comprise a processor 51 and a memory 53 storing instructions that, when executed by the processor 51, causes the transmitting device 50 to perform the various steps of the method. The transmitting device 50 may for example comprise processing circuitry or processing means configured to perform the encoding of a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn. The same processing circuitry or processing means or other processing circuitry may be configured to transmit the packets Pi, Pn (via transmitting circuitry etc.), and to receive, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet and retransmitting the encoded message M starting with the packet corresponding to the received packet index. In an embodiment, the transmitting device 50 is configured to retransmit the encoded message M starting with the packet corresponding to the received packet index.
In an embodiment, the transmitting device 50 is configured to receive, from the receiving device 30 feedback information indicating a number of packets having been successfully decoded, and in response thereto transmitting only packets of the message M for which such feedback information has not been received.
Still with reference to figure 11, the memory 53 can be any combination of read and write memory (RAM) and read only memory (ROM). The memory 53 may also comprise persistent storage, which, for example, can be any single one or
combination of magnetic memory, optical memory, solid state memory or even remotely mounted memory.
A data memory (not illustrated) may also be provided for reading and/or storing data during execution of software instructions in the processor 51. Such data memory can be any combination of read and write memory (RAM) and read only memory (ROM).
The present disclosure also encompasses a computer program product 53 comprising a computer program 52 for implementing the embodiments of the method as has been described, and a computer readable means (i.e. storage means) on which the computer program 52 is stored.
The present disclosure thus comprises a computer program for a computer program 52 for a transmitting device 50 for transmitting a message M. The computer program 52 comprises computer program code, which, when run on the transmitting device 50 causes the transmitting device 50 to:
- encode a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn,
- transmit the n packets Pi, Pn, and
- receive, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet. The computer program product 53, or the memory, thus comprises instructions executable by the processor 51. Such instructions may be comprised in a computer program, or in one or more software modules or function modules.
An example of an implementation using function modules/software modules is illustrated in figure 12, in particular illustrating a transmitting device 50 comprising function modules for implementing methods of the present disclosure. The transmitting device 50 comprises first means, e.g. a first function module 61, for encoding a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn. The transmitting device 50 comprises second means, e.g. a second function module 62, for
transmitting the n packets Pi, Pn. The transmitting device 50 comprises third means, e.g. a third function module 63, for receiving, from a receiving device 30, a feedback signal indicating a packet index of an erroneously decoded packet.
The means, e.g. the functional modules 61, 62, 63, can be implemented using software instructions such as computer program executing in a processor and/or using hardware, such as application specific integrated circuits, field programmable gate arrays, discrete logical components etc.
The transmitting device 50 may comprise further means for implementing the various features and steps of the embodiments of the present disclosure that have been described. For example, the transmitting device 50 may comprise means, e.g. a functional module, for retransmitting the encoded message M starting with the packet corresponding to the received packet index.
The invention has mainly been described herein with reference to a few
embodiments. However, as is appreciated by a person skilled in the art, other embodiments than the particular ones disclosed herein are equally possible within the scope of the invention, as defined by the appended patent claims.

Claims

Claims
1. A method (ioo) performed in a receiving device (30) for decoding a message M, the message M being encoded by a transmitting device (50) into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub- block Mi,..., Mn, the method (100) comprising:
- receiving (101) a packet, and:
- for the packet being successfully decoded, decoding (102) corresponding message sub-block,
- for the packet being erroneously decoded, transmitting (103) to the transmitting part (50) feedback information indicating a packet index of the erroneously decoded packet.
2. The method (100) as claimed in claim 1, comprising repeating the receiving (101) and decoding (102) until the entire message M has been decoded or until a packet is erroneously decoded or received.
3. The method (100) as claimed in claim 1 or 2, comprising, upon erroneously decoding a packet, awaiting (104) reception of retransmission of the packet that was the first erroneously decoded packet and continuing decoding (102) the message M.
4. The method (100) as claimed in any of the preceding claims, comprising
transmitting, to the transmitting device (50) feedback information indicating a number of packets having been successfully decoded.
5. A receiving device (30) for decoding a message M, the message M being encoded by a transmitting part (50) into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn, the receiving device (30) comprising a processor (31) and memory (33), the memory (33) containing instructions executable by the processor (31), whereby the receiving device (30) is operative to:
- receive a packet, and:
- for the packet being successfully decoded, configured to decode corresponding message sub-block Mi,..., Mn, - for the packet being erroneously decoded, configured to transmit to the transmitting part (50) feedback information indicating a packet index of the erroneously decoded packet.
6. The receiving device (30) as claimed in claim 5, configured to repeat the receiving and decoding until the entire message M has been decoded or until the packet is erroneously decoded.
7. The receiving device (30) as claimed in claim 5 or 6, configured to, upon
erroneously decoding a packet, await reception of a retransmission of the packet that was the first erroneously decoded packet and configured to continue decoding the message M.
8. The receiving device (30) as claimed in any of claims 5-7, configured to transmit, to the transmitting device (50) feedback information indicating a number of packets having been successfully decoded.
9. A computer program (32) for a receiving device (3) for decoding a message M, the message M being encoded by a transmitting part (50) into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub- block Mi,..., Mn, the computer program (32) comprising computer program code, which, when run on the receiving device (30) causes the receiving device (30) to:
- receive a packet, and:
- for the packet being successfully decoded, decode corresponding message sub-block,
- for the packet being erroneously decoded, transmit to the transmitting device (50) feedback information indicating a packet index of the erroneously decoded packet.
10. A computer program product (33) comprising a computer program (32) as claimed in claim 9, and a computer readable means on which the computer program (32) is stored.
11. A method (200) performed in a transmitting device (50) for transmitting a message M, the method (200) comprising: - encoding (201) a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn,
- transmitting (202) the n packets Pi, Pn (203), and
- receiving (203), from a receiving device (30), a feedback signal indicating a packet index of an erroneously decoded packet.
12. The method (200) as claimed in claim 11, comprising retransmitting (204) the encoded message M starting with the packet corresponding to the received packet index.
13. The method (200) as claimed in claim 11 or 12, comprising receiving, from the receiving device (30) feedback information indicating a number of packets having been successfully decoded, and in response thereto transmitting only packets of the message M for which such feedback information has not been received.
14. A transmitting device (50) for transmitting a message M, the transmitting device (50) comprising a processor (51) and memory (53), the memory (53) containing instructions executable by the processor (51), whereby the transmitting device (50) is operative to:
- encode a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn,
- transmit the n packets Pi, Pn, and
- receive, from a receiving device (30), a feedback signal indicating a packet index of an erroneously decoded packet.
15. The transmitting device (50) as claimed in claim 14, configured to retransmit the encoded message M starting with the packet corresponding to the received packet index.
16. The transmitting device (50) as claimed in claim 14 or 15, configured to receive, from the receiving device (30) feedback information indicating a number of packets having been successfully decoded, and in response thereto transmitting only packets of the message M for which such feedback information has not been received.
17. A computer program (52) for a transmitting device (50) for transmitting a message M, the computer program (52) comprising computer program code, which, when run on the transmitting device (50) causes the transmitting device (50) to:
- encode a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn,
- transmit the n packets Pi, Pn, and
- receive, from a receiving device (30), a feedback signal indicating a packet index of an erroneously decoded packet.
18. A computer program product (53) comprising a computer program (52) as claimed in claim 17, and a computer readable means on which the computer program (52) is stored.
19. A receiving device (30) for decoding a message M, the message M being encoded by a transmitting part (50) into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn, the receiving device (30) comprising:
- means (41) for receiving a packet, and:
- means (42) for decoding, for the packet being successfully decoded, corresponding message sub-block Mi,..., Mn,
- means (43) for transmitting, for the packet being erroneously decoded, to the transmitting part (50) feedback information indicating a packet index of the erroneously decoded packet.
20. A transmitting device (50) for transmitting a message M, the transmitting device (50) comprising:
- means (61) for encoding a message M into n packets Pi,..., Pn using triangularly structured fountain codes, each packet being an encoded message sub-block Mi,..., Mn,
- means (62) for transmitting the n packets Pi, Pn, and - means (63) for receiving, from a receiving device (30), a feedback signal indicating a packet index of an erroneously decoded packet.
PCT/SE2014/050368 2014-03-27 2014-03-27 Method and devices for decoding WO2015147711A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/SE2014/050368 WO2015147711A1 (en) 2014-03-27 2014-03-27 Method and devices for decoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SE2014/050368 WO2015147711A1 (en) 2014-03-27 2014-03-27 Method and devices for decoding

Publications (1)

Publication Number Publication Date
WO2015147711A1 true WO2015147711A1 (en) 2015-10-01

Family

ID=50489370

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/SE2014/050368 WO2015147711A1 (en) 2014-03-27 2014-03-27 Method and devices for decoding

Country Status (1)

Country Link
WO (1) WO2015147711A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111092696A (en) * 2019-08-02 2020-05-01 中兴通讯股份有限公司 Transmission method of wireless communication, terminal equipment and storage medium
WO2021189242A1 (en) * 2020-03-24 2021-09-30 Qualcomm Incorporated Techniques for providing an adaptive coding rate in wireless communications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070260957A1 (en) * 2006-05-03 2007-11-08 Emina Soljanin Encoded transmission
US7924761B1 (en) * 2006-09-28 2011-04-12 Rockwell Collins, Inc. Method and apparatus for multihop network FEC encoding
US20120117446A1 (en) * 2010-11-09 2012-05-10 Qualcomm, Incorporated Packet-level erasure protection coding in aggregated packet transmissions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070260957A1 (en) * 2006-05-03 2007-11-08 Emina Soljanin Encoded transmission
US7924761B1 (en) * 2006-09-28 2011-04-12 Rockwell Collins, Inc. Method and apparatus for multihop network FEC encoding
US20120117446A1 (en) * 2010-11-09 2012-05-10 Qualcomm, Incorporated Packet-level erasure protection coding in aggregated packet transmissions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AHMAD S ET AL: "Adaptive Unicast Video Streaming With Rateless Codes and Feedback", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 20, no. 2, 1 February 2010 (2010-02-01), pages 275 - 285, XP011295588, ISSN: 1051-8215 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111092696A (en) * 2019-08-02 2020-05-01 中兴通讯股份有限公司 Transmission method of wireless communication, terminal equipment and storage medium
WO2021189242A1 (en) * 2020-03-24 2021-09-30 Qualcomm Incorporated Techniques for providing an adaptive coding rate in wireless communications

Similar Documents

Publication Publication Date Title
CN111512603B (en) Data transmission method and first equipment
US8522124B2 (en) Semiconductor device and decoding method thereof
CN103297186B (en) Data transfer equipment, data communication system and data transferring method
US8312362B1 (en) Determining data transmission error and/or checking or confirming such error determinations
CN101938334B (en) Adaptive error control method combining random network coding and automatic repeat request
WO2021209037A1 (en) Data recovery method and apparatus
KR102173089B1 (en) Interface circuit and packet transmission method thereof
DE602005007730D1 (en) OPERATION WITH INCREMENTAL REDUNDANCY IN A WIRELESS COMMUNICATION NETWORK
CN111837342B (en) Bit error correction for wireless retransmission communication systems
JP2012156972A5 (en)
JP2008011460A (en) Turbo decoder
WO2019091414A1 (en) Harq number determination method, network device, terminal, and computer storage medium
CN103229444A (en) Coding/decoding method, device and system
KR101141437B1 (en) Forward error correction of an error acknowledgement command protocol
WO2015147711A1 (en) Method and devices for decoding
JP2017208710A5 (en)
US6724327B1 (en) Lower latency coding/decoding
EP1497926B1 (en) Diversity scheme for error control coding in a system with prioritized data
WO2018133415A1 (en) Method and device for coding and decoding data of physical coding sublayer and storage medium
US8416717B2 (en) Signals communication apparatus
CN105814800B (en) Message decoding and corresponding message encoding
KR101265596B1 (en) Method and Apparatus For Transmitting ACK/NACK In Multiple Codeword Type MIMO Wireless Communication System
CN105007140A (en) Method and device for processing HARQ (hybrid automatic repeat request) based on CRC (cyclic redundancy check)
JP5276673B2 (en) System and method for providing heterogeneous message protection
CN102594535A (en) Adaptive weighted HARQ (hybrid automatic repeat request) combination method and device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14717888

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase
122 Ep: pct application non-entry in european phase

Ref document number: 14717888

Country of ref document: EP

Kind code of ref document: A1