Matlab simulations of the encoder and Successive Cancellation List (SCL) decoder for the New Radio polar code from 3GPP Release 15, as defined in TS38.212 V15.2.0 and used in the Public Broadcast Channel (PBCH), Physical Downlink Control Channel (PDCCH) and Physical Uplink Control Channel (PUCCH).
This code is intended to provide a reference model for the standard and has been written with a focus on correctness, rather than on simulation speed. This code is also intended to provide a platform for research on enhancements to the New Radio polar code. This motivates the inclusion of the custom1_encoder and custom1_decoder, alongside encoders and decoders for the New Radio PBCH, PDCCH and PUCCH channels. In particular, custom1_encoder and custom1_decoder adapt the New Radio polar code for general purpose applications, enabling support for arbitrarily-high information block lengths A. By contrast, the longest block lengths supported in the New Radio PBCH, PDCCH and PUCCH channels are 32, 140 and 1706 bits, respectively.
The capacity plots in the Figures above were obtained using the O(n−2) metaconverse PPV upper bound from the SPECTRE Short Packet Communication Toolbox. If you use these results, please acknowledge them with a reference to...
T. Erseghe, "Coding in the Finite-Blocklength Regime: Bounds Based on Laplace Integrals and Their Asymptotic Approximations", IEEE Transactions on Information Theory, vol. 62, no. 12, pp. 6854 - 6883, Dec. 2016.
Section of TS38.212 | Implemented in | Comment |
---|---|---|
5.1 | components/get_crc_generator_matrix.m | The CRC bits are generated using b = [a, mod(a*G_P, 2)]. |
5.2.1 | PUCCH_encoder.m | The first and second segments are obtained as a(1:floor(A/C)) and a(floor(A/C)+1:A), respectively. |
5.3.1 | components/get_3GPP_N.m | |
5.3.1.1 | components/get_3GPP_crc_interleaver_pattern.m | Interleaving is implemented using c_prime = c(Pi). |
5.3.1.2 Q0N-1 | components/get_3GPP_sequence_pattern.m | The elements of Q0N-1 are incremented by 1, since indices begin at 1 in Matlab. |
5.3.1.2 QPCN | components/get_PC_bit_pattern.m | Provides a vector of N elements, in which the elements with the indices QPCN are set to true and all other elements are set to false. |
5.3.1.2 u | components/PCCA_polar_encoder.m | Other components/*_polar_encoder.m files are also useful for special cases without PC bits, without CRC bits or with distributed CRC bits. |
5.3.1.2 GN | components/get_G_N.m | Encoding is implemented using d = mod(u*G_N, 2). |
5.4.1.1 P(i) | components/get_3GPP_rate_matching_pattern.m | |
5.4.1.1 QIN | components/get_3GPP_info_bit_pattern.m | Provides a vector of N elements, in which the elements with the indices QIN are set to true and all other elements are set to false. |
5.4.1.2 | components/get_3GPP_rate_matching_pattern.m | Rate matching is implemented using e = d(rate_matching_pattern). |
5.4.1.3 | components/get_3GPP_channel_interleaver_pattern.m | Interleaving is implemented using f = e(channel_interleaver_pattern). |
5.5 | PUCCH_encoder.m | The first and second segments are concatenated using f = [f, ...]. |
6.3.1.2.1 | PUCCH_encoder.m | |
6.3.1.3.1 | PUCCH_encoder.m | |
6.3.1.4.1 | PUCCH_encoder.m | Rate matching is implemented, but not the determination of EUCI. |
6.3.1.5 | PUCCH_encoder.m | |
6.3.2.2.1 | PUCCH_encoder.m | |
6.3.2.3.1 | PUCCH_encoder.m | |
6.3.2.4.1 | PUCCH_encoder.m | Rate matching is implemented, but not the determination of EUCI. |
6.3.2.5 | PUCCH_encoder.m | |
7.1.3 | PBCH_encoder.m | |
7.1.4 | PBCH_encoder.m | |
7.1.5 | PBCH_encoder.m | |
7.3.1 | PDCCH_encoder.m | Only implements the zero padding of DCI formats, to increase their length to 12 bits. |
7.3.2 | PDCCH_encoder.m | |
7.3.3 | PDCCH_encoder.m | |
7.3.4 | PDCCH_encoder.m |
Each of the *_encoder.m files has corresponding *_decoder.m files, for performing the corresponding operation of the receiver.
Many thanks to my colleagues at AccelerComm, who have spent lots of time double checking that this code matches the standard.
Have fun! Rob.
Polar码(Polar Codes) 信道编码技术是无线通信物理层的最核心的基础技术之一,它的主要目的是使数字信号进行可靠的传递。信道编码技术通过在发送信息序列上增加额外的校验比特,并在接收端采用译码技术对传输过程中产生的差错进行纠正,从而实现发送信息序列的正确接收。 半个多世纪来,研究人员提出了多种纠错码技术(RS码、卷积码、Turbo码等),但这些编码方法都没有达到香农极限。 (1)
适用于Mac,Windows和Linux的强大文档管理器,用于管理Web内容,书籍和笔记 - 支持标记,注释,突出显示和跟踪您的阅读进度。 文档标注:
Polar 应用程式 M600 上的 Polar 应用程式可让 Wear OS by Google 智能手表变身为 Polar 运动与活动追踪器。 此程式监测你的训练数据(如心率、速度、距离与路线)。它还可随时测量您的活动:您可以看到您走过的步数、完成的距离以及消耗的卡路里。如果您睡觉时佩戴 M600,您还可获得有关睡眠时间与质量的分析报告。 获取应用程式 您需要从 Google Play 或 A
如您在晚上佩戴手表,它会追踪您的睡眠情况。它可以检测您入睡和醒来的时间并在 Polar Flow 应用程式与网络服务中采集数据进行深入分析。在夜间,手表会观察您的手部运动,对整个睡眠时段中的所有中断情况进行追踪,让您了解自己的实际睡眠时间。 手表上的睡眠数据 在时间视图中,使用“UP(向上)”和“DOWN(向下)”按钮,导航到 Sleep(睡眠)表盘。 如果手表检测出您已醒来,会在表盘上显示您的睡
如您在晚上佩戴 A370,它会追踪您的睡眠情况。它可以检测您入睡和醒来的时间并在 Polar Flow 应用程式与网络服务中采集数据进行深入分析。在夜间 A370 会观察您的手部运动,对整个睡眠时段中的所有中断情况进行追踪,让您了解自己的实际睡眠时间。 A370 上的睡眠数据 您可以通过我的一天睡眠卡查看您的睡眠数据。轻击以获取详细信息。 睡眠时间是指从您入睡到睡醒之间的总持续时间。 实际睡眠时间
Polar 跑步计划是基于您的体能等级建立的个性化计划,目的在于确保您正确训练,避免过度训练。该计划十分聪明,可根据您的进展进行相应调整,让您了解何时适合减少一些训练,何时让训练提升一个等级。每个计划都针对您的比赛定制,考虑了您的个人特点、训练背景与准备时间。该计划免费提供,可登录 flow.polar.com,在 Polar Flow 网络服务中获取。 提供适合 5k、10k、半程马拉松与全程马
如您在晚上佩戴 M600,该设备上的 Polar 应用程式会追踪您的睡眠情况。它可以检测您入睡和醒来的时间并在 Polar Flow 应用程式与网络服务中收集睡眠数据进行深入分析。这款智能手表在夜间会观察您的手部运动,对整个睡眠时段中的所有中断情况进行追踪,让您了解自己的实际睡眠时间。 要开始使用这一功能,您需要在 Polar Flow 设置中设置您偏好的睡眠时间。然后只需在夜间穿戴 M600。您