4.2.7 Rate matching

25.2123GPPMultiplexing and channel coding (FDD)Release 17TS

Rate matching means that bits on a transport channel are repeated or punctured. Higher layers assign a rate-matching attribute for each transport channel. This attribute is semi-static and can only be changed through higher layer signalling. The rate-matching attribute is used when the number of bits to be repeated or punctured is calculated.

The number of bits on a transport channel can vary between different transmission time intervals. In the downlink the transmission is interrupted if the number of bits is lower than maximum. When the number of bits between different transmission time intervals in uplink is changed, bits are repeated or punctured to ensure that the total bit rate after TrCH multiplexing is identical to the total channel bit rate of the allocated dedicated physical channels.

If no bits are input to the rate matching for all TrCHs within a CCTrCH, the rate matching shall output no bits for all TrCHs within the CCTrCH and no uplink DPDCH will be selected in the case of uplink rate matching.

Notation used in subclause 4.2.7 and subclauses:

Ni,j: For uplink: Number of bits in a radio frame before rate matching on TrCH i with transport format combination j . When UL_DPCH_10ms Mode is configured by higher layers, the derivation of Ni,j is described in detail in subclauses 4.2.6 and 4.2.6.1.

For downlink: An intermediate calculation variable (not an integer but a multiple of 1/8).

: Number of bits in a transmission time interval before rate matching on TrCH i with transport format l. Used in downlink only.

: For uplink: If positive – number of bits that should be repeated in each radio frame on TrCH i with transport format combination j.

If negative – number of bits that should be punctured in each radio frame on TrCH i with transport format combination j.

For downlink : An intermediate calculation variable (not an integer but a multiple of 1/8).

: If positive – number of bits to be repeated in each transmission time interval on TrCH i with transport format l.

If negative – number of bits to be punctured in each transmission time interval on TrCH i with transport format l.

Used in downlink only.

NTGL: Positive or null: number of bits in the radio frame corresponding to the gap for compressed mode for the CCTrCH.

RMi: Semi-static rate matching attribute for transport channel i. RMi is provided by higher layers or takes a value as indicated in subclause 4.2.13 or subclause 4.2.0.

PL: Puncturing limit for uplink. This value limits the amount of puncturing that can be applied in order to avoid multicode or to enable the use of a higher spreading factor. Signalled from higher layers. The allowed puncturing in % is actually equal to (1-PL)*100.

Ndata,j: Total number of bits that are available for the CCTrCH in a radio frame with transport format combination j.

I: Number of TrCHs in the CCTrCH.

Zi,j: Intermediate calculation variable.

Fi: Number of radio frames in the transmission time interval of TrCH i, except for uplink when UL_DPCH_10ms_Mode is configured. In uplink, when UL_DPCH_10ms_Mode is configured, Fi is the number of radio frames in the transmission time interval of TrCH i divided by 2.

ni: Radio frame number in the transmission time interval of TrCH i. In downlink, and in uplink when UL_DPCH_10ms_Mode is not configured by higher layers, 0  ni < Fi. In uplink when UL_DPCH_10ms_Mode is configured by higher layers, 0  ni < 2Fi.

q: Average puncturing or repetition distance (normalised to only show the remaining rate matching on top of an integer number of repetitions). Used in uplink only.

P1F(ni): The column permutation function of the 1st interleaver, P1F(x) is the original position of column with number x after permutation. P1 is defined on table 4 of clause 4.2.5.2 (note that the P1F is self-inverse). Used for rate matching in uplink only.

S[n]: The shift of the puncturing or repetition pattern for radio frame ni when . Used in uplink only.

TFi(j): Transport format of TrCH i for the transport format combination j.

TFS(i) The set of transport format indexes l for TrCH i.

TFCS The set of transport format combination indexes j.

eini Initial value of variable e in the rate matching pattern determination algorithm of subclause 4.2.7.5.

eplus Increment of variable e in the rate matching pattern determination algorithm of subclause4.2.7.5.

eminus Decrement of variable e in the rate matching pattern determination algorithm of subclause 4.2.7.5.

b: Indicates systematic and parity bits

b=1: Systematic bit. xk in subclause 4.2.3.2.1.

b=2: 1st parity bit (from the upper Turbo constituent encoder). zk in subcaluse 4.2.3.2.1.

b=3: 2nd parity bit (from the lower Turbo constituent encoder). zk in subclause 4.2.3.2.1.

The * (star) notation is used to replace an index x when the indexed variable Xx does not depend on the index x. In the left wing of an assignment the meaning is that "X* = Y" is equivalent to "for all x do Xx = Y ". In the right wing of an assignment, the meaning is that "Y = X* " is equivalent to "take any x and do Y = Xx".

The following relations, defined for all TFC j, are used when calculating the rate matching parameters:

for all i = 1 … I (1)

for all i = 1 … I

4.2.7.1 Determination of rate matching parameters in uplink

4.2.7.1.1 Determination of SF and number of PhCHs needed

In uplink, puncturing can be applied to match the CCTrCH bit rate to the PhCH bit rate. The bit rate of the PhCH(s) is limited by the UE capability and restrictions imposed by UTRAN, through limitations on the PhCH spreading factor. The maximum amount of puncturing that can be applied is 1-PL, PL is signalled from higher layers. The number of available bits in the radio frames of one PhCH for all possible spreading factors is given in [2]. Denote these values by N256, N128, N64, N32, N16, N8, and N4, where the index refers to the spreading factor. The possible number of bits available to the CCTrCH on all PhCHs, Ndata, then are { N256, N128, N64, N32, N16, N8, N4, 2N4, 3N4, 4N4, 5N4, 6N4}.

For a RACH CCTrCH SET0 represents the set of Ndata values allowed by the UTRAN, as set by the minimum SF provided by higher layers. SET0 may be a sub-set of { N256, N128, N64, N32 }. SET0 does not take into account the UE’s capability.

For other CCTrCHs, SET0 denotes the set of Ndata values allowed by the UTRAN and supported by the UE, as part of the UE’s capability. SET0 can be a subset of { N256, N128, N64, N32, N16, N8, N4, 2N4, 3N4, 4N4, 5N4, 6N4}. When UL DPCH 10ms Mode is configured, SET0 shall include Ndata values associated with spreading factors larger than or equal to the minimum SF provided by higher layers divided by 2. Ndata, j for the transport format combination j is determined by executing the following algorithm:

SET1 = { Ndata in SET0 such that is non negative }

If SET1 is not empty and the smallest element of SET1 requires just one PhCH then

Ndata,j = min SET1

else

SET2 = { Ndata in SET0 such that is non negative }

Sort SET2 in ascending order

Ndata = min SET2

While Ndata is not the max of SET2 and the follower of Ndata requires no additional PhCH do

Ndata = follower of Ndata in SET2

End while

Ndata,j = Ndata

End if

For a RACH CCTrCH, if Ndata,j is not part of the UE’s capability then the TFC j cannot be used.

4.2.7.1.2 Determination of parameters needed for calculating the rate matching pattern

The number of bits to be repeated or punctured, Ni,j, within one radio frame for each TrCH i is calculated with equation 1 for all possible transport format combinations j and selected every radio frame. Ndata,j is given from subclause 4.2.7.1.1.

In a compressed radio frame when UL_DPCH_10ms_Mode is not configured by higher layers, is replaced by in Equation 1. is given as follows:

In a radio frame compressed by higher layer scheduling, is obtained by executing the algorithm in subclause 4.2.7.1.1 but with the number of bits in one radio frame of one PhCH reduced to of the value in normal mode.

Ntr is the number of transmitted slots in a compressed radio frame and is defined by the following relation:

, if Nfirst + TGL  15

, in first frame if Nfirst + TGL > 15

, in second frame if Nfirst + TGL > 15

Nfirst and TGL are defined in subclause 4.4.

In a radio frame compressed by spreading factor reduction, , where

If Ni,j = 0 then the output data of the rate matching is the same as the input data and the rate matching algorithm of subclause 4.2.7.5 does not need to be executed.

If Ni,j  0 the parameters listed in subclauses 4.2.7.1.2.1 and 4.2.7.1.2.2 shall be used for determining eini, eplus, and eminus (regardless if the radio frame is compressed or not).

4.2.7.1.2.1 Convolutionally encoded TrCHs

R = Ni,j mod Ni,j — note: in this context Ni,j mod Ni,j is in the range of 0 to Nij-1 i.e. -1 mod 10 = 9.

if R  0 and 2R Nij

then q =  Ni,j / R

else

q =  Ni,j / (RNi,j) 

endif

— note: q is a signed quantity.

if q is even

then q’ = q + gcd(q, Fi)/ Fi — where gcd (q, Fi) means greatest common divisor of q and Fi

— note that q’ is not an integer, but a multiple of 1/8

else

q’ = q

endif

for x = 0 to Fi – 1

S[ xq’  mod Fi] = ( xq’  div Fi)

end for

Ni = Ni,j

a = 2

For each radio frame, the rate-matching pattern is calculated with the algorithm in subclause 4.2.7.5, where :

Xi = Ni,j., and

eini = (aS[P1Fi(ni)]|Ni | + 1) mod (aNij).

eplus = aNi,j

eminus = a|Ni|

puncturing for N <0, repetition otherwise.

4.2.7.1.2.2 Turbo encoded TrCHs

If repetition is to be performed on turbo encoded TrCHs, i.e. Ni,j >0, the parameters in subclause 4.2.7.1.2.1 are used.

If puncturing is to be performed, the parameters below shall be used. Index b is used to indicate systematic (b=1), 1st parity (b=2), and 2nd parity bit (b=3).

a=2 when b=2

a=1 when b=3

If is calculated as 0 for b=2 or b=3, then the following procedure and the rate matching algorithm of subclause 4.2.7.5 don’t need to be performed for the corresponding parity bit stream.

Xi = Ni,j /3 ,

q = Xi /|Ni| 

if(q2)

for r=0 to Fi-1

S[(3r+b-1) mod FI] = r mod 2;

end for

else

if q is even

then q’ = q – gcd( q, Fi)/ Fi — where gcd ( q, Fi) means greatest common divisor of q and Fi
— note that q’ is not an integer, but a multiple of 1/8

else q’ = q

endif

for x=0 to Fi -1

r = xq’ mod Fi;

S[(3r+b-1) mod Fi] = xq’ div Fi;

endfor

endif

For each radio frame, the rate-matching pattern is calculated with the algorithm in subclause 4.2.7.5, where:

Xi is as above:

eini = (aS[P1Fi(ni)] |Ni| + Xi) mod (aXi), if eini =0 then eini = aXi

eplus = aXi

eminus = aNi

4.2.7.2 Determination of rate matching parameters in downlink

For downlink channels, Ndata,j does not depend on the transport format combination j. Ndata,* is given by the channelization code(s) assigned by higher layers.

Denote the number of physical channels used for the CCTrCH by P. Ndata,* is the number of bits available to the CCTrCH in one radio frame and defined as Ndata,*=P15(Ndata1+Ndata2), where Ndata1 and Ndata2 are defined in [2]. Note that contrary to the uplink, the same rate matching patterns are used in TTIs containing no compressed radio frames and in TTIs containing radio frames compressed by spreading factor reduction or higher layer scheduling.

4.2.7.2.1 Determination of rate matching parameters for fixed positions of TrCHs

4.2.7.2.1.1 Calculation of Ni,max for normal mode and compressed mode by spreading factor reduction

First an intermediate calculation variable is calculated for all transport channels i by the following formula:

In order to compute the parameters for all TrCH i and all TF l, we first compute an intermediate parameter Ni,max by the following formula, where is derived from by the formula given at subclause 4.2.7:

If then, for TrCH i, the output data of the rate matching is the same as the input data and the rate matching algorithm of subclause 4.2.7.5 does not need to be executed. In this case we have :

If the parameters listed in subclauses 4.2.7.2.1.3 and 4.2.7.2.1.4 shall be used for determining eini, eplus, and eminus, and .

4.2.7.2.1.2 Void

4.2.7.2.1.3 Determination of rate matching parameters for convolutionally encoded TrCHs

a=2

For each transmission time interval of TrCH i with TF l, the rate-matching pattern is calculated with the algorithm in subclause 4.2.7.5. The following parameters are used as input:

1

Puncturing if , repetition otherwise. The values of may be computed by counting repetitions or puncturing when the algorithm of subclause 4.2.7.5 is run. The resulting values of can be represented with following expression.

4.2.7.2.1.4 Determination of rate matching parameters for Turbo encoded TrCHs

If repetition is to be performed on turbo encoded TrCHs, i.e., the parameters in subclause 4.2.7.2.1.3 are used.

If puncturing is to be performed, the parameters below shall be used. Index b is used to indicate systematic (b=1), 1st parity (b=2), and 2nd parity bit (b=3).

a=2 when b=2

a=1 when b=3

The bits indicated by b=1 shall not be punctured.

For each transmission time interval of TrCH i with TF l, the rate-matching pattern is calculated with the algorithm in subcaluse 4.2.7.5. The following parameters are used as input:

The values of may be computed by counting puncturing when the algorithm of subclause 4.2.7.5 is run. The resulting values of can be represented with following expression.

In the above equation, the first term of the right hand side represents the amount of puncturing for b=2 and the second term represents the amount of puncturing for b=3.

4.2.7.2.1A Determination of rate matching parameters for pseudo-flexible positions of TrCHs

Pseudo-flexible rate matching is identical to fixed-position rate matching, with a difference that in psueduo-flexible rate matching, rate matching parameters are re-evaluated for each maximum TTI, and the value of RMi is set to 0 in Equation (1) of subclause 4.2.7 if Mi =0 (i.e., no transport blocks are sent in the TTI) for each transport channel i with the maximum TTI value among all the transport channels multiplexed into the CCTrCH.

When there is a configuration with more than one transport channel having the maximum TTI and more than one of those transport channels having a transport format with no transport blocks multiplexed into a CCTrCH, the UE behaviour is unspecified.

As a consequence of re-evaluating rate-matching parameters per maximum TTI in pseudo-flexible rate matching, derived parameters dependent on rate matching, for example the parameters corresponding to DTX indication bits in Section 4.2.9.1, can change from one maximum TTI to another in pseudo-flexible rate matching, unlike in fixed position rate matching.

4.2.7.2.2 Determination of rate matching parameters for flexible positions of TrCHs

4.2.7.2.2.1 Calculations for normal mode, compressed mode by higher layer scheduling, and compressed mode by spreading factor reduction

First an intermediate calculation variable is calculated for all transport channels i and all transport format combinations j by the following formula:

Then rate matching ratios RFi are calculated for each the transport channel i in order to minimise the number of DTX bits when the bit rate of the CCTrCH is maximum. The RFi ratios are defined by the following formula:

The computation of parameters is then performed in two phases. In a first phase, tentative temporary values of are computed, and in the second phase they are checked and corrected. The first phase, by use of the RFi ratios, ensures that the number of DTX indication bits inserted is minimum when the CCTrCH bit rate is maximum, but it does not ensure that the maximum CCTrCH bit rate is not greater than Ndata,*. per 10ms. The latter condition is ensured through the checking and possible corrections carried out in the second phase.

At the end of the second phase, the latest value of is the definitive value.

The first phase defines the tentative temporary for all transport channel i and any of its transport format l by use of the following formula:

The second phase is defined by the following algorithm:

for all in TFCS in ascending order of TFCI do — for all TFC

— CCTrCH bit rate (bits per 10ms) for TFC j

if then

for i = 1 to I do — for all TrCH

 is derived from by the formula given at subclause 4.2.7.

if then

end-if

end-for

end-if

end-for

If then, for TrCH i at TF l, the output data of the rate matching is the same as the input data and the rate matching algorithm of subclause 4.2.7.5 does not need to be executed.

If the parameters listed in subclauses 4.2.7.2.2.2 and 4.2.7.2.2.3 shall be used for determining eini, eplus, and eminus.

4.2.7.2.2.2 Determination of rate matching parameters for convolutionally encoded TrCHs

a=2

For each transmission time interval of TrCH i with TF l, the rate-matching pattern is calculated with the algorithm in subclause 4.2.7.5. The following parameters are used as input:

1

puncturing for , repetition otherwise.

4.2.7.2.2.3 Determination of rate matching parameters for Turbo encoded TrCHs

If repetition is to be performed on turbo encoded TrCHs, i.e. , the parameters in subclause 4.2.7.2.2.2 are used.

If puncturing is to be performed, the parameters below shall be used. Index b is used to indicate systematic (b=1), 1st parity (b=2), and 2nd parity bit (b=3).

a=2 when b=2

a=1 when b=3

The bits indicated by b=1 shall not be punctured.

For each transmission time interval of TrCH i with TF l, the rate-matching pattern is calculated with the algorithm in subclause 4.2.7.5. The following parameters are used as input:

,

,

4.2.7.3 Bit separation and collection in uplink

The systematic bits of turbo encoded TrCHs shall not be punctured, the other bits may be punctured. The systematic bits, first parity bits, and second parity bits in the bit sequence input to the rate matching block are therefore separated into three sequences.

The first sequence contains:

– All of the systematic bits that are from turbo encoded TrCHs.

– From 0 to 2 first and/or second parity bits that are from turbo encoded TrCHs. These bits come into the first sequence when the total number of bits in a block after radio frame segmentation is not a multiple of three.

– Some of the systematic, first parity and second parity bits that are for trellis termination.

The second sequence contains:

– All of the first parity bits that are from turbo encoded TrCHs, except those that go into the first sequence when the total number of bits is not a multiple of three.

– Some of the systematic, first parity and second parity bits that are for trellis termination.

The third sequence contains:

– All of the second parity bits that are from turbo encoded TrCHs, except those that go into the first sequence when the total number of bits is not a multiple of three.

– Some of the systematic, first parity and second parity bits that are for trellis termination.

The second and third sequences shall be of equal length, whereas the first sequence can contain from 0 to 2 more bits. Puncturing is applied only to the second and third sequences.The bit separation function is transparent for convolutionally encoded TrCHs and for turbo encoded TrCHs with repetition. The bit separation and bit collection are illustrated in figures 5 and 6.

Figure 5: Puncturing of turbo encoded TrCHs in uplink

Figure 6: Rate matching for convolutionally encoded TrCHs
and for turbo encoded TrCHs with repetition in uplink

The bit separation is dependent on the 1st interleaving and offsets are used to define the separation for different TTIs. b indicates the three sequences defined in this section, with b=1 indicating the first sequence, b = 2 the second one, and b = 3 the third one. The offsets b for these sequences are listed in table 5.

Table 5: TTI dependent offset needed for bit separation

TTI (ms)

1

2

3

10, 40

0

1

2

20, 80

0

2

1

The bit separation is different for different radio frames in the TTI. A second offset is therefore needed. The radio frame number for TrCH i is denoted by ni. and the offset by .

Table 6: Radio frame dependent offset needed for bit separation

TTI (ms)

0

1

2

3

4

5

6

7

10

0

NA

NA

NA

NA

NA

NA

NA

20

0

1

NA

NA

NA

NA

NA

NA

40

0

1

2

0

NA

NA

NA

NA

80

0

1

2

0

1

2

0

1

4.2.7.3.1 Bit separation

The bits input to the rate matching are denoted by, where i is the TrCH number and Ni is the number of bits input to the rate matching block. Note that the transport format combination number j for simplicity has been left out in the bit numbering, i.e. Ni=Nij. The bits after separation are denoted by. For turbo encoded TrCHs with puncturing, b indicates the three sequences defined in clause 4.2.7.3, with b=1 indicating the first sequence, and so forth. For all other cases b is defined to be 1. Xi is the number of bits in each separated bit sequence. The relation between eik and xbik is given below.

For turbo encoded TrCHs with puncturing:

k = 1, 2, 3, …, Xi Xi = Ni /3

k = 1, …, Ni mod 3 Note: When (Ni mod 3) = 0 this row is not needed.

k = 1, 2, 3, …, Xi Xi = Ni /3

k = 1, 2, 3, …, Xi Xi = Ni /3

For convolutionally encoded TrCHs and turbo encoded TrCHs with repetition:

k = 1, 2, 3, …, Xi Xi = Ni

4.2.7.3.2 Bit collection

The bits xbik are input to the rate matching algorithm described in subclause 4.2.7.5. The bits output from the rate matching algorithm are denoted.

Bit collection is the inverse function of the separation. The bits after collection are denoted by . After bit collection, the bits indicated as punctured are removed and the bits are then denoted by, where i is the TrCH number and Vi= Nij+Nij. The relations between ybik, zbik, and fik are given below.

For turbo encoded TrCHs with puncturing (Yi=Xi):

k = 1, 2, 3, …, Yi

k = 1, …, Ni mod 3 Note: When (Ni mod 3) = 0 this row is not needed.

k = 1, 2, 3, …, Yi

k = 1, 2, 3, …, Yi

After the bit collection, bits zi,k with value , where {0, 1}, are removed from the bit sequence. Bit fi,1 corresponds to the bit zi,k with smallest index k after puncturing, bit fi,2 corresponds to the bit zi,k with second smallest index k after puncturing, and so on.

For convolutionally encoded TrCHs and turbo encoded TrCHs with repetition:

k = 1, 2, 3, …, Yi

When repetition is used, fi,k=zi,k and Yi=Vi.

When puncturing is used, Yi=Xi and bits zi,k with value , where {0, 1}, are removed from the bit sequence. Bit fi,1 corresponds to the bit zi,k with smallest index k after puncturing, bit fi,2 corresponds to the bit zi,k with second smallest index k after puncturing, and so on.

4.2.7.4 Bit separation and collection in downlink

The systematic bits of turbo encoded TrCHs shall not be punctured, the other bits may be punctured.

The systematic bits, first parity bits and second parity bits in the bit sequence input to the rate matching block are therefore separated into three sequences of equal lengths.

The first sequence contains :

– All of the systematic bits that are from turbo encoded TrCHs.

– Some of the systematic, first parity and second parity bits that are for trellis termination.

The second sequence contains:

– All of the first parity bits that are from turbo encoded TrCHs.

– Some of the systematic, first parity and second parity bits that are for trellis termination.

The third sequence contains:

– All of the second parity bits that are from turbo encoded TrCHs.

– Some of the systematic, first parity and second parity bits that are for trellis termination.

Puncturing is applied only to the second and third sequences.

The bit separation function is transparent for convolutionally encoded TrCHs and for turbo encoded TrCHs with repetition. The bit separation and bit collection are illustrated in figures 7 and 8.

Figure 7: Puncturing of turbo encoded TrCHs in downlink

Figure 8: Rate matching for convolutionally encoded TrCHs
and for turbo encoded TrCHs with repetition in downlink

4.2.7.4.1 Bit separation

The bits input to the rate matching are denoted by, where i is the TrCH number and Ei is the number of bits input to the rate matching block. Note that Ei is a multiple of 3 for turbo encoded TrCHs and that the transport format l for simplicity has been left out in the bit numbering, i.e. Ei=. The bits after separation are denoted by. For turbo encoded TrCHs with puncturing, b indicates the three sequences defined in clause 4.2.7.4, with b=1 indicating the first sequence, and so forth. For all other cases b is defined to be 1. Xi is the number of bits in each separated bit sequence. The relation between cik and xbik is given below.

For turbo encoded TrCHs with puncturing:

k = 1, 2, 3, …, Xi Xi = Ei /3

k = 1, 2, 3, …, Xi Xi = Ei /3

k = 1, 2, 3, …, Xi Xi = Ei /3

For convolutionally encoded TrCHs and turbo encoded TrCHs with repetition:

k = 1, 2, 3, …, Xi Xi = Ei

4.2.7.4.2 Bit collection

The bits xbik are input to the rate matching algorithm described in subclause 4.2.7.5. The bits output from the rate matching algorithm are denoted.

Bit collection is the inverse function of the separation. The bits after collection are denoted by . After bit collection, the bits indicated as punctured are removed and the bits are then denoted by, where i is the TrCH number and Gi= +. The relations between ybik, zbik, and gik are given below.

For turbo encoded TrCHs with puncturing (Yi=Xi):

k = 1, 2, 3, …, Yi

k = 1, 2, 3, …, Yi

k = 1, 2, 3, …, Yi

After the bit collection, bits zi,k with value , where {0, 1}, are removed from the bit sequence. Bit gi,1 corresponds to the bit zi,k with smallest index k after puncturing, bit gi,2 corresponds to the bit zi,k with second smallest index k after puncturing, and so on.

For convolutionally encoded TrCHs and turbo encoded TrCHs with repetition:

k = 1, 2, 3, …, Yi

When repetition is used, gi,k=zi,k and Yi=Gi.

When puncturing is used, Yi=Xi and bits zi,k with value , where {0, 1}, are removed from the bit sequence. Bit gi,1 corresponds to the bit zi,k with smallest index k after puncturing, bit gi,2 corresponds to the bit zi,k with second smallest index k after puncturing, and so on.

4.2.7.5 Rate matching pattern determination

Denote the bits before rate matching by:

, where i is the TrCH number and the sequence is defined in 4.2.7.3 for uplink or in 4.2.7.4 for downlink. Parameters Xi, eini, eplus, and eminus are given in 4.2.7.1 for uplink or in 4.2.7.2 for downlink.

The rate matching rule is as follows:

if puncturing is to be performed

e = eini — initial error between current and desired puncturing ratio

m = 1 — index of current bit

do while m <= Xi

e = e – eminus — update error

if e <= 0 then — check if bit number m should be punctured

set bit xi,m to where {0, 1}

e = e + eplus — update error

end if

m = m + 1 — next bit

end do

else

e = eini — initial error between current and desired puncturing ratio

m = 1 — index of current bit

do while m <= Xi

e = e – eminus — update error

do while e <= 0 — check if bit number m should be repeated

repeat bit xi,m

e = e + eplus — update error

end do

m = m + 1 — next bit

end do

end if

A repeated bit is placed directly after the original one.