A Brief Overview of CRC Implementation for 5G NR

*Hao Wu*

## **Abstract**

In fifth generation (5G) new radio (NR), the medium access control (MAC) layer organizes the data into the transport block and transmits it to the physical layer. The transport block consists of up to million bits. When the transport block size exceeds a threshold, the transport block is divided into multiple equal size code blocks. The code block consists of up to 8448 bits. Both the transport block and the code block have a cyclic redundancy check (CRC) attached. Due to the difference in the size of the transport block and the code block, the CRC processing scheme suitable for the transport block and that suitable for the code block are different. This chapter gives an overview of the CRC implementation in 5G NR.

**Keywords:** 5G, NR, CRC, transport block, code block

### **1. Introduction**

In order to provide high data transmission rates, the bandwidth of mobile communication systems is increasing. In fourth generation (4G) long term evolution (LTE), the maximum transmission bandwidth for one component carrier is 20 MHz [1]. In fifth generation (5G) new radio (NR), the frequency bands are divided into two parts: frequency range 1 (FR1) below 6 GHz and frequency range 2 (FR2) above 24.25 GHz. The maximum transmission bandwidth for one component carrier is 100 MHz and 400 MHz in FR1 and FR2 respectively [2]. The increasing system bandwidth brings new problems to the design of the transmitter and the receiver. In this chapter of the book, we focus on the cyclic redundancy check (CRC) implementation in 5G NR.

In 5G NR, there are many physical channels defined in the downlink and the uplink [3]. The downlink physical channels consist of the physical downlink shared channel (PDSCH), the physical downlink control channel (PDCCH), the physical broadcast channel (PBCH), etc. The uplink physical channels consist of physical uplink shared channel (PUSCH), the physical uplink control channel (PUCCH), the physical random access channel (PRACH), etc. The PDSCH and the PDSCH are mainly used to transmit data. The usage scenarios of 5G NR consist of enhanced mobile broadband (eMBB), massive machine-type communications (mMTC) and ultra-reliable and low latency communications (URLLC) [4, 5]. The usage scenario of the eMBB requires high data transmission rates. As a consequence, we focus on the PDSCH and the PUSCH in this chapter.

The medium access control (MAC) layer organizes the data into the transport block and transmits it to the physical layer. In 5G NR, the maximum transport block

#### *Moving Broadband Mobile Communications Forward - Intelligent Technologies for 5G…*

In the following sections, we mainly consider the case that there is a segmenta-

Note that the procedure of the transport block size determination guarantees

where 0 ≤ *j*≤ *K* � 25. In the following, the processing of the transport block includes: QC-LPDC encoding, rate matching, bit interleaving and code block concatenation. The encoded transport block is transmitted over the air after the symbol

At the receiver side, the following steps are carried out for the transport block:

decoding, code block concatenation. We need to check whether each code block and

*ej* <sup>¼</sup> *dv*

In this section, we give two properties of the CRC. These properties are useful in the CRC implementation. Before giving these properties, we define some variables. Let *A x*ð Þ and *B x*ð Þ be the polynomials. Let *g x*ð Þ be the cyclic generator polynomial. CRC*g x*ð Þ½ � *A x*ð Þ is defined as the remainder when *A x*ð Þ is divided by *g x*ð Þ. The two

CRC*g x*ð Þ½ �¼ *A x*ð Þ*B x*ð Þ CRC*g x*ð Þ CRC*g x*ð Þ½ � *A x*ð Þ CRC*g x*ð Þ½ � *B x*ð Þ (8)

Property 1 implies that CRC*g x*ð Þ½ � *A x*ð Þ*B x*ð Þ can be obtained by computing the

where *v* ¼ ⌊ *j=*ð Þ *K* � 24 ⌋, *u* ¼ modð Þ *j*, *K* � 24 and 0≤ *j*≤*L* þ *N* � 1. The undetected error probability is required to be less than 10�<sup>6</sup> in 5G NR [8, 9]. Since the parity check capacity of QC-LDPC codes alone cannot meet the undetected error probability requirement of 5G NR [8, 9], we need to use the CRC check to

code block segmentation, bit de-interleaving, de-rate matching, QC-LPDC

received code block after the hard decision and *e* ¼ ½ � *e*0,*e*1, … ,*eL*þ*N*�<sup>1</sup> be the

*<sup>K</sup>*�23, … ,*c<sup>i</sup>*

*<sup>K</sup>*�24,*c<sup>i</sup>*

*c i*

which is generated by the cyclic generator polynomial

the transport block are correctly received. Let *<sup>d</sup><sup>i</sup>* <sup>¼</sup> *<sup>d</sup><sup>i</sup>*

determine whether *d<sup>i</sup>* and *e* are correctly received.

**3. Properties of the CRC**

properties are listed as follows.

CRC of *A x*ð Þ and *B x*ð Þ independently.

**Property 1**.

**71**

received transport block after the hard decision. *ej* is equal to

be the *i*th code block, where *K* is the code block size

*K*�1

*<sup>g</sup>*24Bð Þ¼ *<sup>x</sup> <sup>x</sup>*<sup>24</sup> <sup>þ</sup> *<sup>x</sup>*<sup>23</sup> <sup>þ</sup> *<sup>x</sup>*<sup>6</sup> <sup>þ</sup> *<sup>x</sup>*<sup>5</sup> <sup>þ</sup> *<sup>x</sup>* <sup>þ</sup> <sup>1</sup> (5)

*K* ¼ ð Þ *L* þ *N =C* þ 24 (4)

is the code block level CRC,

*<sup>j</sup>* ¼ *ai K*ð Þþ �<sup>24</sup> *<sup>j</sup>* (6)

0, *di*

1, … , *<sup>d</sup><sup>i</sup>*

*K*�1 be the *i*th

*<sup>u</sup>* (7)

tion. Let *<sup>c</sup><sup>i</sup>* <sup>¼</sup> *<sup>c</sup><sup>i</sup>*

and is equal to

*ci*

*<sup>j</sup>* is equal to

level processing.

0,*c<sup>i</sup>* 1, … ,*ci K*�1

*A Brief Overview of CRC Implementation for 5G NR DOI: http://dx.doi.org/10.5772/intechopen.91790*

that ð Þ *<sup>L</sup>* <sup>þ</sup> *<sup>N</sup>* is divisible by *<sup>C</sup>*. *<sup>c</sup><sup>i</sup>*

**Figure 1.**

*The transport block and the code block.*

size is 1,277,992 [6]. The processing of the transport block is shown in **Figure 1** [7]. If the transport block size is larger than 3824, a 16-bit CRC is added at the end of the transport block. Otherwise, a 24-bit CRC is added at the end of the transport block. The transport block is divided into multiple equal size code blocks when the transport block size exceeds a threshold. For quasi-cyclic low-density parity-check code (QC-LDPC) base graph 1, the threshold is equal to 8448. For QC-LDPC base graph 2, the threshold is equal to 3840. In 5G NR, the maximum code block size number is 8448. An additional 24-bit CRC is added at the end of each code block when there is a segmentation. Due to the difference in the size of the transport block and the code block, the CRC processing scheme suitable for the transport block and that suitable for the code block are different.

The rest of this chapter is organized as follows. Section 2 describes the system model of the transport block and the code block in 5G NR. Section 3 gives two properties of the CRC. Section 4 presents the overview of the CRC implementation. Finally, Section 5 gives the conclusion.

#### **2. System model**

Let *a* ¼ ½ � *a*0, *a*1, … , *aL*�1, *aL*, *aL*þ1, … , *aL*þ*N*�<sup>1</sup> be the transport block including the transport block level CRC, where *L* is the transport block size and *N* is the transport block level CRC size. Note that *p* ¼ ½ � *aL*, *aL*þ1, … , *aL*þ*N*�<sup>1</sup> is the transport block level CRC. If *L* is smaller than or equal to 3824, then *N* is equal to 16 and *p* is generated by the following cyclic generator polynomial:

$$\mathcal{g}\_{16}(\mathbf{x}) = \mathbf{x}^{16} + \mathbf{x}^{12} + \mathbf{x}^5 + \mathbf{1} \tag{1}$$

If *L* is larger than 3824, then *N* is equal to 24 and *p* is generated by the following cyclic generator polynomial:

$$\mathbf{g\_{24A}}(\mathbf{x}) = \mathbf{x}^{24} + \mathbf{x}^{23} + \mathbf{x}^{18} + \mathbf{x}^{17} + \mathbf{x}^{14} + \mathbf{x}^{11} + \mathbf{x}^{10} + \mathbf{x}^7 + \mathbf{x}^6 + \mathbf{x}^5 + \mathbf{x}^4 + \mathbf{x}^3 + \mathbf{x} + 1 \tag{2}$$

When *L* þ *N* is larger than *M*, the transport block including the transport block level CRC is segmented into multiple code blocks. Let *R* be code rate of the initial transmission indicated by the modulation and coding scheme (MCS) index. If *L*>292 and *R*>0*:*67 or *L*>3824 and *R*>0*:*25, then QC-LDPC base graph 1 is used and *M* is equal to 8448. Otherwise, QC-LDPC base graph 2 is used and *M* is equal to 3840.

When there is no segmentation, the number of code blocks *C* is equal to 1. When there is a segmentation, the number of code blocks *C* is equal to

$$\mathbf{C} = \lceil (L+N)/(\mathbf{M}-\mathbf{24}) \rceil \tag{3}$$

#### *A Brief Overview of CRC Implementation for 5G NR DOI: http://dx.doi.org/10.5772/intechopen.91790*

In the following sections, we mainly consider the case that there is a segmentation. Let *<sup>c</sup><sup>i</sup>* <sup>¼</sup> *<sup>c</sup><sup>i</sup>* 0,*c<sup>i</sup>* 1, … ,*ci K*�1 be the *i*th code block, where *K* is the code block size and is equal to

$$K = (L+N)/C + \text{24} \tag{4}$$

Note that the procedure of the transport block size determination guarantees that ð Þ *<sup>L</sup>* <sup>þ</sup> *<sup>N</sup>* is divisible by *<sup>C</sup>*. *<sup>c</sup><sup>i</sup> <sup>K</sup>*�24,*c<sup>i</sup> <sup>K</sup>*�23, … ,*c<sup>i</sup> K*�1 is the code block level CRC, which is generated by the cyclic generator polynomial

$$\mathcal{g}\_{24\mathbb{B}}(\mathbf{x}) = \mathbf{x}^{24} + \mathbf{x}^{23} + \mathbf{x}^6 + \mathbf{x}^5 + \mathbf{x} + \mathbf{1} \tag{5}$$

*ci <sup>j</sup>* is equal to

size is 1,277,992 [6]. The processing of the transport block is shown in **Figure 1** [7]. If the transport block size is larger than 3824, a 16-bit CRC is added at the end of the transport block. Otherwise, a 24-bit CRC is added at the end of the transport block. The transport block is divided into multiple equal size code blocks when the transport block size exceeds a threshold. For quasi-cyclic low-density parity-check code (QC-LDPC) base graph 1, the threshold is equal to 8448. For QC-LDPC base graph 2, the threshold is equal to 3840. In 5G NR, the maximum code block size number is 8448. An additional 24-bit CRC is added at the end of each code block when there is a segmentation. Due to the difference in the size of the transport block and the code block, the CRC processing scheme suitable for the transport block and that

*Moving Broadband Mobile Communications Forward - Intelligent Technologies for 5G…*

The rest of this chapter is organized as follows. Section 2 describes the system model of the transport block and the code block in 5G NR. Section 3 gives two properties of the CRC. Section 4 presents the overview of the CRC implementation.

Let *a* ¼ ½ � *a*0, *a*1, … , *aL*�1, *aL*, *aL*þ1, … , *aL*þ*N*�<sup>1</sup> be the transport block including the transport block level CRC, where *L* is the transport block size and *N* is the transport block level CRC size. Note that *p* ¼ ½ � *aL*, *aL*þ1, … , *aL*þ*N*�<sup>1</sup> is the transport block level CRC. If *L* is smaller than or equal to 3824, then *N* is equal to 16 and *p*

If *L* is larger than 3824, then *N* is equal to 24 and *p* is generated by the following

*<sup>g</sup>*24Að Þ¼ *<sup>x</sup> <sup>x</sup>*<sup>24</sup> <sup>þ</sup> *<sup>x</sup>*<sup>23</sup> <sup>þ</sup> *<sup>x</sup>*<sup>18</sup> <sup>þ</sup> *<sup>x</sup>*<sup>17</sup> <sup>þ</sup> *<sup>x</sup>*<sup>14</sup> <sup>þ</sup> *<sup>x</sup>*<sup>11</sup> <sup>þ</sup> *<sup>x</sup>*<sup>10</sup> <sup>þ</sup> *<sup>x</sup>*<sup>7</sup> <sup>þ</sup> *<sup>x</sup>*<sup>6</sup> <sup>þ</sup> *<sup>x</sup>*<sup>5</sup> <sup>þ</sup> *<sup>x</sup>*<sup>4</sup> <sup>þ</sup> *<sup>x</sup>*<sup>3</sup> <sup>þ</sup> *<sup>x</sup>* <sup>þ</sup> <sup>1</sup>

When *L* þ *N* is larger than *M*, the transport block including the transport block level CRC is segmented into multiple code blocks. Let *R* be code rate of the initial transmission indicated by the modulation and coding scheme (MCS) index. If *L*>292 and *R*>0*:*67 or *L*>3824 and *R*>0*:*25, then QC-LDPC base graph 1 is used and *M* is equal to 8448. Otherwise, QC-LDPC base graph 2 is used and *M* is equal

When there is no segmentation, the number of code blocks *C* is equal to 1. When

there is a segmentation, the number of code blocks *C* is equal to

*<sup>g</sup>*16ð Þ¼ *<sup>x</sup> <sup>x</sup>*<sup>16</sup> <sup>þ</sup> *<sup>x</sup>*<sup>12</sup> <sup>þ</sup> *<sup>x</sup>*<sup>5</sup> <sup>þ</sup> <sup>1</sup> (1)

*C* ¼ d e ð Þ *L* þ *N =*ð Þ *M* � 24 (3)

(2)

is generated by the following cyclic generator polynomial:

suitable for the code block are different.

Finally, Section 5 gives the conclusion.

**2. System model**

**Figure 1.**

*The transport block and the code block.*

cyclic generator polynomial:

to 3840.

**70**

$$\mathfrak{c}\_{j}^{i} = \mathfrak{a}\_{i(K-24)+j} \tag{6}$$

where 0 ≤ *j*≤ *K* � 25. In the following, the processing of the transport block includes: QC-LPDC encoding, rate matching, bit interleaving and code block concatenation. The encoded transport block is transmitted over the air after the symbol level processing.

At the receiver side, the following steps are carried out for the transport block: code block segmentation, bit de-interleaving, de-rate matching, QC-LPDC decoding, code block concatenation. We need to check whether each code block and the transport block are correctly received. Let *<sup>d</sup><sup>i</sup>* <sup>¼</sup> *<sup>d</sup><sup>i</sup>* 0, *di* 1, … , *<sup>d</sup><sup>i</sup> K*�1 be the *i*th received code block after the hard decision and *e* ¼ ½ � *e*0,*e*1, … ,*eL*þ*N*�<sup>1</sup> be the received transport block after the hard decision. *ej* is equal to

$$e\_j = d\_u^v \tag{7}$$

where *v* ¼ ⌊ *j=*ð Þ *K* � 24 ⌋, *u* ¼ modð Þ *j*, *K* � 24 and 0≤ *j*≤*L* þ *N* � 1. The undetected error probability is required to be less than 10�<sup>6</sup> in 5G NR [8, 9]. Since the parity check capacity of QC-LDPC codes alone cannot meet the undetected error probability requirement of 5G NR [8, 9], we need to use the CRC check to determine whether *d<sup>i</sup>* and *e* are correctly received.
