Patent Description:
Block codes, or error correcting codes, are frequently used to provide reliable transmission of digital messages over noisy channels. In a typical block code, an information message or sequence is split up into blocks, and an encoder at the transmitting device then mathematically adds redundancy to the information message. Exploitation of this redundancy in the encoded information message is the key to the reliability of the message, enabling correction for any bit errors that may occur due to noise. That is, a decoder at the receiving device can take advantage of the redundancy to reliably recover the information message even though bit errors may occur, in part, due to the addition of noise to the channel.

Many examples of such error correcting block codes are known to those of ordinary skill in the art, including Hamming codes, Bose-Chaudhuri-Hocquenghem (BCH) codes, turbo codes, and low-density parity check (LDPC) codes, among others. Many existing wireless communication networks utilize such block codes, such as 3GPP LTE networks, which utilize turbo codes; and IEEE <NUM>. 11n Wi-Fi networks, which utilize LDPC codes. However, for future networks, a new category of block codes, called polar codes, presents a potential opportunity for reliable and efficient information transfer with improved performance relative to turbo codes and LDPC codes.

While research into implementation of polar codes continues to rapidly advance its capabilities and potential, additional enhancements are desired, particularly for potential deployment of future wireless communication networks beyond LTE. Document 3GPP R1-<NUM> describes a sequence for a polar code of a maximum code length being a power of two, which covers any combination of the code rate and code lengths of power of two smaller than the maximum code length in a nested way. Harish Vangala et al. present in their article "A Comparative Study of Polar Code Constructions for the A WGN Channel" a comparative study of the performance of various polar code constructions in an additive white Gaussian noise (AWGN) channel.

Embodiments and aspects that do not fall within the scope of the claims are merely examples used for explanation of the invention. Wording such as "may" and "for example" used in the description in conjunction with features of the independent claims should not be interpreted to mean that those features are merely optional.

Various aspects of the disclosure provide for the generation of polar codewords utilizing a single master sequence constructed using density evolution with a nested structure for identifying the frozen bit locations and information bit locations. This single master sequence may be used for any codeword length N up to a maximum codeword length Nmax, and may further be utilized for any code rate R. For example, from the master sequence of length Nmax, a bit location sequence S with codeword length N (where N < Nmax) may be obtained by selecting the bit locations (indexes) in the master sequence corresponding to each bit location in S in the order provided in the master sequence.

The claimed invention is solely described and reflected in the context of <FIG> and <FIG>, the remaining figures are only for illustrative purposes.

Referring now to <FIG>, as an illustrative example without limitation, a schematic illustration of a radio access network <NUM> is provided. The radio access network <NUM> may be a next generation (e.g., fifth generation (<NUM>) or New Radio (NR)) radio access network or a legacy (e.g., <NUM> or <NUM>) radio access network. In addition, one or more nodes in the radio access network <NUM> may be next generation nodes or legacy nodes.

As used herein, the term legacy radio access network refers to a network employing a third generation (<NUM>) wireless communication technology based on a set of standards that complies with the International Mobile Telecommunications-<NUM> (IMT-<NUM>) specifications or a fourth generation (<NUM>) wireless communication technology based on a set of standards that comply with the International Mobile Telecommunications Advanced (ITU-Advanced) specification. For example, some the standards promulgated by the 3rd Generation Partnership Project (3GPP) and the 3rd Generation Partnership Project <NUM> (3GPP2) may comply with IMT-<NUM> and/or ITU-Advanced. Examples of such legacy standards defined by the 3rd Generation Partnership Project (3GPP) include, but are not limited to, Long-Term Evolution (LTE), LTE-Advanced, Evolved Packet System (EPS), and Universal Mobile Telecommunication System (UMTS). Additional examples of various radio access technologies based on one or more of the above-listed 3GPP standards include, but are not limited to, Universal Terrestrial Radio Access (UTRA), Evolved Universal Terrestrial Radio Access (eUTRA), General Packet Radio Service (GPRS) and Enhanced Data Rates for GSM Evolution (EDGE). Examples of such legacy standards defined by the 3rd Generation Partnership Project <NUM> (3GPP2) include, but are not limited to, CDMA2000 and Ultra Mobile Broadband (UMB). Other examples of standards employing <NUM>/<NUM> wireless communication technology include the IEEE <NUM> (WiMAX) standard and other suitable standards.

As further used herein, the term next generation radio access network generally refers to a network employing continued evolved wireless communication technologies. This may include, for example, a fifth generation (<NUM>) wireless communication technology based on a set of standards. The standards may comply with the guidelines set forth in the <NPL>. For example, standards that may be defined by the 3GPP following LTE-Advanced or by the 3GPP2 following CDMA2000 may comply with the NGMN Alliance <NUM> White Paper. Standards may also include pre-3GPP efforts specified by Verizon Technical Forum (www. vstgf) and Korea Telecom SIG (www.

The geographic region covered by the radio access network <NUM> may be divided into a number of cellular regions (cells) that can be uniquely identified by a user equipment (UE) based on an identification broadcasted over a geographical area from one access point or base station. <FIG> illustrates macrocells <NUM>, <NUM>, and <NUM>, and a small cell <NUM>, each of which may include one or more sectors. A sector is a sub-area of a cell. All sectors within one cell are served by the same base station. A radio link within a sector can be identified by a single logical identification belonging to that sector. In a cell that is divided into sectors, the multiple sectors within a cell can be formed by groups of antennas with each antenna responsible for communication with UEs in a portion of the cell.

In general, a base station (BS) serves each cell. A BS may also be referred to by those skilled in the art as a base transceiver station (BTS), a radio base station, a radio transceiver, a transceiver function, a basic service set (BSS), an extended service set (ESS), an access point (AP), a Node B (NB), an eNode B (eNB), a gNodeB (gNB) or some other suitable terminology.

In <FIG>, two high-power base stations <NUM> and <NUM> are shown in cells <NUM> and <NUM>; and a third high-power base station <NUM> is shown controlling a remote radio head (RRH) <NUM> in cell <NUM>. In the illustrated example, the cells <NUM>, <NUM>, and <NUM> may be referred to as macrocells, as the high-power base stations <NUM>, <NUM>, and <NUM> support cells having a large size. Further, a low-power base station <NUM> is shown in the small cell <NUM> (e.g., a microcell, picocell, femtocell, home base station, home Node B, home eNode B, etc.) which may overlap with one or more macrocells. In this example, the cell <NUM> may be referred to as a small cell, as the low-power base station <NUM> supports a cell having a relatively small size.

In general, base stations may include a backhaul interface for communication with a backhaul portion of the network. The backhaul may provide a link between a base station and a core network, and in some examples, the backhaul may provide interconnection between the respective base stations. The core network is a part of a wireless communication system that is generally independent of the radio access technology used in the radio access network. Some base stations may be configured as integrated access and backhaul (IAB) nodes, where the wireless spectrum may be used both for access links (i.e., wireless links with UEs), and for backhaul links. This scheme is sometimes referred to as wireless self-backhauling. By using wireless self-backhauling, rather than requiring each new base station deployment to be outfitted with its own hard-wired backhaul connection, the wireless spectrum utilized for communication between the base station and UE may be leveraged for backhaul communication, enabling fast and easy deployment of highly dense small cell networks.

The radio access network <NUM> is illustrated supporting wireless communication for multiple mobile apparatuses. A mobile apparatus is commonly referred to as user equipment (UE) in standards and specifications promulgated by the 3rd Generation Partnership Project (3GPP), but may also be referred to by those skilled in the art as a mobile station (MS), a subscriber station, a mobile unit, a subscriber unit, a wireless unit, a remote unit, a mobile device, a wireless device, a wireless communications device, a remote device, a mobile subscriber station, an access terminal (AT), a mobile terminal, a wireless terminal, a remote terminal, a handset, a terminal, a user agent, a mobile client, a client, or some other suitable terminology. A UE may be an apparatus that provides a user with access to network services.

Within the present document, a "mobile" apparatus need not necessarily have a capability to move, and may be stationary. The term mobile apparatus or mobile device broadly refers to a diverse array of devices and technologies. For example, some nonlimiting examples of a mobile apparatus include a mobile, a cellular (cell) phone, a smart phone, a session initiation protocol (SIP) phone, a laptop, a personal computer (PC), a notebook, a netbook, a smartbook, a tablet, a personal digital assistant (PDA), and a broad array of embedded systems, e.g., corresponding to an "Internet of things" (IoT). A mobile apparatus may additionally be an automotive or other transportation vehicle, a remote sensor or actuator, a robot or robotics device, a satellite radio, a global positioning system (GPS) device, an object tracking device, a drone, a multi-copter, a quad-copter, a remote control device, a consumer and/or wearable device, such as eyewear, a wearable camera, a virtual reality device, a smart watch, a health or fitness tracker, a digital audio player (e.g., MP3 player), a camera, a game console, etc. A mobile apparatus may additionally be a digital home or smart home device such as a home audio, video, and/or multimedia device, an appliance, a vending machine, intelligent lighting, a home security system, a smart meter, etc. A mobile apparatus may additionally be a smart energy device, a security device, a solar panel or solar array, a municipal infrastructure device controlling electric power (e.g., a smart grid), lighting, water, etc.; an industrial automation and enterprise device; a logistics controller; agricultural equipment; military defense equipment, vehicles, aircraft, ships, and weaponry, etc. Still further, a mobile apparatus may provide for connected medicine or telemedicine support, i.e., health care at a distance. Telehealth devices may include telehealth monitoring devices and telehealth administration devices, whose communication may be given preferential treatment or prioritized access over other types of information, e.g., in terms of prioritized access for transport of critical service user data traffic, and/or relevant QoS for transport of critical service user data traffic.

Within the radio access network <NUM>, the cells may include UEs that may be in communication with one or more sectors of each cell. For example, UEs <NUM> and <NUM> may be in communication with base station <NUM>; UEs <NUM> and <NUM> may be in communication with base station <NUM>; UEs <NUM> and <NUM> may be in communication with base station <NUM> by way of RRH <NUM>; UE <NUM> may be in communication with low-power base station <NUM>; and UE <NUM> may be in communication with mobile base station <NUM>. Here, each base station <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> may be configured to provide an access point to a core network (not shown) for all the UEs in the respective cells.

In another example, a mobile network node (e.g., quadcopter <NUM>) may be configured to function as a UE. In some aspects of the disclosure, two or more UE (e.g., UEs <NUM> and <NUM>) may communicate with each other using peer to peer (P2P) or sidelink signals <NUM> without relaying that communication through a base station (e.g., base station <NUM>).

Unicast or broadcast transmissions of control information and/or user data traffic from a base station (e.g., base station <NUM>) to one or more UEs (e.g., UEs <NUM> and <NUM>) may be referred to as downlink (DL) transmission, while transmissions of control information and/or user data traffic originating at a UE (e.g., UE <NUM>) may be referred to as uplink (UL) transmissions. In addition, the uplink and/or downlink control information and/or user data traffic may be time-divided into frames, subframes, slots, mini-slots and/or symbols. As used herein, a symbol may refer to a unit of time that, in an orthogonal frequency division multiplexed (OFDM) waveform, carries one resource element (RE) per sub-carrier. A slot may carry <NUM> or <NUM> OFDM symbols. A mini-slot may carry less than <NUM> OFDM symbols or less than <NUM> OFDM symbols. A subframe may refer to a duration of <NUM>. Multiple subframes or slots may be grouped together to form a single frame or radio frame. Of course, these definitions are not required, and any suitable scheme for organizing waveforms may be utilized, and various time divisions of the waveform may have any suitable duration.

The air interface in the radio access network <NUM> may utilize one or more multiplexing and multiple access algorithms to enable simultaneous communication of the various devices. For example, multiple access for uplink (UL) or reverse link transmissions from UEs <NUM> and <NUM> to base station <NUM> may be provided utilizing time division multiple access (TDMA), code division multiple access (CDMA), frequency division multiple access (FDMA), orthogonal frequency division multiple access (OFDMA), sparse code multiple access (SCMA), single-carrier frequency division multiple access (SC-FDMA), resource spread multiple access (RSMA), or other suitable multiple access schemes. Further, multiplexing downlink (DL) or forward link transmissions from the base station <NUM> to UEs <NUM> and <NUM> may be provided utilizing time division multiplexing (TDM), code division multiplexing (CDM), frequency division multiplexing (FDM), orthogonal frequency division multiplexing (OFDM), sparse code multiplexing (SCM), single-carrier frequency division multiplexing (SC-FDM) or other suitable multiplexing schemes.

Further, the air interface in the radio access network <NUM> may utilize one or more duplexing algorithms. Duplex refers to a point-to-point communication link where both endpoints can communicate with one another in both directions. Full duplex means both endpoints can simultaneously communicate with one another. Half duplex means only one endpoint can send information to the other at a time. In a wireless link, a full duplex channel generally relies on physical isolation of a transmitter and receiver, and suitable interference cancellation technologies. Full duplex emulation is frequently implemented for wireless links by utilizing frequency division duplex (FDD) or time division duplex (TDD). In FDD, transmissions in different directions operate at different carrier frequencies. In TDD, transmissions in different directions on a given channel are separated from one another using time division multiplexing. That is, at some times the channel is dedicated for transmissions in one direction, while at other times the channel is dedicated for transmissions in the other direction, where the direction may change very rapidly, e.g., several times per subframe.

In the radio access network <NUM>, the ability for a UE to communicate while moving, independent of their location, is referred to as mobility. The various physical channels between the UE and the radio access network are generally set up, maintained, and released under the control of an access and mobility management function (AMF), which may include a security context management function (SCMF) that manages the security context for both the control plane and the user plane functionality and a security anchor function (SEAF) that performs authentication. In various aspects of the disclosure, a radio access network <NUM> may utilize DL-based mobility or UL-based mobility to enable mobility and handovers (i.e., the transfer of a UE's connection from one radio channel to another). In a network configured for DL-based mobility, during a call with a scheduling entity, or at any other time, a UE may monitor various parameters of the signal from its serving cell as well as various parameters of neighboring cells. Depending on the quality of these parameters, the UE may maintain communication with one or more of the neighboring cells. During this time, if the UE moves from one cell to another, or if signal quality from a neighboring cell exceeds that from the serving cell for a given amount of time, the UE may undertake a handoff or handover from the serving cell to the neighboring (target) cell. For example, UE <NUM> may move from the geographic area corresponding to its serving cell <NUM> to the geographic area corresponding to a neighbor cell <NUM>. When the signal strength or quality from the neighbor cell <NUM> exceeds that of its serving cell <NUM> for a given amount of time, the UE <NUM> may transmit a reporting message to its serving base station <NUM> indicating this condition. In response, the UE <NUM> may receive a handover command, and the UE may undergo a handover to the cell <NUM>.

In a network configured for UL-based mobility, UL reference signals from each UE may be utilized by the network to select a serving cell for each UE. In some examples, the base stations <NUM>, <NUM>, and <NUM>/<NUM> may broadcast unified synchronization signals (e.g., unified Primary Synchronization Signals (PSSs), unified Secondary Synchronization Signals (SSSs) and unified Physical Broadcast Channels (PBCH)). The UEs <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> may receive the unified synchronization signals, derive the carrier frequency and subframe timing from the synchronization signals, and in response to deriving timing, transmit an uplink pilot or reference signal. The uplink pilot signal transmitted by a UE (e.g., UE <NUM>) may be concurrently received by two or more cells (e.g., base stations <NUM> and <NUM>/<NUM>) within the radio access network <NUM>. Each of the cells may measure a strength of the pilot signal, and the radio access network (e.g., one or more of the base stations <NUM> and <NUM>/<NUM> and/or a central node within the core network) may determine a serving cell for the UE <NUM>. As the UE <NUM> moves through the radio access network <NUM>, the network may continue to monitor the uplink pilot signal transmitted by the UE <NUM>. When the signal strength or quality of the pilot signal measured by a neighboring cell exceeds that of the signal strength or quality measured by the serving cell, the network <NUM> may handover the UE <NUM> from the serving cell to the neighboring cell, with or without informing the UE <NUM>.

In various implementations, the air interface in the radio access network <NUM> may utilize licensed spectrum, unlicensed spectrum, or shared spectrum. Licensed spectrum provides for exclusive use of a portion of the spectrum, generally by virtue of a mobile network operator purchasing a license from a government regulatory body. Unlicensed spectrum provides for shared use of a portion of the spectrum without need for a government-granted license. While compliance with some technical rules is generally still required to access unlicensed spectrum, generally, any operator or device may gain access. Shared spectrum may fall between licensed and unlicensed spectrum, wherein technical rules or limitations may be required to access the spectrum, but the spectrum may still be shared by multiple operators and/or multiple RATs. For example, the holder of a license for a portion of licensed spectrum may provide licensed shared access (LSA) to share that spectrum with other parties, e.g., with suitable licensee-determined conditions to gain access.

In some examples, access to the air interface may be scheduled, wherein a scheduling entity (e.g., a base station) allocates resources (e.g., time-frequency resources) for communication among some or all devices and equipment within its service area or cell. That is, for scheduled communication, scheduled entities utilize resources allocated by the scheduling entity.

In other examples, sidelink signals may be used between UEs without necessarily relying on scheduling or control information from a base station. For example, UE <NUM> is illustrated communicating with UEs <NUM> and <NUM>. In some examples, the UE <NUM> is functioning as a scheduling entity or a primary sidelink device, and UEs <NUM> and <NUM> may function as a scheduled entity or a non-primary (e.g., secondary) sidelink device. In still another example, a UE may function as a scheduling entity in a device-to-device (D2D), peer-to-peer (P2P), or vehicle-to-vehicle (V2V) network, and/or in a mesh network. In a mesh network example, UEs <NUM> and <NUM> may optionally communicate directly with one another in addition to communicating with the scheduling entity <NUM>.

<FIG> is a schematic illustration of wireless communication between a first wireless communication device <NUM> and a second wireless communication device <NUM>. Each wireless communication device <NUM> and <NUM> may be a user equipment (UE), a base station, or any other suitable apparatus or means for wireless communication. In the illustrated example, a source <NUM> within the first wireless communication device <NUM> transmits a digital message over a communication channel <NUM> (e.g., a wireless channel) to a sink <NUM> in the second wireless communication device <NUM>. One issue in such a scheme that must be addressed to provide for reliable communication of the digital message, is to take into account the noise that affects the communication channel <NUM>.

Block codes, or error correcting codes are frequently used to provide reliable transmission of digital messages over such noisy channels. In a typical block code, an information message or sequence is split up into blocks, each block having a length of K bits. An encoder <NUM> at the first (transmitting) wireless communication device <NUM> then mathematically adds redundancy to the information message, resulting in codewords having a length of N, where N > K. Here, the coding rate R is the ratio between the message length and the block length: i.e., R = K / N. Exploitation of this redundancy in the encoded information message is the key to reliability of the message, enabling correction for any bit errors that may occur due to the noise. That is, a decoder <NUM> at the second (receiving) wireless communication device <NUM> can take advantage of the redundancy to reliably recover the information message even though bit errors may occur, in part, due to the addition of noise to the channel.

Polar codes are linear block error correcting codes. In general terms, channel polarization is generated with a recursive algorithm that defines polar codes. Polar codes are the first explicit codes that achieve the channel capacity of symmetric binary-input discrete memoryless channels. That is, polar codes achieve the channel capacity (the Shannon limit) or the theoretical upper bound on the amount of error-free information that can be transmitted on a discrete memoryless channel of a given bandwidth in the presence of noise.

Polar codes may be considered as block codes (N, K). The codeword length N is a power of <NUM> (e.g., <NUM>, <NUM>, <NUM>, etc.) because the original construction of a polarizing matrix is based on the Kronecker product of <MAT>. For example, an original information block may be represented as an information bit vector u = (u<NUM>, u<NUM>,. The polar encoder <NUM> may polar code the information bit vector to produce the polar codeword as an encoded bit vector c = (c<NUM>, c<NUM>,. , cN) using a generating matrix GN = BNF⊗n, where BN is the bit-reversal permutation matrix for successive cancellation (SC) decoding (functioning in some ways similar to the interleaver function used by a turbo coder in LTE networks) and F⊗n is the nth Kronecker power of F. The basic matrix F may be represented as <MAT>. The matrix F⊗n is generated by raising the basic 2x2 matrix F by the nth Kronecker power. This matrix is a lower triangular matrix, in that all the entries above the main diagonal are zero. For example, the matrix of F⊗n may be expressed as:
<MAT>.

The polar encoder <NUM> may then generate the polar codeword as:
<MAT>.

Thus, the information bit vector u may include a number (N) of original bits that may be polar coded by the generating matrix GN to produce a corresponding number (N) of coded bits in the polar codeword c. In some examples, the information bit vector u may include a number of information bits, denoted K, and a number of frozen bits, denoted <IMG>. Frozen bits are bits that are set to a suitable predetermined value, such as <NUM> or <NUM>. Thus, the value of the frozen bits may generally be known at both the transmitting device and the receiving device. The polar encoder <NUM> may determine the number of information bits and the number of frozen bits based on the code rate R. For example, the polar encoder <NUM> may select a code rate R from a set of one or more code rates and select K = N × R bits in the information block to transmit information. The remaining (N - K) bits in the information block may then be fixed as frozen bits <IMG>.

In order to determine which information block bits to set as frozen bits, the polar encoder <NUM> may further analyze the wireless channel over which the polar codeword may be sent. For example, the wireless channel for transmitting the polar codeword may be divided into a set of sub-channels, such that each encoded bit in the polar codeword is transmitted over one of the sub-channels. Thus, each sub-channel may correspond to a particular coded bit location in the polar codeword (e.g., sub-channel-<NUM> may correspond to coded bit location containing coded bit c<NUM>). The polar encoder <NUM> may identify the K best sub-channels (e.g., most reliable sub-channels) for transmitting the information bits and determine the original bit locations in the information block contributing to (or corresponding to) the K best sub-channels. For example, based on the generating matrix, one or more of the original bits of the information block may contribute to each of the coded bits of the polar codeword. Thus, based on the generating matrix, the polar encoder <NUM> may determine K original bit locations in the information block corresponding to the K best sub-channels, designate the K original bit locations in the information block for information bits and designate the remaining original bit locations in the information block for fixed bits.

In some examples, the polar encoder <NUM> may determine the K best sub-channels by performing Gaussian approximation. Gaussian approximation is generally known to those skilled in the art. In general, the polar encoder <NUM> may perform Gaussian approximation to calculate a respective log likelihood ratio (LLR) for each of the original bit locations. For example, the LLRs of the coded bit locations are known from the sub-channel conditions (e.g., based on the respective SNRs of the sub-channels). Thus, since one or more of the original bits of the information block may contribute to each of the coded bits of the polar codeword, the LLRs of each of the original bit locations may be derived from the known LLRs of the coded bit locations by performing Gaussian approximation. Based on the calculated original bit location LLRs, the polar encoder <NUM> may sort the sub-channels and select the K best sub-channels (e.g., "good" sub-channels) to transmit the information bits.

The polar encoder <NUM> may then set the original bit locations of the information block corresponding to the K best sub-channels as including information bits and the remaining original bit locations corresponding to the N-K sub-channels (e.g., "bad" sub-channels) as including frozen bits. Bit-reversal permutation may then be performed by applying the bit-reversal permutation matrix BN described above to the N bits (including K information bits and N-K frozen bits) to produce a bit-reversed information block. The bit-reversal permutation effectively re-orders the bits of the information block. The bit-reversed information block may then be polar coded by the generating matrix GN to produce a corresponding number (N) of coded bits in the polar codeword. The polar encoder <NUM> may then transmit the polar codeword to the receiving wireless communication device <NUM>.

The receiving wireless communication device <NUM> receives a noisy version of c, and the decoder <NUM> has to decode c or, equivalently, u, using a simple successive cancellation (SC) decoding algorithm. Successive cancellation decoding algorithms typically have a decoding complexity of O (N log N) and can achieve Shannon capacity when N is very large. However, for short and moderate block lengths, the error rate performance of polar codes significantly degrades.

Therefore, in some examples, the polar decoder <NUM> may utilize a SC-list decoding algorithm to improve the polar coding error rate performance. With SC-list decoding, instead of only keeping one decoding path (as in simple SC decoders), Z decoding paths are maintained, where L><NUM>. At each decoding stage, the polar decoder <NUM> discards the least probable (worst) decoding paths and keeps only the L best decoding paths. For example, instead of selecting a value ui at each decoding stage, two decoding paths corresponding to either possible value of ui are created and decoding is continued in two parallel decoding threads (<NUM>*L). To avoid the exponential growth of the number of decoding paths, at each decoding stage, only the L most likely paths are retained. At the end, the polar decoder <NUM> will have a list of L candidates for <MAT>, out of which the most likely candidate is selected. Thus, when the polar decoder <NUM> completes the SC-list decoding algorithm, the polar decoder <NUM> returns a single information block to the sink <NUM>.

Since Gaussian approximation (GA) is a complex operation, it is difficult to perform in real-time. Therefore, GA bit location sequences in ascending or descending order of reliability are often calculated off-line and stored in memory for use in determining the information bit and frozen bit locations for an information block to be polar coded. However, storing multiple GA sequences, one for each possible code rate and information block size, requires a significant amount of memory.

Therefore, in various aspects of the disclosure, a single master sequence of bit locations in order of reliability (e.g., from low reliability to high reliability) is generated using density evolution based on a nested structure for bit location selection. Density evolution is generally known to those skilled in the art, and therefore the details thereof are not described herein.

This single master sequence is used for any codeword length N up to a maximum codeword length Nmax, and may further be utilized for any code rate R. From the master sequence of length Nmax, a bit location sequence S with codeword length N (where N < Nmax) is obtained by selecting the bit locations (indexes) in the master sequence corresponding to each bit location in S in the order listed in the master sequence. As an example, for a codeword length of <NUM>, bit locations <NUM>. <NUM> may be selected from the master sequence in the order listed in the master sequence.

The single master sequence is constructed using a nested structure of bit location selections based on the density evolution of the bit locations over a range of signal-to-noise ratios (SNRs). For example, density evolution is performed to calculate the bit error probability (BEP) of each bit location within a codeword of length Nmax for each SNR within a range of SNRs. The range of SNRs may include a maximum and minimum SNR with a step size between each SNR within the range. For example, an SNR range of -<NUM> dB to <NUM> dB with a step size of <NUM> dB may be utilized. It should be understood that any suitable range of SNRs and suitable step size within the range of SNRs may be chosen. At each SNR (e.g., SNR of -<NUM> dB, SNR of -<NUM> dB. SNR of <NUM> dB, SNR of <NUM> dB), the BEP may be calculated for each bit location (<NUM>. Nmax-<NUM>) to produce a table of BEP sequences. The table may include a number of rows corresponding to the number of SNR values within the range of SNRs and a number of columns corresponding to the maximum codeword length Nmax. Thus, each row corresponds to a particular SNR value and each column corresponds to a particular bit location (<NUM>. Nmax) in the codeword of length Nmax.

Based on Nmax, a suitable code rate vector R, each with same rate level m which in the claimed embodiment constitutes a same code rate denominator is chosen such that <NUM> < m < Nmax. In general, for any selected value of m, the code rate vector R may be expressed as <MAT>. For example, for a maximum codeword length Nmax of <NUM>, a rate level m of <NUM> may be chosen, such that the code rate vector <MAT>.

For each code rate Ri within the code rate vector R, an optimal BEP sequence within the table of BEP sequences is obtained. The optimal BEP sequence for a particular code rate Ri is chosen by selecting the Ki best (most reliable or smallest BEP value) bit locations within each SNR row, where Ki = NmaxRi. Then, for each SNR row, the block error rate (BLER) is calculated based on the BEPs of the Ki best bit locations in that SNR row (e.g., as a sum of the BEPs of the Ki best bit locations). The SNR row having a BLER value nearest to <NUM> may then be selected as the optimal SNR row with the optimal BEP sequence for that particular code rate Ri. This process is iteratively performed for each code rate Ri within the code rate vector R to select m-<NUM> optimal BEP sequences (e.g., m-<NUM> optimal SNR rows), one for each code rate Ri.

For simplicity, assume that m = <NUM> and Nmax = <NUM>. In this example, three (m-<NUM>) SNR rows may be selected as containing the optimal BEP sequences for each of the three code rates within the code rate vector R. For example, to select the SNR row (BEP sequence) for the first code rate <NUM> in the code rate vector R, the two bit locations (e.g., RiNmax or <MAT>) in each SNR row with the best reliability (lowest BEP) may be selected. The BLER may then be calculated for each SNR row based on the two selected bit locations in that SNR row. The SNR row having a BLER value nearest <NUM> may then be selected as the optimal SNR row with the optimal BEP sequence for the code rate of <MAT>. This process may then be repeated for the other code rates of <MAT> and <MAT>.

Once the m-<NUM> optimal BEP sequences (e.g., optimal SNR rows) have been selected, the master sequence is constructed using a nested selection of bit locations (indexes) between the optimal SNR rows. In some examples, again using the code rate vector R with a rate level of m, the optimal SNR row for the first (lowest) code rate R<NUM> in the code rate vector R may be identified from the previous calculation and the K<NUM> bit locations (indexes in the table) having the lowest BEP (highest reliability) may be selected as the first two bit locations in the master sequence. Then, the optimal SNR row for the next lowest code rate R<NUM> is utilized to select the next bit locations (indexes in the table) for the master sequence. For example, in the optimal SNR row for R<NUM>, the bit locations corresponding to the ones selected for R<NUM> are retained (excluded from consideration), and the K<NUM> - K<NUM> bit locations (indexes in the SNR row for R<NUM> of the table) with the lowest BEP (highest reliability) are selected for inclusion in the master sequence. This process continues until all bit locations (<NUM>. Nmax-<NUM>) are selected for inclusion in the master sequence. Thus, the master sequence is nested over R.

Using the simple example given above for m = <NUM> and Nmax = <NUM>, the optimal SNR row (BEP sequence) for the first code rate of <MAT> is used to select the first two bit locations (e.g., R<NUM>Nmax = K<NUM> or <MAT>) in the master sequence. Assuming that bit location <NUM> has the lowest BEP and bit location <NUM> has the next lowest BEP in that SNR row, the first two bit locations (indexes) in the master sequence would be <NUM> and <NUM>. Then, from the optimal SNR row (BEP sequence) corresponding to the code rate of <MAT>, the third and fourth bit locations are retained as the first two bit locations selected and the next two (e.g., K<NUM> - K<NUM>, where <MAT>; and K<NUM> = <NUM>) bit locations are selected from the remaining bit locations based on the BEP values in the remaining bit locations. In this example, assume that bit location <NUM> has the lowest BEP from the remaining bit locations and bit location <NUM> has the next lowest BEP. Thus, the master sequence would now be [<NUM><NUM><NUM><NUM>].

Next, from the optimal SNR row (BEP sequence) corresponding to the code rate of <MAT>, the third, fourth, sixth, and seventh bit locations are retained as the first four bit locations selected and the last four bit locations are selected from the remaining bit locations based on the BEP values in the remaining bit locations. In this example, assume that bit location <NUM> has the lowest BEP from the remaining bit locations, bit location <NUM> has the next lowest BEP, bit location <NUM> has the next lowest BEP, and bit location <NUM> has the next lowest BEP (highest BEP) in that SNR row. Thus, the master sequence would now be [<NUM><NUM><NUM><NUM><NUM><NUM><NUM><NUM>].

It should be understood that the master sequence can be represented in descending order of reliability, as indicated above, or in ascending order of reliability. Using the above example, to construct the master sequence in ascending order of reliability, the master sequence would be [<NUM><NUM><NUM><NUM><NUM><NUM><NUM><NUM>]. Unless otherwise indicated, a master sequence in ascending order of reliability will be assumed in the present disclosure.

In some examples, instead of constructing the master sequence from lowest BEP to highest BEP (e.g., from highest reliability to lowest reliability), the master sequence may be constructed from highest BEP to lowest BEP. In this example, the frozen bit locations are determined first, whereas when constructing the master sequence from lowest to highest BEP, the information bit locations are determined first. For example, again using the code rate vector R with a rate level of m, the optimal SNR row for the last (highest) code rate Rm-<NUM> in the code rate vector R may be identified from the previous calculation and the Nmax(<NUM> - Rm-<NUM>) or (Nmax - Km-<NUM>) bit locations (indexes in the table) having the highest BEP (lowest reliability) may be selected as the least reliable bit locations in the master sequence. Then, the optimal SNR row for the next highest code rate Rm-<NUM> is utilized to select the next least reliable bit locations for the master sequence. For example, in the optimal SNR row for Rm-<NUM>, the bit locations corresponding to the ones selected for Rm-<NUM> are retained (excluded from consideration), and the Nmax(Rm-<NUM> - Rm-<NUM>) bit locations (indexes in the SNR row for Rm-<NUM> of the table) with the highest BEP (lowest reliability) are selected for inclusion as the next least reliable in the master sequence. This process continues until all bit locations (<NUM>. Nmax-<NUM>) are selected for inclusion in the master sequence.

As discussed above, from the master sequence of length Nmax, a bit location sequence S with codeword length N (where N < Nmax) is obtained by selecting the bit locations (indexes) in the master sequence corresponding to each bit location in S in the order listed in the master sequence. As an example, for a codeword length of <NUM>, bit locations <NUM>. <NUM> may be selected from the master sequence in the order listed in the master sequence. Again, using the above simplified example of a master sequence having a maximum codeword length of <NUM>, the bit location sequence for a codeword length N of <NUM> selected from this master sequence would be [<NUM><NUM><NUM><NUM><NUM><NUM>]. Assuming a code rate of <MAT>, the K best bit locations may be selected as information bits, where <MAT> * <NUM> = <NUM>. In this example, bit locations <NUM>, <NUM>, <NUM>, and <NUM> may be selected for carrying information bits, while the remaining bit locations (e.g., bit locations <NUM> and <NUM>) may be selected as frozen bits.

<FIG> is a diagram illustrating an example operation <NUM> of polar coding according to some embodiments. In <FIG>, an information block <NUM> is provided including N original bit locations <NUM>, each containing an original bit (u<NUM>, u<NUM>,. Each of the original bits corresponds to an information bit or a frozen bit. The information block <NUM> is received by a polar encoder <NUM>.

The polar encoder <NUM> further receives a master sequence <NUM> of final bit locations <NUM> (M<NUM>, M<NUM>,. MNmax) maintained in order of reliability (e.g., from low reliability to high reliability). From the master sequence <NUM> of length Nmax, the polar encoder <NUM> may generate a bit location sequence <NUM> of length A, corresponding to the length of the information block <NUM> (where N<Nmax), by selecting the bit locations <NUM> (indexes) in the master sequence <NUM> up to and including bit location MN in the order listed in the master sequence <NUM>.

The polar encoder <NUM> may then identify the K original bit locations <NUM> in the information block <NUM> with the highest reliability based on the bit location sequence <NUM> and designate the K original bit locations <NUM> as information bit locations. The remaining original bit locations <NUM> (N - K) may be designated as frozen bit locations. The polar encoder may then place information bits in the information bit locations of the information block <NUM> and frozen bits in the frozen bit locations of the information block <NUM> to produce an ordered sequence of original bits (u<NUM>*, u<NUM>*,. The ordered sequence of original bits contains the same bits as in the original information block <NUM>, but re-ordered with the information bits placed in the information bit locations and the frozen bits placed in the frozen bit locations. The polar encoder <NUM> may then polar encode the information block <NUM> to produce a polar codeword <NUM> including N coded bit locations <NUM>, each containing a coded bit (c<NUM>, c<NUM>,.

The above example also applies to polar encoders <NUM> that utilize puncturing. Puncturing is widely used to obtain length-compatible polar codes having a codeword whose block length is not a power of <NUM>. For example, to obtain a <NUM>-bit code word length, <NUM> bits may be punctured from a <NUM><NUM> = <NUM>-bit code word. According to various aspects of the present disclosure, puncturing may be utilized to obtain codewords of arbitrary length (e.g., lengths that are not necessarily a power of <NUM>).

<FIG> is a block diagram illustrating an example of a hardware implementation for a wireless communication device <NUM> employing a processing system <NUM>. For example, the wireless communication device <NUM> may be a user equipment (UE), a base station, or any other suitable apparatus or means for wireless communication.

In accordance with various aspects of the disclosure, an element, or any portion of an element, or any combination of elements may be implemented with a processing system <NUM> that includes one or more processors <NUM>. Examples of processors <NUM> include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure. That is, the processor <NUM>, as utilized in a wireless communication device <NUM>, may be used to implement any one or more of the processes described below and illustrated in <FIG>.

In this example, the processing system <NUM> may be implemented with a bus architecture, represented generally by the bus <NUM>. The bus <NUM> may include any number of interconnecting buses and bridges depending on the specific application of the processing system <NUM> and the overall design constraints. The bus <NUM> links together various circuits including one or more processors (represented generally by the processor <NUM>), a memory <NUM>, and computer-readable media (represented generally by the computer-readable medium <NUM>). The bus <NUM> may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further. A bus interface <NUM> provides an interface between the bus <NUM> and a transceiver <NUM>. The transceiver <NUM> provides a means for communicating with various other apparatus over a transmission medium. Depending upon the nature of the apparatus, a user interface <NUM> (e.g., keypad, display, speaker, microphone, joystick) may also be provided.

The computer-readable medium <NUM> may also be used for storing data that is manipulated by the processor <NUM> when executing software.

One or more processors <NUM> in the processing system may execute software. The software may reside on a computer-readable medium <NUM>. The computer-readable medium <NUM> may be a non-transitory computer-readable medium. A non-transitory computer-readable medium includes, by way of example, a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip), an optical disk (e.g., a compact disc (CD) or a digital versatile disc (DVD)), a smart card, a flash memory device (e.g., a card, a stick, or a key drive), a random access memory (RAM), a read only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), a register, a removable disk, and any other suitable medium for storing software and/or instructions that may be accessed and read by a computer. The computer-readable medium may also include, by way of example, a carrier wave, a transmission line, and any other suitable medium for transmitting software and/or instructions that may be accessed and read by a computer. The computer-readable medium <NUM> may reside in the processing system <NUM>, external to the processing system <NUM>, or distributed across multiple entities including the processing system <NUM>. The computer-readable medium <NUM> may be embodied in a computer program product. By way of example, a computer program product may include a computer-readable medium in packaging materials. Those skilled in the art will recognize how best to implement the described functionality presented throughout this disclosure depending on the particular application and the overall design constraints imposed on the overall system.

In some aspects of the disclosure, the processor <NUM> may include circuitry configured for various functions. For example, the processor <NUM> may include a polar encoder <NUM>, which may in some examples operate in coordination with polar encoding software <NUM> stored in the computer-readable storage medium <NUM>. The polar encoder <NUM> may be configured to polar code an information block to produce a polar codeword having a codeword length of N.

In various aspects of the present disclosure, the polar encoder <NUM> may be configured to utilize a master sequence <NUM> of length Nmax stored in memory <NUM> to select the K bit locations with the highest reliability as information bits and the remaining bit locations (N - K) as frozen bits. For example, from the master sequence <NUM> of length Nmax, a bit location sequence S with codeword length N (where N < Nmax) may be obtained by selecting the bit locations (indexes) in the master sequence corresponding to each bit location in S in the order listed in the master sequence. As an example, for a codeword length N of <NUM>, bit locations <NUM>. <NUM> may be selected from the master sequence in the order listed in the master sequence.

The polar encoder <NUM> may further be configured to puncture the polar codeword to produce a punctured codeword. Puncturing may be utilized to obtain codewords of arbitrary length (e.g., lengths that are not necessarily a power of <NUM>). In some examples, puncturing may be performed using a puncturing pattern that identifies which coded bits to puncture. The puncturing pattern may be represented as a puncturing vector P = (P<NUM>, P<NUM>,. , PN) including pattern bits P at locations <NUM>-N. The value of each pattern bit location of the puncturing vector P determines whether a coded bit at a corresponding coded bit location in the coded bit vector c is punctured or kept. For example, if the value at a pattern bit location in the puncturing pattern is zero, the coded bit at the corresponding coded bit location in the polar codeword may be punctured (removed), whereas if the value is <NUM>, the coded bit at that coded bit location may be kept.

In various aspects of the disclosure, a uniform or quasi-uniform puncturing pattern may be utilized. However, those skilled in the art will recognize that nonuniform (e.g., random) puncturing may be utilized within the scope of the present disclosure. In some examples, the polar encoder <NUM> may generate the uniform or quasi-uniform puncturing pattern from an initial puncturing pattern including one or more initial punctured bit locations. An example of an initial puncturing pattern is one in which all of the elements have a value of <NUM> except for the last N-M elements, which have a value of <NUM>. Here, N is the codeword length, and N-M is the desired block length after puncturing. As a result of the bit-reversal permutation BN applied to the information block, in order to maintain correspondence between the puncturing pattern and the resulting polar codeword, bit-reversal permutation may also be performed on the initial puncturing pattern to produce a final puncturing pattern that is similar to a uniform puncturing pattern. The punctured bit locations may be different in the final puncturing pattern than in the initial puncturing pattern based on the bit-reversal permutation applied. The final puncturing pattern functions as a mask, puncturing N-M coded bits of the polar codeword to which it is applied.

When puncturing is utilized, the polar encoder <NUM> may utilize the bit location sequence S obtained from the master sequence to determine which bit locations to puncture, which bit locations to set as information bits and which bit locations to set as frozen bits. In an example, after bit reversal permutation of the puncture pattern, the polar encoder <NUM> may set the bit locations corresponding to the punctured bit locations in the puncture pattern to zero in the original information block, then determine the frozen bit locations and information bit locations in the information block from the remaining bit locations in the bit location sequence.

In an example, assume that a bit location sequence S of length <NUM> is as follows:.

Then, assume the puncture pattern before bit reversal permutation is:,
and after bit-reversal permutation is:.

Using the bit reversal puncture pattern, the bit locations in the bit location sequence S corresponding to the bit locations of zero's in the bit reversal puncture pattern may be set as frozen bits. For example, using the above example, bit locations seven and fifteen in the bit location sequence may be set as frozen bits. Then, assuming a code rate of ½, six additional bits may then be set as frozen bits in the bit sequence S. Here, with N = <NUM> and R = ½, the number of information bits K may be determined as N * R (e.g., <NUM> * ½ = <NUM>) and the number of frozen bits may be determined as N - K (e.g., <NUM> - <NUM> = <NUM>). With two bit locations already set to zero based on the puncture pattern, only six additional bit locations should be set as frozen bits. In the above sequence S, bit locations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> may be set as frozen bits. Thus, N - M bit locations in the original information block may be set as frozen bits corresponding to the puncture pattern and then an additional M - K bit locations in the original information block may be set as frozen bits. Information bits may then be placed in the remaining K bit locations in the original information block. Using the above example, information bits may be placed in bit locations <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>.

The resulting information block may be polar coded to produce a polar codeword of length N, which may then be punctured using the puncture pattern to produce a codeword of length M. The codeword may then be further processed and transmitted to a receiving wireless communication device via the transceiver <NUM>.

The processor <NUM> may further include nested sequence generation circuitry <NUM>, which may in some examples operate in co-ordination with nested sequence generation software <NUM> stored in the computer-readable medium <NUM>. The nested sequence generation circuitry <NUM> may be configured to generate the single master sequence <NUM> and store the single master sequence <NUM> in memory <NUM>. In some examples, the nested sequence generation circuitry <NUM> may be configured to select the maximum codeword length Nmax and the rate level m for construction of the master sequence <NUM>. The nested sequence generation circuitry <NUM> may then construct the master sequence <NUM>, as described above in connection with <FIG>.

Further, the processor <NUM> may include a polar decoder <NUM>, which may in some examples operate in coordination with polar decoding software <NUM> stored in the computer-readable medium <NUM>. The polar decoder <NUM> may be configured to receive a punctured polar codeword and decode the punctured polar codeword to produce the original information block. In some examples, the polar decoder <NUM> may perform successive cancellation (SC) polar decoding or SC polar list decoding to decode the punctured polar codeword.

In various aspects of the disclosure, the polar decoder <NUM> may further utilize the master sequence <NUM> maintained in memory <NUM> to ascertain the bit locations of frozen bits and information bits. In some examples, the master sequence <NUM> may be pre-stored on the wireless communication device <NUM>. In other examples, the master sequence may be calculated by the nested sequence generation circuitry <NUM>. In still other examples, the master sequence may be received from a transmitting wireless communication device.

<FIG> is a diagram illustrating an example operation <NUM> of polar coding and puncturing according to some embodiments. In <FIG>, an information block <NUM> is provided including N original bit locations <NUM>, each containing an original bit (u<NUM>, u<NUM>,. Each of the original bits corresponds to an information bit or a frozen bit. The information block <NUM> is received by a polar encoder <NUM>. The polar encoder <NUM> polar encodes the information block to produce a polar codeword <NUM> including N coded bit locations <NUM>, each containing a coded bit (c<NUM>, c<NUM>,.

The polar codeword <NUM> is received by a puncture block <NUM>. The puncture block <NUM> applies a puncturing pattern to the polar codeword to puncture (N-M) coded bits from the polar codeword to produce a polar codeword having a codeword length of L, where L = (N-M). Thus, at the output of the puncture block <NUM> is a punctured codeword <NUM> including L coded bit locations <NUM>, each including one of the non-punctured coded bits (c<NUM>, c<NUM>,. It should be noted that the polar encoder <NUM> and puncture block <NUM> may, in some examples, correspond to the polar encoder <NUM> and polar encoding software <NUM> shown and described above in connection with <FIG> or the polar encoder <NUM> shown and described above in connection with <FIG>.

An example operation of the puncture block <NUM> is shown in <FIG>. In <FIG>, an initial puncturing pattern <NUM> is generated including a plurality of pattern bit locations <NUM>. Each of the pattern bit locations <NUM> corresponds to one of the coded bit locations <NUM> of the polar codeword <NUM> generated by the polar encoder <NUM> shown in <FIG>. The value of each pattern bit location <NUM> determines whether a coded bit at a corresponding coded bit location <NUM> in the polar codeword <NUM> is punctured or kept. For example, if the value at a pattern bit location in the puncturing pattern is zero, the coded bit at the corresponding coded bit location in the polar codeword may be punctured (removed), whereas if the value is one, the coded bit at that coded bit location may be kept. In the example shown in <FIG>, the value of the last N-M pattern bit locations <NUM> is set to zero.

As a result of the bit-reversal permutation applied to the information block when generating the polar codeword <NUM>, in order to maintain correspondence between the puncturing pattern <NUM> and the resulting polar codeword <NUM>, bit-reversal permutation may also be performed on the initial puncturing pattern <NUM> to produce a final puncturing pattern <NUM> that is similar to a uniform puncturing pattern. The final puncturing pattern <NUM> includes the same number of pattern bit locations <NUM> as the initial puncture pattern <NUM>, but as shown in <FIG>, the punctured bit locations may be different in the final puncturing pattern <NUM> than in the initial puncturing pattern <NUM> based on the bit-reversal permutation applied. The final puncturing pattern <NUM> may then be applied to the polar codeword <NUM> and function as a mask, puncturing N-M coded bits of the polar codeword <NUM> to produce the punctured polar codeword <NUM> having a codeword length of L. In the example shown in <FIG>, coded bits c<NUM> and cN-<NUM> are illustrated as being punctured, for simplicity.

<FIG> is a flow chart illustrating an exemplary process <NUM> for polar coding according to some aspects of the present disclosure. In some examples, the process <NUM> may be implemented by a wireless communication device as described above and illustrated in <FIG>. In some examples, the process <NUM> may be implemented by any suitable means for carrying out the described functions.

At block <NUM>, the wireless communication device accesses a master sequence of bit locations maintained in order of reliability. In some examples, the master sequence may be generated off-line and stored in memory in the wireless communication device. In the claimed aspect, the master sequence is generated utilizing density evolution and is nested over a code rate vector including a plurality of code rates having the same rate level (e.g., code rate denominator). In addition, the master sequence has a suitable maximum length Nmax. For example, the polar encoder <NUM> and/or the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may access the master sequence.

At block <NUM>, the wireless communication device generates a bit location sequence from the master sequence for an information block. the information block has a block length less than the maximum block length of the master sequence. The bit location sequence for the information block includes a number of bit locations corresponding to the block length that are arranged in order of reliability according to the master sequence. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may generate the bit location sequence for the information block.

At block <NUM>, the wireless communication device identifies information bit locations and frozen bit locations in the information block based on the bit location sequence. In some examples, the information bit locations correspond to the bit locations in the bit location sequence having a highest reliability and the frozen bit locations correspond to the bit locations in the bit location sequence having the lowest reliability. The number of information bits and frozen bits may be determined, for example, based on the code rate selected for the information block. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may identify the information bit locations and frozen bit locations from the bit location sequence.

At block <NUM>, the wireless communication device places information bits in the information bit locations of the information block and frozen bits in the frozen bit locations of the information block. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may place the information bits and frozen bits in the corresponding information bit and frozen bit locations of the information block.

At block <NUM>, the wireless communication device polar codes the information block to produce a polar codeword, and at block <NUM>, transmit the polar codeword to a receiving wireless communication device over a wireless air interface. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may polar code the information block, which may then be transmitted via transceiver <NUM>.

At block <NUM>, the wireless communication device accessed a master sequence of bit locations maintained in order of reliability. In some examples, the master sequence may be generated off-line and stored in memory in the wireless communication device. In the claimed aspect, the master sequence is generated utilizing density evolution and is nested over a code rate vector including a plurality of code rates having the same rate level (e.g., code rate denominator). In addition, the master sequence has a suitable maximum length Nmax. For example, the polar encoder <NUM> and/or the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may access the master sequence.

At block <NUM>, the wireless communication device generates a bit location sequence from the master sequence for an information block. The information block has a block length less than the maximum block length of the master sequence. The bit location sequence for the information block includes a number of bit locations corresponding to the block length that are arranged in order of reliability according to the master sequence. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may generate the bit location sequence for the information block.

At block <NUM>, the wireless communication device generates an initial puncturing pattern including initial punctured bit locations for puncturing corresponding coded bit locations in a polar codeword produced by polar coding the information block. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may generate the initial puncturing pattern.

At block <NUM>, the wireless communication device performs bit-reversal permutation on the initial puncturing pattern to produce a final puncturing pattern including final punctured bit locations. The final puncturing pattern includes the same number of bit locations as the initial puncture pattern, but the punctured bit locations may be different in the final puncturing pattern than in the initial puncturing pattern based on the bit-reversal permutation applied. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may perform bit-reversal permutation on the initial puncturing pattern.

At block <NUM>, the wireless communication device places frozen bits in the bit locations of the information block corresponding to the final punctured bits locations in the final puncturing pattern. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may place frozen bits in the final punctured bit locations of the information block.

At block <NUM>, the wireless communication device identifies information bit locations and frozen bit locations in the information block from the non-punctured bit locations in the information block based on the bit location sequence. In some examples, the information bit locations correspond to the non-punctured bit locations in the bit location sequence having a highest reliability and the frozen bit locations correspond to the non-punctured bit locations in the bit location sequence having the lowest reliability. The number of information bits and frozen bits may be determined, for example, based on the code rate selected for the information block. For example, the polar encoder <NUM> shown and described above in connection with <FIG> may identify the information bit locations and frozen bit locations from the bit location sequence.

<FIG> is a flow chart illustrating an exemplary process <NUM> for generating a master sequence for polar coding according to some aspects of the present disclosure. In some examples, the process <NUM> may be implemented by a wireless communication device as described above and illustrated in <FIG> or other suitable apparatus. In some examples, the process <NUM> may be implemented by any suitable means for carrying out the described functions. The process <NUM> shown in <FIG> may be performed off-line and the generated master sequence may be stored in memory in the wireless communication device.

At block <NUM>, the apparatus may utilize density evolution to calculate a bit error probability (BEP) for each bit location within a maximum length codeword (e.g., a codeword having a suitable maximum length Nmax) over a plurality of signal-to-noise ratios (SNRs) to generate a plurality of BEP sequences. In some examples, each of the BEP sequences corresponds to one of the SNRs within a range of SNRs and includes a respective BEP for each bit location within the maximum length codeword. The range of SNRs may include a maximum and minimum SNR with a step size between each SNR within the range. For example, an SNR range of -<NUM> dB to <NUM> dB with a step size of. <NUM> dB may be utilized. It should be understood that any suitable range of SNRs and suitable step size within the range of SNRs may be chosen. For example, the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may generate the BEP sequences.

At block <NUM>, the apparatus may select an optimum BEP sequence of the plurality of BEP sequences for a code rate within a code rate vector. For example, based on Nmax, a suitable code rate vector R, each with same rate level m (e.g., code rate denominator) may be chosen such that <NUM> < m < Nmax. The optimal BEP sequence for a particular code rate Ri within the code rate vector R may then be chosen by selecting the Ki best (most reliable or smallest BEP value) bit locations within each BEP sequence, where Ki = NmaxRi and comparing the Ki best bit locations within each BEP sequence to identify the optimal BEP sequence. At block <NUM>, the apparatus determine whether there are more code rates within the code rate vector. If there are more code rates (Y branch of block <NUM>), the process returns to block <NUM>, where the apparatus may select the optimum BEP sequence of the plurality of BEP sequences for the next code rate. Thus, for each code rate Ri within the code rate vector R, a respective optimal BEP sequence within the plurality of BEP sequences may be obtained. For example, the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may select the optimum BEP sequences.

Once a respective optimal BEP sequence is selected for each code rate within the code rate vector (N branch of block <NUM>), at block <NUM>, the apparatus may select initial bit locations for the master sequence from the optimum BEP sequence for an initial code rate in the code rate vector. In some examples, again using the code rate vector R with a rate level of m, the initial code rate may be the first (lowest) code rate R<NUM> in the code rate vector R. In this example, the K<NUM> bit locations having the lowest BEP (highest reliability) in the optimum BEP sequence for the first (lowest) code rate R<NUM> in the code rate vector R may be selected as the initial bit locations in the master sequence. In other examples, again using the code rate vector R with a rate level of m, the initial code rate may be the last (highest) code rate Rm-<NUM> in the code rate vector R. In this example, the Nmax(<NUM> - Rm-<NUM>) or (Nmax - Km-<NUM>) bit locations having the highest BEP (lowest reliability) in the optimum BEP sequence for the first code rate Rm-<NUM> in the code rate vector R may be selected as the initial bit locations in the master sequence. For example, the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may select the initial bit locations for the master sequence.

At block <NUM>, the apparatus may select additional bit locations including the previously selected bit locations from a remaining BEP sequence of a next code rate in the code rate vector in order of remaining code rates. In some examples, when the initial code rate was the first (lowest) code rate R<NUM> in the code rate vector R, the bit locations corresponding to the ones selected for R<NUM> are retained (excluded from consideration), and the K<NUM> - K<NUM> bit locations with the lowest BEP (highest reliability) in the optimum BEP sequence for the second (next lowest) code rate R<NUM> in the code rate vector R may be selected as the additional bit locations in the master sequence. In some examples, when the initial code rate was the last (highest) code rate Rm-<NUM> in the code rate vector R, the bit locations corresponding to the ones selected for Rm-<NUM> are retained (excluded from consideration), and the Nmax(Rm-<NUM> - Rm-<NUM>) bit locations having the highest BEP (lowest reliability) in the optimum BEP sequence for the second (next highest) code rate Rm-<NUM> in the code rate vector R may be selected as the additional bit locations in the master sequence. For example, the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may select the additional bit locations for the master sequence.

At block <NUM>, the apparatus may determine whether there are more optimal BEP sequences (e.g., more code rates in the code rate vector having optimal BEP sequences that have not yet been utilized to select additional bits for the master sequence). If there are more optimal BEP sequences (Y branch of block <NUM>), the process returns to block <NUM>, where the apparatus may select additional bit locations including the previously selected bit locations from a remaining BEP sequence of a next code rate in the code rate vector. Once all of the bit locations for the master sequence have been selected (N branch of block <NUM>), at block <NUM>, the apparatus may output the generated master sequence. For example, the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may output the master sequence.

At block <NUM>, the apparatus may calculate a block error rate (BLER) value for each BEP sequence for a code rate within a code rate vector. For example, again assuming a code rate vector R, for a particular code rate Ri within the code rate vector R, the Ki best (most reliable or smallest BEP value) bit locations within each BEP sequence may be selected, where Ki = NmaxRi, and the block error rate (BLER) of each BEP sequence may be calculated based on the BEPs of the Ki best bit locations in that BEP sequence (e.g., as the linear sum of the BEPs of the Ki best bit locations). At block <NUM>, the apparatus may select the optimum BEP sequence for the particular code rate as the BEP sequence having a BLER value nearest <NUM>.

At block <NUM>, the apparatus may determine whether there are more code rates within the code rate vector. If there are more code rates (Y branch of block <NUM>), the process returns to blocks <NUM> and <NUM>, where the apparatus may calculate the BLER value for each BEP sequence for the next code rate in the code rate vector and select the optimum BEP sequence for the next code rate. Thus, for each code rate Ri within the code rate vector R, a respective optimal BEP sequence within the plurality of BEP sequences may be obtained. Since the number of bit locations utilized to calculate the BLER will vary between code rates, the BLER values of each BEP sequence will be different between code rates, and therefore, the optimum BEP sequence for each code rate will vary. For example, the nested sequence generation circuitry <NUM> shown and described above in connection with <FIG> may calculate the BLER value for each BEP sequence for a particular code rate within the code rate vector and select the optimum BEP sequence for that code rate having a BLER value nearest <NUM>.

<FIG> is a diagram illustrating an example of a bit error probability (BEP) table <NUM> according to some aspects of the disclosure. In the example shown in <FIG>, density evolution may be performed to calculate the bit error probability (BEP) of each bit location <NUM> within a maximum length codeword for each SNR <NUM> within a range of SNRs <NUM> (e.g., SNR-<NUM>, SNR-<NUM>,. The range of SNRs <NUM> may include a minimum SNR (e.g., SNR-<NUM>) and a maximum SNR (e.g., SNR-L) with a step size between each SNR <NUM> within the range <NUM>. For example, an SNR range of -<NUM> dB to <NUM> dB with a step size of. <NUM> dB may be utilized. It should be understood that any suitable range of SNRs and suitable step size within the range of SNRs may be chosen. At each SNR <NUM> (e.g., SNR of -<NUM> dB, SNR of -<NUM> dB. SNR of <NUM> dB, SNR of <NUM> dB), the BEP may be calculated for each bit location of the maximum length codeword (e.g., bit locations <NUM>. N, where N = Nmax) to produce a table of BEP sequences <NUM>.

As a result, the table <NUM> may include a number of rows corresponding to the number of SNR values <NUM> within the range of SNRs <NUM> and a number of columns corresponding to the maximum codeword length Nmax. Thus, each row corresponds to a particular SNR value <NUM> and each column corresponds to a particular bit location <NUM> (<NUM>. Nmax) in the codeword of length Nmax. For example, as shown in <FIG>, for a first SNR <NUM> (SNR-<NUM>), a first BEP sequence <NUM> may be generated that includes BEP-1a, BEP-2a,. , BEP-Na, for a second SNR <NUM> (SNR-<NUM>), a second BEP sequence <NUM> may be generated that includes BEP-1b, BEP-2b,. BEP-Nb, and so on through the last SNR <NUM> (SNR-L), which includes BEP-<NUM>, BEP-<NUM>,.

Using the table shown in <FIG>, a respective block error rate (BLER) value may be calculated for each BEP sequence <NUM> for a particular code rate within a code rate vector, using, for example, the K best (most reliable or smallest BEP value) bit locations <NUM> within each BEP sequence <NUM>. An optimum BEP sequence (e.g., one of the BEP sequences <NUM>) for the particular code rate may then be selected as the BEP sequence having a BLER value nearest <NUM>. From the optimum BEP sequences <NUM> (e.g., one for each code rate), the master sequence may be constructed, as described above in connection with <FIG> and <FIG>.

In one configuration, an apparatus configured for polar coding (e.g., the wireless communication device <NUM> shown in <FIG>) includes means for accessing a master sequence of bit locations maintained in order of reliability, where the master sequence is generated utilizing density evolution and nested over a code rate vector comprising a plurality of code rates having a same rate level, and the master sequence comprises a maximum length. The apparatus further includes means for generating a bit location sequence from the master sequence for an information block including a block length less than the maximum length, where the bit location sequence includes a number of bit locations corresponding to the block length arranged in order of reliability according to the master sequence. The apparatus further includes means for identifying information bit locations and frozen bit locations in the information block based on the bit location sequence, means for placing information bits in the information bit locations of the information block and frozen bits in the frozen bit locations of the information block, means for polar coding the information block to produce a polar codeword, and means for transmitting the polar codeword to a receiving wireless communication device over a wireless air interface.

In one aspect, the aforementioned means may be the processor(s) <NUM> <FIG> configured to perform the functions recited by the aforementioned means. For example, the aforementioned means may include the polar encoder <NUM> shown in <FIG>, the polar encoder <NUM> shown in <FIG>, and/or the polar encoder <NUM> shown in <FIG>. In another aspect, the aforementioned means may be a circuit or any apparatus configured to perform the functions recited by the aforementioned means.

Claim 1:
A method (<NUM>, <NUM>) of polar coding at a transmitting wireless communication device (<NUM>, <NUM>), comprising:
accessing (<NUM>, <NUM>) a master sequence (<NUM>) of final bit locations (<NUM>) maintained in order of reliability, wherein the master sequence (<NUM>) has a maximum length, Nmax, and is generated utilizing density evolution and nested over a code rate vector comprising a plurality of code rates having a same rate level m which constitutes a same code rate denominator, whereby <NUM> < m < Nmax, wherein the density evolution is performed over a range of signal-to-noise ratios, SNRs, and a bit error probability, BEP, of each bit location within a codeword of length Nmax for each SNR within the range of SNRs is calculated and for each code rate Ri in the code rate vector an optimal BEP sequence is selected by selecting the Ki best bit locations at each SNR, where Ki = Nmax. Ri and for each SNR a block error rate, BLER, is calculated based on the BEPs of the Ki best bit locations and wherein an SNR is selected based on the calculated BLER for each rate Ri in the code rate vector, wherein the master sequence (<NUM>) is then generated using a nested selection of bit locations between the selected SNRs;
generating (<NUM>, <NUM>) a bit location sequence (<NUM>) from the master sequence (<NUM>) for an information block (<NUM>) comprising a block length less than the maximum length, wherein the bit location sequence (<NUM>) comprises a number of the final bit locations (<NUM>) corresponding to the block length arranged in order of reliability according to the master sequence (<NUM>);
identifying (<NUM>, <NUM>) information bit locations (<NUM>) and frozen bit locations in the information block (<NUM>) based on the bit location sequence (<NUM>);
placing (<NUM>, <NUM>) information bits in the information bit locations (<NUM>) of the information block (<NUM>) and frozen bits in the frozen bit locations of the information block (<NUM>);
polar coding (<NUM>, <NUM>) the information block (<NUM>) to produce a polar codeword (<NUM>); and
transmitting (<NUM>, <NUM>) the polar codeword (<NUM>) to a receiving wireless communication device (<NUM>, <NUM>) over a wireless air interface.