CN104617959B - A kind of LDPC coding and decoding methods based on general processor - Google Patents
A kind of LDPC coding and decoding methods based on general processor Download PDFInfo
- Publication number
- CN104617959B CN104617959B CN201510026526.1A CN201510026526A CN104617959B CN 104617959 B CN104617959 B CN 104617959B CN 201510026526 A CN201510026526 A CN 201510026526A CN 104617959 B CN104617959 B CN 104617959B
- Authority
- CN
- China
- Prior art keywords
- matrix
- vector
- row
- value
- check
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
This application discloses a kind of LDPC coding methods, it is determined that vector p1And p2, and obtain coding result vector;It is determined that vector p1And p2Shi Renyi matrixes include with any vectorial processing that is multiplied:Using every a line of any matrix as a thread, carry out the matrix corresponding line and be multiplied with any vectorial, and the multiplied result of all rows is constituted into result vector;Every a line of any matrix includes with any vectorial multiplication operations:Determine the corresponding vectorial original positions of each element j of the row of matrix i-th, by it is any vector in from the original position Z Ai,jThe data of length are shifted left by way of single-instruction multiple-data stream (SIMD), and the preceding A that original position is startedi,jThe data of length are moved to after the data after shifting left, and obtain the corresponding vector shift results of element j;Again by the vector shift results added of each element.By the above method, using multithreading and SIMD processing, coding rate can be improved in general processor.
Description
Technical field
The application is related to LDPC coding and decoding technologies, more particularly to a kind of LDPC coding and decoding methods based on general processor.
Background technology
LDPC code, is a kind of larger linear block codes of code length.Its check matrix is also larger, and non-in check matrix
Seldom, i.e., the number of " 1 " is seldom for neutral element, therefore claims low-density.
During IEEE 802.11n WLAN host-host protocols are realized, LDPC coding and decoding technologies need to be used,
According to protocol requirement, wherein LDPC PPDU (Presentation Protocol Data Unit, presentation protocol data unit)
Generating process it is as follows, referring to Fig. 1:
(1) calculate and shorten bit
(1a) calculates available bit number Navbits, formula is:
Npld=length × 8+16,
Wherein, if STBC (Space-time block code) precoding, then flag bit mSTBCIt is otherwise 1 for 2;
NCBPSRepresent the number of coded bits of each symbol;Length represents PSDU's (presentation Service DataUnit)
The byte number of byte number, as information bit position;NpldRepresent PSDU and SERVICE FIELD total bit number;R represents to compile
Code code check.
(1b) calculates LDPC code word number NCWWith code length LLDPC
Work as NavbitsWhen≤648, code word number NCWFor 1, and if Navbits≥NpldDuring+912 × (1-R), code length LLDPCFor
1296, otherwise code length LLDPCFor 648;When 648<NavbitsWhen≤1296, code word number NCWFor 1, and if Navbits≥Npld+
During 1464 × (1-R), code length LLDPCFor 1944, otherwise code length LLDPCFor 1296;When 1296<NavbitsWhen≤1944, code word number
NCWFor 1, now code length LLDPCFor 1944;When 1944<NavbitsWhen≤2592, code word number NCWFor 2, and if Navbits≥Npld+
During 2916 × (1-R), code length LLDPCFor 1944, otherwise code length LLDPCFor 1296;Work as Navbits>When 2592, code word number NCWForNow code length LLDPCFor 1944;
(1c), which is calculated, shortens bit number Nshrt, shorten bit and be filled into information bit position before LDPC codings
Afterwards:
Nshrt=max (0, (NCW×LLDPC×R)-Npld)
Work as NshrtWhen=0, operated without mending 0.Work as Nshrt>When 0, shorten bit in all NCWAverage mark in individual code word
Cloth, i.e., each code assignment to shortening bit number beIf NshrtmodNCW≠ 0, wherein mod is
Remainder, i.e. NshrtTo NCWRemainder, then first code word more than other code words one shortening bit.
(2) LDPC codings are carried out, check bit position is obtained.
(3) abandon and shorten bit
(4) calculate punching bit position number and abandon punching bit position, punching bit after LDPC codings is calculated according to following formula
Position number Npunc:
Npunc=max (0, (NCW×LLDPC)-Navbits-Nshrt)
IfOr (Npunc>0.3×NCW
×LLDPC× (1-R)), increase NavbitsThen N is recalculated according to following formulapunc:
N'avbits=Navbits+NCBPS×mSTBC, Npunc=max (0, (NCW×LLDPC)-N'avbits-Nshrt)
Punching bit position is in all NCWBe evenly distributed in individual code word, i.e., each code assignment to punching bit position number beIf NpuncmodNCW≠ 0, wherein mod are remainder, i.e. NpuncTo NCWRemainder, then first code word is than other
The many punching bit positions of code word.
(5) repetition bits position is calculated, repetition bits position number N is calculated according to following formularep:
Nrep=max (0, N'avbits-NCW×LLDPC×(1-R)-Npld)
Repetition bits position is in all NCWBe evenly distributed in individual code word, i.e., each code assignment to repetition bits position number beIf NrepmodNCW≠ 0, wherein mod is remainder, i.e. NrepTo NCWRemainder, then first code word is than other
The many repetition bits positions of code word.Repetition bits position order since first bit of information bit position is chosen, until meeting
Length requirement, repetition bits position is replicated from the code word after the shortening bit removed.The repetition bits position order selected
It is connected to after check bit position.When needing punching, check bit position need not be repeated, and vice versa.
In LDPC PPDU generating process, LDPC coding methods are mostly important, the code word exported after LDPC is encoded to
Amount is designated as c=(S, p1,p2), wherein S is information vector, p1And p2Vector is verified for code word, but because of the check matrix H of LDPC code
Larger, the computing in cataloged procedure will be very cumbersome.The check matrix provided in observation agreement is as can be seen that under different code check R
Matrix its row be 24 again, its row is 24 × (1-R) again, according to the characteristic of check matrix H, is carried out following piecemealBe divided into matrix A, matrix B, matrix D, matrix E, six submatrixs of matrix T and matrix F, wherein matrix B,
The structure of matrix D, matrix E and matrix T is more special, B=(1-- ... 0- ...)T, D=(1), E=(- ... -0),The structure irregularities of matrix A and matrix F, referring to agreement 802.11n.Further, since check matrix H is advised
Mould is larger, therefore, when representing check matrix, by a submatrix in an actual check matrix of element representation, specifically
Ground, in check matrix H and matrix in block form A, B, D, E, T, F method for expressing, "-" represents that the submatrix is null matrix, " 0 "
It is unit matrix to represent the submatrix, and " constant C " represents that the submatrix is the result square behind unit Matrix C time ring shift right position
Battle array.Wherein the dimension of submatrix is Z*Z, and Z can be determined previously according to code length.By the above-mentioned means, verification can be greatly reduced
The expression size of matrix and each matrix in block form.
On the premise of known check matrix H and information vector S, the concrete mode for determining codeword vector c is:According to verification
Equation HcT=0TCan score solve equationIt can obtain after optimizationObtain p1And p2Afterwards, you can obtain codeword vector c=(S, p1,p2)。
With reference to above-mentioned LDPC cataloged procedures encoder composition referring to Fig. 2, wherein containing 4 kinds of functional modules:Encode square
Battle array maker, matrix multiplier, matrix adder and LDPC code word synthesizer.
6 pre-encoding matrix generators are had in the encoder, its input is a matrix, is matrix A, matrix B, square respectively
Battle array D, matrix E, six submatrixs of matrix T and matrix F, its output is a matrix, is encoded matrix generator processing
Matrix afterwards, its function be by the matrix of input compress storage by way of, i.e., matrix non-zero element is only deposited, by input matrix
Enter line translation, obtain output matrix.
6 multipliers are had in the encoder, it has two inputs, one output end, and two inputs are information respectively
Vectorial S, matrix A, handled by pre-encoding matrix generator after matrix, the matrix of consequence by other multipliers or by adding
Two in matrix of consequence after musical instruments used in a Buddhist or Taoist mass, its output is a matrix, be two inputs carry out the result after multiplying to
Amount, its function is that two inputs are carried out into matrix multiplication operation and output result matrix.
The encoder has 2 matrix adders, and its input is two matrixes, is matrix multiplier output in encoder
Matrix afterwards, its output is a matrix, is that two input matrixes carry out the result after addition of matrices, its function is by two inputs
Matrix carries out addition of matrices and output result matrix.
Have 1 LDPC code word synthesizer in the encoder, its input is three vectors, be information vector S, code word verify to
Measure p1With code word verification vector p2, its output is a vector, is codeword vector c, and its function is by information vector S, code word verification
Vectorial p1With code word verification vector p2Three vector synthesis codeword vector c=(S, p1,p2) and codeword vector c.
Above-mentioned is that existing LDPC coding methods and corresponding encoder are constituted.In receiving terminal, in addition it is also necessary to reception
LDPC code word enters row decoding, the information vector rebuild.Existing LDPC decoding techniques, its key step is as follows:
(1) M checkpoint is divided into MbLayer, every layer includes T check-node.Next, one layer of order for connecing one layer is held
Row decoding process.The information of check-node and variable node is calculated in first layer processing procedure, first layer decoding process terminates
Afterwards, the second layer uses the information of the variable node obtained from first layer to be initialized, and so on;
(2) initialize:With LLRs (log-likelihood ratios, i.e.,Information to variable nodeValue initialized, and will be all
Check-node information0 is set to, the iterations of decoding algorithm is I, and iterative process is carried out by row, wherein minimum
With the n ∈ N in algorithmmRepresent check matrix prototype HbIn [Hb]m,nThe row of ≠ '-';
(3) minimize:Variable node vector qnRing shift right position (shift count S (m, n)=[Hb]m,n) subtract verification
Nodal informationBe there is into vector t in resultnIn, according to OMS (offset min-sum, i.e.,Value reuse characteristic, it is only necessary to calculate vector in element minimum value
And sub-minimum;
(4) minimum value is selected:To n ∈ Nm, calculate and update qnWithValue.
To realize above-mentioned interpretation method, existing decoder is made up of 4 parts referring to Fig. 3, respectively initializes decoder
Unit, minimum value and sub-minimum selecting unit, data truncate unit and cycle shift unit.
Initialization translator unit in the decoder, its input is a LDPC test matrix, and it is a warp that it, which is exported,
The test matrix crossed after initialization decoding unit processing, its function is to be stored test matrix according to decoder input requirements
Change and export the test matrix after processing.
Minimum value and sub-minimum selecting unit in the decoder, its input is two matrixes, and one of them is by first
Test matrix after the processing of beginningization translator unit, another is LDPC code word matrix c, i.e., after wireless channel is transmitted
LDPC code word matrix c, it is a matrix after minimum value and the processing of sub-minimum selecting unit that it, which is exported, and its function is to calculate
The minimum value of the difference gone out between variable node ring shift right position and check-node and sub-minimum and output result matrix is supplied to
Data truncate unit and cycle shift unit.
The data of the decoder truncate unit, and it is an output after minimum value and the processing of sub-minimum selecting unit that it, which is inputted,
Matrix, it is a matrix after data truncate cell processing that it, which is exported, and its function is to prevent check-node information
Overflow, data truncation processing is carried out to it, and output result matrix is supplied to cycle shift unit.
The cycle shift unit of the decoder, its input is two matrixes, and one of them is truncated after cell processing by data
The matrix of output, another is the matrix exported after minimum value and the processing of sub-minimum selecting unit, and it is a process that it, which is exported,
Matrix after cycle shift unit processing, its function is added by the way that minimum value matrix and check-node matrix are carried out into step-by-step mould two
Calculate variable node matrix, and output variable node matrix equation.
As described above, the coding and decoding of LDPC code is theoretical more ripe at present, but because LDPC code is that a kind of code length is larger
Linear block codes, check matrix is also larger, and algorithm complex is very high, and traditional LDPC coding and decoding modes are not well positioned to meet
The throughput requirement of IEEE 802.11n systems, has largely had influence on the performance of system.Existing high speed wireless access system
The realization of LDPC code is mostly based on FPGA (Field-Programmable Gate Array, field programmable gate array) in system
Chip and DSP (Digital Signal Processor, Digital Signal Processing) chip.Although can be met by previous methods
Processing and the requirement of time delay in Modern High-Speed protocol of wireless local area network, but FPGA programmings and specialty DSP are more complicated, lack
Abundant programmed environment and debugging acid, applicability are general.
The content of the invention
The application provides a kind of LDPC coding and decoding methods based on general processor, can on aageneral-purposeaprocessor efficiently
Realize LDPC coding and decodings.
To achieve the above object, the application is adopted the following technical scheme that:
A kind of LDPC coding methods based on general processor, including:Obtain to be encoded by signal acquisition or reception
Signal vector S, determines check matrix H and its matrix in block form A, B, D, E, F and T, and preserved;According toIt is determined that vector p1And p2, and obtain LDPC coding result vector c=(S, p1,p2);Wherein, institute
State determination vector p1And p2Shi Jinhang any matrix includes with any vectorial processing that is multiplied:
Using every a line of any matrix as a thread, carry out the corresponding line of the matrix with it is described any vectorial
Multiplication operations, and the multiplied result of all rows is combined into composition result vector;
Wherein, every a line of any matrix includes with any vectorial multiplication operations:Determine matrix current i-th
The capable corresponding vectorial original positions of each element j=any vectorial original position+Ai,j+ (j-1) * Z, described will appoint
In one vector from the original position Z-Ai,jThe data of length are moved to left by way of single-instruction multiple-data stream (SIMD) SIMD
Position, and the preceding A that the original position is startedi,jThe data of length are moved to after the data after shifting left, and obtain the element j
Corresponding vector shift result;Again by the corresponding vector shift results added of each element, described every a line and described are used as
The multiplied result of one vector;
In the mode of the SIMD, will from the original position Z-Ai,jThe data of length are divided into units of length WSection is rightSegment data carries out shift left operation parallel, then by remaining (Z-Ai,j) modW length data
Carry out shift left operation;
The submatrix size that Z represents for an element in the check matrix.
It is preferred that when any matrix is T-1When, the T-1Every a line and the multiplication operations of corresponding vector when, only
Carry out T-1Value is multiplied for 0 element with corresponding vectorial, the value is obtained for the corresponding vector shift result of 0 element, by it
The corresponding vector shift result of remaining element is set to null vector;Again by the corresponding vector shift results added of each element, as
Described every a line and any vectorial multiplied result.
It is preferred that it is valid data to carry out Z data before being taken after shift left operation simultaneously to W segment datas.
It is preferred that described include the corresponding vector shift results added of each element:By the corresponding vector of each element
Shift result is divided into units of length WSection, passes through SIMD pairsSegment data carries out addition behaviour parallel
Make, then by remaining (Z-Ai,j) modW length data carry out phase add operation.
It is preferred that the matrix A, B, D, E, F and T-1Preserved by linear search table.
A kind of LDPC interpretation methods based on general processor, including:Encoded LDPC code word signal c is received, it is determined that
Check matrix H;Variable node vector q is calculated by successive ignition and is used as decoding result, during each iteration, according to current variable
Knot vector q and check-node vector r calculates temporary variable vectorAnd according to temporary variable vector t
Check-node vector r is updated, updating variable node vector q further according to check-node vector r and temporary variable vector t isDuring first iteration, using character signal c as variable node vector q, verification knot vector r is set to 0;Its
In,
Every time when iterative calculation temporary variable vector t, check-node vector r and variable node vector q, with check matrix
Carry out computing and renewal as thread per a line, obtain with call number in often capable corresponding vectorial t, q and r fromArriveSubvector;Wherein, i is the line index of check matrix,
I-th row of the correspondence check matrix calculates temporary variable vector t, check-node vector r and the corresponding sons of variable node vector q
When vectorial, according to each non-"-" element H of the check matrix rowi,jWith element H in correspondence calculating vector t, q and ri,jIt is corresponding
Call number fromArriveSubvector, then enter successively
Row connection is obtained and often capable corresponding subvector, during i=1, order
Calculate and Hi,jThe mode of corresponding temporary variable vector t subvectors is:Determine Hi,jCorresponding vectorial original position
Z*(n-1)+Hi,n, original position described in the corresponding vectorial q subvectors of the i-th row is risen into length isOr 6 data
Copied to by way of SIMD and Hi,jThe beginning of corresponding temporary variable vector t subvectors;In Hi,n≠0、Hi,n≠ '-' and
(Z-Hi,n) modW ≠ 0 when, determine matrix MLdpcAssemble1In with check matrix element Hi,jThe value of each element in correspondence rowAnd will be with element Hi,jCall number in corresponding current vectorial q subvector
ForEach element copy to successively and Hi,jCorresponding temporary variable to
On the current location for measuring t subvectors;Each element H is determined againi,jCorresponding secondary vector original position MLdpcOffset2, will be described
Secondary vector original position plays lengthData copied to by way of SIMD and Hi,jCorresponding temporary variable to
On the current location for measuring t subvectors;Take and Hi,jPreceding Z and the conduct that takes absolute value in corresponding temporary variable vector t subvectors
With Hi,jCorresponding temporary variable vector t effective subvector;
Work as Hi,n≠0、Hi,n≠ '-' and (Z-Hi,n) modW ≠ 0 when,
Work as Hi,n=0 or Hi,n='-' or (Z-Hi,n) modW=0 when, (MLdpcOffset2)i,j=Z* (n-1);
K is that general processor once can processing data amount size, the fundamental unit size that k is handled for SIMD;Code length LLDPCWhen=648,
LdpcRemain=11;As code length LLDPCWhen=1296, LdpcRemain=6;As code length LLDPCWhen=1944, LdpcRemain
=1;Indexes of the j for each non-"-" element in the i-th row in all non-"-" elements of the row, n is j-th of non-"-" member of the i-th row
Column index of the element in check matrix.
It is preferred that calculating is with the mode of the often capable corresponding check-node vector r subvectors of check matrix:
The corresponding temporary variable vector t subvectors that will often be gone with check matrix are write as VLdpcRowLength(v) row and
The matrix T of rowv, wherein, the matrix TvEach behavior described in temporary variable vector t subvectors with element Hi,jCorresponding son
Vector, carries out cover when columns is inadequate;
To the matrix TvMost value distribution is carried out, most value variable vector m subvector matrixes M is obtainedv;
According to the matrix TvCalculate intermediate variable vector s subvector matrixes Sv;
According to the matrix MvWith the matrix SvMiddle index value identical element, determines an intermediary matrix Rv' in corresponding rope
Draw the element value of value;Wherein, if matrix SvIn either element be less than 0, then take the complement of the either element and any with this
Element is added, and will add up result as matrix Rv' in value with the either element index value identical element;If matrix Sv
In either element be equal to 0, then the either element is added with 0, will add up result as matrix RvIn with the either element
The value of index value identical element;If matrix SvIn either element>0, then in matrix MvIn take and the either element index
Value identical element is added with the either element, will add up result as matrix RvIn it is identical with the either element index value
Element value;It is described compare carried out with the operation being added by way of SIMD;
By SIMD modes by the matrix Rv' and matrix TvMiddle index value identical element subtracts each other, and regard result as verification
Knot vector r subvector matrixes RvThe element value of middle same index value;By the matrix RvIn often row preceding Z element according to
The mode of row major sequential reads out composition check-node vector r subvectors.
It is preferred that the progress most value distribution includes:
The matrix T is determined by way of SIMDvIn each row minimum value and sub-minimum and minimum value it is corresponding
Line index;Obtained minimum value and sub-minimum are modified, default correction value β is subtracted, when revised minimum value and
When sub-minimum is less than 0,0 is set to, otherwise keeps constant;
According to the matrix TvIn each row current minimum value, sub-minimum and the corresponding line index of minimum value, construction most
It is worth variable vector m subvector matrixes MvThe row of middle same index, wherein, in MvEither rank in, will phase corresponding with current minimum value
Element with line index is set to the minimum value determined, remaining element is set into sub-minimum.
It is preferred that the minimum value and sub-minimum that each row are determined by way of SIMD and corresponding line index
Mode includes:
By the matrix TvEach row element be divided intoIndividual sub-block, each sub-block includes W base unit;Comparing
The matrix TvIn any two row element when, W base unit is disposably compared by way of SIMD.
It is preferred that the calculating intermediate variable vector s subvector matrixes SvIncluding:
For matrix TvIn each row, by the row all elements carry out xor operation, then by result with i-th ' row member
Carry out or operate with 0x7f after plain XOR, incite somebody to action or operating result is used as intermediate vector matrix SvI-th ' row member of middle same index row
Element;Wherein, by the matrix TvEach row element be divided intoIndividual sub-block, each sub-block includes W base unit, is carrying out
When XOR/or operation, the XOR/of W base unit is disposably performed by way of SIMD or is operated.
It is preferred that calculating and Hi,jCorresponding variable node vector q subvectors include:
Determine Hi,jCorresponding vectorial original position Z* (n-1)+Hi,n, by SIMD modes by Hi,jCorresponding temporary variable
Vectorial t subvectors and Hi,jCorresponding check-node vector r subvectors are added, and original position described in result vector is risen into length
ForOr 5 data are copied to and H by way of SIMDi,jThe beginning of corresponding variable node vector q subvectors;
In Hi,n≠0、Hi,n≠ '-' and (Z-Hi,n) modW ≠ 0 when, determine matrix MLdpcAssemble1In with check matrix element Hi,jCorrespondence
The value of the element of each in rowAnd will be with element Hi,jIt is corresponding when it is preceding to
Measuring call number in q subvector isEach element copy to successively with
Hi,jOn the current location of corresponding variable node vector q subvectors;
It is determined that each element Hi,jCorresponding secondary vector original position MLdpcOffset2, by the secondary vector original position
Rise length be 0 orData copied to by way of SIMD and Hi,jCorresponding variable node vector q subvectors
On current location;
The cover number indicated according to LdpcRemain, according to MLdpcAssemble1In with check matrix element Hi,jCorrespondence row
The value of middle element carries out cover.
It is preferred that precalculating and preserving each element Hi,jCorresponding vectorial original position Z* (n-1)+Hi,nWith second to
Measure original position MLdpcOffset2, matrix MLdpcAssemble1, the vector that constitutes of the number of non-"-" element of often going in check matrix
VLdpcRowLength、MLdpcAssemble1、LdpcRemain。
As seen from the above technical solution, the LDPC coding and decoding methods in the application, can by SIMD instruction, multithreading and
The mode such as prestore and improve coding and decoding speed.
Brief description of the drawings
Fig. 1 is LDPC PPDU generating process schematic diagram;
Fig. 2 is the encoder composition schematic diagram of LDPC cataloged procedures;
Fig. 3 is existing ldpc decoder schematic diagram;
Fig. 4 is the overview flow chart of coding method in the application;
Fig. 5 is calculating code word verification vector p in the application LDPC coded treatments1Computing schematic diagram;
Fig. 6 is calculating code word verification vector p in the application LDPC coded treatments2Computing schematic diagram;
Fig. 7 is the structural representation of optimization multiplier 1;
Fig. 8 is the structural representation of optimization multiplier 2;
Fig. 9 is the structural representation of optimization adder;
Figure 10 be matrix A in an element be multiplied with vector S transposition handle schematic diagram;
Figure 11 is the processing schematic diagram of step 5 in the application LDPC coding methods;
Figure 12 is the processing schematic diagram of step 5 in the application LDPC interpretation methods;
Figure 13 uses figure for the idiographic flow of the application LDPC interpretation methods;
Figure 14 distributes the schematic flow sheet handled for the most value carried out in the application LDPC interpretation methods for a sub-block;
Figure 15 be LDPC interpretation methods in once most be worth distributive operation structural representation;
Figure 16 calculates the vectorial schematic flow sheet of intermediate variable to be directed to a sub-block in LDPC interpretation methods;
Figure 17 is the structural representation of an intermediate vector calculating in LDPC interpretation methods.
Embodiment
In order that the purpose of the application, technological means and advantage are more clearly understood, the application is done below in conjunction with accompanying drawing
It is further described.
The application provides the LDPC coding methods realized suitable for general processor and interpretation method.It is described below in detail
Coding method and interpretation method in the application.
According to the LDPC PPDU generation methods in IEEE 802.11n agreements, by codeword vector after coding be designated as c=(S,
p1,p2), wherein S is information vector, p1And p2Vector is verified for code word, check matrix H is simplified into six partsIt is divided into matrix A, matrix B, matrix D, matrix E, six submatrixs of matrix F and matrix T.Entering row decoding
Before, need extraneous input code length LLDPC, encoder bit rate R and information vector S.The application is according to general processor (GPP) chip carrier
The characteristic of structure is optimized as follows to LDPC coding methods:
1st, using SIMD (Single Instruction Multiple Data, single-instruction multiple-data stream (SIMD)) operation method
Coding method is optimized, its essential concept is that multiple data are handled within a CPU clock cycle to obtain
The effect of parallel processing, rather than being common occupation mode --- each clock cycle only carries out data processing behaviour
Make.Used general processor will be wherein related to once can processing data amount size, it is assumed that the size is K bit, SIMD processing
Fundamental unit size be k, then once-through operation can processing data amount
2nd, the information for optimizing check matrix using the method for linear search table is stored, and check matrix H is split into six portions
PointBe divided into matrix A, matrix B, matrix D, matrix E, six submatrixs of matrix F and matrix T, and with this six
Individual submatrix generates six linear search tables, reduces computation complexity.
3rd, using the method for multithreading, using the line number of check matrix H as Thread Count, i.e., to handle one in check matrix H
Row data are a thread, and the processing operation of multiple threads, and then the disposed of in its entirety performance of lifting system are performed in the same time.
Fig. 4 be the application in coding method general flow chart, wherein, the coding method based on algorithm principle with present
LDPC coding methods are identical, and difference is the implementing for coding method in general processor.Idiographic flow is as follows:
1st, according to 802.11n agreements, different code length LLDPCAnd different coding code check R correspond to different check matrix Hs.
First, according to code length LLDPCAnd encoder bit rate R, corresponding check matrix H is extracted, and following parameters are carried out just
Beginningization:
1.1 generator matrix A, matrix B, matrix D, matrix E, matrix F and matrix T-1Six submatrixs, wherein ()-1For square
Battle array it is inverse, and it is stored in linear search table successively, the particular location of data, uses internal memory needed for being marked with the method for offset
Exchange computation complexity for, improve the data processing speed of LDPC code coding method.
The size of submatrix representated by each element is Z in the selected check matrix H of 1.2 generations.As code length LLDPC=648
When, Z=27;As code length LLDPCWhen=1296, Z=54;As code length LLDPCWhen=1944, Z=81.
2nd, according to GPP chip characteristic, coding method is optimized using the method for multithreading, with the row of check matrix H
Number is Thread Count, and wherein the data line in check matrix H is that a thread process step 3 arrives step 4, is performed in the same time many
The processing operation of individual thread, i.e., the same time carries out the processing that multiple steps 3 arrive step 4, and then the disposed of in its entirety of lifting system
Performance.Following step 3 and step 4, is the idiographic flow of single thread processing.
3rd, code word verification vector p is calculated1, multiplying and add operation therein are entered using SIMD operation method
Row optimization, its computing schematic diagram is referring to Fig. 5, and idiographic flow is as follows:
3.1 matrix As are multiplied with vector S transposition, are as a result vector, and vector length is equal with the line number of matrix A.
3.2 matrix T-1It is multiplied with the transposition of step 3.1 acquired results vector, is as a result vector, vector length and matrix T-1
Line number it is equal.
3.3 matrix E are multiplied with the transposition of step 3.2 acquired results vector, are as a result vector, and vector length is with matrix E's
Line number is equal.
3.4 matrix Fs are multiplied with vector S transposition, are as a result vector, and vector length is equal with the line number of matrix F.
3.5 step 3.3 acquired results vector and step 3.4 acquired results addition of vectors, as a result as code word verification is vectorial
p1。
4th, code word verification vector p is calculated2, multiplying and add operation therein are entered using SIMD operation method
Row optimization, its computing schematic diagram is referring to Fig. 6, and idiographic flow is as follows:
4.1 matrix Bs and vector p1Transposition be multiplied, be as a result vector, vector length is equal with the line number of matrix B.
4.2 step 3.1 acquired results vector and step 4.1 acquired results addition of vectors, are as a result vector.
4.3 matrix T-1It is multiplied with the transposition of step 4.2 acquired results vector, as a result as code word verification vector p2。
5th, assembling LDPC code word vector c:
By gained vector according to S, p1、p2Sequential storage, produce LDPC code word vector c=(S, p1,p2)。
Be related to two kinds of optimization multipliers and a kind of optimization adder in the coding method of above-mentioned the application, respectively into
For optimization multiplier 1, optimization multiplier 2 and optimization adder.According to GPP chip architected features, optimization multiplier 1, optimization
Being related to the part of parallel work-flow in multiplier 2 and optimization adder can be optimized with SIMD operation method.Below one
One is introduced.
Optimization multiplier 1 has two inputs, one output end, and the optimization schematic diagram of multiplier 1 is referring to Fig. 7, in Optimized Coding Based
Involved matrix and multiplication of vectors computing are used in step 3.1, step 3.3, step 3.4 and the step 4.1 of method
To optimization multiplier 1.By taking step 3.1 as an example, the input of optimization multiplier 1 is matrix A and vector S transposition, and it is specific real
Existing flow is as follows:
1st, judge whether to reach the maximum number of lines of matrix A, if reaching, complete the operation;If being not reaching to, carry out
Step 2.
2nd, the submatrix of the Z*Z representated by first element in matrix A is multiplied with vector S transposition.Because the sub- square
Battle array is that Z*Z unit matrix passes through A1,1(A1,1The element of representing matrix A the first row first rows) behind secondary ring shift left position
As a result, so the submatrix is multiplied with vector S transposition carries out A equivalent to vectorial S1,1Secondary circulative shift operation.The operation can
SIMD optimizations are carried out, referring to Figure 10, concrete operations flow is as follows:
2.1 calculateThe data length of part 2=(Z-A1,1) modW (its
For Z-A1,1To W modulus), and required data initial value position=information vector s original positions+A1,1。
2.2 play required data initial value positionThe data copy of length as intermediate data starting
Position data;
2.3 couples of remaining (Z-A1,1) modW data carry out displacement copy, and by " remainder " in Figure 10 and
" cover " is copied in output.In order to adapt to SIMD computings, input vector length is Z, and output vector size will be
But in output vector, preceding Z element only therein is valid data, and result data is stored in into result vector register
In.
3rd, judge whether to reach the maximum number of column of matrix A, if reaching, return to step 1;If being not reaching to, walked
Rapid 4.
4th, the submatrix for entering to be about to the Z*Z in matrix A representated by next element is multiplied with vector S transposition, specifically
Step need not be stored in result vector register with step 2.1,2.2,2.3, but transposition multiplied result, and performs step 5.
5th, step 4 result of calculation is added with element in result vector register, two binary numbers are added equivalent to two
Number carries out xor operation, can now carry out SIMD optimizations, i.e. once-through operation and can obtain W result, referring to Figure 11, wherein (a1,
a2,…,aW) represent step 4 result of calculation, (b1,b2,…,bW) element in result vector register is represented, rectangle frame represents XOR
Arithmetic unit, (y1,y2,…,yW) represent the result after computing, i.e.,And be stored in result vector register, return to step 3.
Optimization multiplier 2 has two inputs, one output end, and the optimization schematic diagram of multiplier 2 is referring to Fig. 8, in Optimized Coding Based
Involved matrix uses optimization multiplier 2 with multiplication of vectors computing in the step 3.2 and step 4.3 of method.It is excellent
It is the special circumstances for optimizing multiplier 1 to change multiplier 2, and the one of input of optimization multiplier 2 is matrix T-1, different check square
Under battle array H, matrixMatrix T-1The element only descended in triangle is virtual value.By taking step 3.2 as an example,
The input for optimizing multiplier 2 is matrix T- 1With the transposition of step 3.1 acquired results vector, it is as follows that it implements flow:
1st, judge whether to reach the maximum number of lines of matrix A, if reaching, complete the operation;If being not reaching to, carry out
Step 2.
2nd, haveAs can be seen that matrix T-1Upper triangle element is 0,
Result after the submatrix of Z*Z representated by element " 0 " is multiplied with the transposition of step 3.1 acquired results vector in Fig. 4
It is still the latter, so to matrix T-1Element " 0 " in often going is multiplied with the transposition of step 3.1 acquired results vector in Fig. 4, and presses
According to the step 5 in optimization multiplier 1, acquired results are added, return to step 1.
Optimization adder has two inputs, one output end, and two inputs are vector, optimizes adder schematic diagram
Referring to Figure 12, involved vector makes with addition of vectors computing in the step 3.5 and step 4.2 of Optimized Coding
Use optimization adder.By taking step 3.5 as an example, the input of optimization adder is step 3.3 acquired results vector and step 3.4
Acquired results vector, because input is binary number, two binary numbers are added is XOR behaviour equal to two binary numbers
Make, can now carry out SIMD optimizations, i.e. once-through operation and can obtain W result, referring to Figure 11, wherein (a1,a2,…,aW) represent step
Rapid 3.3 acquired results vector, (b1,b2,…,bW) step 3.4 acquired results vector is represented, rectangle frame represents exclusive-OR operator,
(y1,y2,…,yW) represent the result after computing, i.e.,
Above-mentioned is the idiographic flow of LDPC coding methods in the application.The application enters to the interpretation method of existing decoder
Optimization is gone, optimization interpretation method particular flow sheet is referring to Figure 13.Before row decoding is entered, the external world need to input code length LLDPC, coding
Codeword vector c, maximum iteration I and amendment offset β after code check R, coding.According to the characteristic pair of GPP chip framework
LDPC interpretation methods are optimized as follows:
1st, coding method is optimized using SIMD operation method, its essential concept is a clock week in CPU
Multiple data are handled to obtain the effect of parallel processing in phase, rather than being common occupation mode --- each when
The clock cycle only carries out a data processing operation.To wherein be related to used general processor once can processing data amount size,
Assuming that the size is K bit, the fundamental unit size of SIMD processing is k, then once-through operation can processing data amount
2nd, the method that the part flow in optimization interpretation method uses multithreading, using the line number of check matrix H as Thread Count,
I.e. to handle the data line in check matrix H as a thread, the processing operation of multiple threads, Jin Erti are performed in the same time
The disposed of in its entirety performance of the system of liter.
The idiographic flow of interpretation method in the application introduced below, wherein, the general framework of interpretation method and decoding at present
Method is identical, specifically includes:Encoded LDPC code word signal c is received, check matrix H is determined;Calculated and become by successive ignition
Knot vector q is measured as decoding result, during each iteration, is calculated according to current variable node vector q and check-node vector r
Temporary variable vector isAnd check-node vector r is updated according to temporary variable vector t, further according to check-node
Vectorial r and temporary variable vector t updates variable node vector qThe application provide interpretation method with it is existing
The difference of technology is, difference is implemented in general processor.Concrete operation step is as follows:
1st, according to 802.11n agreements, different code length LLDPCAnd different coding code check R correspond to different check matrix Hs.
First, according to code length LLDPCAnd encoder bit rate R, corresponding check matrix H is extracted, parameters are initialized,
And it is stored in linear search table successively, the particular location of data, exchanges meter for internal memory needed for being marked with the method for offset
Complexity is calculated, the data processing speed of LDPC code interpretation method is improved:
The size of submatrix representated by each element, is variable in 1.1Z, i.e., selected check matrix H.As code length LLDPC=
When 648, Z=27;As code length LLDPCWhen=1296, Z=54;As code length LLDPCWhen=1944, Z=81.
1.2LdpcRowNum, i.e., the line number of selected check matrix H, is variable.Work as code checkWhen, LdpcRowNum=
12;Work as code checkWhen, LdpcRowNum=8;Work as code checkWhen, LdpcRowNum=6;Work as code checkWhen,
LdpcRowNum=4.
1.3VLdpcRowLength, i.e., often go the number of non-"-" element in selected check matrix H, be that length is 1*
LdpcRowNum vector.
1.4LdpcBufferNum, that is, store register number needed for each submatrix data of selected check matrix H, to become
Amount.Its operational formula is
One of variable needed for 1.5LdpcRemain, i.e. step 9, is variable.As code length LLDPCWhen=648, LdpcRemain
=11;As code length LLDPCWhen=1296, LdpcRemain=6;As code length LLDPCWhen=1944, LdpcRemain=1.
One of variable needed for 1.6LdpcRoundNum, i.e. step 9, is variable.As code length LLDPCWhen=648,
LdpcRoundNum=27;As code length LLDPCWhen=1296, LdpcRoundNum=22;As code length LLDPCWhen=1944,
LdpcRoundNum=17.
1.7VLdpcRowBuffer, that is, store selected check matrix H and often go register number needed for non-"-" data, be length
For 1*LdpcRowNum vector.Its operational formula is VLdpcRowBuffer(v)=VLdpcRowLength(v) * LdpcBufferNum (its
Middle VLdpcRowBuffer(v) vector LdpcRowBuffer v-th of element is represented, v correspond to select the line number of check matrix H, as follows
Similarly).
1.8MLdpcOffset1One of, i.e., the cycle offset calculated according to selected check matrix H, for step 4 and step
9, it is LdpcRowNum*max (VLdpcRowLength(v) matrix (wherein max (V)LdpcRowLength(v) amount of orientation) is represented
VLdpcRowLengthThe maximum of middle element, as follows similarly).Its operational formula is (MLdpcOffset1)i,j=Z* (n-1)+Hi,n, wherein
N represents the columns in selected check matrix H, and j and n corresponding relation is selected check matrix H j-th of non-"-" of the i-th row
The position of the check matrix H is that the i-th row n-th is arranged where element, as follows similarly.
1.9MLdpcRound1One of, i.e., the cycle-index calculated according to selected check matrix H, for step 4, it is
LdpcRowNum*max(VLdpcRowLength(v) matrix).Its operational formula is to work as Hi,n≠ 0 and Hi,n≠ '-' when,Work as Hi,n=0 and Hi,n≠ '-' when, (MLdpcRound1)i,j=6.
1.10MLdpcAssemble1, i.e., one of offset flag position is supplied according to what selected check matrix H was calculated, for walking
Rapid 4, it is LdpcRowNum*max (VLdpcRowLength(v) matrix).Its operational formula is to work as Hi,n=0 and Hi,n≠ '-' when,
(MLdpcAssemble1)i,j=0;Work as Hi,n≠0、Hi,n≠ '-' and (Z-Hi,n) modW=0 when, (MLdpcAssemble1)i,j=0;Work as Hi,n
≠0、Hi,n≠ '-' and (Z-Hi,n) modW ≠ 0 when, (MLdpcAssemble1)i,j=1.
1.11MLdpcAssembleTable1, i.e., circulation is calculated according to selected check matrix H and supplies offset, for step 4 and
Step 9, be (Matrix (wherein
To calculate the sum of all elements in vector LdpcRowLength),
1.12MLdpcOffset2One of, i.e., the cycle offset calculated according to selected check matrix H, for step 4 and step
Rapid 9, it is LdpcRowNum*max (VLdpcRowLength(v) matrix).Its operational formula is as (MLdpcAssemble1)i,jWhen=0,
(MLdpcOffset2)i,j=Z* (n-1)+[W-Z+Hi,n+(MLdpcRound1)i,j*W];As (MLdpcAssemble1)i,jWhen=1,
(MLdpcOffset2)i,j=Z* (n-1).
1.13MLdpcRound2One of, i.e., the cycle-index calculated according to selected check matrix H, for step 4, it is
LdpcRowNum*max(VLdpcRowLength(v) matrix).Its operational formula is
1.14MLdpcRound3One of, i.e., the cycle-index calculated according to selected check matrix H, for step 9, it is
LdpcRowNum*max(VLdpcRowLength(v) matrix).Its operational formula is to work as Hi,n≠ 0 and Hi,n≠ '-' when,Work as Hi,n=0 and Hi,n≠ '-' when, (MLdpcRound3)i,j=5.
1.15MLdpcAssemble2, i.e., one of offset flag position is supplied according to what selected check matrix H was calculated, for walking
Rapid 9, same to MLdpcAssemble1。
1.16MLdpcRound4One of, i.e., the cycle-index calculated according to selected check matrix H, for step 9, it is
LdpcRowNum*max(VLdpcRowLength(v) matrix).Its operational formula is the (M as i=0LdpcRound4)i,j=0;When i ≠
0,
2nd, judge whether to reach maximum iteration I.If being not reaching to maximum iteration I, step 3 is carried out;If reaching
To maximum iteration I, then decoding terminates.
3rd, according to GPP chip characteristic, interpretation method is optimized using the method for multithreading, with the row of check matrix H
Number is Thread Count, and wherein the data line in check matrix H is that a thread process step 4 arrives step 9, is performed in the same time many
The processing operation of individual thread, i.e., the same time carries out the processing that multiple steps 4 arrive step 9, and then the disposed of in its entirety of lifting system
Performance.Following step 4 arrives step 9, is the idiographic flow of single thread processing.
4th, temporary variable vector t is calculated, it is that length isVector.
Wherein, temporary variable vector includes subvector corresponding with the every a line of check matrix, and its call number isArriveThe subvector includes and each non-"-" element H againi,j
Corresponding subvector.(here, the non-"-" element H only in check matrixi,jThere is the "-" in corresponding subvector, check matrix
Element is in temporary variable vector, check-node vector r and variable node vector q all without corresponding subvector.) specifically,
With Hi,jCorresponding subvector t' calculation formula isI.e. temporary variable vector t subvectors t' value is change
With element H in amount knot vector qi,jCorresponding subvector q' according to after check matrix H the i-th row jth column element value cyclic shift with
With element H in check-node vector ri,jCorresponding subvector r' difference.If being now first time interative computation, variable node
Vectorial q is the codeword vector c after LDPC is encoded, and check-node vector r is original state, now temporary variable vector t subvectors
T' calculation formula isThat is temporary variable vector t subvectors t' is variable node vector q subvectors q' according to school
Test result after matrix H the i-th row jth column element value cyclic shift.In order to adapt to SIMD computings, input variable knot vector q to
It is Z that q', which is measured, with check-node vector r subvector r' length, and output temporary variable vector t subvector t' sizes will be
But in output subvector, preceding Z element only therein is valid data.Temporary variable vector t computing is with selected verification
Matrix H is often gone non-"-" element number and circulated, such as selected j-th of non-"-" element of the i-th row of check matrix H will be calculated
The of temporary variable vector tArriveThe element of position.
Its specific calculation procedure is as follows:
4.1 according to MLdpcOffset1J-th of non-"-" element of the i-th row of check matrix H selected by being found out in matrix is corresponding to be circulated partially
Shifting amount, the initial value position of data, initial value position=variable node of required data needed for being found out in variable node vector q
Vectorial q subvectors q' initial value position+corresponding cycle offset.
4.2 according to MLdpcRound1Matrix finds out the corresponding circulation time of the non-"-" element of j-th of selected the i-th row of check matrix H
Number, by (M behind the initial value position of required dataLdpcRound1)i,j* W data copy temporary variable vector t subvectors t''s to
On current location, current location here refers to the original position that data are not yet copied in subvector.
4.3 according to MLdpcAssemble1Matrix, judges whether to need to carry out padding operation.If (MLdpcAssemble1)i,j=1, then
According to MLdpcAssembleTable1Indicated offset carries out padding operation in matrix;If (MLdpcAssemble1)i,j=0, then not
Need padding operation.Specific padding operation includes:Determine matrix MLdpcAssemble1In with check matrix element Hi,jCorrespondence
The value of the element of each in rowAnd will be with element Hi,jIt is corresponding to work as
Call number is in preceding vectorial q subvectorEach element copy successively
Shellfish arrives and Hi,jOn the current location of corresponding temporary variable vector t subvectors;Wherein,
4.4 according to MLdpcOffset2J-th of non-"-" element of the i-th row of check matrix H selected by being found out in matrix is corresponding to be circulated partially
Shifting amount, the initial value position of data, initial value position=variable node of required data needed for being found out in variable node vector q
Vectorial q subvectors q' initial value position+corresponding cycle offset.
4.5 according to MLdpcRound2Matrix finds out the corresponding circulation time of the non-"-" element of j-th of selected the i-th row of check matrix H
Number, by (M behind the initial value position of required dataLdpcRound2)i,j* W data copy temporary variable vector t subvectors t''s to
On current location.
If 4.6 now non-first time interative computations, need to carry out temporary variable vector t subvector t'=temporary variables vectorial
T subvector t'- check-node vector r subvector r' computings, by temporary variable vector t subvectors t' and check-node vector r
Subvector r' all elements are divided into using W element as one group, can now carry out SIMD optimizations, i.e. once-through operation and can obtain W facing
Element in variations per hour vector t, referring to Figure 11, wherein (a1,a2,…,aW) represent one group of temporary variable vector t in element,
(b1,b2,…,bW) element in one group of check-node vector r is represented, rectangle frame represents subtraction operator, (y1,y2,…,yW) table
Show the result after computing, i.e. (y1,y2,…,yW)=(a1-b1,a2-b2,…,aW-bW);If being now first time interative computation,
Carry out step 5.
5th, calculate the absolute value of all elements in temporary variable vector t subvectors t', and be designated as after modulus temporary variable to
Amount | t |.Temporary variable vector t subvectors t' is divided into using W element as one group, SIMD optimizations can be now carried out, i.e., once transport
The element that can obtain in W temporary variable vector t subvectors t' is calculated, referring to Figure 12, wherein (c1,c2,…,cW) represent one group face
Element in variations per hour vector t subvectors t', rectangle frame represents modulo operation device, (y1,y2,…,yW) represent modulus after become temporarily
Amount vector | t |, i.e. (y1,y2,…,yW)=(| c1|,|c2|,…,|cW|).As temporary variable vector t after renewal
Vectorial t'.
6th, most it is worth distributive operation, and result is stored in most value variable vector m matrixes M.The process is with selected check matrix H
Line number is circulated, i.e., every time to the V in temporary variable vector tLdpcRowLength(v) * W*LdpcBufferNum elements are carried out
Operation, obtains length for VLdpcRowLength(v) * W*LdpcBufferNum result is stored in most value variable vector m.Once most
It is worth distributive operation schematic diagram referring to Figure 15, the corresponding temporary variable vector t subvectors t' that will often be gone with check matrix is write as
VLdpcRowLength(v) row andThe matrix T of rowv, wherein, matrix TvEach behavior temporary variable vector t subvectors t'
In with element Hi,jCorresponding subvector, carries out cover when columns is inadequate;Most value distributive operation is calculating matrix TvIn per column element
Minimum value and sub-minimum, be allocated, and result is stored in most value variable vector m subvector matrixes Mv.Matrix TvOften row has
There is W base unit in LdpcBufferNum sub-block, each sub-block;The size of base unit in each row is contrasted, it is drawn
In minimum value and sub-minimum, and record the line number of the place line number of the minimum value, i.e. index value;To most it be worth according to index value
Variable vector m is filled, if index value is different from most value variable vector m line number, is inserted and is found out in most value variable vector m
Minimum value, if index value is identical with most value variable vector m line number, the sub-minimum found out is inserted in most value variable vector m.
Exemplified by finding out the minimum value sub-minimum of a sub-block, its flow chart is comprised the following steps that referring to Figure 14:
6.1 comparator matrix TvThe first row and the size of corresponding base unit in first sub-block of the second row, will be smaller
In the line number deposit index value of value, and smaller value is recorded as minimum value, higher value is recorded as sub-minimum, can now carry out SIMD
Optimization, carry out computing twice, once take maximum, draw higher value between the two, once go minimum value, draw between the two compared with
Small value, referring to Figure 11, wherein (a1,a2,…,aW) represent first sub-block of the first row element, (b1,b2,…,bW) represent second
The element of first sub-block of row, rectangle frame represents to take maximum operation device or takes minimum operation device, (y1,y2,…,yW) table
Show the result after computing, i.e. (y1,y2,…,yW)=(max (a1,b1),max(a2,b2),…,max(aW,bW)) or (y1,
y2,…,yW)=(min (a1,b1),min(a2,b2),…,min(aW,bW))。
6.2 judge whether to have reached maximum cycle VLdpcRowLength(v), if being not reaching to, step 6.3 is carried out;
If reaching, step 6.6 is carried out.
6.3 by matrix TvThe sub-block of next line first and precedence record minimum value carry out take maxima operation, the operation
SIMD optimizations can be carried out, with step 6.1.
6.4 results for obtaining step 6.3 and the sub-minimum of current record are carried out taking minimum Value Operations, and the operation can be carried out
SIMD optimizes, and sub-minimum is designated as with step 6.1, and by result.
6.5 results for obtaining step 6.3 and the minimum value of current record are carried out taking minimum Value Operations, and the operation can be carried out
SIMD optimizes, and minimum value is designated as with step 6.1, and by result, while the line number of the minimum value is recorded as into index value, returns to step
Rapid 6.2.
The minimum value and sub-minimum of current record are subtracted correction value β by 6.6, and the operation can carry out SIMD optimizations, referring to
Figure 11, wherein (a1,a2,…,aW) represent precedence record minimum value or sub-minimum, (b1,b2,…,bW) represent correction value β
(β, β ..., β) is represented by, rectangle frame represents subtraction operator, (y1,y2,…,yW) represent the result after computing, i.e. (y1,
y2,…,yW)=(a1-β,a2-β,…,aW- β), and result is recorded as minimum value or sub-minimum.
The minimum value and sub-minimum of 6.7 pairs of current records are modified, and the minimum value or sub-minimum of current record are less than zero
When, the value is set to zero, otherwise not operated, the operation can carry out SIMD optimizations, referring to Figure 11, wherein (a1,a2,…,aW) table
Show the minimum value or sub-minimum of current record, (b1,b2,…,bW) represent that null value is also referred to as (0,0 ..., 0), rectangle frame
Represent amendment arithmetic unit, (y1,y2,…,yW) represent the result after computing, i.e.,
And result is recorded as minimum value or sub-minimum.
6.8 will most be worth variable vector m according to index value is filled, if index value is with being most worth variable vector m subvector squares
Battle array MvLine number it is different, then in matrix MvSame position insert the minimum value of current record, if index value and being most worth variable vector
M subvector matrixes MvLine number it is identical, then in most value variable vector m subvector matrixes MvSame position insert current record
Sub-minimum.By matrix MvIn element according to row major sequentially read composition most value variable vector m subvectors.
7th, intermediate variable vector s is calculated.The process is circulated with selected check matrix H line number, i.e., every time to interim change
Measure the V in vector tLdpcRowLength(v) * W*LdpcBufferNum elements are operated, and obtain length for VLdpcRowLength
(v) * W*LdpcBufferNum result is stored in intermediate variable vector s.Intermediate variable vector s computings schematic diagram referring to
Figure 17, is divided into V by temporary variable vector tLdpcRowLength(v) row is often capable to have in LdpcBufferNum sub-block, each sub-block
There is W base unit.Exemplified by calculating the intermediate variable vector s of a sub-block, its flow chart is referring to Figure 16, concrete operations flow
It is as follows:
The temporary variable vector t sub-block of the first row first and second the first sub-block of row are carried out xor operation, the operation by 7.1
SIMD optimizations can be carried out, referring to Figure 11, wherein (a1,a2,…,aW) represent the sub-block of the first row first, (b1,b2,…,bW) table
Show second the first sub-block of row, rectangle frame represents exclusive-OR operator, (y1,y2,…,yW) represent the result after computing, i.e.,
7.2 judge whether to have reached maximum cycle VLdpcRowLength(v), if being not reaching to, step 7.3 is carried out;
If reaching, step 7.4 is carried out, and performed since the first row.
The result of the temporary variable vector t sub-block of next line first and step 7.1 is carried out xor operation, the operation by 7.3
SIMD optimizations can be carried out, referring to Figure 11, wherein (a1,a2,…,aW) represent the sub-block of next line first, (b1,b2,…,bW) represent step
Rapid 7.1 result, rectangle frame represents exclusive-OR operator, (y1,y2,…,yW) represent the result after computing, i.e.,Return to step 7.2.
7.4 judge whether to have reached maximum cycle VLdpcRowLength(v), if being not reaching to, step 7.5 is carried out;
If reaching, step 8 is carried out.
The result of the temporary variable vector t sub-block of current line first and step 7.3 is carried out xor operation, the operation by 7.5
SIMD optimizations can be carried out.
7.6 by the result of step 7.5 withCarry out or operate, the operation can carry out SIMD
Optimization, referring to Figure 11, wherein (a1,a2,…,aW) represent step 7.5 result, (b1,b2,…,bW) representRectangle frame represents or arithmetic unit, (y1,y2,…,yW) represent the result after computing, i.e. (y1,
y2,…,yW)=(a1|b1,a2|b2,…,aW|bW), and result is stored in intermediate variable vector s the first sub-block, return to step
7.4。
8th, check-node vector r is calculated, it is that length isVector.
Wherein, check-node vector includes subvector corresponding with the every a line of check matrix, and its call number isArriveThe subvector includes and each non-"-" element H againi,j
Corresponding subvector.The process for calculating check-node vector r is circulated with selected check matrix H line number, i.e., every time to interim
V in variable vector tLdpcRowLength(v) * W*LdpcBufferNum elements are operated, and obtain length for VLdpcRowLength
(v) * W*LdpcBufferNum result is stored in check-node vector r.Calculating check matrix and often go corresponding subvector
When row is calculated, with each non-"-" element Hi,jCorresponding subvector is carried out for unit, and calculating obtains index and isArriveVector in element.Below with calculating
One and non-"-" element Hi,jExemplified by corresponding check-node vector r subvectors r', its concrete operations flow is as follows:
8.1 judge whether to have reached maximum cycle VLdpcRowLength(v), if being not reaching to, step 8.2 is carried out;
If reaching, step 9 is carried out.
8.2 will most be worth variable vector m and Hi,jCorresponding subvector and intermediate variable vector s and Hi,jCorresponding subvector enters
Row contrast operation, if intermediate variable vector s is less than zero, result is the complement asked the value for being most worth variable vector m, if middle anaplasia
Measure vector s and be equal to zero, then result is zero, if intermediate variable vector s is more than zero, result is the value to being most worth variable vector m.Should
Operation can carry out SIMD optimizations, referring to Figure 12, wherein (a1,a2,…,aW) represent most value variable vector m, (b1,b2,…,bW) table
Show intermediate variable vector s, rectangle frame represents to contrast arithmetic unit, (y1,y2,…,yW) represent the result after computing, i.e.,
8.3 are added the result of step 8.2 with intermediate variable vector s.The operation can carry out SIMD optimizations, referring to Figure 11,
Wherein (a1,a2,…,aW) represent step 8.2 result, (b1,b2,…,bW) intermediate variable vector s is represented, rectangle frame represents to add
Method arithmetic unit, (y1,y2,…,yW) represent the result after computing, i.e. (y1,y2,…,yW)=(a1+b1,a2+b2,…,aW+bW)。
8.4 subtract each other the result of step 8.3 with temporary variable vector t subvectors t'.The operation can carry out SIMD optimizations, ginseng
Figure 11 is seen, wherein (a1,a2,…,aW) represent step 8.3 result, (b1,b2,…,bW) represent temporary variable vector t, rectangle frame
Represent adder calculator, (y1,y2,…,yW) represent the result after computing, i.e. (y1,y2,…,yW)=(a1-b1,a2-b2,…,aW-
bW), and result is stored in check-node vector r, return to step 8.1.
9th, variable node vector q is calculated, it is that length isVector.
Wherein, variable node vector includes subvector corresponding with the every a line of check matrix, and its call number isArriveThe subvector includes and each non-"-" element H againi,j
Corresponding subvector q'.Variable node vector q subvectors q' calculation formula isThat is variable node vector q
Subvector q' value be temporary variable vector t subvector t' values and check-node vector r subvector r' values and, and according to verification
Result after matrix H the i-th row jth column element value cyclic shift.In order to adapt to SIMD computings, input temporary variable vector t it is sub to
It is Z that t', which is measured, with check-node vector r subvector r' length, and output variable knot vector q subvector q' sizes will be
But in output subvector, preceding Z element only therein is valid data.Variable node vector q computing is with selected verification
Matrix H is often gone non-"-" element number and circulated, such as selected j-th of non-"-" element of the i-th row of check matrix H will be calculated
The of variable node vector qArriveThe element of position.
Its specific calculation procedure is as follows:
9.1 according to MLdpcOffset1J-th of non-"-" element of the i-th row of check matrix H selected by being found out in matrix is corresponding to be circulated partially
Shifting amount, finds out required original position in variable node vector q, required original position=variable node vector q subvectors q''s
Initial value position+corresponding cycle offset.
9.2 are added temporary variable vector t subvectors t' with check-node vector r subvectors r'.The operation can be carried out
SIMD optimizes, referring to Figure 11, wherein (a1,a2,…,aW) represent temporary variable vector t, (b1,b2,…,bW) represent check-node
Vectorial r, rectangle frame represents adder calculator, (y1,y2,…,yW) represent the result after computing, i.e. (y1,y2,…,yW)=(a1+
b1,a2+b2,…,aW+bW)。
9.3 according to MLdpcRound3Matrix finds out the corresponding circulation time of the non-"-" element of j-th of selected the i-th row of check matrix H
Number, by (M behind the initial value position of step 9.2 result dataLdpcRound1)i,j* W data copy the institute found out in step 9.1 to
Need original position.
9.4 according to MLdpcAssemble2Matrix, judges whether to need to carry out padding operation.If (MLdpcAssemble2)i,j=1, then
According to MLdpcAssembleTable1Indicated offset carries out padding operation in matrix;If (MLdpcAssemble2)i,j=0, then it is not required to
Want padding operation.
9.5 according to MLdpcOffset2J-th of non-"-" element of the i-th row of check matrix H selected by being found out in matrix is corresponding to be circulated partially
Shifting amount, finds out required original position, required original position=variable node vector q initial value position in variable node vector q
Put+corresponding cycle offset.
9.6 according to MLdpcRound4Matrix finds out the corresponding circulation time of the non-"-" element of j-th of selected the i-th row of check matrix H
Number, by (M behind the initial value position of step 9.2 result dataLdpcRound4)i,j* W data copy the institute found out in step 9.5 to
Need original position.
The 9.7 required cover number according to indicated by LdpcRemain, further according to MLdpcAssembleTable1It is indicated in matrix
Offset to variable node vector q surplus elements carry out complement operation, return to step 2.
LDPC codings and interpretation method in above-mentioned as the application.
The coding and decoding of LDPC code is theoretical more ripe, but because LDPC code is a kind of larger linear block codes of code length n, school
Test matrix H also larger, algorithm complex is very high, traditional LDPC coding and decodings mode is not well positioned to meet IEEE 802.11n
The throughput requirement of system, has largely had influence on the performance of system.LDPC code in existing high speed wireless access system
Realization is mostly based on fpga chip and dsp chip.Although Modern High-Speed protocol of wireless local area network can be met by previous methods
Middle processing and the requirement of time delay, but FPGA programmings and specialty DSP are more complicated, lack abundant programmed environment and debugging work
Tool, applicability is general.And based on GPP chip, developer can use common computer to make under known structure and environment
Developed with abundant instrument, such as C/C++ environment.The innovative point of this patent is exactly to high-speed radio local in GPP chip
LDPC code in net system is carried out in the case of using original coder according to the characteristic of GPP chip to coding and decoding method
Optimization.Because IEEE802.11n LDPC code is irregular LDPC codes, the nonnegative value number that its check matrix prototype is often gone differs
It is fixed identical, so, compared to conventional LDPC code Encoding Realization method, the flexibility of GPP chip can have great advantage.In addition, examining
Consider CPU (Central Processing Unit, central processing unit) high speed development, the data-handling capacity of GPP chip
Can constantly it be lifted.
First, the parallel processing of data is realized using SIMD instruction.SIMD instruction collection, is used in this patent
SSE (Streaming SIMD Extensions, instruction set) instruction set is referred to as on Intel CPU, its essential concept is
Multiple data are handled within a CPU clock cycle to obtain the effect of parallel processing, rather than being common make
With mode --- each clock cycle only carries out a data processing operation.For the CPU of Nehalem frameworks, it handles position
A width of 128 bit, for the CPU of Sandy Bridge frameworks, it is 256 bits that it, which handles bit wide, i.e., for 8 bit fixed point numbers
Speech, the former can be handled 16 data within an instruction cycle, and the latter can be to 32 within an instruction cycle
Data are handled, theoretically for, degree of parallelism be respectively 16 times it is parallel and 32 times it is parallel.But imitated by actual program
True result it is recognised that be often unable to reach preferably parallel multiple in actual system operation, be on the one hand because
Program is simultaneously non-fully made up of data manipulation flow, while substantial amounts of judgement sentence is further comprises, and these judge that sentence can not
Carry out parallel work-flow.On the other hand, if using the SIMD instruction of 128 bit bit wides, for the school of IEEE 802.11n standards
Matrix is tested, each submatrix size is not 16 multiple, thus it is parallel during each submatrix last group of data processing of size
Degree is less than 16.
Secondly, by using the method for look-up table, i.e., parameter knowable to multiple is initialized, and with the method for offset
The particular location of data needed for mark, exchanges computation complexity for internal memory, improves the data processing speed of LDPC code coding and decoding method
Degree.In LDPC code encoder, the block matrix needed for the coding under the conditions of different code checks and code length can be calculated in advance, and by its
It is stored in LUTs (Look-Up-Table, look-up table), as long as reading in table when program brings into operation, without repeating
Calculate.
Finally, the method for employing multithreading, more than one thread, and then the entirety of lifting system are performed in the same time
Process performance.In LDPC co mpiler optimizations code method, to the operation wherein in units of check matrix data line, multithreading is used
Method optimize, Thread Count be check matrix line number.
The foregoing is merely illustrative of the preferred embodiments of the present invention, is not intended to limit the invention, all essences in the present invention
God is with principle, and any modification, equivalent substitution and improvements done etc. should be included within the scope of protection of the invention.
Claims (12)
1. a kind of LDPC coding methods based on general processor, including:Letter to be encoded is obtained by signal acquisition or reception
Number vector S, determines check matrix H and its matrix in block form A, B, D, E, F and T, and preserved;According toIt is determined that vector p1And p2, and obtain LDPC coding result vector c=(S, p1,p2);Its feature exists
In the determination vector p1And p2Shi Jinhang any matrix includes with any vectorial processing that is multiplied:
Using every a line of any matrix as a thread, the corresponding line for carrying out the matrix is multiplied with described any vectorial
Operation, and the multiplied result of all rows is combined into composition result vector;
Wherein, every a line of any matrix includes with any vectorial multiplication operations:Determine current i-th row of matrix
The corresponding vectorial original position=any vectorial original position+A of each element ji,j+ (j-1) * Z, by it is described it is any to
In amount from the original position Z-Ai,jThe data of length are shifted left by way of single-instruction multiple-data stream (SIMD) SIMD, and
The preceding A that the original position is startedi,jThe data of length are moved to after the data after shifting left, and obtain the element j corresponding
Vector shift result;Again by the corresponding vector shift results added of each element, described every a line and any vector are used as
Multiplied result;
In the mode of the SIMD, will from the original position Z-Ai,jThe data of length are divided into units of length WSection is rightSegment data carries out shift left operation parallel, then by remaining (Z-Ai,j) mod W length number
According to progress shift left operation;
The submatrix size that Z represents for an element in the check matrix.
2. according to the method described in claim 1, it is characterised in that when any matrix is T-1When, the T-1Every a line
During with corresponding vectorial multiplication operations, T is only carried out-1Value is multiplied for 0 element with corresponding vectorial, obtains the value for 0 yuan
The corresponding vector shift result of element, null vector is set to by the corresponding vector shift result of remaining element;Again by each element pair
The vector shift results added answered, is used as described every a line and any vectorial multiplied result.
3. method according to claim 1 or 2, it is characterised in that carried out simultaneously to W segment datas before being taken after shift left operation
Z data are valid data.
4. method according to claim 1 or 2, it is characterised in that described by the corresponding vector shift result of each element
Addition includes:The corresponding vector shift result of each element is divided into units of length WSection, passes through SIMD pairsSegment data carries out phase add operation parallel, then by remaining (Z-Ai,j) mod W length data carry out phase add operation.
5. method according to claim 1 or 2, it is characterised in that the matrix A, B, D, E, F and T-1Pass through linear search
Table is preserved.
6. a kind of LDPC interpretation methods based on general processor, including:Encoded LDPC code word signal c is received, school is determined
Test matrix H;Variable node vector q is calculated by successive ignition and is used as decoding result, during each iteration, according to current variable section
Point vector q and check-node vector r calculates temporary variable vectorAnd according to temporary variable vector t more
New check-node vector r, updating variable node vector q further according to check-node vector r and temporary variable vector t isDuring first iteration, using character signal c as variable node vector q, verification knot vector r is set to 0;It is special
Levy and be,
Every time when iterative calculation temporary variable vector t, check-node vector r and variable node vector q, with each of check matrix
Row carries out computing and renewal as thread, obtain with call number in often capable corresponding vectorial t, q and r fromSubvector;Wherein, i is the line index of check matrix,
I-th row of the correspondence check matrix calculates temporary variable vector t, check-node vector r and the corresponding sons of variable node vector q
When vectorial, according to each non-"-" element H of the check matrix rowi,jWith element H in correspondence calculating vector t, q and ri,jIt is corresponding
Call number fromSubvector, then enter successively
Row connection is obtained and often capable corresponding subvector, during i=1, orderVLdpcRowLength(v) it is the school
Test in matrix and often to go the number of non-"-" element;
Calculate and Hi,jThe mode of corresponding temporary variable vector t subvectors is:Determine Hi,jCorresponding vectorial original position Z* (n-
1)+Hi,n, original position described in the corresponding vectorial q subvectors of the i-th row is risen into length isOr 6 data pass through
SIMD mode is copied to and Hi,jThe beginning of corresponding temporary variable vector t subvectors;In Hi,n≠0、Hi,n≠ '-' and (Z-
Hi,n) mod W ≠ 0 when, determine matrix MLdpcAssemble1In with check matrix element Hi,jThe value of each element in correspondence rowAnd will be with element Hi,jCall number in corresponding current vectorial q subvector
ForEach element copy to successively and Hi,jCorresponding temporary variable vector
On the current location of t subvectors;Each element H is determined againi,jCorresponding secondary vector original position MLdpcOffset2, by described
Two vectorial original positions play length and areData copied to by way of SIMD and Hi,jCorresponding temporary variable vector
On the current location of t subvectors;Take and Hi,jPreceding Z in corresponding temporary variable vector t subvectors and take absolute value as with
Hi,jCorresponding temporary variable vector t effective subvector;Wherein, MLdpcAssemble1Calculated according to the check matrix
Supply one of offset flag position, MLdpcOffset2For one of cycle offset for being calculated according to the check matrix;
Work as Hi,n≠0、Hi,n≠ '-' and (Z-Hi,n) mod W ≠ 0 when,
Work as Hi,n=0 or Hi,n='-' or (Z-Hi,n) mod W=0 when, (MLdpcOffset2)i,j=Z* (n-1);
K is that general processor once can processing data amount size, the fundamental unit size that k is handled for SIMD;Code length LLDPCWhen=648,
LdpcRemain=11;As code length LLDPCWhen=1296, LdpcRemain=6;As code length LLDPCWhen=1944, LdpcRemain
=1;Indexes of the j for each non-"-" element in the i-th row in all non-"-" elements of the row, n is j-th of non-"-" member of the i-th row
Column index of the element in check matrix.
7. method according to claim 6, it is characterised in that calculate with the often capable corresponding check-node of check matrix to
Amount r subvectors mode be:
The corresponding temporary variable vector t subvectors that will often be gone with check matrix are write as VLdpcRowLength(v) row andRow
Matrix Tv, wherein, the matrix TvEach behavior described in temporary variable vector t subvectors with element Hi,jIt is corresponding son to
Amount, carries out cover when columns is inadequate;
To the matrix TvMost value distribution is carried out, most value variable vector m subvector matrixes M is obtainedv;
According to the matrix TvCalculate intermediate variable vector s subvector matrixes Sv;
According to the matrix MvWith the matrix SvMiddle index value identical element, determines an intermediary matrix Rv' middle respective index value
Element value;Wherein, if matrix SvIn either element be less than 0, then take the either element complement and with the either element
It is added, will add up result as matrix Rv' in value with the either element index value identical element;If matrix SvIn
Either element is equal to 0, then the either element is added with 0, will add up result as matrix RvIn with the either element index
It is worth the value of identical element;If matrix SvIn either element>0, then in matrix MvIn take and the either element index value phase
Same element is added with the either element, will add up result as matrix RvIn with the either element index value identical member
The value of element;Matrix SvIn the operation compared with 0 of either element and the operation of the addition carried out by way of SIMD;
By SIMD modes by the matrix Rv' and matrix TvMiddle index value identical element subtracts each other, and regard result as check-node
Vectorial r subvectors matrix RvThe element value of middle same index value;By the matrix RvIn often row preceding Z element according to go it is excellent
First mode sequential reads out composition check-node vector r subvectors.
8. method according to claim 7, it is characterised in that described to be most worth distribution and include:
The matrix T is determined by way of SIMDvIn each row minimum value and sub-minimum and the corresponding row rope of minimum value
Draw;Obtained minimum value and sub-minimum are modified, default correction value β is subtracted, when revised minimum value and time small
When value is less than 0,0 is set to, otherwise keeps constant;
According to the matrix TvIn each row current minimum value, sub-minimum and the corresponding line index of minimum value, construction be most worth variable
Vectorial m subvectors matrix MvThe row of middle same index, wherein, in MvEither rank in, will rope of mutually going together corresponding with current minimum value
The element drawn is set to the minimum value determined, remaining element is set into sub-minimum.
9. method according to claim 8, it is characterised in that the minimum value that each row are determined by way of SIMD
Include with the mode of sub-minimum and corresponding line index:
By the matrix TvEach row element be divided intoIndividual sub-block, each sub-block includes W base unit;Relatively more described
Matrix TvIn any two row element when, W base unit is disposably compared by way of SIMD.
10. method according to claim 7, it is characterised in that the calculating intermediate variable vector s subvector matrixes SvBag
Include:
For matrix TvIn each row, by the row all elements carry out xor operation, then by result with i-th ' row element XOR
Carry out or operate with 0x7f afterwards, incite somebody to action or operating result is used as intermediate vector matrix SvI-th ' row element of middle same index row;Its
In, by the matrix TvEach row element be divided intoIndividual sub-block, each sub-block includes W base unit, progress XOR/
Or during operation, XOR/or the operation of W base unit, the i-th ' row expression current line are disposably performed by way of SIMD.
11. method according to claim 6, it is characterised in that calculate and Hi,jCorresponding variable node vector q subvectors
Including:
Determine Hi,jCorresponding vectorial original position Z* (n-1)+Hi,n, by SIMD modes by Hi,jCorresponding temporary variable vector t
Subvector and Hi,jCorresponding check-node vector r subvectors are added, and original position described in result vector is risen into length isOr 5 data are copied to and H by way of SIMDi,jThe beginning of corresponding variable node vector q subvectors;
Hi,n≠0、Hi,n≠ '-' and (Z-Hi,n) mod W ≠ 0 when, determine matrix MLdpcAssemble1In with check matrix element Hi,jCorrespondence
The value of the element of each in rowAnd will be with element Hi,jIt is corresponding when it is preceding to
Measuring call number in q subvector isEach element copy to successively with
Hi,jOn the current location of corresponding variable node vector q subvectors;
It is determined that each element Hi,jCorresponding secondary vector original position MLdpcOffset2, the secondary vector original position is risen long
Spend for 0 orData copied to by way of SIMD and Hi,jCorresponding variable node vector q subvectors it is current
On position;
The cover number indicated according to LdpcRemain, according to MLdpcAssemble1In with check matrix element Hi,jElement in correspondence row
Value carry out cover.
12. according to any described method in claim 6 to 11, it is characterised in that precalculate and preserve each element Hi,j
Corresponding vectorial original position Z* (n-1)+Hi,nWith secondary vector original position MLdpcOffset2, matrix MLdpcAssemble1, verification square
The vectorial V that the number of non-"-" element of often being gone in battle array is constitutedLdpcRowLength、MLdpcAssemble1、LdpcRemain。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510026526.1A CN104617959B (en) | 2015-01-20 | 2015-01-20 | A kind of LDPC coding and decoding methods based on general processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510026526.1A CN104617959B (en) | 2015-01-20 | 2015-01-20 | A kind of LDPC coding and decoding methods based on general processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104617959A CN104617959A (en) | 2015-05-13 |
CN104617959B true CN104617959B (en) | 2017-09-05 |
Family
ID=53152273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510026526.1A Active CN104617959B (en) | 2015-01-20 | 2015-01-20 | A kind of LDPC coding and decoding methods based on general processor |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104617959B (en) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967455B (en) * | 2015-07-09 | 2018-02-23 | 北京邮电大学 | The recursive encoding method of Space Coupling low density parity check code |
CN113708779A (en) * | 2015-12-28 | 2021-11-26 | 北京忆芯科技有限公司 | Matrix and vector multiplication operation unit |
CN105897278B (en) * | 2016-03-30 | 2019-08-30 | 深圳忆联信息系统有限公司 | Information processing method and storage equipment |
US10338919B2 (en) * | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
DE102018110607A1 (en) | 2017-05-08 | 2018-11-08 | Nvidia Corporation | Generalized acceleration of matrix multiplication and accumulation operations |
CN108365849B (en) * | 2018-01-10 | 2021-03-09 | 东南大学 | Multi-code-rate multi-code-length LDPC code decoding method based on SIMD instruction set |
WO2021128098A1 (en) * | 2019-12-25 | 2021-07-01 | 华为技术有限公司 | Checksum calculation method and circuit |
CN115529108A (en) * | 2021-06-25 | 2022-12-27 | 华为技术有限公司 | Data transmission method and related device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480848B2 (en) * | 2006-02-10 | 2009-01-20 | The Directv Group, Inc. | Methods and apparatus to select tornado error correction parameters |
CN102932003A (en) * | 2012-09-07 | 2013-02-13 | 上海交通大学 | Accelerated QC-LDPC (Quasi-Cyclic Low-Density Parity-Check Code) decoding method based on GPU (Graphics Processing Unit) framework |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914706B2 (en) * | 2011-12-30 | 2014-12-16 | Streamscale, Inc. | Using parity data for concurrent data authentication, correction, compression, and encryption |
-
2015
- 2015-01-20 CN CN201510026526.1A patent/CN104617959B/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480848B2 (en) * | 2006-02-10 | 2009-01-20 | The Directv Group, Inc. | Methods and apparatus to select tornado error correction parameters |
CN102932003A (en) * | 2012-09-07 | 2013-02-13 | 上海交通大学 | Accelerated QC-LDPC (Quasi-Cyclic Low-Density Parity-Check Code) decoding method based on GPU (Graphics Processing Unit) framework |
Non-Patent Citations (3)
Title |
---|
EQUIPE:Parallel Equivalence Checking with GP-GPUs;Debapriya Chatterjee and Valeria Bertacco;《Computer Design(ICCD),2010 IEEE International Conference on》;20101130;全文 * |
SERIAL LDPC DECODING ON A SIMD DSP USING HORIZONTAL SCHEDULING;Marco Gomes et al.;《14th European Signal Processing Conference (EUSIPCO 2006),Florence,Italy》;20060908;全文 * |
基于SIMD结构的多标准LDPC译码器的VLSI实现;黄双渠 等;《计算机研究与发展》;20101231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104617959A (en) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104617959B (en) | A kind of LDPC coding and decoding methods based on general processor | |
JP3347335B2 (en) | Interleaving method, interleaving device, and recording medium recording interleave pattern creation program | |
CN105049061B (en) | Based on the higher-dimension base stage code decoder and polarization code coding method calculated in advance | |
CN107229967A (en) | A kind of hardware accelerator and method that rarefaction GRU neutral nets are realized based on FPGA | |
CN111563599B (en) | Quantum circuit decomposition method and device, storage medium and electronic device | |
CN107704916A (en) | A kind of hardware accelerator and method that RNN neutral nets are realized based on FPGA | |
CN101273532B (en) | Decoding device, and receiving device | |
CN101192833A (en) | A device and method for low-density checksum LDPC parallel coding | |
CN107786211B (en) | Algebraic structure obtaining method, encoding method and encoder of IRA-QC-LDPC code | |
CN101796488A (en) | Generation of parity-check matrices | |
CN104038232B (en) | Testing data compression and decompression method based on secondary exclusive-or operation | |
CN113850389B (en) | Quantum circuit construction method and device | |
CN109889205A (en) | Encoding method and system, decoding method and system, and encoding and decoding method and system | |
CN107239362A (en) | A kind of computational methods and system of CRC parallel computing code | |
CN105099467B (en) | The coding method of QC-LDPC code and code device | |
Collins | The subtleties and intricacies of building a constraint length 15 convolutional decoder | |
CN112039535A (en) | Code rate compatible LDPC encoder based on quasi-cyclic generator matrix | |
JP2002149399A (en) | Instruction set for processor | |
CN110612738A (en) | Generalized polarization code | |
CN101350626A (en) | Apparatus for encoding Turbo code and method thereof | |
CN107733441A (en) | Coding method and device, interpretation method and device | |
CN110380735A (en) | A kind of software realization QC-LDPC interpretation method based on single-instruction multiple-data stream (SIMD) | |
CN109412606A (en) | QC_LDPC code encoding method and encoder based on generator matrix | |
CN111786744B (en) | 5G polarization code self-adaptive high-efficiency decoding method based on AVX-512 instruction set | |
CN100586029C (en) | A kind of coding method of structured odd-even check code and encoder thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |