Algebraic decoding method and decoder for (n,n(n-1),n-1)-PGC in communication modulation system
11374596 · 2022-06-28
Assignee
Inventors
- Li Peng (Hubei, CN)
- Si Jia Chen (Hubei, CN)
- Ying Long Shi (Hubei, CN)
- Ya Yu Gao (Hubei, CN)
- Bin Dai (Hubei, CN)
- Lin Zhang (Hubei, CN)
- Kun Liang (Hubei, CN)
- Bo Zhou (Hubei, CN)
Cpc classification
H03M13/31
ELECTRICITY
G06F17/16
PHYSICS
H03M13/3761
ELECTRICITY
H03M13/47
ELECTRICITY
International classification
H03M13/37
ELECTRICITY
H03M13/00
ELECTRICITY
G06F17/11
PHYSICS
G06F17/00
PHYSICS
Abstract
The disclosure discloses an algebraic decoding method and a decoder for a (n, n(n−1), n−1) permutation group code in a communication modulation system. The basic principle of the decoding method is: assuming that two code elements p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2 can be correctly detected in a received real vector with a length of n, including their element values s.sub.1, s.sub.2 and position indices r.sub.1, r.sub.2 in the vector, an intermediate parameter w is determined by solving an equation (r.sub.1−r.sub.2)w=(s.sub.1−s.sub.2)(mod n); and each code element is calculated by w according to p(i)=(s.sub.1+(n−r.sub.1+i)w)(mod n), i=1, 2, . . . , n. The decoder is mainly composed of multiple n-dimensional registers, a w calculator, n code element calculators, and a code element buffer. In the disclosure, in a case where a receiver only correctly detects two code elements in a transmitted codeword with a length of n, the codeword can be correctly decoded by using the received information of the two code elements.
Claims
1. An algebraic decoding method for a (n, n(n−1), n−1) permutation group code in a communication modulation system, wherein when n is a prime number, the (n, n(n−1), n−1) permutation group code contains n(n−1) permutation codewords, each of the permutation codewords contains n code elements, and a minimum Hamming distance between any two of the permutation codewords is n−1, comprising: i) determining an intermediate parameter w: let w∈Z.sub.n be obtained by solving an expression (r.sub.1−r.sub.2)w=(s.sub.1−s.sub.2)(mod n), wherein (mod n) represents a modulo n operation; let p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2 be two of the code elements correctly detected in a real signal vector received from a channel, wherein s.sub.1, s.sub.2∈Z.sub.n are respectively element values of the code elements p(r.sub.1) and p(r.sub.2), r.sub.1, r.sub.2∈Z.sub.n are respectively position indices of the code elements p(r.sub.1) and p(r.sub.2), and Z.sub.n is a positive integer finite domain represented by Z.sub.n={1, 2, . . . , n}; and both the code elements p(r.sub.1) and p(r.sub.2) are elements in a permutation codeword p with a code length of n; ii) calculating respective code elements in the permutation codeword p by using the intermediate parameter w determined in i) and the detected parameters r.sub.1 and s.sub.1 according to an expression p(i)=(s.sub.1+(n−r.sub.1+i)w)(mod n), wherein p(i) represents an element value of a code element at a position index i, and i=1, 2, . . . , n; and iii) constructing a vector with a length of n by arranging the n code elements calculated in ii) in an order of i=1, 2, . . . , n, to obtain a decoded codeword p=[p(1)p(2) . . . p(n−1)p(n)].
2. A decoder for a (n, n(n−1), n−1) permutation group code in a communication modulation system, comprising a plurality of independent n-dimensional registers, an intermediate parameter w calculator, n single-code-element calculators operating in parallel, and a n-dimensional buffer for n code elements, wherein the plurality of independent n-dimensional registers are respectively configured to store parameters r.sub.1, r.sub.2, s.sub.1, s.sub.2, n and a code element position index i; two code elements p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2 are correctly detected in a real vector received from a channel, wherein s.sub.1, s.sub.2∈Z.sub.n are respectively element values of the code elements p(r.sub.1) and p(r.sub.2), r.sub.1, r.sub.2∈Z.sub.n are respectively position indices of the code elements p(r.sub.1) and p(r.sub.2), and Z.sub.n is a positive integer finite domain represented by Z.sub.n={1, 2, . . . , n}; both the code elements p(r.sub.1) and p(r.sub.2) are elements in a permutation codeword p with a code length of n; the intermediate parameter w calculator is configured to calculate an intermediate parameter w; let w∈Z.sub.n be obtained by solving an expression (r.sub.1−r.sub.2)w=(s.sub.1−s.sub.2)(mod n), wherein (mod n) represents a modulo n operation; the intermediate parameter w calculator is implemented by a calculator with a divider, or is implemented by a calculator with carry adders and a counter according to a method for calculating the intermediate parameter w in a flowchart; the n single-code-element calculators are configured to operate in parallel to simultaneously calculate n code elements in the permutation codeword p by using the intermediate parameter w and the detected parameters r.sub.1 and s.sub.1 according to an expression p(i)=(s.sub.1+(n−r.sub.1+i)w)(mod n), wherein p(i) represents an element value of a code element at a position index i, i=1, 2, . . . , n, and a i-th single-code-element calculator is configured to calculate p(i); each of the n single-code-element calculators is implemented by a calculator with a multiplier, or a calculator with an accumulator and a counter; and the n-dimensional buffer for the n code elements are configured to store and arrange the n code elements calculated by the n single-code-element calculators in an order of i=1, 2, . . . , n to construct a vector with a length of n, thereby obtaining a decoded codeword p=[p(1)p(2) . . . p(n−1)p(n)].
3. The decoder according to claim 2, wherein when the intermediate parameter w calculator is implemented by the calculator with the divider, the intermediate parameter w calculator includes four independent n-dimensional registers, two two-input adders, a divider and a modulo n operator mod n, wherein the four independent n-dimensional registers are configured to respectively store r.sub.1, −r.sub.2, s.sub.1 and −s.sub.2; two input ends of the left one of the two input adders are respectively connected to two of the four independent n-dimensional registers storing r.sub.1 and −r.sub.2, and two input ends of the right one of the two input adders are respectively connected to two of the four independent n-dimensional registers storing s.sub.1 and −s.sub.2; a left input end of the divider is configured to receive an output (r.sub.1−r.sub.2) of the left adder, a right input end of the divider is configured to receive an output (s.sub.1−s.sub.2) of the right adder, and the divider outputs a result (s.sub.1−s.sub.2)/(r.sub.1−r.sub.2); and the modulo n operator mod n is connected to an output end of the divider, and is configured to perform an modulo operation on the output result (s.sub.1−s.sub.2)/(r.sub.1−r.sub.2) of the divider and output w=(s.sub.1−s.sub.2)/(r.sub.1−r.sub.2)(mod n).
4. The decoder according to claim 3, wherein the n-dimensional buffer comprises a n-input and single-output buffer, wherein when each of the n single-code-element calculators is implemented by the calculator with the multiplier, the i-th single-code-element calculator with the multiplier includes five independent n-dimensional registers, a three-input adder, a two-input multiplier, a two-input adder and a modulo n operator, wherein i=1, 2, . . . , n, wherein the five independent n-dimensional registers are configured to respectively store i, n, −r.sub.1, w and s.sub.1; output ends of three of the five independent n-dimensional registers storing i, n and −r.sub.1 are respectively connected to three input ends of the three-input adder, and the three-input adder is configured to perform an add operation of (n−r.sub.1+i), wherein i=1, 2, . . . , n; an output end of the three-input adder is connected to one input end of the two-input multiplier, the other input end of the two-input multiplier is connected to one of the five independent n-dimensional register storing w, and the two-input multiplier is configured to perform an multiply operation of (n−r.sub.1+i)w; an output end of the two-input multiplier is connected to one input end of the two-input adder, the other input end of the two-input adder is connected to one of the five independent n-dimensional register storing s.sub.1, and the two-input adder is configured to perform an add operation of (s.sub.1+(n−r.sub.1+i)w); and an output end of the two-input adder is connected to the modulo n operator, and the modulo n operator is configured to perform an mod n operation on (s.sub.1+(n−r.sub.1+i)w), and output an i-th code element p(i) in the decode codeword.
5. The decoder according to claim 3, wherein the n-dimensional buffer comprises a n-input and single-output buffer, wherein when each of the n single-code-element calculators is implemented by the calculator with the accumulator and the counter to form a simplified single-code-element calculator, the i-th simplified single-code-element calculator includes four n-dimensional registers, a three-input adder, an enable control accumulator, a counter with an intermediate parameter w cycle-minus-one operation, a two-input adder and a modulo n operator, wherein i=1, 2, . . . , n, wherein the four n-dimensional registers of the i-th simplified single-code-element calculator are configured to respectively store i, n, −r.sub.1 and s.sub.1; output ends of three of the four n-dimensional registers of the i-th simplified single-code-element calculator storing i, n and −r.sub.1 are respectively connected to three input ends of the three-input adder to achieve an add operation of (n−r.sub.1+i); an operation result of the three-input adder is input to the enable control accumulator to achieve w times of accumulation of (n−r.sub.1+i), wherein an operation of w−1 is performed for each accumulation; when w≠0, the enable control accumulator has an enable signal E=1, so that the enable control accumulator continues to perform the accumulation operation on (n−r.sub.1+i), until w is reduced to 0, and then the enable control accumulator has an enable signal E=0, so that the accumulator stops the accumulation operation and outputs a result to one input end of the two-input adder; the other input end of the two-input adder is connected to one of the four n-dimensional register of the i-th simplified single-code-element calculator storing s.sub.1, and the two-input adder is configured to perform an add operation of (s.sub.1+(n−r.sub.1+i)w); and an output end of the two-input adder is connected to connected to the modulo n operator, and the modulo n operator is configured to perform an mod n operation on (s.sub.1+(n−r.sub.1+i)w), and output an i-th code element p (i) in the decode codeword.
6. The decoder according to claim 2, wherein the method for calculating for the intermediate parameter w in the flowchart comprises: inputting the position values r.sub.1, r.sub.2 and the element values s.sub.1, s.sub.2 of the two known code elements p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2, and initializing the intermediate parameter w=1; respectively calculating u=r.sub.1−r.sub.2 and v=s.sub.1−s.sub.2; respectively determining values of u and v: if u>0, directly outputting a value of u, and if u<0, then u=n+u, outputting a value of u; similarly, if v>0, directly outputting a value of v, and if v<0, then v=n+v, outputting a value of v; and comparing the values of u and v, if u=v, then outputting w=1; if u≠v, then u=u+u, w=w+1, comparing the values of u and v again, if u≠v, continuing the operations of u=u+u and w=w+1, until u=v, then outputting w>1.
7. The decoder according to claim 6, wherein when the intermediate parameter w calculator is implemented by the calculator with carry adders and the counter to form a simplified calculator, the simplified intermediate parameter w calculator includes five n-dimensional registers, two adders with carry bit C, two single-input and double-output switches, two two-input adders, a comparator, an enable control accumulator, and an enable control counter with a feedback-plus-one operation, wherein the five n-dimensional registers are respectively store r.sub.1, −r.sub.2, s.sub.1, −s.sub.2 and n; the enable control counter with a feedback-plus-one operation has an initial value set to w=1; output ends of two of the five n-dimensional registers storing r.sub.1 and −.sub.2 are respectively connected to two input ends of the left adder with carry bit C.sub.1 to obtain a calculation result u=r.sub.1−r.sub.2, if u<0, then the carry bit C.sub.1=1, the left single-input and double-output switch is thrown to the right, u is output to the left two-input adder to achieve u=n+u, and u is output; if u>0, then the carry bit C.sub.1=0, the left single-input and double-output switch is thrown to the left, and u=r.sub.1−r.sub.2 is output; u enters the comparator through the enable control accumulator; output ends of two of the five n-dimensional registers storing s.sub.1 and −s.sub.2 are respectively connected to two input ends of the right adder with carry bit C.sub.2 to obtain a calculation result v=s.sub.1−s.sub.2, if v<0, then the carry bit C.sub.2=1, the right single-input and double-output switch is thrown to the left, v is output to the right two-input adder to achieve v=n+v, and v is output; if u>0, then the carry bit C.sub.2=0, the right single-input and double-output switch is thrown to the right, and v=s.sub.1−s.sub.2 is output; v directly enters the comparator; and the comparator compares values of u and v: if u=v, then a low-level enable signal is output, so that the enable control counter has an enable signal Ē.sub.2=1, and directly outputs w=1 without the feedback-plus-one operation; if u≠v, the enable control accumulator has an enable signal E.sub.1=1, and returns the current u to its input end for accumulating u once, if E.sub.1=0, the enable control accumulator directly outputs u to the comparator without performing the accumulation operation; if u≠v, the enable control counter has an enable signal E.sub.2=1, so that the feedback-plus-one operation is performed on the current w; as long as u≠v, the comparator, the enable control accumulator and the enable control counter repeat the above operations until u=v, resulting in Ē.sub.2=1, and E.sub.1=0, that is, the enable control accumulator does not perform the accumulation operation and the enable control counter does not perform the feedback-plus-one operation, and then a value of w is output.
8. The decoder according to claim 7, wherein the n-dimensional buffer comprises a n-input and single-output buffer, wherein when each of the n single-code-element calculators is implemented by the calculator with the multiplier, the i-th single-code-element calculator with the multiplier includes five independent n-dimensional registers, a three-input adder, a two-input multiplier, a two-input adder and a modulo n operator, wherein i=1, 2, . . . , n, wherein the five independent n-dimensional registers of the i-th single-code-element calculator with the multiplier are configured to respectively store i, n, −r.sub.1, w and s.sub.1; output ends of three of the five independent n-dimensional registers of the i-th single-code-element calculator with the multiplier storing i, n and −r.sub.1 are respectively connected to three input ends of the three-input adder, and the three-input adder is configured to perform an add operation of (n−r.sub.1+i), wherein i=1, 2, . . . , n; an output end of the three-input adder is connected to one input end of the two-input multiplier, the other input end of the two-input multiplier is connected to one of the five independent n-dimensional register of the i-th single-code-element calculator with the multiplier storing w, and the two-input multiplier is configured to perform an multiply operation of (n−r.sub.1+i)w; an output end of the two-input multiplier is connected to one input end of the two-input adder, the other input end of the two-input adder is connected to one of the five independent n-dimensional register of the i-th single-code-element calculator with the multiplier storing s.sub.1, and the two-input adder is configured to perform an add operation of (s.sub.1+(n−r.sub.1+i)w); and an output end of the two-input adder is connected to the modulo n operator, and the modulo n operator is configured to perform an mod n operation on (s.sub.1+(n−r.sub.1+i)w), and output an i-th code element p(i) in the decode codeword.
9. The decoder according to claim 7, wherein the n-dimensional buffer comprises a n-input and single-output buffer, wherein when each of the n single-code-element calculators is implemented by the calculator with the accumulator and the counter to form a simplified single-code-element calculator, the i-th simplified single-code-element calculator includes four n-dimensional registers, a three-input adder, an enable control accumulator, a counter with an intermediate parameter w cycle-minus-one operation, a two-input adder and a modulo n operator, wherein i=1, 2, . . . , n, wherein the four n-dimensional registers are configured to respectively store i, n, −r.sub.1 and s.sub.1; output ends of three of the four n-dimensional registers storing i, n and −r.sub.1 are respectively connected to three input ends of the three-input adder to achieve an add operation of (n−r.sub.1+i); an operation result of the three-input adder is input to the enable control accumulator to achieve w times of accumulation of (n−r.sub.1+i), wherein an operation of w−1 is performed for each accumulation; when w≠0, the enable control accumulator has an enable signal E=1, so that the enable control accumulator continues to perform the accumulation operation on (n−r.sub.1+i), until w is reduced to 0, and then the enable control accumulator has an enable signal E=0, so that the accumulator stops the accumulation operation and outputs a result to one input end of the two-input adder; the other input end of the two-input adder is connected to one of the four n-dimensional register storing s.sub.1, and the two-input adder is configured to perform an add operation of (s.sub.1+(n−r.sub.1+i)w); and an output end of the two-input adder is connected to connected to the modulo n operator, and the modulo n operator is configured to perform an mod n operation on (s.sub.1+(n−r.sub.1+i)w), and output an i-th code element p(i) in the decode codeword.
10. The decoder according to claim 2, wherein when each of the n single-code-element calculators is implemented by the calculator with the multiplier, the i-th single-code-element calculator with the multiplier includes five independent n-dimensional registers, a three-input adder, a two-input multiplier, a two-input adder and a modulo n operator, wherein i=1, 2, . . . , n, wherein the five independent n-dimensional registers are configured to respectively store i, n, −r.sub.1, w and s.sub.1; output ends of three of the five independent n-dimensional registers storing i, n and −r.sub.1 are respectively connected to three input ends of the three-input adder, and the three-input adder is configured to perform an add operation of (n−r.sub.1+i), wherein i=1, 2, . . . , n; an output end of the three-input adder is connected to one input end of the two-input multiplier, the other input end of the two-input multiplier is connected to one of the five independent n-dimensional register storing w, and the two-input multiplier is configured to perform an multiply operation of (n−r.sub.1+i)w; an output end of the two-input multiplier is connected to one input end of the two-input adder, the other input end of the two-input adder is connected to one of the five independent n-dimensional register storing s.sub.1, and the two-input adder is configured to perform an add operation of (s.sub.1+(n−r.sub.1+i)w); and an output end of the two-input adder is connected to the modulo n operator, and the modulo n operator is configured to perform an mod n operation on (s.sub.1+(n−r.sub.1+i)w), and output an i-th code element p(i) in the decode codeword.
11. The decoder according to claim 2, wherein when each of the n single-code-element calculators is implemented by the calculator with the accumulator and the counter to form a simplified single-code-element calculator, the i-th simplified single-code-element calculator includes four n-dimensional registers, a three-input adder, an enable control accumulator, a counter with an intermediate parameter w cycle-minus-one operation, a two-input adder and a modulo n operator, wherein i=1, 2, . . . , n, wherein the four n-dimensional registers are configured to respectively store i, n, −r.sub.1 and s.sub.1; output ends of three of the four n-dimensional registers storing i, n and −r.sub.1 are respectively connected to three input ends of the three-input adder to achieve an add operation of (n−r.sub.1+i); an operation result of the three-input adder is input to the enable control accumulator to achieve w times of accumulation of (n−r.sub.1+i), wherein an operation of w−1 is performed for each accumulation; when w≠0, the enable control accumulator has an enable signal E=1, so that the enable control accumulator continues to perform the accumulation operation on (n−r.sub.1+i), until w is reduced to 0, and then the enable control accumulator has an enable signal E=0, so that the accumulator stops the accumulation operation and outputs a result to one input end of the two-input adder; the other input end of the two-input adder is connected to one of the four n-dimensional register storing s.sub.1, and the two-input adder is configured to perform an add operation of (s.sub.1+(n−r.sub.1+i)w); and an output end of the two-input adder is connected to connected to the modulo n operator, and the modulo n operator is configured to perform an mod n operation on (s.sub.1+(n−r.sub.1+i)w), and output an i-th code element p(i) in the decode codeword.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
DETAILED DESCRIPTION OF THE EMBODIMENTS
(8) For clear understanding of the objectives, features and advantages of the present disclosure, detailed description of the present disclosure will be given below in conjunction with accompanying drawings and specific embodiments. It should be noted that the embodiments described herein are only meant to explain the present disclosure, and not to limit the scope of the present disclosure. Furthermore, the technical features related to the embodiments of the disclosure described below can be mutually combined if they are not found to be mutually exclusive.
(9) Basic Principles
(10) Basic principles of a (n, n(n−1), n−1) permutation group code of the disclosure are described below.
(11) Assuming that code symbols can take values in a positive integer finite domain Z.sub.n={1, 2, . . . , n} or an integer finite domain Z.sub.n.sup.0={0, 1, 2, . . . , n−1}, but a description with values mainly taken in Z.sub.n={1, 2, . . . , n} is given, and the result also applies to the case where values are taken in Z.sub.n.sup.0={0, 1, 2, . . . , n−1}.
(12) Calling a set formed by all n! permutations of n elements in Z.sub.n a symmetric group S.sub.n={π.sub.1, . . . , π.sub.k, . . . , π.sub.n!}, an element in S.sub.n may be represented by a permutation vector π.sub.k=[a.sub.1 . . . a.sub.i . . . a.sub.n]. All elements of a permutation are different and represented by a.sub.1, . . . , a.sub.i, . . . , a.sub.n∈Z.sub.n. Degree (dimension, size) of a permutation is |π.sub.k|=n, and cardinality (order) of the symmetric group is |S.sub.n|=n!. Let π.sub.0=e=[a.sub.1 a.sub.2 . . . a.sub.n]=[12 . . . n] represent an identity element of the symmetric group S.sub.n. A general permutation group code is defined as a subgroup of the symmetric group s.sub.n, and expressed as (n, μ, d)−PGC, where n represents a code length, μ represents the maximum cardinality (maximum size) of the code set, and d represents a minimum Hamming distance between any two permutation codewords in the code set. For example, a (n, n(n−1), n−1) permutation group code is a group code with a code length of n, a cardinality of n(n−1) and a minimum Hamming distance of n−1.
(13) The existing published research results show that a code set P.sub.n,x.sub.
(14)
where the expression (1) represents a first method for generating the code set P.sub.n,x.sub.
(15) For any n>1, in the above three methods for generating the code set P.sub.n,x.sub.
Example 1
(16) let n=7, which is a prime number, and let a fixed point x.sub.i=x.sub.7=7. The computation expression of L.sub.7,7 is L.sub.7,7={al.sub.1,x.sub.
(17)
(18) By using the (n−1=6)th powder of the cyclic-left-shift operator (t.sub.l1).sup.6 to act on the largest single fixed point subgroup L.sub.7,7, the following (7, 42, 6) permutation group code P.sub.7,7 can be obtained:
(19)
(20) Example 1 indicates that the code set P.sub.7,7 is a permutation group code with a code length of 7, a minimum distance of 6, a cardinality of 42 and an error-correcting capability of 5.
(21) Assuming that the transmitter transmits a signal it carrying information to a wired or wireless channel for transmission, this signal it is mapped to a signal point in a signal constellation diagram P.sub.n,x.sub.
(22) Minimum Euclidean distance decoding algorithm: let the transmitter transmit a codeword π=[a.sub.1 a.sub.2 . . . a.sub.n] selected from the code set P.sub.n,x.sub.
(23)
where d.sub.E({circumflex over (π)}, π) represents the Euclidean distance between the two vectors ft and it, i.e., d.sub.E({circumflex over (π)}, π)=√{square root over (Σ.sub.i=1.sup.n(â.sub.i−a.sub.i).sup.2)}. Then, {tilde over (π)}=[a.sub.1 a.sub.2 . . . a.sub.n] is output from the decoder as an accurate estimation of the transmitted codeword π=[a.sub.1 a.sub.2 . . . a.sub.n].
(24) The computation amount of the minimum Euclidean distance decoding algorithm for the (n, n(n−1), n−1) permutation group code is: (2n−1)n(n−1) additions, n.sup.2 (n−1) multiplications (exponentiation) and n(n−1) root square operations, and its computation complexity is at least O(n.sup.3). Due to the complexity of reaching the third power of the code length n, this decoding algorithm cannot meet the requirement of the practical communication system for the low complexity hardware implementation of the decoder. In order to find a simplified decoding algorithm with no performance loss compared to the minimum Euclidean distance decoding algorithm, it is necessary to use the characteristic of the (n, n(n−1), n−1) permutation group code that the error-correcting capability is d 1=n−2. The following example provides a valuable insight, which laid the foundation for the inventors to propose an efficient and low-complexity decoding method for a (n, n(n−1), n−1) permutation group code. In the following, with reference to the code set P.sub.7,7 in Example 1, it is analyzed why the error-correcting capability of the (7, 42, 6) permutation group code is d−1=n−2=5.
Example 2
(25) assuming that the transmitter transmits a signal carrying information to a channel, this signal is mapped to a signal point p=[5147362] in the signal constellation diagram P.sub.n,x.sub.
Technical Solution
(26) The technical solution is divided into two parts. The first part covers a decoding method for a (n, n(n−1), n−1) permutation group code based on coset partition, and the second part covers a decoder for the (n, n(n−1), n−1) permutation group code.
(27) Part 1: a complete algebraic decoding method for a (n, n(n−1), n−1) permutation group code based on coset partition
(28) The (n, n(n−1), n−1) permutation group code based on coset partition not only can be regarded as a constellation diagram with n(n−1) modulation signal points, but also can be regarded as a non-binary, non-linear and non-systematic error-correcting code with an error-correcting capability of d−1=n−2. According to the characteristic of the error-correcting capability of d−1=n−2, we propose the following complete algebraic decoding method for the (n, n(n−1), n−1) permutation group code based on coset partition.
(29) Complete algebraic decoding method: if and only if n is a prime number, let p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2 be two code elements correctly detected from a received real vector, in which r.sub.1, r.sub.2∈Z.sub.n are their position indices, and s.sub.1, s.sub.2∈Z.sub.n are their element values, then all code elements in the codeword p∈P.sub.n can be calculated by the following steps:
(30) i) Let w∈Z.sub.n be an efficient solution of an expression (r.sub.1−r.sub.2)w=s.sub.1−s.sub.2(mod n).
(31) ii) Calculating each element in a permutation codeword p by using the w according to the following expression:
p(i)=(s.sub.1+(n−r.sub.1+i)w)(mod n), where i=1,2, . . . ,n.
(32) iii) Outputting a decoded codeword p=[p(1)p(2) . . . p(n−1)p(n)].
(33) The computation amount of this decoding method is: 2n+2 additions, n+1 multiplications and n+1 modulo operations.
Example 3
(34) a codeword p=[5147362] is selected from P.sub.7,7 in Example 1, and sent to a channel. Assuming that two elements p(2)=1 and p(4)=7 are correctly detected. Firstly, according to an expression (r.sub.1−r.sub.2)w≡s.sub.1−s.sub.2(mod n), (2−4)w=1−7(mod 7) and −2w=−6(mod 7) are obtained, thereby obtaining a solution of w=3. Then, each element in the codeword is calculated as follows:
p(1)=(s.sub.1+(n−r.sub.1+1)w)(mod n)=(1+(7−2+1)3)(mod 7)=5,
p(2)=(s.sub.1+(n−r.sub.1+2)w)(mod n)=(1+(7−2+2)3)(mod 7)=1,
p(3)=(s.sub.1+(n−r.sub.1+3)w)(mod n)=(1+(7−2+3)3)(mod 7)=4,
p(4)=(s.sub.1+(n−r.sub.1+4)w)(mod n)=(1+(7−2+4)3)(mod 7)=7,
P(5)=(s.sub.1+(n−r.sub.1+5)w)(mod n)=(1+(7−2+5)3)(mod 7)=3,
p(6)=(s.sub.1+(n−r.sub.1+6)w)(mod n)=(1+(7−2+6)3)(mod 7)=6,
P(7)=(s.sub.1+(n−r.sub.1+7)w)(mod n)=(1+(7−2+7)3)(mod 7)=2.
(35) The decoded codeword is p=[p(1)p(2)p(3)p(4)p(5)p(6)p(7)]=[5147362], which is identical to the transmitted codeword. Therefore, the complete algebraic decoding method can achieve error-free decoding.
(36) Part 2: a complete algebraic decoder for a (n, n(n−1), n−1) permutation group code based on coset partition
(37) The complete algebraic decoding method for a (n, n(n−1), n−1) permutation group code based on coset partition is implemented by the complete algebraic decoder.
(38) The principle structure of the complete algebraic decoder is mainly composed of four parts, including a number of independent n-dimensional registers, a basic principle circuit of an intermediate parameter w calculator, basic principle circuits of n single-code-element calculators operating in parallel, and a n-dimensional buffer for n code elements, as shown in
(39) The independent n-dimensional registers are configured to respectively store parameters r.sub.1, r.sub.2, s.sub.1, s.sub.2, n and a code element position index i. The basic principle circuit of the intermediate parameter w calculator may be a calculator with a divider (
(40) The basic principle circuit of the intermediate parameter w calculator with a divider is configured to calculate the intermediate parameter w=(s.sub.1−s.sub.2)/(r.sub.1−r.sub.2)(mod n), and is mainly composed of four parts: four independent n-dimensional registers, two two-input adders, a divider, and a modulo n operator mod n, as shown in
(41) The position values r.sub.1, −r.sub.2 and the element values s.sub.1, −s.sub.2 of the two known code elements p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2 are stored in the four independent n-dimensional registers, r.sub.1 and −r.sub.2 are input to one adder, s.sub.1 and −s.sub.2 are input to the other adder, outputs r.sub.1−r.sub.2 and s.sub.1−s.sub.2 of the two adders are simultaneously output to the divider, and the modulo n operator mod n performs a modulo operation of the outputs (s.sub.1−s.sub.2)/(r.sub.1−r.sub.2) of the divider and then outputs w. Another variation is as follow: two modulo n operators mod n are respectively disposed in front of the divider, so that (r.sub.1−r.sub.2)(mod n) and (s.sub.1−s.sub.2)(mod n) are input to the two input ends of the divider, and then the divider outputs w=(s.sub.1−s.sub.2)(mod n)/(r.sub.1−r.sub.2)(mod n).
(42) In order to eliminate the complicated divider and modulo n operator in the process of calculating the intermediate parameter w, a flowchart for calculating the intermediate parameter w is provided according to the working characteristics of the basic unit circuit.
(43) A flowchart for the simplified intermediate parameter w calculator:
(44) Position values r.sub.1, r.sub.2 and element values s.sub.1, s.sub.2 of the two known code elements p(r.sub.1)=s.sub.1 and p(r.sub.2)=s.sub.2 are input, and the intermediate parameter w is initialized to be w=1. u=r.sub.1 r.sub.2 and v=s.sub.1−s.sub.2 are respectively calculated. Values of u and v are respectively determined: if u>0, a value of u is directly output, and if u<0, then u=n+u, a value of u is output; similarly, if v>0, a value of v is directly output, and if v<0, then v=n+v, a value of v is output. The above process is used to replace the operation of the modulo n operator. The values of u and v are compared, if u=v, then w=1 is output; if u≠v, then w times of accumulation of u are performed so that uw=v (1<w≤n), and w is output.
(45) A circuit for calculating the intermediate parameter w, which is designed according to the idea of the flowchart provided in
(46) A basic principle circuit of a simplified intermediate parameter w calculator is mainly composed of five n-dimensional registers, two adders with carry bit C, two two-input adders, a n-dimensional NAND gate comparator, an enable control accumulator, and an enable control counter with feedback-plus-one operation, as shown
(47) Parameters r.sub.1, −r.sub.2, s.sub.1, −s.sub.2 and n are respectively stored in the five n-dimensional registers, and the counter has an initial value set to w=1. r.sub.1, −r.sub.2 and s.sub.1, −s.sub.2 output from the n-dimensional registers are respectively input to the two adders with carry bit C, and after the add operation, the respective double-throw switch is controlled by the value of the corresponding carry bit C.
(48) The two adders with carry bit C are configured to respectively calculate u=r.sub.1−r.sub.2 and v=s.sub.1−s.sub.2. When u<0, the carry bit C.sub.1=1, the corresponding double-throw switch is thrown to the right, u enters the two-input adder 1 to achieve an add operation of n+u, and u is output and enters the comparator through the accumulator; when u>0, the carry bit C.sub.1=0, the corresponding double-throw switch is thrown to the left, u enters the comparator through the accumulator. When v<0, the carry bit C.sub.2=1, the corresponding double-throw switch is thrown to the left, v enters the two-input adder 2 to achieve an add operation of n+v, and v is output and directly enters the comparator; when v>0, the carry bit C.sub.2=0, the corresponding double-throw switch is thrown to the right, and v directly enters the comparator.
(49) When the enable signal E.sub.1=1, the accumulator performs an add operation of u+u; when the enable signal E.sub.1=0, the accumulator directly output u to the comparator without performing the add operation.
(50) The comparator compares u and v. If u=v, a low level enable signal E.sub.2=1 is output, so that the counter directly outputs w=1 without performing the feedback-plus-one operation.
(51) If u≠v, the accumulator has an enable signal E.sub.1=1, and returns the current output u to its input end for accumulating u once; meanwhile, the counter has an enable signal Ē.sub.2=1, so that the feedback-plus-one operation is performed on the current output w; as long as u≠v, the comparator, the accumulator and the counter repeat the above operations until u=v, resulting in that Ē.sub.2=1, and the accumulator stops performing the feedback-plus-one operation, and outputs a value of w.
(52) When n is not too large, the time taken to perform w times of accumulation of u does not exceed the time taken by the divider to perform an operation once, and then the simplification from
(53) The basic principle circuit of the single-code-element calculator with the multiplier is mainly composed of five independent n-dimensional registers, a three-input adder, a two-input multiplier, a two-input adder and a modulo n operator, as shown
(54) The five independent n-dimensional registers are configured to respectively store a code element position index i, a code length n, −r.sub.1, an intermediate parameter w, and s.sub.1. Firstly, i, n and −r.sub.1 are input to the three-input adder to achieve an add operation of (n−r.sub.1+i). Secondly, the operation result of the adder and w output from the n-dimensional register are input to the multiplier to achieve a multiply operation of (n−r.sub.1+i)w. Then, the operation result of the multiplier and s.sub.1 output from the n-dimensional register are input to the two-input adder to achieve an add operation of (s.sub.1+(n−r.sub.1+i)w). Finally, a modulo n operation is performed on the operation result of the adder to output an i-th code element p(i) in the decode codeword.
(55) In order to eliminate the complicated operation circuit of the multiplier in the process of calculating a single code element, the multiply operation of (n−r.sub.1+i) and w may be regarded as w times of accumulation of (n−r.sub.1+i), that is, the multiplier may be converted to an accumulator controlled by a counter with a cycle-minus-one operation of an intermediate parameter w.
(56) The basic principle circuit of the simplified single-code-element calculator is mainly composed of four n-dimensional registers, a three-input adder, an enable control accumulator, a counter with a cycle-minus-one operation of an intermediate parameter w, a two-input adder and a modulo n operator, as shown in
(57) The four n-dimensional registers are configured to respectively store a code element position index i, a code length n, −r.sub.1 and s.sub.1. Firstly, i, n and −r.sub.1 are input to the three-input adder to achieve an add operation of (n−r.sub.1+i). Secondly, the operation result of the adder is input to the enable control accumulator to achieve w times of accumulation of (n−r.sub.1+i), in which an operation of w−1 is performed for each accumulation; when w≠0, the accumulator has an enable signal E=1, so that the accumulator continues to perform the accumulation operation on (n−r.sub.1+i), until w is reduced to 0, and then the accumulator has an enable signal E=0, so that the accumulator stops the accumulation and outputs a result to one input end of the two-input adder. This process is equivalent to the multiply operation of (n−r.sub.1+i)w. Then, the operation result of the multiplier and s.sub.1 output from the n-dimensional register are input to the two-input adder to achieve an add operation of (s.sub.1+(n−r.sub.1+i)w). Finally, a modulo n operation is performed on the operation result of the adder to output the i-th code element p(i) in the decode codeword.
(58) When n is not too large, the time taken to perform w times of accumulation of a number does not exceed the time taken by the divider to perform an operation once, and then the simplification from
(59) The architecture of the complete algebraic decoder is mainly composed of an intermediate parameter w calculator, n single-code-element calculators and a n-input and single-output buffer. The intermediate parameter calculator may be implemented by the intermediate parameter w calculator with the divider in
(60) An optional architecture of the complete algebraic decoder is mainly composed of a simplified w calculator, n simplified single-code-element calculators operating in parallel and a n-input and single-output buffer, shown in
(61) The signal flow of the architecture of the complete algebraic decoder is described as follows: the w value of the simplified intermediate parameter w calculator enters the n counters with the w cycle-minus-one operation operating in parallel, respectively; when the accumulators in the n simplified single-code-element calculators operating in parallel acquire the output results (n−r.sub.1+i) of the three-input adder, where i−1, 2, . . . , n, the respective counter with the w cycle-minus-one operation provides an enable signal E=1 for each cycle-minus-one operation, so that the accumulator performs the accumulation operation on (n−r.sub.1+i) once, until w in the counter with the cycle-minus-one operation of w is reduced to 0, and then the accumulator stops the accumulation operation and outputs a calculation result (n−r.sub.1+i)w; the calculation result (n−r.sub.1+i)w and s.sub.1 are input together to the two-input adder to achieve an operation of s.sub.1+(n−r.sub.1+i)w; a modulo n operation is performed on the operation result of the two-input adder; finally, the output results of the n simplified single-code-element calculators operating in parallel are input to a n-dimensional buffer to form a decode codeword p=[p(1)p(2) . . . p(n)].
(62) It should be readily understood to those skilled in the art that the above description is only preferred embodiments of the present disclosure, and does not limit the scope of the present disclosure. Any change, equivalent substitution and modification made without departing from the spirit and scope of the present disclosure should be included within the scope of the protection of the present disclosure.