The present invention relates to the technological field of data transfer in bursts, and more particularly to protection of the data to be transmitted against transmission errors, in particular the loss of entire bursts.
In the context of the present document, bursts are assemblies of symbols representing data to be transmitted. Each burst is transmitted during a time period which is typically short relative to the latency time between the transmission of two successive bursts by one and the same service. The sequences of bursts from a plurality of services (e.g. different television channels) may be interleaved, but this will not subsequently be of any significance. Each burst comprises a data section (comprising one or more blocks of information symbols) and an error protection section (comprising one or more blocks of redundancy symbols). At the time of transmission, two types of symbol errors may arise: incorrect symbols are received or symbols are lost (or “erased”). The blocks of redundancy symbols constitute an error protection code.
Data transfer by burst proceeds, for example, in the context of a DVB (digital video broadcasting) system.
A conventional solution for generating a block of redundancy symbols of a burst consists in applying a coding function to the block of information symbols of the same burst. The result is “intra-burst” error protection, which allows the receiver to correct transmission errors within the block o+f information symbols of a received burst. For this approach to work, the burst to be corrected must arrive at its destination. “Intra-burst” protection is used in particular in digital video broadcasting, for example according to the standard DVB-H (digital video broadcasting-handheld). “Intra-burst” protection is not suitable for the erasure of entire bursts in the sequence received bursts. However, such situations are quite frequent for certain communication links, for example between a satellite and a mobile terminal.
Document US 2009/0006927 proposes “inter-burst” protection which makes it possible to remedy the loss of entire bursts. According to the process disclosed in said document, the data packets are grouped according to priority levels. Error correction code words specific to each group are generated on the data packets, belonging to the group, of at least two bursts of a first assembly of bursts. The correction codes thus obtained are transmitted in the error correction section of at least one burst of a second assembly of bursts.
Document US 2010/0031121 also describes an “inter-burst” protection process, in which an error correction code word is calculated on the basis of interleaved data originating from a plurality of bursts of an elementary data stream. Document U.S. Pat. No. 5,870,412 discloses an “interpacket” protection process, in which an error correction code composed of the XOR sum (“OR”-exclusive logic) of a predetermined number (>1) of preceding payload packets is attached to each packet.
Document ETSI TS 102 584 V1.1.1 (2008-12), “Digital Video Broadcasting (DVB); DVB-SH Implementation Guidelines” available on the website of the European Telecommunications Standards Institute (ETSI) describes a an “inter-burst” protection process (see in particular the illustrations on pages 62 and 63). According to this process, each transmitted burst contains an error correction section calculated on the basis of interleaved data from multiple previous bursts. Each burst of datagrams is distributed over B encoding matrices. An error correction code word is calculated for each encoding matrix and attached to a burst of datagrams, optionally after interleaving with one or more other error correction code words. Each item of data is protected just once, i.e. it is used in the calculation of just one error correction code word. Similar encoding processes are also known from ETSI TR 102 993 V.1.1.1 (2011-02) and “A Multi-Burst Sliding Encoding for Mobile Satellite TV Broadcasting” by M. Ismail et al., Research Report No. 6785, INRIA. These documents describe MPE-IFEC processes (producing “inter-burst” protection), in which the error correction code words are interleaved between them before the blocks thus obtained are attached to the bursts of datagrams. As in the previous references, each item of data is protected just once, i.e. it is used in the calculation of just one error correction code word.
The invention aims to achieve better data protection in a communication system using bursts.
The invention proposes a process of encoding information data in a sequence of bursts, of which each burst comprises a block of information symbols and a block of redundancy symbols (i.e. a protection or correcting code word block). The process implements “inter-burst” protection as a result of the block of redundancy symbols of the current burst of the sequence being generated from information symbols of the blocks of information symbols of a plurality of bursts of the sequence. According to the invention, generation of the block of redundancy symbols of the current burst includes the calculation of a sum (vectorial, i.e. coordinate by coordinate in the case of representation by coordinates) of a series of coding values relating to a series of bursts, each coding value of the series of coding values being obtained by a respective coding function applied to the block of information symbols of the corresponding burst of the series of bursts.
For example, if the series of bursts comprises the two bursts immediately preceding the current burst, a first coding value is calculated on the block of information symbols of the burst immediately preceding the current burst and a second coding value is calculated on the block of information symbols of the burst positioned in the sequence of bursts two places in front of the current burst. The block of redundancy symbols of the current burst is obtained, in this example, by vectorial addition of the first and second coding values.
It should be noted that, in the context of the present document, the term “coding” or “code” relate solely to the notion of correction coding. A coding function is thus a function which, when applied to a block of symbols, gives the redundancy symbols of a correcting code (for example of the Reed-Solomon, turbo-code, LDCP, BCH, Reed-Muller, Raptor, RaptorQ type etc.) relating thereto. It should be noted that, in the context of this document, the coding function uses all the symbols of the block to which it is applied in such a way that, if the value of any single symbol of the block is changed, the coding value (the result of the application of the coding function to the block of symbols) also changes. As far as the coding value is concerned, it should be noted that it normally corresponds to a vector of symbols, i.e. a number composed of a plurality of symbols. Preferably, the coding function corresponds to the multiplication by a generator matrix of a correcting code (for example of the Reed-Solomon, turbo-code, LDCP, BCH, Reed-Muller, Raptor, RaptorQ type etc.) or to the multiplication by a sub-matrix of such a generator matrix.
It should also be noted that the term “information” is used in the present context to distinguish the data or symbols to be protected (i.e. data blocks or redundancy symbols) from the redundancy symbols. Use of the term “information” does not therefore necessarily imply that the symbols, blocks, etc. thus qualified actually carry information (although this would normally be the case), or indeed only information. For example, some of the information symbols could be padding symbols added to reach a predefined block size.
The series of bursts may be a series of bursts which precede, e.g. immediately precede, the current burst. In practice, it will always be preferred for the series of bursts to be a series of bursts which follows (e.g. immediately follows) the current burst. The series of bursts could also extend before and after the current burst (wherein the latter may or may not be part of the series).
According to one advantageous embodiment of the invention, each burst comprises an ordered structure of blocks of information symbols and an ordered structure of blocks of redundancy symbols, the number (“interleaving depth” of the coding) of blocks of information symbols in the ordered structure of blocks of information symbols being equal to the number of blocks of redundancy symbols in the ordered structure of blocks of redundancy symbols. Generation of a block located in a certain position of the ordered structure of blocks of redundancy symbols of the current burst then comprises calculation of a sum of a series of coding values relating to the blocks located in the corresponding position in the ordered structure of blocks of information symbols of the bursts of the series of bursts. Each coding value of the series of coding values is in this case obtained by a respective coding function, applied to the block of information symbols located in the corresponding position in the ordered structure of blocks of information symbols of the corresponding burst of the series of bursts. It should be noted that the blocks of information symbols are not necessarily all the same size, and the same is true of the blocks of redundancy symbols.
If, in the previous example, each burst contains a string of blocks of information symbols and a string of blocks of redundancy symbols, the first coding value is calculated for each of the blocks of information symbols of the burst immediately preceding the current burst and the second coding value is calculated for each of the blocks of information symbols of the burst located in the sequence of bursts two places before the current burst. The block of redundancy symbols of the current burst located at a position “i” in the string is obtained by adding the first and second coding values calculated on the blocks of information symbols to the position “i” in the previous bursts.
The principle benefit of the method according to the invention is that all the information symbols of one and the same burst are protected by the same redundancy data, whereas in conventional inter-burst protection (see document ETSI TS 102 584 V1.1.1), these symbols are integrated into different code words, which causes differences in correction.
According to an advantageous variant of the invention, generation of the block of redundancy symbols of the current burst comprises generation of a first sub-block and of a second sub-block (and optionally of other sub-blocks) of the block of redundancy symbols of the current burst. Generation of the first sub-block includes:
According to this variant, the first and second sub-blocks of the block of redundancy symbols are therefore calculated from different series of bursts preceding the current burst. The first and second series of bursts may be series of bursts which precede, e.g. immediately precede, the current burst (but of different lengths). They may also be series which follow, e.g. immediately follow, the current burst in the sequence. According to another variant, one of the series precedes the current burst, while the other follows it. One and/or the other of the series could also extend either side of the current burst.
The advantage of this variant is to propose a good compromise between the correction capacity of the system, which is better when the series of bursts is long, and the decoding time, which is better when the series of bursts is short. This compromise makes it possible simultaneously to satisfy multiple receivers observing different noise levels.
Let us now consider the case where each burst comprises a number of blocks of information symbols and the same number of blocks of redundancy symbols, which are organised into respective ordered structures. In this case, the generation of a block of redundancy symbols in a position “i” in the ordered structure of blocks of redundancy symbols of the current burst comprises the generation of a first sub-block and of a second sub-block, generation of the first sub-block including:
It will be understood that the step of generating the block of redundancy symbols may be repeated for one or more subsequent bursts which in turn become the current burst.
Preferably, the coding functions remain unchanged during repetition of the step of generating the block of redundancy symbols for the following bursts. Alternatively, the coding functions are changed cyclically during repetition of the step of generating the block of redundancy symbols for the subsequent bursts.
The number of blocks of information symbols in the ordered structure of blocks of information symbols is advantageously in the range from 1 to 1000.
The information symbols and redundancy symbols are typically of elements of a finite field F, such as for example F2 or F256.
Other distinctive features and characteristics of the invention will be revealed by the detailed description of some advantageous embodiments given below by way of example, with reference to the appended drawings, in which:
The internal structure of a burst is shown in greater detail in
Embodiments of the invention will firstly be illustrated below for the case PE=1. To facilitate notation, the superscript j, i.e. the number of the block of information or redundancy symbols in question, will be omitted.
A conventional solution for obtaining the block of redundancy symbols Ri for the burst Bi consists of applying a coding function f to the block of information symbols Di; notation is as follows: Ri=f(Di). Since the symbols ru(i), u=0, LR-1, of the block Ri are elements of the finite field F, the following applies:
in which dv(i), v=0, LD-1, are symbols of the block Di (and therefore of the elements of the finite field F) and in which αu,v are the coefficients in F of the generator matrix Ai of the correcting code (of the coding function), for example of the Reed-Solomon, turbo-code, LDPC, BCH, Reed-Muller, Raptor, RaptorQ or other type. The following therefore applies: Ri=Di Ai, in which Ri and Di are considered as line vectors.
According to one preferred embodiment of the invention, it is proposed to construct the redundancy block Ri of the burst Bi from blocks of information symbols Di-s, Di-s+(t-i) from a series of t bursts preceding the current burst Bi in the sequence. The number s is an integer indicating the start of the series of t bursts, with s≧t. Specifically, the block of redundancy symbols Ri of the current burst is obtained by addition (defined on FL
Strictly speaking, for a given burst Bi, the following applies:
in which cu(w), u=0, LR-1 are the coefficients in F of the vector Cw and in which the αu,v(w), u=0, . . . , LR-1, v=0, LD-1 are the coefficients in F of the generator matrix Aw of the correcting code (i.e. of the coding function) associated with the position w of the series of bursts (Bw)w=i-s, . . . , i-s+(t-i). The symbols ru(i), u=0, LR-1, again denote the coefficients in F of the block R. This may be written as follows:
A first way of obtaining the coefficients of the generator matrices Aw, w=i-s, i-s+(t-1), is to perform random sampling.
To construct the generator matrix Aw in another way, let us consider a generator matrix of a conventional Reed-Solomon, turbo-code, LDPC, BCH, Reed-Muller, Raptor or RaptorQ correcting code or the like, with t-LD rows and t-LR columns. This generator matrix, which we will designate M, uniquely characterises a systematic linear code of the dimensions k·no., k=t·LD being the length of the message and n=t·LD+t·LR the dimension of the code. The matrix M can be divided into t·t sub-matrices Mu,v, μ=0, . . . , t-1 and v=0, . . . , t-1, each of which contains LD rows and LR columns:
It is proposed to calculate the redundancy blocks R, as follows:
in which the notation “
β=0, . . . , t-1. It should be noted that according to this construction, the (absolute) position i of the burst Bi in the sequence of bursts is important, since the correcting code depends thereon, unless
∀μv. If
∀μv, the coding functions remain unchanged during repetition of the step of generating the block of redundancy symbols for the subsequent bursts. Otherwise, as the index i increases, the coding functions change cyclically, with a period t.
M
0,0
M
1,0
M
1,1
M
0,1
M
0,0
M
1,0
M
1,1
M
0,1
The block of redundancy symbols of a column x of the table is obtained by calculating the sum of the matrix products of the blocks of information symbols of the first column of the table with the respective matrices of the column x.
Adopting more conventional notation, where [.] represents a vector or a matrix:
As indicated above, the matrix
preferably results from a conventional correcting code.
The benefit of this construction is that, during decoding, the sub-matrices Mu,v of the base matrix M appear, which makes it possible to use the properties of the corresponding code, in particular at the level of the decoding algorithm, and to benefit from the correction capacity of this code. For example, if the bursts B0, B1, B3 and B4 are received, the block of information symbols D2 of burst B2 can be found using the equations R3=D1 M1,1+D2 M0,1 and R4=D2 M0,0+D3 M1,0, which will reveal the matrices M0,0 and M0,1 which form a sub-matrix of the matrix M. If, for example, the correcting code selected is a Reed-Solomon code (ideal for an erasure channel), recovery is optimal, i.e. all the redundancy symbols are useful.
Strictly speaking, for a given z ∈ {0, . . . , Z} and burst Bi, the following applies:
in which cu(w), u=0, Lz-1 are the coefficients in F of the vector Cw and in which the αu,v(w), u=0, . . . , Lz-1, v=0, LD-1 are the coefficients in F of the generator matrix Aw,z of the correcting code (i.e. of the coding function) associated with the position w of the series of bursts (Bw)w==i-s(z), . . . , i-s(z)+(t(z)-1). The symbols ru(i), u=0, Lz-1 here denote the coefficients in F of the block Ri,z. This may be written as follows:
The generator matrices Aw,z may be constructed, individually for each z ∈ {0, . . . , Z} in a manner similar to the matrices Aw discussed above, with substitution of t(z) instead of t. Z independent systems of coding are thus obtained. They could even be implemented on different finite fields.
Let us consider, for example, a generator matrix M(z) of t(z)·LD rows and t(z)·Lz columns of a correcting code. The matrix M(z) can be divided into t(z)·t(z) sub-matrices M(z)u,v, μ=0, . . . , t(z)-1 and v=0, t(z)-1, each of which contains LD rows and Lz columns:
The redundancy sub-blocks R,,, may be obtained by:
in which the notation “
In the example illustrated in
It should be noted that as the index i (number of burst in sequence) increases, the coding functions change cyclically, with a period t(0) or t(1) respectively.
According to this example, the zapping time is reduced thanks to the redundancy block based on the short series S0 and increased reliability is achieved thanks to the redundancy block based on the longer series S1.
There is another way of constructing the generator matrix Aw,z. The following may be noted: fmax=maxz=0, . . . , z(t(z)). A generator matrix is constructed from a correcting code M′ with tmax·Z·LD rows and tmax·(Lz=0Lz=1+ . . . +Lz=Z-1) columns. M′ can be divided into tmax·Z rows and tmax·Z columns of sub-matrices M′u,v μ=0, . . . , tmax-1 and v=0, . . . , tmax-1, each of which is of the size LD·LZ.
The redundancy sub-blocks Ri,z may be obtained by:
in which the notation “
With, for example, Z=2, s(0)=t(0)=2, s(1)=t(1)=4, the matrix M′ is composed of 8×8 sub-blocks and the coding system is summarised using the following table:
Only the case PE=1 has hitherto been discussed. It is easy to extend the above examples to the case PE>1 by adding the numbering index j, j=0, PE-1, of the information or redundancy symbol blocks in the stated formulae. For each j, the following is thus obtained:
In principle, the matrices Awj or Aw,zj may be individually selected for each j. Preferably, however, the same matrices Aw or Aw,z are used for all the indices j.
At the level of the receiver, the coding functions (and thus the matrices representing them) are known. When a burst is not correctly received or is not received at all, the receiver resolves a system of equations to reconstruct the lost information data. Suitable reconstruction algorithms are within the abilities of a person skilled in the art on the basis of the description of the encoding process according to the invention. If series of bursts of different lengths are used to obtain a plurality of systems of redundancy sub-blocks, reconstruction of lost data may be performed on the basis of redundancy blocks of just one or multiple series, as required. If the lost data can be reconstructed on the basis of the shortest series, a very short latency time is achieved. If the loss is on a larger scale (e.g. over multiple consecutive bursts), the redundancy of the shortest series may possibly no longer be sufficient for reconstruction and the longer series will have to be taken into account in respect of reconstruction. The longer series therefore ensure increased overall reliability of the system.