Designing basis matrices for quasi-cyclic LDPC codes
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-04-24
- Publication Date
- 2026-03-04
Smart Images

Figure EP2024061163_31102024_PF_FP_ABST
Abstract
Description
[0001] DESCRIPTION
[0002] Title: Method for encoding source data, corresponding encoding device and computer program.
[0003] 1. Field of the invention
[0004] The field of invention is digital communications.
[0005] More specifically, the invention relates to error-correcting codes, in particular, but not exclusively, error-correcting codes of the LDPC (Low Density Parity Check) type. The invention finds applications in particular in the field of data storage or transmission, for example via wireless communications (for example by radio waves or unguided optical waves) or wired communications (for example by optical fiber or electric cable).
[0006] In particular, the invention finds applications in all fields where one seeks to offer good transmission reliability, for example for radio transmissions (Wifi®, 5G, 6G, etc.).
[0007] 2. Prior art
[0008] Figure 1 illustrates a transmitter in a digital transmission chain. Such a transmitter uses conventional signal processing modules.
[0009] Thus, the source data 11, for example binary data from a data-generating source of video type (for example a source of animated images, virtual or augmented reality images, an image sequence source), of audio type (for example voice), of flow control type whether of video or audio type or other, or from a sensor, an actuator, etc., are coded in a channel coding block 12 to introduce redundancy. The coded data are then interleaved in an interleaving block 13 to mix the coded data. A mapping block 14 makes it possible to convert the coded data into constellation points (BPSK, QPSK, 15QAM, etc.). The associated symbols are put into a frame 15 and modulated in a single-carrier or multi-carrier modulation block 16, for example of OFDM (“Orthogonal Frequency-Division Multiplexing”) type.
[0010] In order to improve the robustness of communications via a communication channel, it is known to use error-correcting codes in the channel 12 coding block. For example, LDPC codes, turbo codes, polar codes, or Reed-Salomon codes offer good performance in terms of error correction.
[0011] Turbo codes were notably chosen for the 4G mobile telephony standard, and LDPC for the 5G mobile telephony standard.
[0012] Below we will recall the main characteristics of LDPC codes, as defined in the 5G standard in particular. LDPC codes are traditionally defined by three parameters K, M and N:
[0013] K corresponds to the size of the source data, for example in number of useful bits if we consider binary data,
[0014] M corresponds to the size of the redundancy data, for example in number of redundancy bits if we consider binary data, and
[0015] N corresponds to the size of the data from the LDPC encoder, for example in number of useful bits and redundancy.
[0016] The coding efficiency is classically given by R = K / N, with the relation N = K + M .
[0017] An LDPC code can notably be defined by a parity matrix H, which gives the parity relationships between the source data and the redundancy data.
[0018] An example of a parity matrix H is given in Figure 2.
[0019] The values equal to "1" in the parity matrix H correspond to the connections (parity equation) between the useful data and the redundancy data. The greater the number of connections (i.e. "1" in the parity matrix H), the greater the complexity of the decoder will be.
[0020] As an illustration, following the example of the parity matrix H in Figure 2, the parity equation of the first line gives the first redundancy data r(0): av
[0021] 6(i) = 0 or 1, and
[0022] ® the “exclusive or” operation.
[0023] In the ETSI TS 138 212 V15.2.0 document, the 3GPP standardization consortium defined two basic structures or matrices BG1 and BG2 ("Base Graph" in English) allowing the construction of 104 H parity matrices (52 matrices constructed from the basic matrix BG1 and 52 matrices constructed from the basic matrix BG2).
[0024] For example, for 5G, the size of the basic matrices BG1 and BG2 is:
[0025] - BG1: K = 22, M = 46, N = 68
[0026] - BG2: either K = 6, M = 26, N = 32, or K = 8, M = 34, N = 42, or K = 9, M = 38, N = 47, or K = 10, M = 42, N = 52.
[0027] Parity matrices H are obtained from the basis matrices BG1 or BG2, from an expansion factor Z and a circular rotation of a diagonal matrix. Such a construction is known as "Protograph".
[0028] According to this technique, a parity matrix H of size M. Z x N. Z is obtained by replacing each non-zero element of the basic matrix BG1 or BG2 by a diagonal matrix of size Z x Z to which a circular rotation V has been applied (which is not necessarily the same for all non-zero elements of the basic matrix).
[0029] An advantage of this LDPC encoder family is to easily obtain the set of H parity matrices while limiting memory usage.
[0030] For example, for an expansion factor Z = 8 and a circular rotation V = 2, a non-zero element of the basis matrix BG1 or BG2 is replaced by the following matrix: 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 -0 1 0 0 0 0 0 0-
[0031] According to the ETSI TS 138212 V15.2.0 document, for each basic matrix BG1 or BG2, it is thus possible to construct 52 matrices, classified into eight sub-families according to the value of the expansion factor
[0032] Z (between 2 and 384), according to the “ils” index:
[0033] Thus, it is possible to encode source data blocks of size K.Z, ranging from 12 bits (from the BG2 basis matrix with K — 6 and the minimum expansion factor Z = 2) to 8448 bits (from the BG1 basis matrix with K = 22 and the maximum expansion factor Z = 384).
[0034] The choice between using the BG1 or BG2 base matrix is made according to the size of the source data to be coded K. Z and the desired coding rate R. Thus, as illustrated in Figure 3, the BG1 base matrix is mainly used for high coding rates and large source data sizes. These two base matrices are notably designed to cover the different uses of 5G which may require high throughput and / or high reliability (robustness). Furthermore, according to the 5G standard, the first two columns of the BG1 or BG2 base matrix are deleted before transmission, which means that the base rates are respectively R BG1 = K / (N — 2) = 22 / 66 = 1 / 3 and R BG2 = 10 / 50 = 1 / 5.
[0035] It is also noted that the basic matrices BG1 or BG2 used to construct the parity matrix H of an LDPC code according to the 5G standard can be represented in the form of six sub-matrices A, B, 0, C, D and I, as described in the document “High Area-Efficient Parallel Encoder with compatible architecture for 5G LDPC codes”, Y. Zhu et al., and illustrated in figure 4: p4 B 01
[0036] The D / J with:
[0037] Has a kernel matrix of size 4 x K
[0038] B a matrix with at least one double diagonal of size 4 x 4
[0039] C an extension matrix of size (M — 4) x K
[0040] From an extension matrix of size (M — 4) x 4
[0041] 0 a zero matrix of size (N — K — 4) x 4
[0042] I an identity matrix of size (M — 4) x (N — K — 4).
[0043] Although LDPC codes are recognized for their ability to guarantee high-speed transmissions, notably thanks to the possibility of parallelizing operations at the decoder level, a drawback of these codes is the complexity related to decoding. Indeed, the greater the number of decoding iterations, the greater the number of operations to be performed at reception and the more resource-intensive they are. The decoding block can thus use up to 90% of the receiver's resources. It can be considered the most energy-intensive part of the physical layer, particularly for 5G.
[0044] There is therefore a need for a new coding technique seeking to reduce the energy consumption of the decoder.
[0045] 3. Statement of the invention
[0046] The invention proposes a new solution in the form of a method for coding at least one block of K. Z source data, delivering at least one code word of size N. Z formed from the K. Z source data and M. Z redundancy data, N = K + M, with Z an integer expansion factor, Z > 1. The method according to the invention implements a step of coding said K. Z source data using a parity matrix H of size (M. Z x N. Z) obtained from a basic matrix BG' of size M x N, by replacing each element of said basic matrix BG' by an expansion matrix of size Z x Z, said basic matrix BG' being expressed in the form: with: A kernel matrix of size J x K
[0047] B a matrix having at least one double diagonal of size J x J
[0048] C an extension matrix of size (M — J) x K
[0049] From an extension matrix of size (M — J) x J
[0050] 0 a zero matrix of size (N — K — J) x J
[0051] I an identity matrix of size (M — J) x (N — K — J).
[0052] According to the invention, said extension matrix C comprises at least two blocks of rows, each comprising a different number of rows, equal to a prime number or to the square of a prime number, each block of rows comprising at least one occurrence of a diagonal matrix.
[0053] In other words, the extension matrix C comprises at least a first block of L1 rows comprising one or more diagonal matrices of size L1 x L1 and a second block of L2 rows comprising one or more diagonal matrices of size L2 x L2, with L1, L2, L1 and L2 prime numbers or squared prime numbers.
[0054] The number of rows per block (which also corresponds to the size of the diagonals) is thus chosen from prime numbers (2, 3, 5, 7, 11, 13, etc.) or prime numbers squared (4, 9, 25, etc.). We thus seek to avoid the repetition of the same pattern / of a diagonal matrix of the same size on the different blocks of rows, so as to obtain independence between the rows of the extension matrix C and avoid, or at least limit, short cycles. We also seek to distribute the unaffected elements of the extension matrix C on the different rows and / or columns of the extension matrix C.
[0055] The proposed solution seeks in particular to improve the performance of error-correcting codes, particularly the LDPC decoder, by reducing the number of decoder iterations and therefore energy consumption.
[0056] In particular, the coded data (code word formed from K. Z source data and M. Z redundancy data) can be stored in a memory and / or transmitted from a transmitter to a receiver, via a transmission channel.
[0057] According to a particular embodiment, at least one of said blocks of lines comprises at least two occurrences of said diagonal matrix.
[0058] By choosing the size of the diagonals (for example L1 and L2), it is possible to vary the number of connections per line. It is recalled for this purpose that the greater the number of connections (i.e., non-nullified elements in the basic matrix, and consequently in the parity matrix H), the greater the complexity of the decoder will be. According to one embodiment, it is therefore sought to achieve a compromise between the number of connections and the decoding performance. According to a particular embodiment, for at least one of said line blocks, said extension matrix C comprises a portion of said diagonal matrix, and said extension matrix D comprises the extension of said portion.
[0059] In other words, the matrix formed from said extension matrix C and said extension matrix D comprises at least one complete pattern representing said diagonal matrix and possibly a partial pattern.
[0060] According to a particular embodiment, the number of unaffected elements per column and / or per row relative to the total number of elements per column and / or per row in said kernel matrix A, excluding the first two columns, is between 50 and 100%.
[0061] In particular, the number of unaffected elements per column and / or per row relative to the total number of elements per column and / or per row in said kernel matrix A, excluding the first two columns, is between 75 and 100%.
[0062] The kernel matrix A thus has many connections per row and / or per column, compared to the rest of the BG' matrix, which makes it possible to find the source data during decoding. For the 5G standard, the kernel matrix A has, for example, around 37C / 4 unharmed elements per row.
[0063] According to a particular embodiment, the first two columns of the kernel matrix A and / or of said extension matrix C comprise an alternation of non-harmed elements and harmed elements per row and per column.
[0064] We are thus looking for an equitable distribution of the connections in the first two columns of the kernel matrix A and / or of the said extension matrix C with a staggered structure. As indicated in the preamble, these first two columns may not be transmitted, in particular in
[0065] 5G.
[0066] According to a particular embodiment J = 4, K = 22 and M = 46.
[0067] The BG' base matrix thus has a format similar to the BG1 matrix with a decomposition into six sub-matrices (A, B, C, D, 0 and / ) and a size identical to the BG1 base matrix. It can therefore be used in any system compatible with the 5G standard.
[0068] According to a particular embodiment, said kernel matrix A is equal to: said matrix B having at least one double diagonal is equal to: said extension matrix C is equal to: said extension matrix D is equal to:
[0069] each empty or zero element of said base matrix BG' is replaced by a zero matrix of size Z x Z, - each non-zero element of said base matrix BG' is replaced by a circular permutation matrix obtained by applying a circular rotation Vi to an identity matrix of size Z x Z, such that: with x and y random variables.
[0070] In another embodiment, the invention relates to a device for encoding at least one block of
[0071] K. Z source data, delivering at least one code word of size N. Z formed from said K. Z source data and M. Z redundancy data, N = K + M, with Z an integer expansion factor, Z > 1, comprising at least one processing unit configured to code said K. Z source data using a parity matrix H of size (M. Z x N. Z), said parity matrix H being obtained from a basic matrix BG' of size M x N as described previously. Such a coding device, also called coder, is in particular suitable for implementing the coding method described previously. It may of course include the various characteristics relating to the method according to the invention, which may be combined or taken in isolation. Thus, the characteristics and advantages of the coder are the same as those of the method described previously. Consequently, they are not detailed further.
[0072] The invention also relates to one or more computer programs comprising instructions for implementing a method as described above when this or these programs are executed by at least one processor.
[0073] The invention also relates to a computer-readable information medium, comprising instructions of a computer program as mentioned above.
[0074] 4. List of figures
[0075] Other characteristics and advantages of the invention will appear more clearly on reading the following description of a particular embodiment, given as a simple illustrative and non-limiting example, and the appended drawings, among which: Figure 1 illustrates a transmitter of a conventional digital transmission chain; Figure 2 presents an example of a parity matrix H for an LDPC code; Figure 3 illustrates selection criteria for the basic matrix BG1 or BG2; Figure 4 illustrates the decomposition of the basic matrix BG1 or BG2 into sub-matrices; Figure 5 presents the main steps implemented by a coding method according to an embodiment of the invention; Figure 6A and Figure 6B illustrate the structure of the matrix BG1; Figure 7A and Figure 7B illustrate the concept of cycle;Figures 8 to 15 show different structures of the matrices A, C and / or D making it possible to optimize the basic matrix BG' according to an embodiment of the invention; Figures 16 and 17 illustrate performance curves of an LDPC decoder implementing a decoding of a code word obtained according to an embodiment of the invention; Figure 18 shows the simplified structure of a coder implementing a coding method according to an embodiment of the invention.;
[0076] 5. Description of an embodiment of the invention
[0077] 5.1 General principle
[0078] The general principle of the invention is based on a clever distribution of the connections (i.e., the unharmed elements) in a basic matrix BG', seeking to distribute the connections in a substantially homogeneous manner and / or to limit the number of short cycles. As a result, a parity matrix H obtained from the basic matrix BG' has a particular structure. Such a structure makes it possible to improve the performance of error-correcting codes, in particular by reducing the complexity of decoding.
[0079] Figure 5 illustrates the main steps of a coding method according to one embodiment of the invention.
[0080] During a first step 51, we obtain the basic matrix BG' of size M x N.
[0081] Such a basic matrix BG' can be decomposed into six sub-matrices A, B, 0, G, D, I, and expressed in the form: with :
[0082] Has a kernel matrix of size J x K
[0083] B a matrix having at least one double diagonal of size J x ]
[0084] G an extension matrix of size (M — J) x K
[0085] From an extension matrix of size (M — J) x J
[0086] 0 a zero matrix of size (N — K — J) x ]
[0087] I an identity matrix of size (M — J) x (N — K — / )
[0088] In particular, the extension matrix G has a particular structure and comprises at least two blocks of rows, each comprising a different number of rows, equal to a prime number or to the square of a prime number, each block of rows comprising at least one occurrence of a diagonal matrix.
[0089] In a second step 52, a parity matrix H is obtained from the basic matrix BG'. To do this, each element of the basic matrix BG' is replaced by an expansion matrix of size Z x Z, with Z an integer expansion factor, Z > 1. More precisely, each zero element of the basic matrix BG' is replaced by a zero matrix of size Z x Z, and each non-zero element of the basic matrix BG' is replaced by a circular permutation matrix, obtained by applying a circular rotation Vi to an identity matrix of size Z x Z. In a third step 53, at least one block of K. Z source data is coded using the parity matrix H of size (M. Z x N. Z), so as to obtain at least one code word of size N. Z formed from the K. Z source data and M. Z redundancy data, N = K + M.
[0090] Such a code word can in particular be stored in an encoder memory or transmitted by a transmitter to a receiver.
[0091] In a particular embodiment, the number of unharmed elements per column in the matrix formed from the kernel matrix A and the extension matrix G, excluding the first two columns, is between / ? — 3 and / ? + 3, with P an integer. In the matrix formed from the extension matrix C and the extension matrix D, the number of unharmed elements per row, excluding the first two columns, is between a — 4 and a + 4, with a an integer.
[0092] In this way, we seek to distribute the number of connections homogeneously per column and / or per row in the basic matrix BG'.
[0093] For example, in 5G, fi is between 7 and 10, and the number of unaffected elements per column in the matrix formed by the kernel matrix A and the extension matrix C, excluding the first two columns, is between 5 and 13, for example between 7 and 10.
[0094] According to another example, the number of unaffected elements per column in the extension matrix C, excluding the first two columns, is between 2 and 8, for example equal to 5 or 6.
[0095] According to yet another example, the number of unharmed elements per column in said kernel matrix A, excluding the first two columns, is between 2 and 4, for example equal to 3.
[0096] For example, in 5G, a is between 5 and 8, and the number of undamaged elements per row in the matrix formed by the extension matrix C and the extension matrix D is between 1 and 12, for example between 2 and 9.
[0097] According to another example, the number of unaffected elements per row in the extension matrix C is between 1 and 7.
[0098] In particular, if J = 4, K = 22 and M = 46, the basis matrix BG' has a size identical to the basis matrix BG1, and can be used in any system using the 5G standard.
[0099] 5.2 Basic matrix BG1
[0100] In order to better understand the invention, Figure 6A shows the structure of the basic matrix BG1 as defined in the document ETSI TS 138 212 V15.2.0, formed from matrices A, B, C and D. The sub-matrices 7 and O are omitted for the sake of simplification.
[0101] The “1” elements of the basic matrix BG1 represent the connections of the different parity equations. The number of connections per column and per row has been added in Figure 6A.
[0102] So, the first column of matrices A and C includes 30 connections, the second column includes 28 connections, the third column includes 7 connections, etc.
[0103] The first column of matrices B and 7) includes 12 connections, the second column includes 5 connections, etc.
[0104] The first four rows of matrices A and B each include 19 connections.
[0105] The first row of matrices C and D has 2 connections, the second row has 7 connections, etc.
[0106] If we ignore the zero matrices O and identity 7, the minimum number of connections per row is 2 and the maximum number of connections per row is 19. The minimum number of connections per column is 4 and the maximum number of connections per column is 30. Therefore, there is a large disparity in the number of connections per row and / or per column in the BG1 matrix.
[0107] The kernel matrix A has, in proportion, many connections, i.e. many unharmed elements, because it is the kernel of the BG1 matrix. This allows the decoder, on reception, to find this data. We also note that the first two columns of the BG1 matrix, which correspond to the untransmitted data, also have many "1".
[0108] The upper part of the BG1 die also has more connections than its lower part, which helps ensure good performance for high yields. This is because the lower part of the BG1 die can be punched to achieve the desired yield. Therefore, it is better to choose connections in the upper part of the BG1 die.
[0109] As an example, Figure 6B illustrates the circular rotation factors V for the BG1 matrix of Figure 5A, for an expansion factor Z = 256.
[0110] The parity matrix H is constructed by replacing each non-zero element of the matrix BG1 with an identity matrix of size Z x Z, and applying a circular rotation V according to the factors illustrated in Figure 6B. Thus, the element "1" of the first row / first column of the matrix BG1 of Figure 6A is replaced by an identity matrix of size 256 x 256 to which a circular rotation V = 250 is applied. The element "1" of the first row / second column of the matrix BG1 of Figure 6A is replaced by an identity matrix of size 256 x 256 to which a circular rotation V = 69 is applied, and so on.
[0111] 5.3 Basic matrix BG'
[0112] The position of the connections in the BG1 base matrix, as well as the rotation factors to be used, are specified in the 5G 3GPP standard. However, as previously indicated, it remains desirable to improve the performance of error-correcting codes, in particular by reducing the complexity of decoding, for example by reducing the number of connections.
[0113] We therefore propose below a basic matrix BG' seeking to reduce the complexity of decoding. New connection structures are thus proposed, according to different embodiments of the invention. Depending on the embodiment considered, such structures are efficient and / or easy to reproduce depending on the dimensions of the parity matrix H.
[0114] According to a particular embodiment, the structure of the basic matrix BG' is defined so as to have a low disparity in the number of connections per row and / or per column. Indeed, if we consider an LDPC coder for example, we recall that LDPC decoding is based on the bases of the probabilities of having transmitted a value equal to "1" or "0". It is therefore desirable to distribute the number of connections homogeneously, so that the number of connections in rows, and especially in columns, is substantially constant or equally distributed.
[0115] According to another particular embodiment, the structure of the basic matrix BG' is defined so as to limit the number of short cycles, and if possible to avoid short cycles ("Girth" in English). Indeed, such short cycles limit the performance of error-correcting codes, in particular LDPC codes, especially for small K values, for example of the order of 255 bits or less. To better understand this principle, Figures 7A and 7B illustrate the loop phenomena with an expansion factor Z = 4. According to Figure 7A, an expansion factor Z = 4 is applied with the same rotation factor V = 0 to the "1" elements located in position (i + 7, / ), (i,j + 7) and (i + 7, j + 7). We obtain a loop, illustrated by the arrows. According to Figure 7B, we apply an expansion factor Z = 4 with the same rotation factor 7 = 0 to the elements "1" located in position (ij), (i + 7, / ) and (i + 7 ,j + 7), and a rotation factor V — 1 to the element located in position (i, / + 7). In this case, there is no loop. Changing the rotation factor of one of the elements of the matrix therefore makes it possible to eliminate the loops.
[0116] Below are presented various solutions for obtaining a low disparity in the number of connections per row and / or per column of the basic matrix BG' and / or for limiting (or even avoiding) short cycles.
[0117] 5.3.1 Optimization of the kernel matrix A
[0118] According to a first example, it is possible to distribute the connections fairly in the core matrix A, while seeking to have a large number of connections as defined in the 5G standard.
[0119] For example, in the kernel matrix A the number of unharmed elements per column, excluding the first two columns, is between 1 and ].
[0120] Figure 8 illustrates an example of a kernel matrix A, in which the number of unaffected elements per column is constant and equal to 3.
[0121] 5.3.2 Optimization of the first two columns of the kernel matrix A and / or the extension matrix C
[0122] In a second example, the first two columns (which are usually not transmitted) can be chosen to ensure a good distribution of connections.
[0123] For example, the first two columns of the kernel matrix A and / or the extension matrix C include alternating unharmed and harmed elements per row and per column. In other words, the connections are distributed in a staggered manner, as illustrated in Figure 9.
[0124] 5.3.3 Optimization of the extension matrix C According to a third example, it is possible to distribute the connections fairly in the extension matrix C.
[0125] The extension matrix C is generally the largest in size. For the basic matrix BG1, for example, the extension matrix C, excluding its first two columns, has a size of 40 x 20.
[0126] In this third example, the connections are distributed on diagonals to ensure a good distribution of the connections.
[0127] For example, if we consider a block of 10 rows and 20 columns, as illustrated in Figure 10, it is possible to have two occurrences of a 10 x 10 diagonal matrix on the block of 10 rows, namely two row connections and one column connection.
[0128] As another example, if we consider a block of 5 rows and 20 columns as illustrated in Figure 11, it is possible to have four occurrences of a 5 x 5 diagonal matrix on the block of 5 rows, i.e. four connections in row and one in column.
[0129] It is thus possible to vary the number of connections per line according to the size of the diagonals or blocks of lines.
[0130] To ensure independence between rows, and therefore avoid short cycles, the proposed solution relies on choosing a size for the diagonals that corresponds to prime numbers or squared prime numbers. In particular, we seek to select prime numbers or squared prime numbers that avoid reproducing the same patterns in the extension matrix C.
[0131] Thus, according to the invention, the extension matrix C comprises at least two blocks of lines, each comprising a different number of lines, equal to a prime number (2, 3, 5, 7, 11, 13 ...) or to the square of a prime number (4 = 2 2 , 9 = 3 2 ), each block of lines comprising at least one occurrence of a diagonal matrix (i.e. at least one complete pattern).
[0132] In this way, all parity equations are distinct from each other.
[0133] In particular, at least one of the row blocks comprises at least two occurrences of the diagonal matrix (i.e. at least two complete patterns).
[0134] The structure of the extension matrix C can in particular be extended onto the extension matrix D. Thus, for at least one block of rows, the extension matrix C comprises a portion of a diagonal matrix, and the extension matrix D comprises the extension of the portion of the diagonal matrix. For example, returning to Figure 11, if we consider a block of 5 rows and 20 columns, with the first 18 columns belonging to the extension matrix C and the last 2 columns belonging to the extension matrix D, the extension matrix C comprises three “complete” patterns each corresponding to the 5 x 5 diagonal matrix. The fourth pattern is partial and is extended into the extension matrix D. The matrix formed from the extension matrices C and extension D comprises four “complete” patterns each corresponding to the 5 x 5 diagonal matrix.
[0135] As an example, Figure 12 shows an example of a structure for the extension matrices C and D, which can be used in 5G. According to this example, the extension matrix C has a size (M — / ) x K = 42 x 22 and the extension matrix D has a size (M — / ) x J = 42 x 4. The first two columns of the extension matrix C are not shown.
[0136] Since we want to select prime numbers that avoid reproducing the same patterns for the extension matrix C, we eliminate the prime numbers 2 and 3 in this example. For example, it is possible to define a first block of rows with diagonal matrices of size 4, a second block of rows with diagonal matrices of size 5, a third block of rows with diagonal matrices of size 7, a fourth block of rows with diagonal matrices of size 9, a fifth block of rows with diagonal matrices of size 11, etc.
[0137] By denoting n as the number of a column of the extension matrix C, with n ranging from 1 to (K — 2) (if we ignore the first two columns of the extension matrix C), and m as the number of a row of the extension matrix C, with m ranging from 1 to (M — J), the location of the connections can be obtained deterministically.
[0138] For example, for rows of the extension matrix C, the location of the connections can be obtained by the following algorithm:
[0139] For m ranging from 1 to 4:
[0140] For n ranging from 1 to (K — 2):
[0141] If (n mod 4) = m then ÆG'[m][n] = 1
[0142] For m ranging from 5 to 9:
[0143] For n ranging from 1 to (K — 2):
[0144] If (n mod 5) = m then BG'[m][n] = 1
[0145] For m ranging from 10 to 16:
[0146] For n ranging from 1 to (K — 2):
[0147] If (n mod 7) = m then BG'[m][n] = 1
[0148] For m ranging from 17 to 25:
[0149] For n ranging from 1 to (K — 2):
[0150] If (n mod 9) = m then BG'[m][n] = 1
[0151] For m ranging from 26 to 36:
[0152] For n ranging from 1 to (K — 2): If (n mod 11) = m then BG'[m] [n] = 1
[0153] For m ranging from 37 to (M — / ) = 42:
[0154] For n ranging from 1 to (K — 2):
[0155] If (n mod 13) = m then BG'[m] [n] = 1
[0156] The extension matrix D allows the diagonal matrices to be extended.
[0157] Figure 12 illustrates in particular the number of connections per row and per column for the extension matrices G and extension / ).
[0158] We note that in the matrix formed from the extension matrix G and the extension matrix D, the number of unaffected elements per row, excluding the first two columns, is between a —
[0159] 4 and a + 4, with a an integer.
[0160] If we consider it in the context of 5G, a is for example between 5 and 8.
[0161] In the example illustrated in Figure 12, the number of unaffected elements per row in the matrix formed by the extension matrix G and the extension matrix D is between 2 and 6.
[0162] The number of unaffected elements per column in the extension matrix G is between
[0163] 5 and 6, and in the extension matrix D equal to 4.
[0164] Since the lower part of the extension die G and the extension die D can be punched, the largest number of connections is chosen on the upper part of the extension die G and the extension die D.
[0165] Another example of optimization of the extension matrices G (including the first two columns) and extension D is illustrated in Figure 13.
[0166] The proposed structure is slightly different, but the extension matrix G always includes at least two blocks of rows, each comprising a different number of rows, equal to a prime number (2, 3, 5, 7, 11, 13 ...) or to the square of a prime number (4 = 2 2 , 9 = 3 2 ), each block of lines comprising at least one occurrence of a diagonal matrix (i.e. at least one complete pattern).
[0167] It maintains good properties in terms of connection distribution and / or reduction / elimination of short cycles.
[0168] According to the example of Figure 13, a first block of rows is defined with diagonal matrices of size 4, a second block of rows with diagonal matrices of size 5, a third block of rows with on the first row unharmed elements at positions 1 to 4 (without taking into account the first two columns), on the second row unharmed elements at positions 5 to 8, on the third row unharmed elements at positions 9 to 12, on the fourth row unharmed elements at positions 13 to 16, and on the fifth row unharmed elements at positions 17 to 20, a fourth block of rows with diagonal matrices of size 7, a fifth block of rows with diagonal matrices of size 9, etc.
[0169] 5.3.4 Global optimization of the basic matrix BG'
[0170] In the examples above, the extension matrices C (except the first two columns) and extension D are optimized to reduce short cycles.
[0171] However, if we take into account the matrix formed by the kernel A, double diagonal B, spreading C and extension D matrices proposed in the examples above, there may remain short cycles.
[0172] Short cycles can result, for example, from the structure proposed for the kernel matrix A or for the first two columns of the spreading matrix C.
[0173] As illustrated in Figure 7B, taking rotation factors into account makes it possible to reduce, or even avoid, short cycles.
[0174] It is thus possible to increase the diversity of the basic matrix BG' and therefore to reduce the number of short cycles by taking into account the rotation factors.
[0175] If we consider the context of the 5G standard, the expansion factor Z is at least equal to 2. This means that there are at least two possible rotation factors: a non-zero element of the basis matrix BG can be replaced by j for a circular rotation V = 0 or by j for a circular rotation V = 1.
[0176] Figure 14 illustrates an example structure for matrices A, B, C and D, taking into account at least two distinct rotation factors, for example an even rotation factor P and an odd rotation factor I.
[0177] In this example, the extension matrix C always includes at least two blocks of rows, each comprising a different number of rows, equal to a prime number (2, 3, 5, 7, 11, 13 ...) or to the square of a prime number (4 = 2 2 , 9 = 3 2 ), each block of lines comprising at least one occurrence of a diagonal matrix (i.e. at least one complete pattern).
[0178] Additionally, a block of lines is associated with at least two distinct rotation factors.
[0179] The structure illustrated in Figure 14 makes it possible in particular to reduce cycles by reorganizing the rotation factors into even “P” and odd “I” values.
[0180] As illustrated in Figure 15, it is possible to increase the number of rotation factors to increase the diversity of the basic matrix BG'. For example, five rotation factors denoted V0 to V4 are chosen. Of course, a different number of rotation factors can be chosen, which leads to a different structure for matrices A, B, C and D.
[0181] In particular, it is possible to define the equations that define the rotation factors VO to V4 as a function of the “ils” index according to the 5G 3GPP standard. with x and y random variables whose range is given in the table above.
[0182] The structure illustrated in Figure 15 makes it possible in particular to reduce short cycles for small matrices, for example for K < 256. We note in particular that in the matrix formed from the kernel matrix A and the extension matrix C, the number of unharmed elements per column, excluding the first two columns, is between P — 3 and p + 3, with f > an integer. In the matrix formed from the extension matrix C and the extension matrix D, the number of unharmed elements per row, excluding the first two columns, is between a — 4 and a + 4, with a an integer.
[0183] In the context of 5G, / ? is for example between 7 and 10 and a is between 5 and 8. In the example illustrated in Figure 15, the number of unharmed elements per column in the matrix formed by the kernel matrix A and the extension matrix C is between 7 and 10, and the number of unharmed elements per row in the matrix formed by the extension matrix C and the extension matrix D is between 2 and 9.
[0184] The number of connections per row and / or per column is therefore fairly homogeneous.
[0185] 5.3.5 Obtaining a parity matrix
[0186] From the basis matrix BG' thus obtained, it is possible to obtain a parity matrix H, by replacing each empty or zero element of the basis matrix BG' by a zero matrix of size Z x Z, and each non-zero element of the basis matrix BG' by a circular permutation matrix obtained by applying a circular rotation Vi to an identity matrix of size Z x Z, i E {0,1, ...}.
[0187] The parity matrix H thus obtained can be used by an encoder to encode at least one block of K.Z source data.
[0188] 5.3.6 Performance curves
[0189] We now present in relation to figures 16 and 17 the decoding performances obtained in terms of error rate (FER) as a function of the signal-to-noise ratio (SNR in dB), for LDPC decoders, after encoding source data using a parity matrix obtained either from the basic matrix BG1 as defined by the 3GPP for the 5G standard, or from a basic matrix BG' according to an embodiment of the invention (having the same size as the basic matrix BG1 for comparison).
[0190] The performances obtained are for code lengths of 330 bits (K = 22, Z = 15), a code efficiency of 1 / 3 for figure 16 and 3 / 4 for figure 17. The decoder algorithm is according to this example the MinSum, as described in the document “A fully parallel LDPC decoder architecture using probabilistic minsum algorithm for high-throughput applications”, C.-C. Cheng et al., IEEE Trans. Circuits Syst. I, Reg. Papers, vol. 61, no. 9, pp. 2738-2746, Sep. 2014, with an alpha parameter equal to 0.7, and operated in “reverse” mode. In such a reverse mode, the parity matrix is decoded from the bottom up, i.e. the parity equations obtained from the last rows of the parity matrix are first sought to be solved before those obtained from the first rows of the parity matrix. However, the use of a "standard" decoding from the top down of the parity matrix, or in another order, is also possible.Curve 161, respectively 171, illustrates the decoding performance using the basic matrix BG' after 20 iterations of the decoder. Curve 162, respectively 172, illustrates the decoding performance using the basic matrix BG1 after 20 iterations of the decoder.
[0191] Curve 163, respectively 173, illustrates the decoding performance using the basic matrix BG' after 5 iterations of the decoder. Curve 164, respectively 174, illustrates the decoding performance using the basic matrix BG1 after 5 iterations of the decoder.
[0192] It is noted that the structure proposed according to at least one embodiment of the invention makes it possible to improve the performance of the LDPC decoder according to the 5G standard. The difference is all the greater with a lower number of iterations of the decoder.
[0193] 5.3.7 Variants
[0194] An example has been described above in which the basic matrix BG' has the same size as the basic matrix BG1, with J — 4, K — 22 and M — 46. This allows the basic matrix BG' to be used in any communications system according to the 5G standard.
[0195] However, this is just an example, and other values for J, K and M can be considered, particularly for other transmission standards (Wifi®, 6G, etc.).
[0196] Similarly, a basis matrix BG' with five rotation factors V0 to V4 has been proposed. However, a different number of rotation factors can be chosen.
[0197] 1 1 0 o-
[0198] We have also given examples with a matrix B of the form 0 1 1 0 . Other forms
[0199] 1 0 1 1
[0200] -1 0 0 1- of matrix B with at least one double diagonal can be used. In this case, the position of the connections and / or the values of the rotation factors can be updated to take into account the structure of matrix B.
[0201] An LDPC code was also taken as an example. The invention can also be extended to other error-correcting codes using a parity matrix.
[0202] 5.4 Coding Device
[0203] Finally, in relation to figure 18, we present the simplified structure of an encoder according to at least one embodiment described above.
[0204] As illustrated in figure 18, an encoder comprises at least one memory 181, at least one processing unit 182, equipped for example with a programmable computing machine or a dedicated computing machine, for example a processor P, and controlled by the computer program 183, implementing steps of the coding method according to at least one embodiment of the invention.
[0205] At initialization, the code instructions of the computer program 183 are for example loaded into a RAM memory before being executed by the processor of the processing unit 182. The processor of the processing unit 182 implements steps of the coding method described previously, according to the instructions of the computer program 183, to code the K. Z source data using a parity matrix H of size (M. Z x N. Z), and deliver at least one code word of size N. Z formed of the K. Z source data and M. Z redundancy data.
Claims
CLAIMS 1. Method for coding at least one block of K. Z source data, delivering at least one code word of size N. Z formed from said K. Z source data and M. Z redundancy data, N = K + M, with Z an integer expansion factor, Z > 1, said method implementing a step of coding (53) said K. Z source data using a parity matrix H of size (M. Z x N. Z), characterized in that said parity matrix H is obtained (52) from a basic matrix BG' of size M x N, by replacing each element of said basic matrix BG' by an expansion matrix of size Z x Z, said basic matrix BG' being expressed in the form: d b ?] with : Has a kernel matrix of size ] x K B a matrix having at least one double diagonal of size J x J G an extension matrix of size (M — / ) x K From an extension matrix of size (M — J) x / 0 a zero matrix of size (N — K — J) XJ I an identity matrix of size (M — J) x (N — K — / ) and in that said extension matrix G comprises at least two consecutive blocks of rows, each comprising a different number of rows, equal to a prime number or to the square of a prime number, each block of rows comprising at least one occurrence of a diagonal matrix.
2. Coding method according to claim 1, characterized in that at least one of said blocks of lines comprises at least two occurrences of said diagonal matrix.
3. Method according to any one of the preceding claims, characterized in that at least one of said blocks of lines comprises a number of lines greater than or equal to 4.
4. Method according to any one of the preceding claims, characterized in that for at least one of said line blocks, said extension matrix G comprises a portion of said diagonal matrix, and in that said extension matrix D comprises the extension of said portion.
5. Method according to any one of the preceding claims, characterized in that the number of unaffected elements per column and / or per row relative to the total number of elements per column and / or per row in said kernel matrix A, excluding the first two columns, is between 50 and 100%.
6. Method according to any one of the preceding claims, characterized in that the number of unharmed elements per column and / or per row relative to the total number of elements per column and / or per row in said kernel matrix A, excluding the first two columns, is between 75 and 100%.
7. Method according to any one of the preceding claims, characterized in that said first two columns of the kernel matrix A and / or of said extension matrix C comprise an alternation of unharmed elements and harmed elements per row and per column.
8. Method according to any one of the preceding claims, characterized in that J = 4, K = 22 and M = 46.
9. Method according to any one of claims 1 to 5, characterized in that said kernel matrix A is equal to: said matrix B having at least one double diagonal is equal to: said extension matrix C is equal to: said extension matrix D is equal to: and in that: each empty or zero element of said base matrix BG' is replaced by a zero matrix of size Z x Z, each non-zero element of said base matrix BG' is replaced by a circular permutation matrix obtained by applying a circular rotation Vi to an identity matrix of size Z x Z, such that: with x and y random variables.
10. Device for coding at least one block of K. Z source data, delivering at least one code word of size N. Z formed from said K. Z source data and M. Z redundancy data, N = K + M, with Z an integer expansion factor, Z > 1, comprising at least one processing unit configured to code (53) said K. Z source data using a parity matrix H of size (M. Z x N. Z), said parity matrix H being obtained (52) from a basic matrix BG' of size M x N, by replacing each element of said basic matrix BG' by an expansion matrix of size Z x Z, said basic matrix BG' being expressed in the form: with : Has a kernel matrix of size J x K B a matrix having at least one double diagonal of size J x ] C an extension matrix of size (M — J) XK From an extension matrix of size (M — J) x J 0 a zero matrix of size (N — K — J) x J I an identity matrix of size (M — f) X (N — K — J) said extension matrix C comprising at least two consecutive blocks of rows, each comprising a different number of rows, equal to a prime number or to the square of a prime number, each block of rows comprising at least one occurrence of a diagonal matrix.
11. Computer program comprising instructions for implementing a method according to any one of claims 1 to 9 when this program is executed by a processor.