BR112019005074B1 - Método para um dispositivo para codificação de dados com um código polar, dispositivo para codificação de dados com um código polar, método de decodificação para um dispositivo, dispositivo para decodificação com um código polar, e meio legível por computador - Google Patents

Método para um dispositivo para codificação de dados com um código polar, dispositivo para codificação de dados com um código polar, método de decodificação para um dispositivo, dispositivo para decodificação com um código polar, e meio legível por computador Download PDF

Info

Publication number
BR112019005074B1
BR112019005074B1 BR112019005074-4A BR112019005074A BR112019005074B1 BR 112019005074 B1 BR112019005074 B1 BR 112019005074B1 BR 112019005074 A BR112019005074 A BR 112019005074A BR 112019005074 B1 BR112019005074 B1 BR 112019005074B1
Authority
BR
Brazil
Prior art keywords
subchannels
bits
subchannel
weight
information
Prior art date
Application number
BR112019005074-4A
Other languages
English (en)
Other versions
BR112019005074A2 (pt
Inventor
Huazi Zhang
Jiajie Tong
Rong Li
Jun Wang
Wen Tong
Yiqun Ge
Xiaocheng Liu
Gongzheng Zhang
Jian Wang
Nan Cheng
Qifan Zhang
Original Assignee
Huawei Technologies Co., Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd filed Critical Huawei Technologies Co., Ltd
Publication of BR112019005074A2 publication Critical patent/BR112019005074A2/pt
Publication of BR112019005074B1 publication Critical patent/BR112019005074B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • H04L1/0063Single parity check
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • H04L1/0065Serial concatenated codes

Abstract

As técnicas de modalidades mapeiam bits de paridade para sub-canais com base nos seus pesos de linha. O peso da linha para um subcanal pode ser visto como o número de uns na linha correspondente da matriz de Kronecker ou como uma potência de 2 com o expoente (isto é, o peso de hamming) sendo o número de uns na representação binária do índice de subcanais (mais adiante descrito). Em uma modalidade, os sub-canais candidatos que possuem certos valores de peso de linha são reservados para o(s) bit(s) de paridade. Posteriormente, os bits de informação K podem ser mapeados para os K sub-canais restantes mais fiáveis e um número de bits congelados (por exemplo, N-K) pode ser mapeado para os sub-canais remanescentes menos fiáveis. Os bits de paridade podem então ser mapeados para os subcanais candidatos, e os valores dos bits de paridade são determinados com base em uma função dos bits de informação.

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se de modo geral a um método e aparelho para transmissão de dados e, em particular, a um método e aparelho para codificação.
FUNDAMENTOS
[002] Códigos polares são códigos lineares de correção de erros de blocos que exploram a polarização de canal para melhorar a capacidade de transmissão. Em particular, códigos polares são projetados para transmitir bits de informação por subcanais mais confiáveis (por exemplo, subcanais menos ruidosos), enquanto transmitindo bits fixos (ou congelados) por subcanais menos confiáveis (por exemplo, subcanais ruidosos). A codificação polar é descrita em maior detalhe pelo artigo acadêmico intitulado “Polarização de Canal e Códigos Polares (Channel Polarization and Polar Codes)”.
SUMÁRIO
[003] Vantagens técnicas são geralmente alcançadas por modalidades desta revelação que descrevem um método e aparelho para codificação de polarização.
[004] De acordo com uma modalidade, é fornecido um método para codificação de dados com um código polar. Nesta modalidade, o método inclui bits de informação de codificação polar e ao menos um bit de paridade para obter dados codificados com um codificador de um dispositivo. O ao menos um bit de paridade é colocado em ao menos um subcanal selecionado para o ao menos um bit de paridade baseado em um parâmetro de peso. O método inclui ainda transmitir os dados codificados a outro dispositivo. Em um exemplo, o parâmetro de peso compreende um peso mínimo. Em tal exemplo, o ao menos um bit de paridade pode ser colocado em ao menos um primeiro número de subcanais com um peso mínimo ou em um segundo número de subcanais com o dobro do peso mínimo. Naquele mesmo exemplo, ou em outro exemplo, o método pode ainda incluir a seleção, a partir de um segmento de subcanais ordenados, do ao menos um subcanal com um peso mínimo. O ao menos um subcanal com um peso mínimo pode ser selecionado a partir de um segmento de K subcanais dos subcanais ordenados, cada um dos K subcanais tendo uma maior métrica de confiabilidade que os subcanais de um segmento No-K dos subcanais ordenados, onde K é um comprimento de bloco de informações e N0 é um comprimento de código mãe. Naquele mesmo exemplo, ou em outro exemplo, no segmento de subcanais ordenados, o ao menos um subcanal com peso mínimo compreende se um número n de subcanais com um peso mínimo no segmento de K subcanais é maior que um valor predeterminado F, selecionando a partir do segmento de K subcanais, F subcanais com um peso mínimo em uma ordem decrescente da métrica de confiabilidade. Naquele exemplo, ou em outro exemplo, o codificador pode aplicar uma função de verificação de paridade para determinar um valor para cada um do ao menos um bit de paridade. Em tal exemplo, a função de verificação de paridade pode ser uma função de verificação de paridade de números primos. Em tal exemplo acima mencionado, ou em outro exemplo, o método inclui ainda os subcanais ordenados serem ordenados com base em uma métrica de confiabilidade. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, o parâmetro de peso pode compreender um menor peso de linha. O método pode ainda compreender a seleção de ao menos um subcanal com um menor peso de linha em um subconjunto de K subcanais mais confiáveis de uma sequência ordenada de subcanais, onde um peso de linha de um subcanal é um número de uns em uma linha de uma matriz Kronecker, e a linha correspondendo ao subcanal. Em tal exemplo, a seleção do ao menos um subcanal com um menor peso de linha no subconjunto de K subcanais mais confiáveis pode incluir a seleção de Fp subcanais com o menor peso de linha no subconjunto de K subcanais mais confiáveis se um número de subcanais com o menor peso de linha entre os K subcanais mais confiáveis for maior que um número predeterminado Fp. Naquele mesmo exemplo, ou em outro exemplo, o ao menos um subcanal com o menor peso de linha pode ser selecionado a partir do subconjunto de K subcanais mais confiáveis de acordo com uma ordem de confiabilidade decrescente. Naquele mesmo exemplo, ou em outro exemplo, o método pode ainda incluir selecionar subcanais para os bits de informação na sequência ordenada de subcanais, pular o ao menos um subcanal selecionado para o ao menos um bit de paridade, até que um número dos subcanais selecionados para os bits de informação alcance K. É também fornecido um aparelho para executar este método.
[005] De acordo com ainda outra modalidade, é fornecido um dispositivo configurado para codificação de dados com um código polar. Nesta modalidade, o dispositivo inclui um codificador configurado para codificação polar de bits de informação e ao menos um bit de paridade para obter dados codificados. O ao menos um bit de paridade é colocado em ao menos um subcanal selecionado para ao menos um bit de paridade baseado em um parâmetro de peso e uma interface configurada para transmitir os dados codificados a outro dispositivo. Em um exemplo de qualquer das modalidades de codificação acima mencionadas, o parâmetro de peso compreende um peso mínimo. Em tal exemplo, o ao menos um bit de paridade pode ser colocado em ao menos um de um primeiro número de subcanais com um peso mínimo ou em um segundo número de subcanais com o dobro do peso mínimo. Naquele mesmo exemplo, ou em outro exemplo, o codificador pode ainda ser configurado para selecionar, a partir de um segmento de subcanais ordenados, o ao menos um subcanal com um peso mínimo. Naquele mesmo exemplo, ou em outro exemplo, o ao menos um subcanal com um peso mínimo pode ser selecionado a partir de um segmento de K subcanais dos subcanais ordenados, cada um dos L subcanais tendo uma maior métrica de confiabilidade que os subcanais de um segmento No-K dos subcanais ordenados, onde K é um comprimento de bloco de informações e N0 é um comprimento de código mãe. Naquele mesmo exemplo, ou em outro exemplo, o dispositivo/codificador pode selecionar, a partir do segmento de subcanais ordenados, o ao menos um subcanal com um peso mínimo, e selecionar a partir do segmento de K subcanais, F subcanais com um peso mínimo em uma ordem decrescente da métrica de confiabilidade se um número de subcanais com um peso mínimo no segmento de K subcanais for maior que um valor predeterminado F. Naquele exemplo, ou em outro exemplo, o codificador pode ainda ser configurado para aplicar uma função de verificação de paridade para determinar um valor para cada um do ao menos um bit de paridade. Em tal exemplo, a função de verificação de paridade pode ser uma função de verificação de paridade de números primos. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, os subcanais ordenados de dispositivo podem ser ordenados com base em uma métrica de confiabilidade. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, o parâmetro de peso pode incluir um menor peso de linha, e o codificador pode ainda ser configurado para selecionar ao menos um subcanal com o menor peso de linha em um subconjunto de K subcanais mais confiáveis de uma sequência ordenada de subcanais. Um peso de linha de um subcanal é um número de uns em uma linha de uma matriz Kronecker. A linha pode corresponder ao subcanal. Em tal exemplo, o dispositivo pode selecionar ao menos um subcanal com um menor peso de linha no subconjunto de K subcanais mais confiáveis. O codificador pode ser ainda configurado para selecionar Fp subcanais com o menor peso de linha no subconjunto de K subcanais mais confiáveis quando um número n de subcanais com o menor peso de linha entre os K subcanais mais confiáveis for maior que um número predeterminado Fp. Naquele mesmo exemplo, ou em outro exemplo, o ao menos um subcanal com um menor peso de linha pode ser selecionado a partir do subconjunto de K subcanais mais confiáveis de acordo com uma ordem de confiabilidade decrescente. Naquele mesmo exemplo, ou em outro exemplo, o codificador pode ainda ser configurado para selecionar subcanais para os bits de informação na sequência ordenada de subcanais, pular o ao menos um subcanal selecionado para o ao menos um bit de paridade, até que um número dos subcanais selecionados para os bits de informação alcance K.
[006] De acordo com ainda outra modalidade, é fornecido outro método para codificação de dados. Nesta modalidade, o método inclui alocação de um ou mais subcanais para um ou mais bits de paridade com base em pesos de linha para subcanais em um subconjunto de um conjunto de subcanais e mapeamento de bits de informação para os restantes subcanais no conjunto de subcanais com base em uma confiabilidade dos restantes subcanais sem mapeamento dos bits de informação para o um ou mais subcanais alocados ao um ou mais bits de paridade. O método pode ainda incluir codificação dos bits de informação e do um ou mais bits de paridade usando um código polar para obter um fluxo de bits codificados e transmissão do fluxo de bits codificados. Em um exemplo de qualquer das modalidades de codificação acima, o peso de linha para um subcanal representa o número de uns em uma linha de uma matriz Kronecker, com a linha correspondendo ao subcanal. Naquele exemplo, ou em outro exemplo, os pesos de linha incluem ao menos um peso mínimo de linha. Em tal exemplo, o método pode incluir alocação de um ou mais subcanais para um ou mais bits de paridade com base em pesos de linha para subcanais em um subconjunto de um conjunto de subcanais, e alocação ao um ou mais bits de paridade, de um número de subcanais tendo um peso de linha igual ao peso mínimo de linha no subconjunto de subcanais. Naquele exemplo, ou em outro exemplo, o número de subcanais alocados pode ser um e os subcanais no conjunto podem ser ordenados com base nas suas confiabilidades para formar uma sequência ordenada de subcanais, onde o subconjunto de subcanais compreende um subconjunto mais confiável de subcanais na sequência ordenada. Naquele mesmo exemplo, ou em outro exemplo, o subconjunto mais confiável de subcanais pode incluir K subcanais para transportar os bits de informação. Naquele mesmo exemplo, ou em outro exemplo, o subconjunto mais confiável de subcanais pode compreender K+Fp subcanais, onde K é um comprimento de bloco de informações associado aos bits de informação, e Fp indica um número do um ou mais bits de paridade. Naquele mesmo exemplo, ou em outro exemplo, um subcanal mais confiável com um peso de linha igual ao peso mínimo de linha no subconjunto de subcanais pode ser alocado ao um ou mais bits de paridade. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, o um ou mais bits de paridade pode incluir um ou mais bits de verificação de paridade (PC). Em tal exemplo, a codificação dos bits de informação e o um ou mais bits que usam um código polar para obter o fluxo de bits codificados podem compreender a determinação de um ou mais valores para o um ou mais bits PC como uma função de valores dos bits de informação e mapeamento do um ou mais bits PC para ao menos o um ou mais subcanais alocados aos bits PC.
[007] De acordo com ainda outra modalidade, é fornecido um dispositivo para codificação de dados com um código polar. Nesta modalidade, o dispositivo é configurado para alocar um ou mais subcanais a um ou mais bits de paridade com base em pesos de linha para subcanais em um subconjunto de um conjunto de subcanais e para mapear bits de informação para subcanais remanescentes no conjunto de subcanais com base em uma confiabilidade dos subcanais remanescentes sem mapear os bits de informação para o um ou mais subcanais alocados ao um ou mais bits de polaridade. O dispositivo é ainda configurado para codificar os bits de informação e o um ou mais bits de paridade usando um código polar para obter um fluxo de bits codificados; e transmitir o fluxo de bits codificados. Em um exemplo de qualquer das modalidades de codificação acima, o peso de linha para um subcanal representa o número de uns em uma linha de uma matriz Kronecker, a linha correspondendo ao subcanal. Naquele exemplo, ou em outro exemplo, os pesos de linha compreendem ao menos um peso mínimo de linha. Em tal exemplo, ou em outro exemplo, o dispositivo pode alocar um ou mais subcanais a um ou mais bits de paridade com base em pesos de linha para subcanais em um subconjunto de um conjunto de subcanais. O dispositivo pode ainda ser configurado para alocar, a um ou mais bits de paridade, um número de subcanais tendo um peso de linha igual ao peso mínimo de linha no subconjunto de subcanais. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, o número de subcanais alocados pode ser um e os subcanais no conjunto podem ser ordenados com base nas suas confiabilidades para formar uma sequência ordenada de subcanais, onde o subconjunto de subcanais compreende um subconjunto mais confiável de subcanais na sequência ordenada. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, o subconjunto mais confiável de subcanais pode incluir K subcanais para transportar os bits de informação e o subconjunto mais confiável de subcanais compreende K+Fp subcanais, onde K é um comprimento de bloco de informações associado aos bits de informação, e Fp indica um número do um ou mais bits de paridade. Naquele mesmo exemplo, ou em outro exemplo, um subcanal mais confiável com um peso de linha igual ao peso mínimo de linha no subconjunto de subcanais é alocado ao um ou mais bits de paridade. Naquele mesmo exemplo, ou em outro exemplo, o um ou mais bits de paridade inclui um ou mais bits de verificação de paridade (PC).
[008] De acordo com ainda outra modalidade, é fornecido um método de decodificação para um dispositivo. Nesta modalidade, o método inclui a recepção a partir de outro dispositivo, de um sinal baseado em dados codificados, os dados codificados produzidos por codificação com um código polar, bits de informação e ao menos um bit de paridade. Nesta modalidade, o ao menos um bit de paridade é colocado em ao menos um subcanal selecionado com base em um parâmetro de peso. O método inclui também com um decodificador do dispositivo, decodificar o sinal usando o código polar e o ao menos um bit de paridade para obter os bits de informação.
[009] Em um exemplo, o parâmetro de peso inclui um peso mínimo. Em tal exemplo, o ao menos um bit de paridade pode ser colocado em ao menos um de um primeiro número de subcanais com um peso mínimo ou em um segundo número de subcanais com o dobro do peso mínimo. Naquele mesmo exemplo, ou em outro exemplo, o ao menos um subcanal selecionado tem um peso mínimo e o ao menos um subcanal é selecionado a partir de um segmento de subcanais ordenados. O ao menos um subcanal com um peso mínimo pode ser selecionado a partir de um segmento de K subcanais dos subcanais ordenados, onde cada um dos K subcanais com uma maior métrica de confiabilidade que os subcanais de um segmento No-K dos subcanais ordenados, e onde K é um comprimento de bloco de informações e N0 é um comprimento de código mãe. Naquele exemplo, ou em outro exemplo, um valor de cada um do ao menos um bit de paridade é baseado na função de verificação de paridade. Em tal exemplo, a função de verificação de paridade pode ser uma função de verificação de paridade de números primos. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, os subcanais ordenados são ordenados com base em uma métrica de confiabilidade. Em qualquer dos exemplos acima mencionados, ou em outro exemplo, o parâmetro de peso pode compreender um menor peso de linha e o ao menos um subcanal selecionado tem um menor peso de linha em um subconjunto de K subcanais mais confiáveis de uma sequência ordenada de subcanais, onde um peso de linha de um subcanal é um número de uns em uma linha de uma matriz Kronecker, e a linha correspondendo ao subcanal. Naquele mesmo exemplo, ou em outro exemplo, o ao menos um subcanal com o menor peso de linha é selecionado a partir do subconjunto de K subcanais mais confiáveis de acordo com uma ordem de confiabilidade decrescente. Naquele mesmo exemplo, ou em outro exemplo, subcanais para os bits de informação são selecionados na sequência ordenada de subcanais ao pular o ao menos um subcanal selecionado para o ao menos um bit de paridade, até que um número dos subcanais selecionados para os bits de informação alcance K. É também fornecido um aparelho para executar este método.
[0010] De acordo com ainda outra modalidade, é fornecido um método de decodificação para um dispositivo. Nesta modalidade, o método inclui receber de outro dispositivo, um sinal baseado em um fluxo de bits codificados onde o fluxo de bits codificados é produzido pela codificação com um código polar, bits de informação e um ou mais bits de paridade. O um ou mais bits de paridade são mapeados para um ou mais subcanais alocados baseados em pesos de linha para subcanais em um subconjunto de um conjunto de subcanais, e os bits de informação são mapeados para subcanais remanescentes no conjunto de subcanais com base em uma confiabilidade dos subcanais remanescentes. O método também inclui decodificação do sinal usando o código polar e o um ou mais bits de paridade para obter os bits de informação.
[0011] Em um exemplo de qualquer das modalidades de decodificação acima, o peso de linha para um subcanal representa o número de uns em uma linha de uma matriz Kronecker, com a linha correspondendo ao subcanal. Naquele exemplo, ou em outro exemplo, os pesos de linha podem incluir ao menos um peso mínimo de linha. Em tal exemplo, um ou mais subcanais são alocados a um ou mais bits de paridade em pesos de linha para subcanais em um subconjunto de um conjunto de subcanais. Em outro exemplo, um número de subcanais com um peso de linha igual ao peso mínimo de linha no subconjunto de subcanais é alocado ao um ou mais bits de paridade. Naquele mesmo exemplo, ou em outro exemplo, o número de subcanais alocados pode ser um e os subcanais no conjunto podem ser ordenados baseados nas suas confiabilidades para formar uma sequência ordenada de subcanais, onde o subconjunto de subcanais compreende um subconjunto mais confiável de subcanais na sequência ordenada. Naquele mesmo exemplo, ou em outro exemplo, o subconjunto mais confiável de subcanais pode incluir K subcanais para transportar os bits de informação. Naquele mesmo exemplo, ou em outro exemplo, o subconjunto mais confiável de subcanais pode compreender K+Fp subcanais, onde K é um comprimento de bloco de informações associado aos bits de informação, e Fp indica um número do um ou mais bits de paridade. Naquele mesmo exemplo, ou em outro exemplo, um subcanal mais confiável com um peso de linha igual ao peso mínimo de linha no subconjunto de subcanais pode ser alocado ao um ou mais bits de paridade. Em qualquer dos exemplos acima mencionados ou em outro exemplo, o um ou mais bits de paridade podem incluir um ou mais bits de verificação de paridade (PC). Em tal exemplo ou em outro exemplo, um ou mais valores para um ou mais bits PC são uma função de valores dos bits de informação.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0012] Para uma compreensão mais completa da presente revelação, e das suas vantagens, é agora feita referência à descrição seguinte considerada em conjunto com os desenhos anexos, nos quais: a Figura 1 é um diagrama que mostra um exemplo de como uma matriz geradora de codificação polar pode ser produzida a partir de um kernel; a Figura 2 é um diagrama que mostra um uso exemplificativo de uma matriz geradora de codificação polar para produzir palavras de código e uma ilustração esquemática de um codificador polar exemplificativo; a Figura 3 é um diagrama que mostra uma porção de uma árvore de lista de decisão exemplificativa cuja largura é limitada por um determinado tamanho máximo de lista e usada em um decodificador polar SCL (Lista Sucessiva de Cancelamento); a Figura 4 é um diagrama de blocos que ilustra um exemplo de um codificador polar baseado em um kernel 2x2; as Figuras 5A-5G são tabelas que explicam como pesos de linha são computados e usados para selecionar subcanais candidatos para reserva para bits de verificação de paridade (PC); as Figuras 6A-6G são tabelas que explicam como pesos de Hamming são usados para selecionar subcanais candidatos para reserva para bits de verificação de paridade (PC); a Figura 7 é um fluxograma de um método de incorporação para codificar uma sequência de bits de informação; a Figura 8 é um fluxograma de um método de incorporação para codificar uma sequência de bits de informação; a Figura 9 é um fluxograma de um método de incorporação para codificar uma sequência de bits de informação; a Figura 10 é um diagrama de blocos de um sistema de comunicação; a Figura 11 é um fluxograma de um método de incorporação para selecionar bits congelados durante codificação polar; a Figura 12 é um diagrama de blocos de um registro implementado em um codificador/decodificador polar; as Figuras 13A-13D são gráficos de taxas de erros de blocos (BLERs) obtidos por diferentes códigos polares; as Figuras 14A-14B são um gráfico de níveis estimados de ruído obtidos quando usando diferentes códigos polares para codificar fluxos de dados codificados; a Figura 15 é um diagrama de blocos de um dispositivo sem fio de incorporação; a Figura 16 é um diagrama de uma técnica de incorporação para usar operações paralelas de comparação para identificar subcanais que são reservados para bit(s) PC; a Figura 17 é um fluxograma de um método de incorporação para codificar uma sequência de bits de informação; a Figura 18 é um fluxograma de outro método de incorporação para codificar uma sequência de bits de informação; a Figura 19 é um fluxograma de outro método de incorporação para codificar uma sequência de bits de informação; a Figura 20 é um diagrama de outro codificador de modalidade; a Figura 21 é um diagrama de uma sequência ordenada de subcanais; a Figura 22 é um diagrama de uma operação de registro de deslocamento de ciclo de incorporação usada por um decodificador de verificação de paridade; a Figura 23 é um diagrama de uma função de verificação de paridade; a Figura 24 é um fluxograma de um método de incorporação para codificar uma sequência de bits de informação; a Figura 25 é um diagrama de blocos de um sistema de processamento de incorporação; e a Figura 26 é um diagrama de blocos de um transceptor de incorporação.
DESCRIÇÃO DETALHADA DE MODALIDADES ILUSTRATIVAS
[0013] A fabricação e a utilização das modalidades são discutidas abaixo em detalhe. Deverá ser entendido, contudo, que a presente revelação fornece muitos conceitos inventivos aplicáveis que podem ser corporificados em uma ampla variedade de contextos específicos. As modalidades específicas discutidas são meramente ilustrativas de modos específicos para fabricar e utilizar a invenção, e não limitam o âmbito da invenção.
[0014] Bits de paridade podem ser adicionados a uma série de bits de informação durante codificação polar para auxiliar na decodificação e facilitar detecção ou correção de erros no receptor. Os termos “bits de verificação de paridade (PC)”, “bits de paridade” e bits congelados dinâmicos são usados permutavelmente por toda esta revelação. Embora muita desta revelação discuta modalidades inventivas no contexto de bits de paridade, deverá ser entendido que bits de paridade são um tipo específico de bit assistente, e que os princípios revelados neste documento podem ser aplicados usando outros tipos de bits assistentes, tais como outros bits de correção de erros, ou bits de códigos tipo Verificação de Redundância Cíclica (CRC), bits de códigos de verificação, bits de funções de resíduos, códigos criptográficos, códigos de repetição, ou bits ou códigos de detecção de erros. Em algumas modalidades, bits de paridade são referidos como bits congelados de verificação de paridade (PC) (ou “bits PF” abreviado).
[0015] Uma questão que surge quando da inserção de bits de paridade (P) durante codificação polar é como selecionar o(s) subcanal(ais) (entre N subcanais) pelo(s) qual(ais) transmitir os bits de paridade. Uma opção para manusear bits de paridade durante codificação polar é mapear os (K) bits de informação a serem codificados (que podem também incluir outros bits assistentes) para os subcanais mais confiáveis, e então mapear o(s) bit(s) de paridade para o(s) subcanal(ais) mais confiável(eis) seguinte(s) que estão disponíveis após mapeamento dos bits de informação para os subcanais mais confiáveis. Outra opção é mapear o(s) bit(s) de paridade para o(s) subcanal(ais) mais confiável(eis), e em seguida mapear os bits de informação para os subcanais mais confiáveis seguintes que estão disponíveis após mapeamento do(s) bit(s) de informação para os subcanais mais confiáveis.
[0016] Simulações mostraram que aquelas duas opções geralmente fornecem menores níveis de desempenho que técnicas de incorporação que mapeiam os bits de paridade para subcanais com base nos seus pesos de linha. O peso de linha para um subcanal pode ser visto como o número de “uns” na linha correspondente da matriz Kronecker ou como uma potência de 2 com o expoente (isto é, o peso de Hamming) sendo o número de “uns” na representação binária do índice de subcanais (descrito mais adiante). Em uma modalidade, subcanais candidatos que têm determinados valores de peso de linha (por exemplo, um peso mínimo de linha wmin ou o dobro do peso mínimo 2*wmin) são deixados de lado e usados para bit(s) de paridade. Os subcanais candidatos que são reservados para o(s) bit(s) de paridade não são necessariamente os subcanais mais confiáveis, como pode ser entendido com base nas descrições para computar os pesos de linha fornecidos abaixo. Após os subcanais candidatos serem identificados, os K bits de informação são mapeados para os K subcanais remanescentes mais confiáveis, e diversos bits congelados (por exemplo, N-K) são mapeados para os subcanais remanescentes menos confiáveis. Bits de paridade são mapeados para os subcanais candidatos e são determinados valores de bits de paridade com base em uma função dos bits de informação.
[0017] Existem muitos modos para determinar o peso de linha para um subcanal. Em uma modalidade, o peso de linha pode ser computado como uma função do peso de Hamming de um índice de canal associado ao subcanal. O peso de Hamming é o número de elementos não zero em uma sequência binária que representa o índice de canal. Em um exemplo, os subcanais (N) são classificados em uma sequência ordenada (Q) baseada nas suas confiabilidades de canal de modo que a sequência ordenada (Q) lista os subcanais em ordem ascendente (Q0, Q1, ..., QN) baseada nas suas confiabilidades (onde QN é o subcanal mais confiável). Um valor mínimo de peso de linha, representado permutavelmente por toda esta revelação como wmin ou dmin, pode então ser identificado baseado nos pesos de linha de um subconjunto dos canais mais confiáveis tais como, por exemplo, o subconjunto K mais confiável usado para K bits de informação (por exemplo, Q(N-K+1)... QN) ou o subconjunto (K+P) mais confiável usado para K bits de informação e P bits de paridade (por exemplo, Q(N-K-P)... QN). O valor mínimo de peso de linha naquele subconjunto mais confiável pode então ser usado para reservar subcanais para os bits de paridade.
[0018] Em algumas modalidades, se o processo de cálculo dinâmico do parâmetro wmin adiciona latência à operação de codificação, pode ser utilizada uma tabela de pesquisa (LUT) para identificar o parâmetro wmin.
[0019] Em particular, as técnicas baseadas em LUT geram a tabela de pesquisa offline pela possível computação de parâmetros wmin como uma função de potenciais combinações de comprimentos de blocos de informações (K) e comprimentos de código mãe (M) que podem ser usados durante codificação polar. A tabela de pesquisa é então usada para determinar o parâmetro wmin durante codificação polar online. A Tabela 1 fornece um exemplo de uma tabela de pesquisa que pode ser usada para determinar os parâmetros de código, a qual inclui os parâmetros wmin e índices (fi, fz) usados para determinar o número de subcanais candidatos que devem ser reservados para bits de paridade (detalhes mais adiante).
Figure img0001
Figure img0002
Tabela 1
[0020] O tempo necessário para identificar o parâmetro wmin durante codificação polar online é pesadamente influenciado pelo tamanho da tabela de pesquisa, uma vez que maiores tabelas tipicamente necessitam de maiores tempos de pesquisa. Como resultado, os requisitos de latência do codificador podem restringir a granularidade de combinações de codificação que estão disponíveis na tabela de pesquisa, impactando deste modo o desempenho de codificação.
[0021] Outras modalidades desta revelação fornecem técnicas de baixa latência que reservam ou alocam subcanais para bits de paridade com base em um parâmetro de peso mínimo de Hamming (umin), deste modo contornando a computação dos pesos de linha. Como discutido acima, pesos de linha podem ser computados como uma função dos pesos de Hamming. Em um exemplo, com base na equação: rw = 2hw, onde rw é o peso de linha para o determinado subcanal e hw é o peso de Hamming de uma representação binária do índice de canal para o determinado subcanal. Os símbolos “hw” e “u” são usados permutavelmente neste documento para fazer referência a um peso de Hamming. A partir disto, é evidente que o subcanal associado ao menor peso de Hamming terá também o menor peso de linha. Portanto, é possível identificar o peso mínimo de Hamming (umin) com base nos pesos de Hamming associados aos subcanais em um subconjunto de canais mais confiáveis (por exemplo, Q(N-(K+Fp)), ... QN), e então usar o peso mínimo de Hamming para reservar subcanais para bits de paridade.
[0022] Como discutido abaixo, o dobro do valor do peso mínimo de linha (2*wmin) é algumas vezes usado, em conjunto com wmin, para reservar subcanais para bits de paridade. Por exemplo, um primeiro número (por exemplo, f1) de subcanais mais confiáveis com um peso de linha igual a wmin pode ser reservado para bits de paridade, e um segundo número (por exemplo, f2) de subcanais mais confiáveis com um peso de linha igual a 2*wmin pode ser reservado para bits de paridade. A partir da equação rw = 2hw, é evidente que o parâmetro 2*wmin corresponde a um mais o peso mínimo de Hamming. Portanto, modalidades desta revelação podem reservar um primeiro número de subcanais mais confiáveis com um peso de Hamming igual ao peso mínimo de Hamming para bits de paridade, e um segundo número de subcanais mais confiáveis com um peso de Hamming igual a um mais o peso mínimo de Hamming para bits de paridade.
[0023] Uma descrição resumida de codificação polar é fornecida abaixo para auxiliar na compreensão destes e de outros aspectos inventivos da presente revelação que serão descritos subsequentemente em maior detalhe abaixo. A Figura 1 é um diagrama que mostra, por meio de um exemplo ilustrativo, como uma matriz geradora de codificação polar pode ser produzida a partir de um kernel G2 100. Observar que a Figura 1 é um exemplo. Outras formas de kernel são também possíveis. A polarização vem do modo “encaixado” no qual a matriz geradora é criada a partir de um kernel (ou combinação de kernels).
[0024] A matriz de produto Kronecker de 2 dobras G2®2 102 e a matriz de produto Kronecker de 3 dobras G2®3 104 na Figura 1 são exemplos de matrizes geradoras de codificação polar. A técnica de matriz geradora ilustrada na Figura 1 pode ser expandida para produzir uma matriz de produto Kronecker de m dobras G2®m.
[0025] Um código polar pode ser formado a partir de uma matriz de produto Kronecker com base na matriz G2 100. Para um código polar que tem palavras de código de comprimento N = 2m, a matriz geradora é G2®m. A Figura 2 é um diagrama que mostra um uso exemplificativo de uma matriz geradora de codificação polar para produzir palavras de código e uma ilustração esquemática de um codificador polar exemplificativo. Na Figura 2, a matriz geradora G2®3 104 é usada para produzir palavras de código de comprimento 23 = 8. Uma palavra de código x é formada pelo produto de um vetor de entrada u = [0 0 0 u3 0 u5 u6 u7] e a matriz geradora G2®3 104 como indicado em 200. O vetor de entrada u é composto de bits de informação e bits fixos ou congelados. No exemplo específico mostrado na Figura 2, N = 8, de modo que o vetor de entrada u é um vetor de 8 bits, e a palavra de código x é um vetor de 8 bits. O vetor de entrada tem bits congelados nas posições 0, 1, 2 e 4, e tem bits de informação nas posições 3, 5, 6 e 7. Uma implementação exemplificativa de um codificador que gera palavras de código é indicada em 212, onde os bits congelados são todos definidos como 0, e os símbolos circulados “+” representam a adição de módulo 2. Para o exemplo da Figura 2, um vetor de entrada de N = 8 bits é formado a partir de K = 4 bits de informação e N-K = 4 bits congelados. Os códigos desta forma são referidos como códigos polares e o codificador é referido como um codificador polar. Os decodificadores para decodificar códigos polares são referidos como decodificadores polares. Os bits congelados são definidos como zero no exemplo mostrado na Figura 2. Contudo, bits congelados poderiam ser definidos como outros valores de bits fixos que são conhecidos para um codificador e um decodificador. Para facilidade de descrição, todos os bits congelados zeros são considerados neste documento, e podem ser geralmente preferidos.
[0026] A Figura 3 é um diagrama que mostra uma porção de uma árvore de lista de decisão exemplificativa cuja largura é limitada por um determinado tamanho máximo de lista e usada em um decodificador polar SCL. Na Figura 3, o tamanho da lista L é 4. São ilustrados cinco níveis 302, 304, 306, 308, 310 da árvore de decisão. Embora sejam ilustrados cinco níveis, deverá ser entendido que uma árvore de decisão para decodificar N bits deverá ter N+1 níveis. Em cada nível após o nível de raiz 302, cada um dos até 4 caminhos de decodificação sobreviventes é estendido por um bit. Os nós folha ou filho do nó raiz 320 representam possíveis escolhas para um primeiro bit, e subsequentes nós folha representam possíveis escolhas para bits subsequentes. Os caminhos de decodificação desde o nó raiz 320 até o nó folha 330a, por exemplo, representam uma sequência estimada de bits de palavras de código: 0, 1, 0, 0. No nível 308, o número de possíveis caminhos é maior que L, de modo que L caminhos com a maior probabilidade (melhores métricas de caminho ou PMs) são identificados, e os caminhos remanescentes são descartados. Os caminhos de decodificação que sobrevivem após a classificação e supressão de caminhos no nível 306 são mostrados em negrito na Figura 3. Similarmente, no nível 310, o número de possíveis caminhos é novamente maior que L, de modo que L caminhos com a maior probabilidade (melhores PMs) são identificados, e os caminhos remanescentes são novamente descartados. No exemplo mostrado, os caminhos que terminam nos nós folha 330a, 330b, 330c e 330d representam os caminhos com maior probabilidade. Os caminhos que terminam nos nós folha 340a, 340b, 340c e 340d são os caminhos de menor probabilidade que são descartados.
[0027] A decodificação SCL pode ainda ser dividida em decodificação de lista auxiliada por CRC e decodificação pura de lista. Na última, caminhos sobreviventes com a maior probabilidade são selecionados. A decodificação SC é um caso especial de decodificação pura de lista, com tamanho de lista L = 1. Uma verificação CRC pode fornecer melhor desempenho de correção de erros na seleção de caminho final, mas é opcional na decodificação SCL. Outras operações tais como uma verificação de paridade baseada em bits de paridade ou “PC” que estão incluídas em um vetor de entrada, poderiam ser usadas ao invés de e/ou em conjunto com CRC na seleção de caminho final durante decodificação.
[0028] A decodificação SCL pode melhorar o desempenho de um código polar para um tamanho de código limitado. Contudo, comparado com o tamanho de código similar e as taxas de código de códigos de Verificação de Paridade de Baixa Densidade (LDPC) e códigos Turbo, a decodificação SCL pode ter uma pior Taxa de Erros de Blocos (BLER) que códigos LDPC e Turbo bem projetados. A decodificação SCL auxiliada por CRC (CA-SCL) pode melhorar o desempenho de BLER de um código polar com um comprimento de código limitado. Por exemplo, um decodificador CA-SCL com um tamanho de lista L = 32 poderia fornecer muito melhor desempenho que códigos LDPC e TURBO com complexidade computacional similar.
[0029] Com decodificadores tipo SC, um código polar na verdade divide um canal em N subcanais. N é referido como um comprimento de código mãe e é sempre uma potência de 2 em um código polar Arikan, o qual é baseado em um kernel polar que é uma matriz 2x2. Uma chave para construção de código para um código polar é determinar que canais de bits, também referidos neste documento como subcanais, são selecionados ou alocados para bits de informação e que subcanais são alocados para bits congelados. Em algumas modalidades, um ou mais subcanais são também alocados a bits PC, CRC e/ou outros tipos que são usados para auxiliar na decodificação, referidos neste documento como bits assistentes. Em termos de teoria de polarização, os subcanais que são alocados para bits congelados são chamados subcanais congelados, os subcanais que são alocados para bits de informação são chamados subcanais de informação, e subcanais assistentes adicionais podem ser alocados a bits assistentes que são usados para auxiliar na decodificação. Em algumas modalidades, bits assistentes são considerados ser uma forma de bits de informação, para os quais são selecionados ou alocados subcanais mais confiáveis.
[0030] Codificadores polares baseados em produtos Kronecker de um kernel Arikan 2x2 G2 são descritos acima. A Figura 4 é um diagrama de blocos que ilustra um exemplo de um codificador polar baseado em um kernel 2x2. Subcanais e bits codificados são rotulados na Figura 4, e um canal é dividido em N subcanais por um código polar como mencionado acima. Um bloco de informações e bits congelados são alocados nos N subcanais, e o vetor resultante de dimensão N é multiplicado por uma matriz Kronecker NxN pelo codificador polar para gerar uma palavra de códigos que inclua N bits codificados. Um bloco de informações inclui ao menos bits de informação e poderia também incluir bits assistentes tais como bits CRC ou de paridade. Um seletor de subcanais poderia ser acoplado ao codificador polar para selecionar ao menos subcanais para bits de informação e quaisquer bits assistentes, com quaisquer subcanais remanescentes sendo subcanais congelados.
[0031] Para códigos polares que são baseados em um kernel 2x2 e em uma matriz Kronecker NxN, N é uma potência de 2. Este tipo de códigos de kernel e polar baseados em tal kernel são discutidos neste documento como exemplos ilustrativos. Outras formas de kernels de polarização tais como kernels de números primos (por exemplo, 3x3 ou 5x5) ou combinações de kernels (números primos e não primos) para produzir kernels de maior ordem poderiam produzir polarização entre subcanais de código. Deveria também ser observado que processamento de bits codificados tal como perfuração, encurtamento, preenchimento zero e/ou repetição poderia ser usado em conjunto com códigos polares que são baseados em kernels 2x2 ou outros tipos de kernels, para correspondência de taxas ou outras finalidades, por exemplo.
[0032] Como resultado de decodificação SC, SCL ou CA-SCL, o fenômeno de polarização aparece sobre os subcanais. Alguns subcanais têm alta capacidade e alguns subcanais têm baixa capacidade. Colocado de outro modo, alguns subcanais têm equivalentemente alta Razão de Sinal para Ruído (SNR) e outros têm baixa SNR. Estas métricas são exemplos de características que poderiam ser usadas para quantificar ou classificar a “confiabilidade” de subcanais. Poderiam ser usadas outras métricas indicativas de confiabilidade de subcanais.
[0033] A construção de código envolve a determinação de uma taxa de código (o número de bits de informação K, ou quantos subcanais existem para transportar bits de informação) e seleção de K subcanais específicos entre os N subcanais disponíveis que existem para transportar bits de informação. Para facilidade de referência neste documento, os bits de informação podem incluir bits de entrada que devem ser codificados, e possivelmente bits CRC, bits de paridade e/ou outros bits assistentes que são usados para auxiliar na decodificação. A seleção de subcanais é baseada nas confiabilidades dos subcanais, e tipicamente os subcanais de maior confiabilidade são selecionados como subcanais de informação para transportar bits de informação.
[0034] As confiabilidades de subcanais poderiam ser especificadas, por exemplo, em uma ou mais sequências ordenadas. Uma única sequência ordenada encaixada independente de SNR de subcanais poderia ser computada para um comprimento de código Nmax, com sequências ordenadas para menores comprimentos de código N sendo selecionadas a partir da maior sequência Nmax. Múltiplas sequências ordenadas em termos de diferentes comprimentos de código mãe Ni poderiam ser computadas, e uma das sequências de comprimento de código mãe poderia ser selecionada para um código específico baseado no comprimento preferido de código. Outra possível opção envolve computar múltiplas sequências ordenadas em termos de valores de SNR, por exemplo, e selecionar uma sequência ordenada baseada em SNR medida.
[0035] Existem também diversos métodos para computar confiabilidades de subcanais. Por exemplo, de acordo com um método auxiliado por gênio proposto em R. Pedarsani, “Códigos Polares: Construção e Análise de Desempenho (Polar Codes: Construction and Performance Analysis)”, junho de 2011, projeto mestre EPFL, um codificador codifica uma sequência de treinamento que é conhecida para o codificador em diferentes subcanais. O codificador realimenta os resultados de decodificação para o codificador de modo que o codificador possa computar estatísticas de confiabilidade para cada subcanal, e é obtido um vetor de confiabilidade bem adaptado sobre os subcanais.
[0036] Um método de aproximação Gaussiana (GA) proposto em publicação de literatura não patenteada intitulado “Avaliação e Otimização de Aproximação Gaussiana para Códigos Polares (Evaluation and Optimization of Gaussian Approximation for Polar Codes)”, maio de 2016, considera que todos os bits codificados estão sujeitos a uma igual probabilidade de erro. A partir da probabilidade de erro, as confiabilidades sobre os subcanais são obtidas com um algoritmo de evolução de densidade (DE). Uma vez que esta probabilidade de erro nos bits codificados está relacionada com a SNR recebida, este método está relacionado com SNR e é computacionalmente complexo.
[0037] Existem diversos modos para gerar uma sequência ordenada a partir de um kernel e sua matriz geradora. Nem todos os modos podem necessariamente levar a uma sequência encaixada, e esta sequência encaixada pode não necessariamente ser única. Sequências ordenadas encaixadas poderiam ser geradas, por exemplo, baseadas em um peso de polarização como revelado no Pedido de Patente Chinês No. CN 201610619696.5, depositado em 29 de julho de 2016, ou baseadas em um peso de Hamming como revelado no Pedido de Patente US No. 62/438.565, depositado em 23 de dezembro de 2016. Outras técnicas poderiam também ou ao invés ser usadas.
[0038] Um exemplo de como o peso de Hamming pode ser usado como a segunda métrica para selecionar subcanais assistentes é discutido em maior detalhe no Pedido de Patente Provisório US No. 62/433.127 depositado em 12 de dezembro de 2016. Observar que o peso de Hamming é apenas um exemplo de uma métrica que poderia ser usada como uma segunda métrica. Outros exemplos incluem uma função do peso de Hamming (por exemplo, pesos de linha como discutido no Pedido de Patente Provisório US No. 62/432.448 depositado em 09 de dezembro de 2016). Geralmente, qualquer outra métrica também indicativa da confiabilidade (polarização) pode ser usada como a segunda métrica. Em uma alternativa adicional, a segunda métrica é diferente da primeira métrica, mas também se relaciona com a ou é indicativa da confiabilidade de polarização. Contudo, em ainda outra alternativa, a ordem natural dos subcanais pode ser usada como a segunda métrica de modo que, por exemplo, subcanais no final dos subcanais de informações (por exemplo, em uma ordem ascendente de números naturais) sejam selecionados como os subcanais assistentes.
[0039] Em algumas modalidades, mais de duas métricas poderiam ser usadas para selecionar subcanais assistentes. Além disso, qualquer um, de diversos algoritmos de seleção de subcanais assistentes que usam as métricas descritas acima, poderia ser usado. Existem outras possibilidades para selecionar subcanais assistentes.
[0040] Como mencionado acima, com a finalidade de facilitar correção ou detecção de erros no receptor e auxiliar na decodificação, bits assistentes tais como bits CRC ou de paridade podem ser incluídos no fluxo de bits de entrada. Uma questão que surge quando se inserem bits assistentes durante codificação polar é como selecionar o(s) subcanal(ais) pelo(s) qual(ais) transmitir os bits assistentes. Em particular, codificadores polares geralmente mapeiam, ou de outro modo transmitem, bits de informação para, ou sobre, os subcanais mais confiáveis, enquanto mapeando, ou de outro modo transmitindo, bits congelados para, ou sobre, subcanais menos confiáveis. Quando bits assistentes são introduzidos também no fluxo de bits codificados, a questão que se coloca é se os canais mais confiáveis devem ser usados para os bits de paridade ou para os bits de informação.
[0041] Uma opção para manusear bits de paridade durante codificação polar é mapear os bits de informação para os subcanais mais confiáveis (por exemplo, com base em uma sequência ordenada), e em seguida mapear o(s) bit(s) de paridade para o(s) subcanal(ais) mais confiável(eis) seguinte(s) que está(ão) disponível(eis) após mapeamento dos bits de informação para os subcanais mais confiáveis. Deste modo, bits de informação são transmitidos por canais mais confiáveis que bits de paridade. Outra opção é mapear o(s) bit(s) de paridade para o(s) subcanal(ais) mais confiável(eis), e em seguida mapear os bits de informação para os subcanais mais confiáveis seguintes que estão disponíveis após mapeamento do(s) bit(s) de paridade para os subcanais mais confiáveis. Deste modo, bits de paridade são transmitidos por canais mais confiáveis que bits de informação.
[0042] Simulações mostraram que maiores níveis de desempenho de codificação podem efetivamente ser obtidos por uma técnica híbrida na qual os bits de paridade e os bits de informação são intercalados pelos canais mais confiáveis. Embora a seleção de subcanais para bits de informação pudesse ser baseada na confiabilidade de polarização de subcanais (por exemplo, como indicado por uma sequência ordenada), a seleção dos subcanais para bits de paridade poderia ser baseada em mais de uma métrica de confiabilidade de polarização, por exemplo, para permitir que as posições destes subcanais de paridade sejam distribuídas mais aleatoriamente ou mais eficientemente entre os subcanais de informação.
[0043] Em algumas modalidades, são usadas duas diferentes métricas para seleção de subcanais de paridade ou PC. Por exemplo, uma primeira métrica pode ser uma métrica de confiabilidade de polarização (por exemplo, uma sequência ordenada) e uma segunda métrica pode ser um peso tal como um peso de Hamming dos subcanais (ou uma função do peso de Hamming tal como um peso de linha). Em uma modalidade, todos os subcanais necessários para transportar o número desejado de bits de paridade são selecionados baseados em mais de uma métrica, por exemplo, uma métrica de confiabilidade de polarização e um peso de Hamming/linha; enquanto em outras modalidades, um subconjunto dos subcanais para bits de paridade é selecionado baseado em mais de uma métrica, por exemplo, uma métrica de confiabilidade de polarização e um peso de Hamming/linha, e o subconjunto remanescente é selecionado baseado em uma única métrica, por exemplo, uma métrica de confiabilidade de polarização.
[0044] Um peso de Hamming poderia ser parcialmente preferido porque é usado pelo código Reed-Muller (RM) e parcialmente devido à sua simplicidade. O código RM pode ser considerado como um exemplo especial de códigos polares, pelo fato de que é baseado em peso de Hamming ao invés de confiabilidade de polarização, e utiliza um algoritmo de decodificação de Máxima Probabilidade (ML) (o código RM baseado em peso de Hamming aproxima-se do limite de desempenho de ML se o comprimento de código for pequeno) mas pode ser decodificado com decodificação SC ou SCL.
[0045] O peso de Hamming de um subcanal é definido neste documento para ser o peso de Hamming de uma linha de uma matriz geradora. Em um código polar, o peso de Hamming de um subcanal está relacionado com o peso de linha deste subcanal na sua matriz geradora (peso de linha = 2A(peso de Hamming). Em algumas modalidades, o peso de linha indica o número de bits codificados sobre os quais a informação de um subcanal é distribuída. Falando de modo geral, quantos mais bits codificados uma entrada de bits de informação para um subcanal forem distribuídos, mais robusto aquele subcanal é e, portanto, a maior confiabilidade.
[0046] Um exemplo de como o peso de Hamming ou uma função do peso de Hamming tal como o peso de linha pode ser usado como a segunda métrica para selecionar subcanais para bits de paridade é discutido em maior detalhe descrito no Pedido de Patente Provisório US 62/433.127 depositado em 12 de dezembro de 2016 e intitulado “Método para Construir um Código Polar Baseado em Verificação de Paridade (PC) Usando uma Tabela de Pesquisa (Method for constructing a Parity Check (PC) Based Polar Code Using a Look-up-Table)”. Observar que estes são apenas exemplos de uma métrica que poderia ser usada como uma segunda métrica. Geralmente, qualquer outra métrica também indicativa da confiabilidade (polarização) pode ser usada como a segunda métrica. Em uma alternativa adicional, a segunda métrica é diferente da primeira métrica, mas também se relaciona com a ou é indicativa da confiabilidade de polarização. Contudo, em ainda outra alternativa, a ordem natural dos subcanais pode ser usada como a segunda métrica de modo que, por exemplo, subcanais no final dos subcanais de informações sejam selecionados como os subcanais assistentes. Em algumas modalidades, mais de duas métricas poderiam ser usadas para selecionar subcanais assistentes. Além disso, qualquer um, de diversos algoritmos de seleção de subcanais assistentes que usam as métricas descritas acima, poderia ser usado. Existem outras possibilidades para selecionar subcanais assistentes.
[0047] As técnicas de incorporação descritas no Pedido de Patente Provisório US 62/433.127 reservam e/ou selecionam subcanais candidatos para bit(s) de paridade antes de mapeamento dos bits de informação para subcanais. Após os subcanais candidatos serem reservados, os bits de informação são mapeados para os subcanais remanescentes mais confiáveis, e diversos bits congelados são mapeados para os subcanais remanescentes menos confiáveis. Em seguida, os valores de bits de paridade para os subcanais reservados são determinados baseados em uma função dos bits de informação. Particularmente, os subcanais candidatos que são reservados para o(s) bit(s) de paridade não são necessariamente os subcanais mais confiáveis, mas geralmente incluem ao menos alguns subcanais que são tão confiáveis, ou mais confiáveis, que ao menos um dos subcanais pelos quais bits de informação são transmitidos. Deste modo, bits de informação e bits de paridade são intercalados pelos canais mais confiáveis em um modo que melhora a probabilidade de decodificação.
[0048] Como mencionado acima, alguns subcanais podem ser reservados ou deixados de lado para bits PC durante codificação polar. As Figuras 5A-5G ilustram um exemplo de como aquele processo de codificação pode ocorrer quando uma sequência de quatro bits de informação é codificada em um comprimento de código mãe de 16. A Figura 5A representa uma tabela que lista subcanais u0, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15 correspondentes a um comprimento de código mãe de 16. A segunda linha da tabela lista uma confiabilidade de polarização de canal para cada subcanal. Os subcanais podem então ser classificados com base na confiabilidade de canal. A Figura 5B representa uma tabela que lista uma sequência ordenada (Q) dos subcanais u0, u1, u2, u4, u8, u3, u5, u6, u9, u10, u12, u7, u11, u13, u14, u15. Um peso de linha para cada canal pode então ser computado como uma função do índice de canal. Em um exemplo, o peso de canal é calculado baseado na seguinte equação: rw = 2hw, onde rw é o peso de linha para o determinado subcanal, e hw é o peso de Hamming de uma representação binária do índice de canal. A Figura 5C representa uma tabela que lista a representação binária, peso de Hamming e peso de linha de cada subcanal na sequência ordenada de subcanais.
[0049] Em seguida, um subconjunto de subcanais é identificado para determinar um conjunto de parâmetros wmin, 2*wmin, f1 e f2, que serão usados para reservar subcanais para bits PC. O subconjunto de subcanais para transportar os bits de informação e de paridade é igual a K+Fp, onde K é o comprimento de bloco de informações (por exemplo, número de bits de informação para codificar), e Fp é um parâmetro correspondente ao número de bits de paridade para transmitir pelo canal. Em uma modalidade, Fp é calculado de acordo com a seguinte função: Fp = log2 N x (α-|α x (K/M — 1/2) |2), onde N é o comprimento de código mãe, M é o número de bits (codificados) na palavra de código a serem transmitidos (por exemplo, após perfuração), K/M é a taxa de código obtida e α é um fator de ponderação que é usado para variar a razão de bits de paridade para bits de informação. Contudo, pode ser usada uma função diferente para Fp, por exemplo, Fp = log2 ((M-K)/32) que parece funcionar bem para um número relativamente pequeno de bits de paridade. Alternativamente, a função poderia ser diferente, por exemplo, se um tipo diferente de bits assistentes (diferentes dos bits de paridade) e/ou um tipo diferente de função de verificação (diferente de uma função PC) for usado. Geralmente, o número de bits PC Fp pode geralmente ser qualquer função de K, N (e M se M < N e for usado encurtamento ou perfuração). Em ainda outra modalidade, Fp poderia ser um valor fixo independente de K, N (e/ou M), por exemplo 3. Em ainda outra modalidade,Fp poderia representar um conjunto ou subconjunto desejado (por exemplo, 1) do número total de bits de paridade (por exemplo, 3) que deve ser mapeado para subcanais candidatos (com um peso mínimo de linha wmin) enquanto os bits de paridade remanescentes (por exemplo, 2) são mapeados para outros subcanais de acordo com uma diferente métrica (por exemplo, os subcanais menos confiáveis dentro dos K (ou K+Fp) subcanais mais confiáveis. Existem outras possibilidades para Fp.
[0050] Em modalidades que usam bits PC e a função acima para Fp, o parâmetro α é definido para um valor entre 1 e 2. Em outras modalidades, o parâmetro α é definido para um valor entre 1 e 1,5. Um maior valor de α geralmente produzirá uma maior distância mínima de código. Neste exemplo, Fp é igual a 2. Deste modo, o subconjunto de subcanais para transportar os bits de informação e bits de paridade inclui os 6 subcanais mais confiáveis (isto é, K+Fp = 4+2 = 6), que são os subcanais u12, u7, u11, u13, u14 e u15. Em seguida, um ou mais valores de peso de linha são determinados. Como pode ser observado, o peso mínimo de linha wmin no subconjunto K+Fp é 4. Neste exemplo, os valores de peso de linha que incluem um peso mínimo de linha (wmin) e o dobro do peso mínimo de linha (2*wmin) no subconjunto de subcanais u12, u7, u11, u13, u14 e u15 são determinados, e são 4 e 8, respectivamente. Um primeiro índice (f1) e um segundo índice (f2) são também determinados. O primeiro índice (f1) determina quantos subcanais que têm um peso de linha igual a wmin devem ser reservados para bits PC, e o segundo índice (f2) determina quantos subcanais que têm um peso de linha igual a 2*wmin devem ser reservados para bits PC. Neste exemplo, f1 e f2 são iguais a 1 e 1, respectivamente.
[0051] Em seguida, os subcanais são reservados para bits PC baseados nos parâmetros wmin, 2*wmin, f1 e f2. Neste exemplo, o subcanal mais confiável que tem um peso de linha wmin (isto é, igual a 4) e o subcanal mais confiável que tem um peso de linha igual a 2*wmin (isto é, igual a 8) são selecionados, o que inclui os subcanais u12 e u14. A Figura 5D representa uma tabela que mostra os subcanais reservados para bits PC. Em seguida, os bits de informação são mapeados para os remanescentes canais mais confiáveis. A Figura 5E representa uma tabela que mostra como os subcanais u15, u13, u11 e u7 são mapeados para os quatro bits de informação. Neste exemplo, K = 4 e N = 16. Em outros exemplos, diferentes números de bits de informação podem ser mapeados para subcanais. Em seguida, os subcanais remanescentes são mapeados para bits congelados. A Figura 5F representa uma tabela que mostra como os subcanais u10, u9, u6, u5, u3, u8, u4, u2, u1 e u0 são mapeados para bits congelados.
[0052] Em algumas modalidades, o codificador seleciona alguns subcanais no conjunto de bits congelados para transportar bits PC após o conjunto de bits congelados ser mapeado. A Figura 5G representa uma tabela que mostra como subcanais congelados podem ser selecionados para transportar bits PC. Como mostrado, subcanais no conjunto congelado com um peso de linha igual a wmin ou 2*wmin são selecionados para transportar bits PC. Neste exemplo, os subcanais u10, u9, u6, u5 e u3 são mapeados como bits PC adicionais. Em algumas outras modalidades, todos os subcanais congelados poderiam ser selecionados como bits PC adicionais.
[0053] Ao invés de reservar ou selecionar Fp subcanais para Fp bits PC baseados em wmin, 2*wmin, f1 e f2, o codificador pode reservar subcanais usando um diferente conjunto ou um subconjunto daqueles parâmetros. Em uma modalidade, Fp subcanais são reservados dentro do subconjunto mais confiável (K+Fp) dos N subcanais ou M < N subcanais (se for usada perfuração ou encurtamento) com base (apenas) em wmin, por exemplo, são reservados Fp subcanais com um peso de linha igual a um valor wmin (detalhes adicionais abaixo). Em algumas implementações, se existirem mais subcanais no subconjunto (K+Fp) com um peso de linha igual a wmin, os Fp subcanais mais confiáveis são reservados. Em algumas implementações, a mesma seleção aplica-se ao caso quando existem mais de f2 subcanais com um peso de linha igual a 2*wmin dentro dos K+Fp subcanais mais confiáveis. Em outras implementações, os Fp subcanais menos confiáveis no subconjunto (K+Fp) com um peso de linha igual a wmin (ou 2*wmin) são reservados. Em ainda outras implementações, o número de bits PC pode ser aumentado de modo que todos os subcanais com um peso de linha igual a wmin sejam reservados para os bits PC. Em ainda outras implementações, Fp representa um conjunto ou subconjunto (por exemplo, 1) do número total de subcanais para bits PC (por exemplo, 3) a ser reservado com base em wmin ou 2*wmin, e um subconjunto remanescente (por exemplo, 2) do número total de subcanais para bits PC é reservado baseado em outra métrica, por exemplo, os subcanais menos confiáveis dentro dos K (ou K+Fp) subcanais mais confiáveis. São possíveis outras implementações.
[0054] Em algumas modalidades, além de reservar Fp subcanais no subconjunto (K+Fp), o codificador pode selecionar alguns subcanais no conjunto de bits congelados (N-K-Fp) para transportar bits PC adicionais. Em outras modalidades, todos os subcanais no conjunto de bits congelados são selecionados para transportar bits PC além dos Fp subcanais no subconjunto (K+Fp) com um peso de linha igual a wmin.
[0055] Em algumas modalidades, quando bits PC são mapeados baseados em pesos de linha associados aos subcanais, os cálculos de pesos de linha podem introduzir latência no processo de codificação. Outras modalidades desta revelação mitigam a latência ao reservar subcanais baseados nos seus pesos de Hamming, evitando deste modo a etapa adicional de calcular pesos de linha. As Figuras 6A-6G ilustram um exemplo de como pesos de Hamming podem ser usados para reservar subcanais para bits PC durante um processo de codificação polar. Neste exemplo, uma sequência de quatro bits de informação é codificada em um comprimento de código mãe de 16. A Figura 6A representa uma tabela que lista subcanais u0, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15 correspondentes a um comprimento de código mãe de 16. A segunda linha da tabela lista uma confiabilidade de polarização de canal para cada subcanal. Os subcanais podem então ser classificados com base na confiabilidade de canal. A Figura 6B representa uma tabela que lista uma sequência ordenada (Q) dos subcanais u0, u1, u2, u4, u8, u3, u5, u6, u9, u10, u12, u7, u11, u13, u14, u15. Um peso de Hamming de cada índice de canal pode ser determinado para cada subcanal. A Figura 6C representa uma tabela que lista o peso de Hamming de cada subcanal na sequência ordenada de subcanais.
[0056] Em seguida, um subconjunto de subcanais é identificado para determinar o peso mínimo de Hamming (umin) assim como os parâmetros f1 e f2, que serão usados para reservar subcanais para bits PC. O subconjunto de subcanais para transportar os bits de informação e de paridade é igual a K+Fp, onde K é o comprimento de bloco de informações, e Fp é um parâmetro calculado de acordo com a seguinte função: Fp = log2 N x (α- |α x (K/M - 1/2) |2), onde N é o comprimento de código mãe, M é o número de bits codificados na palavra de código a serem transmitidos (por exemplo, após perfuração), K/M é a taxa de código obtida e α é um fator de ponderação que é usado para variar a razão de bits de paridade para bits de informação. Contudo, dependendo da implementação, pode ser usada uma função diferente para Fp, por exemplo, Fp = log2 ((M-K)/32) que parece funcionar bem para um número relativamente pequeno de bits PC. Alternativamente, pode ser usada uma diferente função, por exemplo, se um tipo diferente de bits assistentes (diferentes dos bits PC) e/ou um tipo diferente de função de verificação (diferente de uma função PC) for usado. Geralmente, o número de bits PC Fp pode geralmente ser qualquer função de K, N, mas também M (se M < N e for usado encurtamento ou perfuração). Em outra modalidade, Fp poderia ser um valor fixo independente de K, N (e/ou M), por exemplo, 3 ou poderia representar um conjunto ou subconjunto desejado (por exemplo, 1) do número total de bits de paridade (por exemplo, 3) que deve ser mapeado para subcanais candidatos com um peso mínimo de linha wmin enquanto os bits de paridade remanescentes (por exemplo, 2) são mapeados para outros subcanais de acordo com uma diferente métrica (por exemplo, os subcanais menos confiáveis dentro dos K (ou K+Fp) subcanais. No exemplo das Figuras 6A-6G, Fp é igual a 2, e o subconjunto de subcanais mais confiáveis inclui os 6 subcanais mais confiáveis (isto é, K+Fp = 4+2 = 6), que são os subcanais u12, u7, u11, u13, u14 e u15. Em seguida, é determinado o peso mínimo de Hamming para o subconjunto de subcanais. Neste exemplo, o peso mínimo de Hamming é 2 com base no peso de Hamming do subcanal u12. Um primeiro índice (f1) e um segundo índice (f2) são também determinados. O primeiro índice (f1) determina quantos subcanais que têm um peso de Hamming igual a umin devem ser reservados para bits PC, e o segundo índice (f2) determina quantos subcanais que têm um peso de Hamming igual a 1+umin devem ser reservados para bits PC. Neste exemplo, f1 e f2 são iguais a 1 e 1, respectivamente.
[0057] Em seguida, os subcanais são reservados para bits PC baseados nos parâmetros umin, 1+umin, f1 e f2. Neste exemplo, o subcanal mais confiável que tem um peso de Hamming umin (isto é, igual a 2) e o subcanal mais confiável que tem um peso de Hamming igual a 1+umin (isto é, igual a 3) são selecionados, o que inclui os subcanais u12 e u14. A Figura 6D representa uma tabela que mostra os subcanais reservados para bits PC. Em seguida, os bits de informação são mapeados para os remanescentes canais mais confiáveis. A Figura 6E representa uma tabela que mostra como os subcanais u15, u13, u11 e u7 são mapeados para os quatro bits de informação. Em seguida, os subcanais remanescentes são mapeados para bits congelados. A Figura 6F representa uma tabela que mostra como os subcanais u10, u9, u6, u5, u3, u8, u4, u2, u1 e u0 são mapeados para bits congelados.
[0058] Em algumas modalidades, o codificador seleciona subcanais adicionais a partir do conjunto de bits congelados para transportar bits PC. A Figura 6G representa uma tabela que mostra como subcanais no conjunto congelado que têm um peso de Hamming igual a umin ou 1+umin são selecionados para transportar bits PC. Neste exemplo, os subcanais u10, u9, u6, u5 e u3 são reservados para transportar bits PC adicionais. Em algumas outras modalidades, todos os subcanais congelados poderiam ser selecionados como bits PC adicionais.
[0059] Ao invés de reservar ou selecionar Fp subcanais para Fp bits PC baseados em umin, f1 e f2, o codificador pode reservar subcanais usando um diferente conjunto ou um subconjunto daqueles parâmetros. Em uma modalidade, Fp subcanais são reservados dentro do subconjunto mais confiável (K+Fp) dos N (ou M < N se for usada perfuração ou encurtamento) subcanais com base (apenas) em umin, por exemplo, são reservados Fp subcanais com um peso de Hamming igual a um valor umin (detalhes adicionais abaixo). Em algumas implementações, se existirem mais subcanais no subconjunto (K+Fp) com um peso de Hamming igual a umin, os Fp subcanais mais confiáveis são reservados. Em algumas implementações, a mesma seleção aplica-se ao caso quando existem mais de f2 subcanais com um peso de linha igual a 2*wmin dentro dos K+Fp subcanais mais confiáveis. Em outras implementações, os Fp subcanais menos confiáveis no subconjunto (K+Fp) são reservados. Em ainda outras implementações, o número de bits PC pode ser aumentado de modo que todos os subcanais com um peso de Hamming igual a umin sejam reservados para os bits PC. Em ainda outras implementações, Fp representa um subconjunto (por exemplo, 1) do número total de subcanais para bits PC (por exemplo, 3) a ser reservado com base em wmin ou 2*wmin, e um subconjunto remanescente (por exemplo, 2) é reservado baseado em outra métrica, por exemplo, os subcanais menos confiáveis dentro dos K (ou K+Fp) subcanais mais confiáveis. São possíveis outras implementações.
[0060] Em algumas modalidades, além de reservar Fp subcanais no subconjunto (K+Fp), o codificador pode selecionar alguns subcanais no conjunto de bits congelados (N-K-Fp) para transportar bits PC adicionais. Em outras modalidades, todos os subcanais no conjunto de bits congelados são selecionados para transportar bits PC além dos Fp subcanais no subconjunto (K+Fp) com um peso de linha igual a wmin.
[0061] Modalidades desta revelação fornecem técnicas que selecionam, reservam ou alocam um ou mais subcanais para bits de paridade com base em um parâmetro de peso. A Figura 7 é um fluxograma de um método 700 para codificar dados usando um código polar, como pode ser executado por um dispositivo sem fio. Na etapa 710, o dispositivo sem fio (pré)seleciona a partir de um segmento de subcanais que pode ser ordenado com base em uma métrica de confiabilidade, ao menos um subcanal para transportar ao menos um bit de paridade (por exemplo, um subcanal candidato) baseado em um parâmetro de peso. O parâmetro de peso pode ser um parâmetro de peso mínimo de linha (por exemplo, wmin, dmin). Em um exemplo, os subcanais ordenados incluem um segmento de K subcanais e um segmento de N0-K subcanais, e o dispositivo sem fio seleciona, a partir do segmento de K subcanais, o ao menos um subcanal candidato com um peso mínimo (dmin). Em tal exemplo, cada um dos K subcanais tem uma maior métrica de confiabilidade que todos os N0-K subcanais. Neste exemplo, K refere-se ao número de bits de informação para codificar ou um comprimento de bloco de informações que pode ou não incluir outros bits assistentes (por exemplo, bits CRC) e N0 refere-se a um comprimento de código mãe. Em outro exemplo, se um número n de subcanais com um peso mínimo no segmento K for maior que um valor predeterminado F, o dispositivo sem fio seleciona F subcanais do segmento de K subcanais com um peso mínimo em uma ordem descendente da métrica de confiabilidade (por exemplo, de uma alta confiabilidade para uma baixa confiabilidade). Em outro exemplo, o dispositivo sem fio seleciona um primeiro número de subcanais com base no peso mínimo (dmin) e/ou um segundo número de subcanais com base no dobro do peso mínimo (2*dmin). Em ainda outro exemplo, o dispositivo sem fio seleciona ao menos um subcanal, por exemplo, baseado em uma função de um comprimento de código associado a um código polar e um comprimento de bloco de informações de dados que devem ser codificados. Em ainda outro exemplo, o dispositivo sem fio seleciona todos os subcanais normalmente alocados para bits congelados como subcanais para transportar o ao menos um bit de paridade.
[0062] Em ainda outro exemplo, o dispositivo sem fio seleciona ao menos um subcanal com um menor peso de linha em um subconjunto de K subcanais mais confiáveis de uma sequência ordenada de (N) subcanais. Neste exemplo, um peso de linha de um subcanal é um número de uns em uma linha de uma matriz Kronecker (de dimensão N) correspondente aos subcanais. Em ainda outro exemplo, se um número n de subcanais com o menor peso de linha entre os K subcanais mais confiáveis for maior que um número predeterminado Fp, o dispositivo sem fio pode selecionar Fp subcanais entre os n subcanais (por exemplo, com o menor peso de linha) no subconjunto de K subcanais mais confiáveis. Em ainda outro exemplo, o ao menos um subcanal com um menor peso de linha é selecionado a partir do subconjunto de K subcanais mais confiáveis de acordo com uma ordem de confiabilidade decrescente. Em outras palavras, o ao menos um subcanal(ais) selecionado(s) é/são os subcanais mais confiáveis no K subconjunto com um menor peso de linha.
[0063] Na etapa 720, o dispositivo sem fio aplica uma função de verificação de paridade para determinar um valor para cada um do ao menos um bit de paridade. A função de verificação de paridade pode ser executada sobre os subcanais selecionados para o ao menos um bit de paridade. A função de verificação de paridade pode ser uma função de verificação de paridade de números primos. Na etapa 730, o dispositivo sem fio codifica por polarização bits de informação e o ao menos um bit de paridade colocado nos subcanais selecionados para obter dados codificados. Em um exemplo, o ao menos um bit de paridade é colocado em um primeiro número de subcanais com um peso mínimo e/ou em um segundo número de subcanais com o dobro do peso mínimo. Embora não mostrado, o dispositivo sem fio pode também selecionar subcanais para os bits de informação na sequência ordenada de subcanais, pular o ao menos um subcanal selecionado para o ao menos um bit de paridade, até um número dos subcanais selecionados para os bits de informação alcançar K (isto é, o número total de bits de informação para codificar). Na etapa 740, o dispositivo sem fio transmite os dados codificados a outro dispositivo sem fio.
[0064] A Figura 8 é um fluxograma de um método de incorporação 800 para codificar dados usando um código polar, como pode ser executado por um dispositivo sem fio. Na etapa 810, o dispositivo sem fio reserva ou de outro modo aloca um ou mais subcanais (candidatos) para um ou mais bits de paridade com base em pesos de linha para subcanais em um subconjunto de um conjunto de (N) subcanais que podem ser ordenados, por exemplo, baseados em uma métrica de confiabilidade. Os pesos de linha podem incluir um valor de peso mínimo de linha (wmin) e/ou um múltiplo inteiro do parâmetro de peso mínimo de linha (por exemplo, 2*wmin). O peso de linha para um subcanal pode representar o número de uns em uma linha correspondente ao subcanal de uma matriz de Kronecker de dimensão N. Existem diversas técnicas para reservar (isto é, alocar) subcanais candidatos para bits de paridade a partir dos subcanais ordenados. Por exemplo, após o conjunto de subcanais ter sido classificado baseado nas suas confiabilidades, o dispositivo sem fio pode reservar subcanais candidatos a partir de um subconjunto mais confiável de subcanais no conjunto baseado nos seus pesos de linha com início a partir do subcanal de maior confiabilidade. Em um exemplo, os primeiros f1 subcanais (isto é, mais confiáveis) que têm um peso de linha igual ao valor de peso mínimo de linha, onde f1 é um inteiro (maior que zero), são reservados para bits de paridade. Em tal exemplo, o peso mínimo de linha pode ser o menor peso de linha associado aos K ou K+Fp subcanais mais confiáveis na sequência ordenada de subcanais, onde K é um comprimento de bloco de informações associado à sequência de bits de informação, e Fp é um parâmetro ou uma função correspondente a um número de bits de paridade transportados pelo fluxo de bits codificados. Em tal modalidade, Fp pode ser calculado de acordo com a seguinte função: Fp = log2 N x (α-|α x (K/M — 1/2) |2), onde M é o comprimento de bloco transmitido, N é o comprimento de código mãe, e α é um fator de ponderação que é usado para variar a razão de bits de paridade para bits de informação. São também possíveis outros valores para Fp. Em outro exemplo, os primeiros f2 subcanais que têm um peso de linha igual ao dobro do valor de peso mínimo de linha, podem também ser reservados para bits de paridade (onde f2 é também inteiro, maior que ou igual a zero). O parâmetro f1 pode ser calculado de acordo com a seguinte função: f1 = (Fp + min(Fp,n))/2, onde n é o número de subcanais, nos K+Fp subcanais mais confiáveis da sequência ordenada de subcanais, que têm um peso de linha igual ao peso mínimo de linha. O parâmetro f2 pode ser calculado de acordo com a seguinte função: f2 = (Fp - min(Fp,n))/2. Podem ser possíveis outros valores para os parâmetros f1 e f2.
[0065] Em outra modalidade, Fp pode ser um valor fixo (por exemplo, 3) independente do tamanho de bloco de informações e comprimento de código. Alternativamente, Fp pode ser um subconjunto desejado (por exemplo, 1) do número total de bits de paridade a ser usado (por exemplo, 3) e que deve ser mapeado para subcanais candidatos com um peso mínimo de linha wmin em um subconjunto mais confiável de subcanais (por exemplo, K ou (K+Fp)) enquanto os bits de paridade remanescentes (por exemplo, 2) são mapeados para outros subcanais de acordo com uma métrica diferente (por exemplo, os subcanais menos confiáveis dentro dos K ou (K+Fp) subcanais mais confiáveis).
[0066] Na etapa 820, o dispositivo sem fio mapeia bits de informação para um subconjunto de subcanais remanescentes no conjunto de subcanais com base em uma confiabilidade dos subcanais remanescentes, por exemplo, sem mapeamento dos bits de informação para o um ou mais subcanais candidatos reservados para o um ou mais bits de paridade. Na etapa 830, o dispositivo sem fio determina (por exemplo, calcula) valores de ao menos o um ou mais bits de paridade como uma função dos valores dos bits de informação e mapeia o um ou mais bits de paridade para os subcanais candidatos reservados (não mostrados). Na etapa 840, o dispositivo sem fio codifica os bits de informação mapeados e o um ou mais bits de paridade usando um código polar para obter bits codificados ou um fluxo de bits codificados. Na etapa 850, o dispositivo sem fio transmite os bits codificados pelo canal (físico).
[0067] As modalidades desta revelação fornecem um método para um dispositivo tal como um dispositivo sem fio implementar uma função de verificação de paridade antes de decodificação. Durante uma primeira etapa, o dispositivo sem fio obtém ou verifica uma sequência ordenada da confiabilidade (Q) e determina um conjunto de bits perfurados (P) baseado em uma taxa de código (R) e um comprimento de código mãe (N).
[0068] Durante uma segunda etapa, o dispositivo determina um conjunto de bits congelados, um conjunto de bits PC congelados e um conjunto de bits de informação a partir da sequência ordenada. A segunda etapa pode incluir diversas subetapas 2.1-2.4(d). Na subetapa 2.1, o dispositivo sem fio pode dividir a sequência Q, (ordenada por uma confiabilidade ascendente da esquerda para a direita) em três subconjuntos, a saber um subconjunto (N-), um subconjunto (M-K) e um subconjunto (k). Um exemplo disto é mostrado na Tabela 2. Como pode ser visto, o subconjunto K representa as posições de bits (subcanais) mais confiáveis na sequência Q. Durante a subetapa 2.2, o dispositivo sem fio pode determinar um menor ou mínimo peso de linha no subconjunto (K) e representá-lo como dmin, onde o peso de linha para um subcanal representa o número de “uns” em uma linha da sua matriz Kronecker correspondente ao subcanal. Como mencionado acima, o peso de linha é também uma potência de 2 com o expoente sendo o número de “uns” na representação binária do índice de subcanais. O dispositivo sem fio pode então determinar o número de posições de bits (n) no subconjunto (K) que têm um peso de linha igual a dmin. Durante a subetapa 2.3, o dispositivo sem fio seleciona ou identifica um conjunto de subcanais, no subconjunto K, para bits PC congelados de acordo com dmin. Especificamente, o dispositivo sem fio pode determinar um número (Fp) de bits de verificação de paridade (PC) congelados (PC congelados) baseados em uma função de um comprimento de código mãe do código polar e um número de bits de informação na sequência de bits de informação. Em um exemplo, Fp é computado de acordo com a seguinte função: Fp = ceil(Log2(N*K)/2). O dispositivo sem fio pode em seguida selecionar e/ou identificar um número de subcanais para bits PC congelados. Se n < Fp, o dispositivo sem fio pode selecionar e/ou identificar como bits PC congelados (Fp+n)/2 subcanais com peso de linha dmin de acordo com uma ordem de confiabilidade decrescente, assim como selecionar ou identificar (Fp-n)/2 subcanais com peso de linha 2xdmin de acordo com uma ordem de confiabilidade decrescente. Se n > Fp, o dispositivo sem fio pode selecionar e/ou identificar como bits PC congelados Fp subcanais com um peso de linha dmin de acordo com uma ordem de confiabilidade decrescente. Em outra modalidade, Fp poderia ser um valor fixo, independentemente do tamanho de bloco de informações e do comprimento de código, por exemplo 3. Alternativamente, Fp poderia representar um conjunto ou subconjunto desejado (por exemplo, 1) do número total de bits de paridade (por exemplo, 2) que deve ser mapeado para subcanais com um peso mínimo de linha (dmin) ou o dobro do peso mínimo de linha (2xdmin) enquanto os bits de paridade remanescentes (por exemplo, 2) são mapeados para outros subcanais de acordo com uma diferente métrica (por exemplo, os subcanais menos confiáveis dentro do subconjunto K ou do subconjunto K+Fp). Nas subetapas 2.4(a)-2.4(d), o dispositivo sem fio pode determinar a posição para bits de informação, PC congelados e congelados. Em particular, na subetapa 2.4(a), o dispositivo sem fio pode selecionar as posições de bits de informação uma por uma a partir da mais à direita para a mais à esquerda (em uma ordem descendente de confiabilidades), pular as posições de bits identificados, até o número das posições de bits de informação alcançar K. Na subetapa 2.4(b), o dispositivo sem fio pode identificar as posições de bits remanescentes para serem os bits congelados. Na subetapa 2.4(c), o dispositivo sem fio pode selecionar algumas posições de bits congelados, por exemplo, aquelas que têm um peso de linha igual aos bits PC congelados pré-selecionados como bits PC congelados, ou todas as posições de bits congelados como bits PC congelados adicionais. Na subetapa 2.4(d), o dispositivo sem fio pode preparar a sequência de bits para codificação polar, por exemplo, com um kernel Arikan. O dispositivo sem fio pode inserir os K bits de informação e marcar os bits PC congelados e bits congelados.
[0069] Durante a etapa 3, o dispositivo sem fio pode definir valores para os bits PC congelados baseados em uma função de verificação de paridade. Em um exemplo, isto é obtido pela aplicação de um deslocamento cíclico sobre um registro com comprimento de um valor primo.
Figure img0003
Tabela 2
[0070] A Figura 9 é um fluxograma de um método de incorporação 900 para codificar dados usando um código polar, como pode ser executado por um dispositivo sem fio. Na etapa 910, o dispositivo sem fio determina um menor peso de linha (dmin) entre os K subcanais mais confiáveis em uma sequência ordenada de subcanais. Na etapa 920, o dispositivo sem fio seleciona ou identifica um conjunto de subcanais, nos K subcanais mais confiáveis, para bits de verificação de paridade (PC) congelados (PC congelados) de acordo com o menor peso de linha. Deverá ser entendido que o conjunto de subcanais, que são selecionados ou identificados, pode incluir um ou mais subcanais. Opcionalmente, se existirem menos subcanais com o menor peso de linha (dmin), por exemplo, n, que um número predeterminado de bits PC congelados, por exemplo, Fp, o dispositivo sem fio seleciona ou identifica como bits PC congelados (Fp+n)/2 subcanais com peso de linha dmin na sequência ordenada de acordo com uma ordem descendente de confiabilidades, assim como identifica (Fp-n)/2 subcanais com peso de linha 2 x dmin na sequência ordenada de acordo com uma ordem descendente de confiabilidades. Opcionalmente, se o número n de subcanais com o menor peso de linha (dmin) for maior que Fp, o dispositivo sem fio seleciona ou identifica como bits PC congelados Fp subcanais com peso de linha dmin na sequência ordenada de acordo com uma ordem decrescente de confiabilidades. Na etapa 930, o dispositivo sem fio mapeia uma sequência K de bits de informação para os subcanais remanescentes mais confiáveis na sequência ordenada de subcanais enquanto pula o conjunto de subcanais identificados para bits PC congelados. Na etapa 940, o dispositivo sem fio define valores para bits PC em ao menos o conjunto de subcanais identificados para bits PC congelados, e codifica por polarização os K bits de informação com os bits PC congelados na etapa 950, obtendo deste modo bits codificados ou um fluxo de bits codificados. Na etapa 960, o dispositivo sem fio transmite ao menos uma porção dos bits codificados / fluxo de bits.
[0071] A Figura 10 mostra um sistema de comunicação 1000. Uma fonte 1010 fornece os dados de informação (dados do portador, blocos de informações, bits), um codificador (de canal) 1020 codifica os dados de informação, os dados de informação codificados são transmitidos pelo canal 1030 e em seguida decodificados em um decodificador (de canal) 1040 de modo que os dados de informação são finalmente recebidos no destinatário 1050. A fonte 1010 e/ou o codificador de canal 1020 podem estar embutidos ou incluídos em um ponto de transmissão ou dispositivo sem fio tal como um componente de rede ou um equipamento de usuário. O componente de rede pode ser um ponto de acesso tal como um NóB evoluído (eNóB), um ponto de acesso de WiFi, um ponto de acesso de pequena célula (picocélula, femtocélula) ou qualquer outro ponto de acesso a uma rede. O codificador de canal 1020 pode ser implementado de diversos modos. Por exemplo, o codificador de canal 1020 pode ser implementado apenas em hardware (em circuitos, tal como um processador, que é configurado para codificar dados e/ou controlar a operação do codificador ou de outro(s) componente(s) do dispositivo, e/ou para de outro modo controlar a execução de funcionalidade e/ou modalidades como reveladas neste documento). Em uma implementação baseada em processador do codificador, as instruções executáveis em processador para executar operações de codificação como descritas neste documento são armazenadas em um meio não transitório de memória ou armazenamento interno ou externo ao ponto de transmissão ou dispositivo. O meio não transitório poderia incluir, por exemplo em uma memória, um ou mais dispositivos de memória de estado sólido e/ou dispositivos de memória com meios de armazenamento móveis e possivelmente removíveis. O codificador 1020 poderia ser configurado para fazer interface com um módulo de transmissão separado (Radiofrequência - RF). Por exemplo, o codificador 1020 pode ser implementado em hardware ou circuitos (por exemplo, em um ou mais conjuntos de chips, microprocessadores, circuitos integrados de aplicação específica (ASIC), conjuntos de portas programáveis de campo (FPGAs), circuitos lógicos dedicados, ou combinações destes) de modo a codificar dados como descritos neste documento para transmissão por uma unidade separada (RF).
[0072] O decodificador (de canal) 1040 e o destinatário 1050 podem estar incluídos em um ponto de recepção ou em outro dispositivo sem fio tal como um componente de rede ou um equipamento de usuário (UE) e podem estar implementados no componente de rede ou no dispositivo também de diversos modos, incluindo, por exemplo, em hardware ou circuitos tais como um conjunto de chips ou um processador configurado para executar instruções para realizar operações de decodificação. Em uma implementação baseada em processador do decodificador 1040, as instruções executáveis em processador para executar operações de codificação como descritas neste documento são armazenadas em um meio não transitório de memória ou armazenamento interno ou externo ao ponto de recepção ou dispositivo. O meio não transitório poderia incluir, por exemplo em uma memória, um ou mais dispositivos de memória de estado sólido e/ou dispositivos de memória com meios de armazenamento móveis e possivelmente removíveis. O decodificador 1040 poderia ser configurado para fazer interface com um módulo de transmissão separado (RF). Por exemplo, o codificador 1040 pode ser implementado em hardware ou circuitos (por exemplo, em um ou mais conjuntos de chips, microprocessadores, ASICs, FPGAs, circuitos lógicos dedicados, ou combinações destes) de modo a decodificar sinais recebidos (por exemplo, por meio de um módulo ou unidade de recepção) como descritos neste documento para obter bits de informação. O UE pode ser um telefone sem fio, telefone inteligente, tablet, assistente pessoal, ou qualquer outro dispositivo móvel. Em diversas modalidades a fonte 1010 e o decodificador de canal 1020 podem ser implementados no UE e o decodificador de canal 1040 e o destinatário 1050 podem ser implementados em um ponto de acesso ou vice-versa. O canal 1030 pode ser um canal pelo ar ou uma linha fixa tal como um cabo ou barramento. O canal 1030 pode ser uma camada física de uma interface sem fio. O canal 1030 pode ser qualquer outro meio de transmissão. O sistema de comunicação 1000 pode ser usado não apenas para transmitir dados sem fio, mas também para transmitir dados por fio ou quaisquer outros dados.
[0073] Em algumas modalidades, o decodificador 1040 pode ser configurado para decodificar sinais baseados em dados codificados que são recebidos pelo canal 1030. Em uma modalidade, o decodificador 1040 é configurado para receber de outro dispositivo, por exemplo, o codificador 1020, um sinal baseado em dados codificados produzidos no codificador 1020 com bits de informação em um ou mais bits de paridade codificados com um código polar. Como mencionado acima, o decodificador 1040 pode ser configurado para receber os sinais diretamente (por exemplo, com uma unidade interna de recepção) ou indiretamente com uma unidade separada de recepção por meio de uma interface adequada. Nesta modalidade, o(s) bit(s) de paridade é/são colocado(s) nos subcanais selecionados com base em um parâmetro de peso e o decodificador 1040 decodifica o sinal usando o código polar e os bits de paridade para obter os bits de informação.
[0074] Em um exemplo, o parâmetro de peso inclui um peso mínimo. Em tal exemplo, os bits de paridade podem ser colocados em diversos subcanais com um peso mínimo (por exemplo, dmin) ou com o dobro do peso mínimo (2xdmin). Em um exemplo onde os subcanais selecionados têm individualmente um peso mínimo, os subcanais são selecionados a partir de um segmento de K subcanais mais confiáveis dos N0 subcanais ordenados baseados em uma métrica de confiabilidade. Neste exemplo, cada um dos K subcanais tem uma maior métrica de confiabilidade que a métrica de confiabilidade dos subcanais de um segmento No-K dos subcanais ordenados onde K é um comprimento de bloco de informações e N0 é um comprimento de código mãe. Uma função de verificação de paridade, que pode ser uma função de números primos pode ser usada para determinar o valor de cada um dos bits de paridade. O parâmetro de peso pode incluir um menor peso de linha, tal como dmin, e os subcanais selecionados podem ter um menor peso de linha nos K subconjuntos, onde um peso de linha de um subcanal é um número de uns em uma linha de uma matriz Kronecker, e a linha corresponde ao subcanal. Os subcanais, com um menor peso de linha, podem ser selecionados a partir dos K subconjuntos de acordo com uma ordem decrescente de confiabilidades. Os subcanais para os bits de informação podem ser selecionados em uma sequência ordenada de subcanais ao pular os subcanais selecionados para os bits de paridade, até que um número dos subcanais selecionados para os bits de informação alcance K.
[0075] Em outra modalidade, o decodificador 1040 é configurado para receber um sinal baseado em bits ou em um fluxo de bits produzidos em outro dispositivo (por exemplo, o codificador 1020) com bits de informação e um ou mais bits de paridade codificados com um código polar. Nesta modalidade, os bits de paridade são mapeados para subcanais alocados com base em pesos de linha para os subcanais em um subconjunto de um conjunto de subcanais, e os bits de informação são mapeados para os subcanais remanescentes no conjunto de subcanais com base em uma confiabilidade dos subcanais remanescentes. O decodificador 1040 é também configurado para decodificar o sinal usando o código polar e os bits de paridade para obter os bits de informação.
[0076] Em um exemplo, o peso de linha para um subcanal representa o número de uns em uma linha de uma matriz Kronecker correspondente ao subcanal. Os pesos de linha podem incluir um peso mínimo de linha. Um número de subcanais que têm um peso de linha igual ao peso mínimo de linha ou ao dobro do peso mínimo de linha no subconjunto de subcanais é alocado para os bits de paridade. O número de subcanais alocados pode ser um e os subcanais no conjunto podem ser ordenados com base nas suas confiabilidades para formar uma sequência ordenada de subcanais, onde o subconjunto de subcanais inclui o subconjunto mais confiável na sequência ordenada. Por exemplo, o subconjunto mais confiável pode incluir K subcanais para transportar os bits de informação ou os K+Fp subcanais, onde K é um comprimento de bloco de informações associado aos bits de informação, e Fp indica um número de bits de paridade. Naquele exemplo, o subcanal mais confiável que tem um peso de linha igual ao peso mínimo de linha no subconjunto (por exemplo, K ou K+Fp) de subcanais pode ser alocado para os bits de paridade. Os bits de paridade podem incluir bits de verificação de paridade (PC) e os valores para os bits PC podem ser uma função de valores dos bits de informação.
[0077] Um código polar é um código de correção de erros de blocos lineares que usa subcanais relativamente confiáveis para bits de informação e subcanais relativamente não confiáveis para bits congelados que podem ser zeros ou qualquer valor conhecido. A distância mínima de codificação pode ser aumentada se a verificação de paridade puder ser operada sobre alguns dos bits congelados menos não confiáveis. Os bits congelados usados para bits de paridade são chamados bits dinâmicos congelados porque os seus valores de bits mudam dinamicamente com a informação de dados sendo transmitida.
[0078] Em aplicações convencionais o decodificador usa um método de cancelamento sucessivo (SC) para identificar os melhores subcanais para transmissão do bloco de informações (bits de informação). Para melhorar o desempenho, é usado um algoritmo de decodificação de lista SC auxiliada por CRC para permitir múltiplos caminhos de decodificação SC e em seguida é usada CRC para selecionar o caminho certo no último estágio. Este método consome a capacidade de detecção dos bits CRC, após o que não podem ser usados para outros fins tal como detecção cega. Um decodificador de lista não auxiliada por CRC tem preferivelmente algum método de execução de uma verificação de paridade baseado em uma fonte diferente dos bits CRC. Em alguns códigos polares, os bits de paridade são colocados em uma porção dos bits congelados (conjunto dinâmico congelado) para fornecer capacidade de verificação de paridade. Contudo, o desempenho da operação de código polar depende da seleção do conjunto dinâmico congelado e do método de verificação de paridade sobre aquele e é muito difícil selecionar o(s) conjunto(s) congelado(s) adequado(s) (bit ou símbolo) de um modo determinístico porque existem muitos deles.
[0079] Em modalidades, a seleção de conjuntos de bits dinâmicos congelados é uma função da distância mínima de codificação ou uma função do peso mínimo confiável tal como peso de polarização. Podem também ser usadas outras métricas de confiabilidade. As modalidades fornecem um código polar baseado nos bits dinâmicos congelados adequadamente selecionados que mostram bom e confiável desempenho de taxa de erros de blocos (BLER). O código polar pode ser um código polar sem verificação redundante cíclica (CRC). Em diversas modalidades todos os bits congelados são selecionados como bits dinâmicos congelados e uma função de verificação derivada de números primos é aplicada sobre todos eles.
[0080] A Figura 11 é um fluxograma de um método de incorporação 1100 para selecionar um conjunto de bits congelados para um código polar. O método de codificação pode ser implementado em ambos o codificador e um decodificador. O método de codificação inclui pré- selecionar, na etapa 1110, um número de conjuntos candidatos congelados (ou um grande número de conjuntos de bits candidatos congelados) e em seguida selecionar, na etapa 1150, a partir do número de conjuntos de bits candidatos, um conjunto de bits congelados selecionado.
[0081] A etapa 1110 inclui classificar os subcanais pré- selecionados dos bits congelados de acordo com a métrica de confiabilidade aplicada aos seus subcanais. Em algumas modalidades, a etapa 1110 inclui classificar todos os subcanais de acordo com uma função de métrica de confiabilidade. Em diversas modalidades, pode ser usada uma função determinística tal como um algoritmo de peso de polarização. Alternativamente, a função determinística pode ser uma função de distância de polarização. Os subcanais dos bits congelados podem ser classificados em um modo ascendente, isto é, de um peso de polarização baixo para um peso de polarização alto (ou vice-versa). Os canais classificados são em seguida divididos em uma pluralidade de segmentos tal como 2 segmentos. Em uma etapa seguinte, um peso mínimo dmin no segmento superior (ou, em outras palavras, no segmento com os subcanais mais confiáveis) é selecionado ou determinado (vide exemplo abaixo). Em um exemplo, o peso de um subcanal pode ser um peso de linha, isto é, o número de “uns” na linha da matriz geradora de código Polar ou matriz Kronecker que corresponde ao subcanal, ou equivalentemente uma potência de 2 com o expoente sendo o número de “uns” na representação binária do índice de subcanais. Naquele exemplo, o peso mínimo, dmin, pode ser um peso mínimo de linha. Para o peso mínimo dmin, o número de canais com o peso mínimo dmin pode ser n. Definir um valor predeterminado F. Em uma modalidade F pode ser F = ceil(LOG2(N*K)/2). Em outras modalidades, F pode ter um valor diferente. Em ainda outras modalidades, F representa um conjunto ou subconjunto (por exemplo, 1) do número total de subcanais para bits dinâmicos congelados (por exemplo, 3) a serem selecionados com base em dmin e/ou 2*dmin, e um subconjunto remanescente (por exemplo, 2) do número total de subcanais para bits dinâmicos congelados é pré-selecionado com base em outra métrica, por exemplo, os subcanais menos confiáveis dentro dos K subcanais mais confiáveis. Pré- selecionar (F-n) /2 canais com peso dmin e pré-selecionar (F+n)/2 canais com peso 2xdmin quando n < F. Pré-selecionar F canais com peso dmin quando n > F. Ordenar os canais pré- selecionados em uma ordem inversa. Por exemplo, os canais são ordenados em um modo descendente, isto é, com valor de peso de polarização de alto para baixo ou em uma ordem descendente de confiabilidades. Em outras palavras, os subcanais mais confiáveis com peso dmin e/ou 2*dmin nos K segmentos mais confiáveis são pré-selecionados. Consequentemente, a etapa 1110 fornece um grande número de subcanais ordenados pré-selecionados (conjuntos de bits candidatos) que, em algumas modalidades, podem ser usados para bits dinâmicos congelados. É entendido, contudo, que geralmente o número de subcanais pré-selecionados para bits dinâmicos congelados pode ser pequeno ou grande.
[0082] Em um exemplo prático, No é o comprimento de código mãe após correspondência de taxas, e K é o comprimento de bloco de informações. Em uma modalidade, N0 pode ser definido como No = 2Aceil(log2(N)). Os subcanais de bits congelados podem então ser classificados e segmentados em dois segmentos ou, em outras palavras, todos os subcanais de bits incluindo os subcanais de bits congelados podem ser classificados e segmentados em dois segmentos, como mostrado na Tabela 3. Como pode ser visto, os subcanais são classificados de modo ascendente, isto é, com os K subcanais sendo os mais confiáveis e os (No-K) subcanais sendo os menos confiáveis.
Figure img0004
Tabela 3
[0083] Na etapa seguinte, na etapa 115o, um conjunto de bits congelados (ou, em outras palavras, subcanais para bits congelados) é selecionado a partir do ou baseado no grande número de conjuntos de bits candidatos pré-selecionados. O conjunto selecionado de bits congelados pode ser selecionado bit por bit de acordo com uma ordem de peso de polarização ascendente. O conjunto selecionado de bits congelados ou subcanais para bits congelados pode ser completado quando o número de bits for No-K. Em algumas modalidades, o conjunto de subcanais selecionado para bits congelados inclui alguns ou todos os subcanais pré-selecionados e alguns ou todos os subcanais selecionados podem ser usados para bits dinâmicos congelados. Em outras modalidades, o conjunto de subcanais selecionado para bits congelados é separado de (isto é, não inclui) os subcanais pré-selecionados e o conjunto selecionado de subcanais pode ser completado quando o número de subcanais for No-K-F. Todos os remanescentes (K) subcanais (isto é, aqueles não usados para bits congelados e/ou bits dinâmicos congelados) são subcanais para os (K) bits de informação. Em algumas modalidades, alguns dos subcanais congelados selecionados (por exemplo, os conjuntos de bits congelados candidatos pré-selecionados ou todos os subcanais congelados) podem ser usados para bits dinâmicos congelados.
[0084] A seleção do conjunto selecionado de bits congelados inclui determinar um número primo p. Em diversas modalidades, um único número primo pode ser 5, 7 ou 11. Com a finalidade de finalmente selecionar o conjunto de bits congelados, o codificador e o decodificador podem operar um registro de deslocamento cíclico de comprimento p implementado no codificador e no decodificador. O registro de deslocamento cíclico pode deslocar-se para a esquerda após codificação/decodificação de cada bit. A Figura 12 mostra um tal registro de deslocamento cíclico com o comprimento 5 (comprimento p) em ao menos um do codificador e do decodificador. Se um bit for um bit de informação no registro é desconsiderado (XOR) e se o bit for um bit congelado o valor de bit deste bit é usado e selecionado. Em diversas modalidades, os bits são definidos como 0 quando inicializados no registro. Em algumas modalidades, o conjunto de bits congelados pode ser mudado de palavra de código para palavra de código.
[0085] Em outra modalidade, uma terceira etapa constrói a função de verificação de paridade e determina os valores de bits para os bits dinâmicos congelados assim como para os bits de informação e bits congelados (estáticos). Um número primo p é determinado. Em diversas modalidades, um único número primo pode ser 5, 7 ou 11. Com a finalidade de construir a função de verificação de paridade e determinar os valores de bits dinâmicos congelados, pode ser implementado um registro de deslocamento cíclico de comprimento p no codificador (e no decodificador). O registro de deslocamento cíclico pode deslocar-se para a esquerda após determinar um valor de bit para o vetor de bits de entrada durante codificação ou após decodificação de um valor de bit. A Figura 12 mostra um tal registro de deslocamento cíclico com um comprimento de 5 (comprimento de p) em ao menos um do codificador e do decodificador. Como determinado pelas duas etapas acima, se um bit for um bit de informação, o primeiro bit no registro é XORed com o valor de bit de informação corrente e em seguida deslocado ciclicamente. Se o bit for um bit congelado (estático), o valor de bit é definido como um valor fixo (por exemplo, 0) conhecido por ambos o codificador e o decodificador e em seguida deslocado ciclicamente; se o bit for um bit dinâmico congelado, o valor do primeiro bit no registro é designado como o valor do bit dinâmico congelado corrente. Em diversas modalidades, os bits são definidos como 0 quando inicializados no registro. Em algumas modalidades, o conjunto de bits congelados muda de palavra de código para palavra de código.
[0086] O método 1100 pode fornecer uma pluralidade de vantagens: O codificador pode não necessitar executar computação online de funções de paridade. O codificador pode não necessitar armazenar funções de paridade. O codificador pode não necessitar pesquisar funções de paridade e, portanto, pode ser operado com menos complexidade.
[0087] As Figuras 13A-13D mostram o desempenho de um código polar para um conjunto selecionado de bits congelados selecionados de acordo com modalidades. A Figura 13A mostra o desempenho para k = 40 bits de informação e para modulação QPSK, a Figura 13B mostra o desempenho para k = 60 bits de informação e para modulação QPSK, a Figura 13C mostra o desempenho para k = 80 bits de informação e para modulação QPSK, e a Figura 13D mostra o desempenho para k = 120 bits de informação e para modulação QPSK. Como pode ser visto a partir dos gráficos, o código polar da invenção fornece um melhor desempenho e menos complexidade comparado a outros gráficos que representam outros códigos.
[0088] As Figuras 14A-14B mostram os Pontos de ES/N0 recebidos médios para uma determinada taxa de erros de bloco (BLER). Como mostrado nos gráficos representados, códigos polares com o conjunto selecionado de bits congelados (selecionados de acordo com modalidade) fornecem melhor desempenho que os outros códigos polares.
[0089] A Figura 15 é um diagrama de blocos de um dispositivo 1500 tal como um dispositivo sem fio, ponto de transmissão ou ponto de recepção, por exemplo, componente de rede ou um equipamento de usuário. O dispositivo 1500 inclui uma CPU 1502, um componente de armazenamento em massa 1504, uma interface de rede 1506, um codificador/decodificador 1508, memória 1510, um adaptador de vídeo 1512 e uma interface I/O 1514.
[0090] O dispositivo 1500 pode utilizar todos os componentes mostrados, ou apenas um subconjunto dos componentes, e níveis de integração podem variar dependendo da implementação. Além disso, o dispositivo 1500 pode conter múltiplas instâncias de um componente, tal como múltiplas CPUs 1502, etc. O dispositivo 1500 pode usar a interface de rede 1506 para conectar-se à rede 1520, o adaptador de vídeo 152 para conectar-se a um visor 1516, e a interface I/O 1514 para conectar-se a um ou mais dispositivos de entrada/saída 1518, tal como um alto-falante, microfone, mouse, tela sensível ao toque, teclado, impressora, e similares.
[0091] Em algumas modalidades, a CPU 1502 pode ser qualquer processador que possa ser um componente de uma plataforma de hardware de computador para fins gerais. Em outras modalidades, a CPU 1502 (um processador) pode ser um componente de uma plataforma de hardware para fim específico. Por exemplo, a CPU 1502 pode ser um processador embutido, e as instruções podem ser fornecidas como firmware. Algumas modalidades podem ser implementadas pela utilização apenas de hardware. Em algumas modalidades, as instruções para execução por um processador podem estar embutidas na forma de um produto de software. O produto de software pode ser armazenado em um meio de memória ou armazenamento não volátil ou não transitório, que poderia ser, por exemplo, uma memória apenas de leitura de disco compacto (CD-ROM), disco flash de barramento universal serial (USB), ou disco rígido removível.
[0092] O codificador/decodificador 1508 pode incluir um componente de codificação, um componente de decodificação, ou ambos. Em algumas modalidades, o codificador/decodificador 1508 é implementado em circuitos, tal como um processador, que é configurado para codificar dados ou executar as operações de seleção, mapeamento e/ou codificação como reveladas neste documento. Em uma implementação baseada em processador do codificador/ decodificador 1508, instruções executáveis por processador para realizar operações de codificação são armazenadas em um meio legível por processador não transitório. O meio não transitório poderia incluir, por exemplo na memória 1510, um ou mais dispositivos de memória de estado sólido e/ou dispositivos de memória com meios de armazenamento móveis e possivelmente removíveis.
[0093] O barramento pode ser um ou mais de qualquer tipo de diversas arquiteturas de barramentos incluindo um barramento de memória ou controlador de memória, um barramento periférico, barramento de vídeo, ou similares. A CPU 1502 pode compreender qualquer tipo de processador eletrônico de dados. A memória 1510 pode compreender qualquer tipo de memória de sistema tal como memória estática de acesso aleatório (SRAM), memória dinâmica de acesso aleatório (DRAM), DRAM síncrona (SDRAM), memória apenas de leitura (ROM), uma combinação destas, ou similares. Em algumas modalidades, a memória 1510 é um meio não transitório legível por computador que inclui instruções para execução por um processador para implementar e/ou controlar a operação do codificador/ decodificador 1508 ou de outro(s) componente(s) do dispositivo, e/ou para de outro modo controlar a execução de funcionalidade e/ou modalidades descritas neste documento. Em uma modalidade, a memória 1510 pode incluir ROM para uso na inicialização, e DRAM para armazenamento de programa e dados para uso enquanto executando programas.
[0094] O componente de armazenamento em massa 1504 pode compreender qualquer tipo de dispositivo de armazenamento configurado para armazenar dados, programas e outras informações e para tornar os dados, programas e outras informações acessíveis através do barramento. O componente de armazenamento em massa 1504 pode compreender, por exemplo, um ou mais de uma unidade de estado sólido, unidade de disco rígido, uma unidade de disco magnético, uma unidade de disco ótico, ou similar.
[0095] O adaptador de vídeo 1512 e a interface I/O 1514 fornecem interfaces para acoplar dispositivos externos de entrada e saída à unidade de processamento. Como ilustrado, exemplos de dispositivos de entrada e saída incluem o visor 1516 acoplado ao adaptador de vídeo 1512 e o mouse/teclado/impressora acoplado à interface I/O 1514.
[0096] Outros dispositivos podem ser acoplados à unidade de processamento, e podem ser utilizados menos ou adicionais cartões de interface. Por exemplo, pode ser usada uma interface serial tal como um Barramento Universal Serial (USB) (não mostrado) para fornecer uma interface para uma impressora.
[0097] A interface de rede 1506 pode compreender ligações com fio, tal como cabo Ethernet ou similar, e/ou ligações sem fio para acessar nós ou diferentes redes. A interface de rede 1506 pode ser configurada para permitir que o dispositivo e/ou a unidade de processamento se comunique comunidades remotas por meio da rede 1520 incluindo, por exemplo, transmitir e/ou receber dados ou bits codificados.Por exemplo, a interface de rede 1506 pode fornecer comunicação sem fio por meio de um ou mais transmissores/antenas de transmissão e um ou mais receptores/antenas de recepção. Em uma modalidade, a unidade de processamento está acoplada a uma rede de área local ou a uma rede de área ampla para processamento de dados e comunicações com dispositivos remotos, tais como outras unidades de processamento, a Internet, instalações remotas de armazenamento, ou similares.
[0098] Embora não mostrado, a interface de rede 1506 poderia incluir um modulador, um amplificador, antena e/ou outros módulos ou componentes de uma cadeia de transmissão, e adicional ou alternativamente um demodulador, amplificador, antena e/ou outros módulos ou componentes de uma cadeia de recepção. Em uma alternativa, a interface de rede 1506 poderia ser configurada para fazer interface com um módulo separado (RF) de transmissão e/ou recepção. Por exemplo, o codificador/decodificador 1508 pode ser implementado em hardware ou circuitos (por exemplo, em um ou mais conjuntos de chips, microprocessadores, ASICs, FPGAs, circuitos lógicos dedicados, ou combinações destes) de modo a codificar (e/ou decodificar) dados para transmissão por meio da interface de rede 1506 por uma unidade de transmissão separada (RF) ou de modo a decodificar sinais recebidos por uma unidade de recepção separada (RF) e por meio da interface de rede 1506 para obter bits de informação como descrito neste documento.
[0099] Como discutido acima, quando bits de paridade são mapeados com base em pesos de linha associados aos subcanais, pode ser necessário comparar um valor de peso de linha (por exemplo, um wmin, 2*wmin) aos pesos de linha de subcanais para identificar que subcanais devem ser reservados para bit(s) de paridade. Modalidades desta revelação comparam o valor de peso de linha (por exemplo, um wmin, 2*wmin) aos pesos de linha de múltiplos subcanais em paralelo. Isto pode reduzir a latência associada às operações de comparação, permitindo deste modo que o processo de codificação seja executado mais rápida e eficientemente. A Figura 16 é um diagrama de uma técnica para usar operações de comparação em paralelo para identificar subcanais que devem ser reservados para bit(s) PC. Neste exemplo, bits de informação 1620, bits PC 1630 e bits congelados 1640 são mapeados para subcanais 1611-1619, que são classificados em uma ordem ascendente de confiabilidades de subcanais. Antes de mapear os bits de informação 1620 para qualquer dos subcanais 1611-1619, pesos de linha de ao menos dois subcanais 1618, 1619 são comparados em paralelo com um ou mais valores de pesos de linha (por exemplo, wmin, 2*wmin), e os subcanais mais confiáveis que têm um peso de linha que corresponda a um ou mais valores de pesos de linha são reservados para os bits PC 1630. Em algumas modalidades, um número específico (f1) de subcanais que têm um peso de linha que corresponda a um primeiro valor de peso de linha (por exemplo, wmin) são reservados para os bits PC, e um número específico (f2) de subcanais que têm um peso de linha que corresponda a um segundo valor de peso de linha (por exemplo, 2*wmin) são reservados para os bits PC. Um ou mais dos valores de pesos de linha, e índices que definem os números específicos de subcanais reservados para cada respectivo valor de peso de linha, podem ser determinados com base na taxa de código e/ou parâmetro de comprimento de bloco.
[00100] A Figura 17 ilustra um método de modalidade 1700 para codificar uma sequência de bits de informação. Na etapa 1710, o codificador determina ao menos um valor de peso de linha para reservar subcanais para bits PC. O ao menos um valor de peso de linha pode ser determinado com base em uma taxa de código do canal e um comprimento de bloco associado a uma sequência de bits de informação a serem codificados. Na etapa 1720, o decodificador compara o ao menos um valor de peso de linha com pesos de linha de dois ou mais subcanais em paralelo para determinar a reserva de um ou mais dos subcanais para o(s) bit(s) PC. Em uma modalidade, o codificador pode calcular os subcanais em ordem descendente de confiabilidades de acordo com uma sequência ordenada de subcanais de modo que subcanais mais confiáveis sejam calculados antes dos subcanais menos confiáveis. Alternativamente, todos os subcanais em um subconjunto de subcanais que devem ser mapeados para bits de informação ou PC (por exemplo, K+Fp subcanais) são calculados em paralelo.
[00101] Na etapa 1730, o codificador determina se suficientes subcanais forem reservados para bit(s) PC. Como exemplo, o codificador pode determinar se ao menos f1 subcanais que têm um peso de linha igual a wmin foram reservados e/ou se ao menos f2 subcanais que têm um peso de linha igual a 2*wmin foram reservados. Se não, então o método 1700 volta para a etapa 1720, onde o codificador calcula os dois ou mais subcanais seguintes. Logo que o codificador tenha determinado que suficientes subcanais foram reservados para bits PC, o método prossegue para a etapa 1740, onde o codificador mapeia bits de informação para os remanescentes subcanais mais confiáveis. Na etapa 1750, o codificador mapeia bits congelados para os remanescentes subcanais menos confiáveis. Em algumas modalidades, bits PC adicionais poderiam ser selecionados a partir do conjunto de bits congelados. Em uma implementação, todos os subcanais congelados que têm pesos de linha iguais a ao menos um peso de linha usado para reservar os subcanais para bits PC podem ser selecionados; em outra implementação, todos os subcanais congelados podem ser selecionados. Na etapa 1760, o codificador define os valores de bits PC para os subcanais reservados com base em uma função PC de bits de informação. As etapas 1740, 1750 e 1760 podem ser executadas em qualquer ordem. Além disso, o número de subcanais para bits PC pode ser determinado de muitos diferentes modos e, como mencionado acima, o número de subcanais reservados para bits PC pode ser fixado, por exemplo, 3 e/ou alguns ou todos os subcanais reservados podem ser baseados em dmin.
[00102] A Figura 18 ilustra um fluxograma de um método 1800 para usar uma tabela de pesquisa para executar codificação polar, como pode ser executada por um codificador. Na etapa 1810, o codificador pesquisa a tabela de pesquisa com base em uma taxa de código e um comprimento de bloco de informações para determinar os parâmetros de código. Na etapa 1820, o codificador mapeia subcanais para os bits de informação, bits de paridade e bits congelados. Na etapa 1830, o codificador define os valores de bits de paridade com base em uma função de verificação de paridade dos bits de informação.
[00103] A Figura 19 ilustra um fluxograma de um método 1900 para determinar um valor de peso mínimo de Hamming, como pode ser executado por um codificador. Na etapa 1910, o codificador classifica os subcanais com base nas suas confiabilidades de canal para obter uma sequência ordenada (Q) que lista os subcanais em ordem ascendente (Q0, Q1, ..., QN) com base nas suas confiabilidades. Na etapa 1920, o codificador identifica um subconjunto de subcanais mais confiáveis. Em exemplos onde é executada uma etapa de perfuração após a etapa de codificação polar, o subconjunto de subcanais mais confiáveis pode excluir subcanais perfurados.
[00104] O número de subcanais no conjunto de subcanais mais confiáveis pode ser determinado de acordo com a seguinte equação: min(comprimento(UM),K+Fp)), onde UM é o conjunto de subcanais que permanecerá após perfuração, K é o comprimento do bloco de informações e Fp = log2 N x (α-|α x (K/M - 1/2|2), onde M é o comprimento de código mãe e α é definido como um valor maior que 1, por exemplo, α = 1,5. Em algumas outras modalidades, Fp pode ser um valor fixo, por exemplo, 3. Na etapa 1930, o codificador determina um peso mínimo de Hamming (umin) de subcanais no subconjunto de subcanais mais confiáveis.
[00105] Na etapa 1940, dentro do subconjunto de subcanais mais confiáveis, o codificador reserva um primeiro número de subcanais que têm um peso de Hamming igual ao peso mínimo de Hamming (umin) para bits PC e um segundo número de subcanais que têm um peso de Hamming igual a um mais o peso mínimo de Hamming (1+umin) para bits PC. O codificador pode reservar os subcanais em um número de diferentes modos que incluem, por exemplo, varredura da sequência ordenada de subcanais em um modo sequencial. Em outras implementações, apenas um subconjunto dos Fp subcanais são reservados com base em umin e/ou 1+umin, e um subconjunto remanescente dos Fp subcanais é reservado com base em outra métrica, por exemplo, os subcanais menos confiáveis dentro dos K+Fp subcanais mais confiáveis. Logo que os subcanais tenham sido reservados ou de outro modo alocados para bits PC, os subcanais remanescentes são alocados para bits de informação e congelados. Na etapa 1950, o codificador mapeia bits de informação para os subcanais mais confiáveis remanescentes, e bits congelados para os subcanais menos confiáveis remanescentes. Em algumas modalidades, bits PC adicionais poderiam ser selecionados a partir do conjunto de bits congelados. Em uma implementação, alguns ou todos os subcanais congelados que têm um peso de Hamming igual àquele dos subcanais reservados para bits PC podem ser selecionados. Em outras modalidades, todos os subcanais congelados podem ser selecionados como bits PC. Na etapa 1960, o codificador define valores de bits de paridade com base em função de verificação de paridade de bits de informação. Dependendo da implementação, a ordem na qual os subcanais são alocados pode variar. Do mesmo modo, é entendido que a ordem na qual os bits PC, bits de informação ou bits congelados são mapeados para os subcanais alocados pode também variar.
[00106] Em algumas modalidades, um codificador Arikan pode ser usado para obter codificação polar. A Figura 20 é um diagrama de um codificador de incorporação 2000. O codificador inclui um construtor de código 2010, um codificador Arikan 2020 e um perfurador 2030. O construtor de código 2010 pode determinar um conjunto de tipos de subcanais. Cada subcanal é mapeado para um bit de informação, um bit PC, ou um bit congelado (ou vice-versa). De acordo com a teoria de polarização, as confiabilidades (ou capacidades mútuas de canal) em todos os subcanal são diferentes entre si. Os subcanais com maior confiabilidade são escolhidos para transmitir os bits de informação. O conjunto destas posições de subcanais é denominado conjunto de informação (I). Os subcanais com a menor confiabilidade, incluindo os subcanais não confiáveis provocados por correspondência de taxa, são definidos como zero e o conjunto das suas posições é denominada conjunto congelado (F). Alguns subcanais são selecionados para transmitir os bits PC e o conjunto de suas posições é denominado conjunto PC congelado (PF). O número total (N) de subcanais de um bloco polar pode ser um valor potência de dois, e pode ser referido como um comprimento de bloco de código mãe (N = I+F+PF). O construtor de código 2010 pode também determinar um conjunto de valores de subcanais com base nos valores de bits de informação e tipos de subcanais. Em particular, os subcanais mapeados para bits de informação podem ser definidos com base em valores dos bits de informação, os subcanais mapeados para bits PC podem ser definidos com base em uma função de verificação de paridade, e os subcanais para bits congelados são definidos como 0. O codificador Arikan 2020 pode multiplicar o bloco de subcanal de dimensão N por uma matriz Kronecker para obter uma palavra de código de N bits. O codificador Arikan 2020 pode executar aquela multiplicação de acordo com a seguinte fórmula:
Figure img0005
onde a matriz mais à direita é uma matriz geradora NxN para códigos polares Arikan. O perfurador 2030 pode perfurar/encurtar a palavra de código de N bits no comprimento de código de tamanho M por um conjunto de bits de perfuração (P). Dada uma combinação de taxa de código (R) e de comprimento de código (M), ambos o codificador e o decodificador podem computar este conjunto congelado (F), conjunto PC congelado (PF) e conjunto de bits de encurtamento/perfuração (P) usando o mesmo protocolo determinístico.
[00107] Um código polar com um comprimento de código mãe N pode ser modelado como uma combinação encaixada de dois códigos polares de comprimento N/2. Consequentemente, é possível construir uma sequência ordenada de posições de bits (sequência de índices) tal que a sequência ordenada para os códigos polares de comprimento N/2 seja um subconjunto da sequência ordenada para os códigos polares de comprimento N. Tal sequência Q0Nmax-1 para o código polar de comprimento máximo de código Nmax, onde Nmax é uma potência de dois, cobre então qualquer combinação de taxa de código e comprimento de código (de potência de dois) menor que Nmax em um modo encaixado. Correspondência de taxas pode então ser realizada com baixa complexidade e com granularidade relativamente fina. Alternativamente, a geração de sequências ordenadas de diferentes comprimentos pode ser gerada offline (por exemplo, antes da operação de codificação), e parâmetros correspondentes a cada sequência ordenada podem ser armazenados em uma tabela de pesquisa.
[00108] Estimação de confiabilidade independente de razão de sinal para ruído (SNR) pode ser executada pelo cálculo da confiabilidade de cada subcanal, e armazenamento da sequência ordenada de índices Q0Nmax-1 para o código polar de comprimento máximo de código Nmax. A ordem de confiabilidade de subcanais pode ser estimada através de uma sequência de pesos W0Nmax-1, que pode ser calculada como segue: considerando i ^ B n-1 B n-2 ... B 0 com Bj e {0, 1}, j = [0, 1, ..., n-1], então
Figure img0006
onde n = log2(N) .
[00109] Em um exemplo, um comprimento de código mãe de Nmax = 16, n = log2(16) = 4 e para i=3 (i= 0011), W3 pode ser calculado como: W3 = 1*2(0*(1/4)) + 1*2(1*(1/4)) + 0*2(2*(1/4)) + 0*2(3*(1/4)) = 2,1892. O vetor completo de peso é W015 = [0 1 1,1892 2,1892 1,4142 2,4142 2,6034 3,6034 1,6818 2,6818 2,8710 3,8710 3,0960 4,0960 4,2852 5,2852], onde um maior valor sugere uma maior confiabilidade. Logo que W0Nmax-1 for obtido, os subcanais podem ser classificados por pesos de polarização de modo que WQO < WQI < WQ2 < ... < WQNmax-1. A sequência resultante a ser armazenada é Q015 = [0 1 2 4 8 3 5 6 9 10 12 7 11 13 14 15]. Observar que Q0Nmax-1 pode tanto ser calculado rapidamente ou carregado diretamente da memória de modo que não existe necessidade de computá-lo para cada operação de correspondência de taxas de codificação e decodificação.
[00110] Um padrão de perfuração pode ser calculado em um modo determinístico por inversão de bits dos índices binários ordenados descendentemente [N-1, N-2, ..., 1, 0], e marcação dos N-M índices com maior valor invertido de bits como posições perfuradas. Como exemplo, considerar o comprimento de código mãe de Nmax = 16. Ambos o codificador e odecodificador armazenam a sequência Q015 = [0 1 2 4 8 3 5 6 9 10 12 7 11 13 14 15]. Existem 4 bits (4 = N-M) a serem perfurados para obter o comprimento de código M. Calcular o padrão de perfuração P de comprimento 4 pela inversão de bits da sequência de [12(1100), 13(1101), 14(1110),15(1111)] (= [M, ..., N-3, N-2, N-1]) como P = [3(0011),11(1011), 7(0111), 15(1111)] = [InvBit(M), ..., InvBit(N-3), InvBit (N-2), InvBit(N-1)].
[00111] O conjunto PC congelado (PF) pode ser determinado dependendo das confiabilidades de polarização, pesos de linha de kernel Kronecker e pesos de Hamming em termos de índice de subcanais e padrão de encurtamento/perfuração (P). O(s) peso(s) mínimo(s) de linha (wmin) dentro de um subconjunto de subcanais mais confiáveis e tamanhos de cada conjunto PC congelado (f1, f2) podem ser determinados com base na taxa de código e comprimento de bloco de informações.
[00112] A seguir é apresentada uma técnica de cinco etapas de incorporação para codificar uma sequência de bits de informação.
[00113] Na primeira etapa, o codificador pode calcular o número de subcanais PC candidatos congelados de acordo com Fp = log2 N x (α-|α x (K/M — 1/2) |2). O número total de bits PC congelados identificados pode ser menor que ou igual a N- K (quando igual a N-K, todos os bits congelados são tratados como bits PC congelados). Na prática, Fp pode ser limitado superiormente por (N-K)/2, e α é definido como um valor maior que 1, por exemplo, α = 1,5. Em algumas outras modalidades, Fp pode ter uma função diferente de N, M e K ou ser fixo.
[00114] Na segunda etapa, o codificador pode mover os subcanais perfurados/encurtados para a esquerda, e em seguida dividir os subcanais remanescentes em dois subconjuntos em uma ordem ascendente de confiabilidades. Um exemplo disto é representado pela Figura21.
[00115] Na terceira etapa, o codificador pode encontrar o menor peso de linha dentro do subconjunto (K+Fp) dos subcanais e representá-lo como wmin, calcular f1 = (Fp + min(Fp,n))/2, f2 = (Fp - min(Fp,n))/2. Se o número de subcanais com peso wmin no subconjunto (K+Fp) for menor que f1, então definir f1 = n e adicionar metade da quantidade remanescente em fi a f2, isto é, f2 = f2 + (fi-n)/2.
[00116] Na quarta etapa, o codificador pode selecionar os subcanais PC candidatos congelados no subconjunto (K+Fp). Ao fazer isto, o codificador pode selecionar fi subcanais com um peso de linha de wmin da direita para a esquerda e selecionar f2 subcanais com um peso de linha de 2xwmin da direita para a esquerda como subcanais PC congelados candidatos. Em algumas outras modalidades, um subconjunto de Fp subcanais pode ser determinado com base no peso de linha wmin, e um subconjunto remanescente de Fp subcanais pode ser determinado com ao menos uma outra métrica, tal como os subcanais menos confiáveis dentro do subconjunto (K = Fp).
[00117] Na quinta etapa, o codificador pode determinar o conjunto de informações, o conjunto PC congelado e o conjunto congelado. Ao fazer isto, o codificador pode selecionar os subcanais de informações a partir da direita para a esquerda e pular os subcanais PC congelados candidatos até serem escolhidos K subcanais. O codificador pode em seguida selecionar os subcanais remanescentes como os subcanais congelados, e selecionar a partir dos subcanais congelados posições que têm um peso de linha igual àquele dos subcanais PC congelados candidatos (isto é, wmin e 2xwmin) como subcanais PC congelados adicionais. Em algumas outras modalidades, todos os subcanais congelados poderiam ser selecionados como subcanais PC congelados adicionais. Se um bit PC congelado estiver antes do primeiro bit de informação, então pode ser equivalente a um bit congelado.
[00118] O codificador pode executar uma função de verificação de paridade baseada em um deslocamento cíclico em um registro. O comprimento do registro pode ser um número primo. O codificador pode inicializar um registro de deslocamento cíclico de comprimento p, y[0], ..., y(p-1], para i = 0 até N-1. Começando do primeiro bit em ordem de números naturais, o codificador pode ler o bit de ordem i, αi, e deslocar ciclicamente para a esquerda o registro bit por bit. Se αi for um bit de informação, então o valor de bit permanece inalterado, e o codificador atualiza y[0] = (αiXOR y[0]). Se αi for um bit PC, o codificador define αi = y[0]. Se αi for um bit congelado, então o codificador define αi = 0.
[00119] A Figura 22 ilustra uma operação de registro de deslocamento de ciclo de incorporação usada por um decodificador PC SCL (verificação de paridade). Uma função PC pode ser definida por uma matriz PC W. O exemplo a seguir assumirá que o comprimento de bloco de código é M = 16, e o comprimento de bit de informação é K = 8. A partir disto, é possível obter a seguinte sequência ordenada Q de subcanais: [u0, u1, u2, u4, u8, u3, u5, u6, u9, u10, u12, u7, u11, u13, u14, u15]. Com base nas equações fornecidas acima (por exemplo, Fp = log2 N x (α-|α x (K/M — 1/2) |2), etc.), Fp é calculado como 6, e wmin e n são 2 e 3, respectivamente. Uma vez que N < Fp, f1=3 subcanais com peso de linha wmin=2 e f2 = 3 subcanais com peso de linha 2xdmin = 4 como bits PC congelados. Por ordem decrescente de confiabilidades, estes bits PC congelados são [u2, u4, u8, u9, u10, u12]. Os bits de informação e congelados adicionais são mapeados com base na confiabilidade de canal de acordo com Q. O conjunto de bits de informação é [u3, u5, u6, u7, u11, u13, u14, u15] e o conjunto de bits congelados é [u0, u1, u2, u4, u8, u9, u10, u12]. Ao selecionar os bits congelados com peso de linha 2 e 4, o conjunto de bits PC congelados é [u1, u2, u4, u8, u9, u10, u12]. Finalmente, um registro cíclico de comprimento primo com p = 5 é usado para construir funções de paridade para cada bit PC congelado em [u1, u2, u4, u8, u9, u10, u12]. O registro cíclico conecta os bits com um espaçamento constante 5. Particularmente, u1, u2, u4 e u9 são equivalentes a bits estáticos congelados. Adicionalmente, u8, u10 e u12 são mapeados para bits PC com base em funções de paridade de [u3, u8], [u5, u10] e [u7, u12], respectivamente, onde u3, u5 e u7 são bits de informação. A Figura 23 ilustra uma matriz de verificação de paridade para este exemplo. Como mostrado, W é obtido definindo u0, u1, u2, u4 como bits estáticos congelados, e definido u8, u10 e u12 como bits PC com base em funções de auto verificação de paridade de tal modo que u8=u3, u10=u5, u12=u7. A Tabela 4 lista as notações usadas por toda esta revelação.
Figure img0007
Tabela 4
[00120] A Figura 24 ilustra um método de incorporação 2400 para codificar uma sequência de bits de informação, como pode ser executado por um codificador. Na etapa 2410, o codificador calcula uma sequência de pesos de acordo com Wi
Figure img0008
(onde i é o índice de um subcanal, Bj é o valor de bit {0 ou 1} do dígito de ordem (j+1) da representação binária do subcanal i contando a partir do dígito menos importante), classifica Wi em uma ordem ascendente e salva a sequência ordenada de índices Qi. Na etapa 2420, o codificador calcula um padrão de perfuração/encurtamento, por exemplo, de acordo com P = [InvBit(M), InvBit(M+1), ..., InvBit(N-1)]. São também possíveis outros padrões de perfuração/encurtamento. Na etapa 2430, o codificador calcula Fp por Fp = log2 N x (α-|α x (K/M - 1/2) |2), divide os subcanais (em ordem ascendente de peso ou confiabilidade) em três subconjuntos: N-M, M-K- Fp, K+Fp, onde o conjunto K+Fp contém os subcanais mais confiáveis (quando é considerada perfuração/ encurtamento). O codificador também encontra wmin como o menor peso de linha dentro do subconjunto (K+Fp), encontra n como o número de subcanais no subconjunto (K+Fp) com o mesmo wmin, calcula f1 = (Fp + min(Fp,n))/2 e calcula f2 = (Fp - min(Fp,n))/2. Na etapa 2440, o codificador reserva ou de outro modo aloca subcanais candidatos para bits PC no subconjunto K+Fp pela escolha de f1 subcanais com peso wmin e f2 subcanais com peso 2*wmin. Em algumas modalidades, Fp poderia ser um valor fixo, por exemplo, 3. Em outras modalidades, apenas um subconjunto de Fp subcanais para bits PC são selecionados com base no peso de linha wmin e/ou 2*wmin, e um subconjunto remanescente de Fp subcanais para bits PC é selecionado com base em ao menos outra métrica, por exemplo, os subcanais menos confiáveis dentro dos K+Fp subcanais mais confiáveis. Logo que os subcanais PC candidatos tenham sido alocados, o codificador também aloca K subcanais (remanescentes mais confiáveis) no subconjunto K+Fp (isto é, pulando os subcanais PC candidatos reservados) e mapeia bits de informação naquele para obter o conjunto de Informação I. O codificador também mapeia bits congelados para os subcanais remanescentes (por exemplo, o subconjunto N-M e/ou M-K-Fp) para obter um Conjunto Congelado (F). Em outras modalidades, o codificador reserva ou aloca subcanais adicionais para bits PC a partir do conjunto congelado F. Os subcanais adicionais escolhidos a partir do conjunto congelado F podem ter pesos de linha iguais a wmin e/ou 2*wmin, ou todo o conjunto congelado F poderia ser tratado como os subcanais adicionais para bits PC. Os subcanais reservados podem ser mapeados para bits PC para obter um conjunto PC congelado PF. Na etapa 2450, o codificador define valores dos bits PC com base em uma função de verificação de paridade usando um deslocamento cíclico em um registro. O registro pode ter um comprimento que é igual a um número primo. Dependendo da implementação, a ordem na qual os subcanais são alocados pode variar. Do mesmo modo, a ordem na qual os bits PC, os bits de informação ou os bits congelados são mapeados para os subcanais alocados pode também variar.
[00121] A Figura 25 ilustra um diagrama de blocos de um sistema de processamento de modalidade 2500 para executar os métodos de codificação descritos neste documento, o qual pode ser instalado em um dispositivo hospedeiro. Como mostrado, o sistema de processamento 2500 inclui um processador 2504, uma memória 2506, e interfaces 2510-2514, que podem (ou não) estar dispostos como mostrado na Figura 25. O processador 2504 pode ser qualquer componente ou coleção de componentes adaptado para executar computações e/ou outro processamento relacionado com tarefas tais como seleção, mapeamento e/ou outras operações de codificação ou operações de decodificação descritas neste documento, e a memória 2506 pode ser qualquer componente ou coleção de componentes adaptado para armazenar programação e/ou instruções para execução pelo processador 2504. Em uma modalidade, a memória 2506 inclui um meio não transitório legível por computador. As interfaces 2510, 2512, 1514 podem ser qualquer componente ou coleção de componentes que seja configurado para permitir que o sistema de processamento 2500 se comunique com outros dispositivos/componentes e/ou um usuário de modo a permitir a transmissão de dados codificados ou a recepção de sinais baseados em dados codificados. Por exemplo, uma ou mais das interfaces 2510, 2512, 2514 pode estar adaptada para comunicar mensagens de dados, de controle ou de gestão a partir do processador 2504 para aplicativos instalados no dispositivo hospedeiro e/ou em um dispositivo remoto. Como outro exemplo, uma ou mais das interfaces 2510, 2512, 2514 pode estar adaptada para permitir que um usuário ou dispositivo de usuário (por exemplo, computador pessoal (PC), etc.) interaja/comunique com o sistema de processamento 2500. O sistema de processamento 2500 pode incluir componentes adicionais não representados na Figura 25, tais como armazenamento de longo prazo (por exemplo, memória não volátil, etc.).
[00122] Em algumas modalidades, o sistema de processamento 2500 está incluído em um dispositivo de rede que acessa, ou de outro modo faz parte de uma rede de telecomunicações. Em um exemplo, o sistema de processamento 2500 está em um dispositivo do lado da rede em uma rede de telecomunicações sem fio ou com fio, tal como uma estação base, uma estação de retransmissão, um programador, um controlador, um portal, um roteador, um servidor de aplicativos, ou qualquer outro dispositivo na rede de telecomunicações. Em outras modalidades, o sistema de processamento 2500 está em um dispositivo do lado do usuário que acessa uma rede de telecomunicações sem fio ou com fio, tal como uma estação móvel, um equipamento de usuário (UE), um dispositivo sem fio, um computador pessoal (PC), um tablet, um dispositivo de comunicações vestível (por exemplo, relógio de pulso inteligente, etc.), ou qualquer outro dispositivo adaptado para acessar uma rede de telecomunicações.
[00123] Em algumas modalidades, uma ou mais das interfaces 2510, 2512, 2514 conecta o sistema de processamento 2500 a um transceptor adaptado para transmitir e receber sinalização pela rede de telecomunicações. A Figura 26 ilustra um diagrama de blocos de um transceptor 2600 adaptado para transmitir e receber sinalização ou dados codificados por uma rede de telecomunicações. O transceptor 2600 pode ser instalado em um dispositivo hospedeiro. Como mostrado, o transceptor 2600 compreende uma interface do lado da rede 2602, um acoplador 2604, um transmissor 2606, um receptor 2608, um processador de sinais 2610 e uma interface do lado do dispositivo 2612. A interface do lado da rede 2602 pode incluir qualquer componente ou coleção de componentes adaptado para transmitir ou receber sinalização por uma rede de telecomunicações sem fio ou com fio. O acoplador 2604 pode incluir qualquer componente ou coleção de componentes adaptado para facilitar comunicação bidirecional pela interface do lado da rede 2602. O transmissor 2606 pode incluir qualquer componente ou coleção de componentes (por exemplo, conversor ascendente, amplificador de potência, etc.) adaptado para converter um sinal de banda base em um sinal modulado de portadora adequado para transmissão pela interface do lado da rede 2602. O receptor 2608 pode incluir qualquer componente ou coleção de componentes (por exemplo, conversor descendente, amplificador de ruído baixo, etc.) adaptado para converter um sinal de portadora recebido pela interface do lado da rede 2602 em um sinal de banda base. O processador de sinais 2610 pode incluir qualquer componente ou coleção de componentes adaptado para converter um sinal de banda base em um sinal de dados adequado para comunicação pela(s) interface(s) do lado do dispositivo 2612, ou vice- versa. A(s) interface(s) do lado do dispositivo 2612 pode(m) incluir qualquer componente ou coleção de componentes adaptado para comunicar dados-sinais entre o processador de sinais 2610 e componentes dentro do dispositivo hospedeiro (por exemplo, o sistema de processamento 2500, portas de rede de área local (LAN), etc.). O transceptor 2600 pode transmitir e receber sinalização por qualquer tipo de meio de comunicações. Em algumas modalidades, o transceptor 2600 transmite e recebe sinalização por um meio sem fio. Por exemplo, o transceptor 2600 pode ser um transceptor sem fio adaptado para comunicação de acordo com um protocolo de telecomunicações sem fio, tal como um protocolo celular (por exemplo, evolução a longo prazo (LTE), etc.), um protocolo de rede sem fio de área local (WLAN) (por exemplo, Wi-Fi, etc.), ou qualquer tipo de protocolo sem fio (por exemplo, Bluetooth, comunicação de campo próximo (NFC), etc.). Em tais modalidades, a interface do lado da rede 2602 compreende um ou mais elementos de antena/irradiação. Por exemplo, a interface do lado da rede 2602 pode incluir uma única antena, múltiplas antenas separadas, ou um conjunto de múltiplas antenas configuradas para comunicação multicamada, por exemplo, única entrada múltiplas saídas (SIMO), múltiplas entradas, única saída (MISO), múltiplas entradas múltiplas saídas (MIMO), etc. Em outras modalidades, o transceptor 2600 transmite e recebe sinalização por um meio com fio, por exemplo, cabo de par trançado, cabo coaxial, fibra ótica, etc. Sistemas de processamento específico e/ou transceptores podem utilizar todos os componentes mostrados, ou apenas um subconjunto dos componentes, e os níveis de integração podem variar de dispositivo para dispositivo.

Claims (11)

1. Método para um dispositivo para codificação de dados com um código polar, o método compreendendo: com um codificador do dispositivo, codificar por polarização bits de informação e pelo menos um bit de verificação de paridade usando o código polar para obter dados codificados, onde o código polar é associado a uma pluralidade de subcanais de uma matriz Kronecker, e a pluralidade de subcanais são ordenados com base em uma métrica de confiabilidade, e o pelo menos um bit de verificação de paridade é colocado em pelo menos um subcanal da pluralidade de subcanais, caracterizado pelo fato de que a matriz Kronecker é produzida a partir de um kernel Arikan e o pelo menos um subcanal é selecionado a partir de um segmento de uma pluralidade de segmentos da pluralidade de subcanais, o pelo menos um subcanal tem um peso de linha mínimo (710, 720, 730) do segmento da pluralidade de segmentos da pluralidade de subcanais, um peso de linha de um subcanal é um número de uns na respectiva linha da matriz Kronecker, a linha correspondendo a um respectivo subcanal da pluralidade de subcanais; e produzir como saída os dados codificados (740).
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o segmento da pluralidade de segmentos da pluralidade de subcanais ordenados compreende K subcanais dos subcanais ordenados, cada um dos K subcanais tendo uma maior métrica de confiabilidade que os subcanais de um segmento No-K dos subcanais ordenados, onde K é um comprimento de bloco de informações e N0 é um comprimento de código mãe.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o pelo menos um subcanal é selecionado a partir dos K subcanais do segmento da pluralidade de segmentos da pluralidade de subcanais ordenados tal que: se um número n de subcanais selecionados a partir dos K subcanais for maior que um valor predeterminado F, F subcanais são selecionados a partir dos K subcanais com base no peso mínimo e em uma ordem decrescente da métrica de confiabilidade.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que compreende ainda com o codificador, gerar um valor para cada um dos pelo menos um bit de verificação de paridade usando um registro de deslocamento cíclico tendo um comprimento de 5.
5. Dispositivo para codificação de dados com um código polar, caracterizado pelo fato de o dispositivo ser configurado para implementar etapas em um método como definido em qualquer uma das reivindicações 1 a 4.
6. Método de decodificação para um dispositivo, compreendendo: receber, a partir de outro dispositivo, um sinal baseado em dados codificados, os dados codificados produzidos por codificação com um código polar, bits de informação e pelo menos um bit de verificação de paridade, em que o código polar é associado a uma pluralidade de subcanais de uma matriz Kronecker, e a pluralidade de subcanais são ordenados com base em uma métrica de confiabilidade, e o pelo menos um bit de verificação de paridade é colocado em pelo menos um subcanal da pluralidade de subcanais, caracterizado pelo fato de que a matriz Kronecker é produzida a partir de um kernel Arikan e o pelo menos um subcanal é selecionado a partir de um segmento de uma pluralidade de segmentos da pluralidade de subcanais, o pelo menos um subcanal tem um peso de linha mínimo do segmento da pluralidade de segmentos da pluralidade de subcanais, um peso de linha de um subcanal é um número de uns na respectiva linha da matriz Kronecker, a linha correspondendo a um respectivo subcanal da pluralidade de subcanais; e decodificar o sinal usando o código polar e o pelo menos um bit de verificação de paridade para obter os bits de informação.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que o segmento da pluralidade de segmentos da pluralidade de subcanais ordenados compreende K subcanais dos subcanais ordenados, cada um dos K subcanais tendo uma maior métrica de confiabilidade que os subcanais de um segmento N0-K dos subcanais ordenados, onde K é um comprimento de bloco de informações e N0 é um comprimento de código mãe.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que o pelo menos um subcanal é selecionado a partir dos K subcanais do segmento da pluralidade de segmentos da pluralidade de subcanais ordenados tal que:se um número n de subcanais selecionados a partir dos K subcanais for maior que um valor predeterminado F, F subcanais são selecionados a partir dos K subcanais com base no peso mínimo e em uma ordem decrescente da métrica de confiabilidade.
9. Método, de acordo com qualquer uma das reivindicações 6 a 8, caracterizado pelo fato de que um valor para cada um dos pelo menos um bit de verificação paridade é gerado usando um registro de deslocamento cíclico tendo um comprimento de 5.
10. Dispositivo para decodificação com um código polar, caracterizado pelo fato de o dispositivo ser configurado para implementar etapas em um método como definido em qualquer uma das reivindicações 6 a 9.
11. Meio legível por computador que armazena instruções nele, caracterizado pelo fato de que, quando as instruções são executadas, fazem um dispositivo executar o método conforme definido em qualquer uma das reivindicações 1 a 4 e 6 a 9.
BR112019005074-4A 2016-09-15 2017-09-13 Método para um dispositivo para codificação de dados com um código polar, dispositivo para codificação de dados com um código polar, método de decodificação para um dispositivo, dispositivo para decodificação com um código polar, e meio legível por computador BR112019005074B1 (pt)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201662395312P 2016-09-15 2016-09-15
US62/395,312 2016-09-15
US201662396618P 2016-09-19 2016-09-19
US201662402862P 2016-09-30 2016-09-30
US201662432448P 2016-12-09 2016-12-09
US201662432416P 2016-12-09 2016-12-09
US62/432,416 2016-12-09
US62/432,448 2016-12-09
US201662433127P 2016-12-12 2016-12-12
US62/433,127 2016-12-12
US15/699,976 US10644829B2 (en) 2016-09-15 2017-09-08 Method and apparatus for encoding data using a polar code
US15/699,976 2017-09-08
PCT/CN2017/101531 WO2018050063A1 (en) 2016-09-15 2017-09-13 Method and apparatus for encoding data using a polar code

Publications (2)

Publication Number Publication Date
BR112019005074A2 BR112019005074A2 (pt) 2019-07-09
BR112019005074B1 true BR112019005074B1 (pt) 2023-02-14

Family

ID=61560541

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112019004937A BR112019004937A2 (pt) 2016-09-15 2017-09-13 método e aparelho para codificação de dados usando um código polar
BR112019005074-4A BR112019005074B1 (pt) 2016-09-15 2017-09-13 Método para um dispositivo para codificação de dados com um código polar, dispositivo para codificação de dados com um código polar, método de decodificação para um dispositivo, dispositivo para decodificação com um código polar, e meio legível por computador

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112019004937A BR112019004937A2 (pt) 2016-09-15 2017-09-13 método e aparelho para codificação de dados usando um código polar

Country Status (11)

Country Link
US (7) US10644829B2 (pt)
EP (3) EP3940961A1 (pt)
JP (2) JP6859429B2 (pt)
KR (2) KR102199298B1 (pt)
CN (4) CN110855299B (pt)
AU (2) AU2017326022B2 (pt)
BR (2) BR112019004937A2 (pt)
CA (2) CA3036759C (pt)
MY (1) MY195393A (pt)
WO (2) WO2018050063A1 (pt)
ZA (2) ZA201901831B (pt)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016110275A1 (zh) * 2015-01-08 2016-07-14 上海交通大学 一种基于媒体内容的fec机制
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
US11043966B2 (en) 2016-05-11 2021-06-22 Qualcomm Incorporated Methods and apparatus for efficiently generating multiple lifted low-density parity-check (LDPC) codes
US10454499B2 (en) 2016-05-12 2019-10-22 Qualcomm Incorporated Enhanced puncturing and low-density parity-check (LDPC) code structure
US10469104B2 (en) 2016-06-14 2019-11-05 Qualcomm Incorporated Methods and apparatus for compactly describing lifted low-density parity-check (LDPC) codes
US10644829B2 (en) * 2016-09-15 2020-05-05 Huawei Technologies Co., Ltd. Method and apparatus for encoding data using a polar code
WO2018058352A1 (en) * 2016-09-28 2018-04-05 Qualcomm Incorporated Sub-channel mapping
US10484130B2 (en) 2016-09-30 2019-11-19 Huawei Technologies Co., Ltd. Method and device for parallel polar code encoding/decoding
WO2018107430A1 (en) * 2016-12-15 2018-06-21 Qualcomm Incorporated Crc bits for joint decoding and verification of control information using polar codes
CN117375765A (zh) * 2017-01-05 2024-01-09 华为技术有限公司 速率匹配方法、编码装置和通信装置
CN115720128A (zh) 2017-01-09 2023-02-28 中兴通讯股份有限公司 一种数据处理方法和装置
CN108289010B (zh) * 2017-01-09 2022-04-15 中兴通讯股份有限公司 一种数据处理方法和装置
CN108575116B (zh) * 2017-01-09 2019-09-24 联发科技股份有限公司 比特映射方法及其发送装置
WO2018129695A1 (en) * 2017-01-12 2018-07-19 Qualcomm Incorporated Puncturing and repetition for data encoding
CN108365914B (zh) * 2017-01-26 2023-04-18 华为技术有限公司 Polar码编译码方法及装置
US10608786B2 (en) * 2017-02-24 2020-03-31 Huawei Technologies Co., Ltd. Apparatus and methods of specifying ordered sequences of coding sub-channels
US11070237B2 (en) * 2017-03-23 2021-07-20 Qualcomm Incorporated Parity bit channel assignment for polar coding
CN107342844B (zh) 2017-03-24 2022-09-02 华为技术有限公司 一种编码方法和装置
JP7357541B2 (ja) * 2017-04-20 2023-10-06 クアルコム,インコーポレイテッド ポーラ符号のための動的凍結ビットおよび誤り検出
CN108809486B (zh) * 2017-05-03 2020-09-04 华为技术有限公司 Polar码编译码方法及装置
EP3622646B1 (en) * 2017-05-08 2020-10-21 Coherent Logix, Inc. Enhanced polarization weighting to enable scalability in polar code bit distribution
CN107425857A (zh) 2017-06-19 2017-12-01 华为技术有限公司 一种极化码编译码方法及装置
CN109286402B (zh) * 2017-07-21 2022-01-14 华为技术有限公司 一种Polar码编码方法及装置
WO2019047206A1 (en) * 2017-09-11 2019-03-14 Qualcomm Incorporated PHYSICAL DIFFUSION CHANNEL DESIGN FOR POLAR CODES
CN111434042A (zh) * 2017-11-15 2020-07-17 Idac控股公司 利用极性码进行urllc传输
KR102438982B1 (ko) * 2017-11-16 2022-09-01 삼성전자주식회사 무선 통신 시스템에서 부호화 및 복호화를 위한 방법 및 장치
US10540379B2 (en) * 2017-12-11 2020-01-21 International Business Machines Corporation Searching base encoded text
KR102550075B1 (ko) * 2018-03-23 2023-06-30 삼성전자주식회사 무선 통신 시스템에서 순환 중복 검사를 이용한 복호화를 위한 장치 및 방법
KR102541319B1 (ko) 2018-03-29 2023-06-08 삼성전자주식회사 무선 통신 시스템에서 극 부호를 이용한 부호화 및 복호화를 위한 장치 및 방법
CN108809329B (zh) * 2018-05-03 2021-09-28 东南大学 一种能同时处理极化码和ldpc码的bp译码器的配置方法
EP3570442A1 (en) * 2018-05-17 2019-11-20 Industrial Technology Research Institute Compact transmission of polar encoded dci with repetition for 5g communication systems
CN110752891B (zh) * 2018-07-24 2022-04-29 中兴通讯股份有限公司 极化码译码方法及装置、存储介质、电子装置
CN109450457B (zh) * 2018-08-09 2022-05-24 山东科技大学 一种码长自由的极化码编码方法
US11050519B2 (en) * 2018-09-14 2021-06-29 Idac Holdings, Inc. Methods, apparatus, systems and procedures for hybrid automatic repeat requests (HARQs) using polar codes
US10644835B1 (en) 2018-10-12 2020-05-05 Samsung Electronics Co., Ltd. System and method for interleaving distributed CRC in polar codes for early termination
KR102632560B1 (ko) * 2018-10-19 2024-02-02 삼성전자주식회사 경로 메트릭을 이용하여 입력 데이터를 디코딩하는 장치 및 이를 이용하는 디코딩 방법
CN114172617A (zh) 2018-11-16 2022-03-11 华为技术有限公司 Polar码编码方法及装置
CN111385059B (zh) * 2018-12-27 2021-08-31 华为技术有限公司 极化编码调制的方法和装置
CN111446969B (zh) * 2019-01-17 2023-10-20 华为技术有限公司 一种级联crc码的极化码编码方法及装置
CN109889307B (zh) * 2019-01-24 2021-06-01 东南大学 一种基于组合极化码的打孔方法
CN111756384B (zh) * 2019-03-28 2022-08-26 华为技术有限公司 译码方法、装置及设备
KR20210006807A (ko) 2019-07-09 2021-01-19 삼성전자주식회사 통신 시스템에서 신호 송수신 장치 및 방법
CN110380737B (zh) * 2019-07-12 2020-10-02 北京邮电大学 一种极化码距离谱分析的方法及装置
EP3813278B1 (en) * 2019-10-22 2023-03-01 Mitsubishi Electric R&D Centre Europe B.V. Multilevel polar-coded modulation transmitting and receiving methods and devices
CN111130566B (zh) * 2019-12-18 2021-05-11 清华大学 Polar码译码器中寻找L个最大路径度量值的电路实现方法
US11418220B2 (en) 2020-03-20 2022-08-16 Huawei Technologies Co., Ltd. Method, system, and apparatus for a segmented polarization-adjusted convolutional (PAC) code
CN113541698B (zh) * 2020-04-22 2022-07-12 华为技术有限公司 编码、译码方法、装置及设备
CN112087285B (zh) * 2020-09-10 2021-07-20 西南交通大学 基于码距与极化信道可靠度的极化码比特反转译码方法
US11515964B2 (en) * 2021-01-29 2022-11-29 Huawei Technologies Co., Ltd. Systems and methods for using not perfectly polarized bit channels in parallel polar codes
CN113438023B (zh) * 2021-06-18 2022-08-05 重庆理工大学 一种自由空间光通信中极化码级联编码方法及装置
US11791844B2 (en) * 2021-12-22 2023-10-17 Huawei Technologies Co., Ltd. Systems and methods for using special nodes for polar encoding in polar codes

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317715A (en) * 1987-12-15 1994-05-31 Advanced Micro Devices, Inc. Reduced instruction set computer system including apparatus and method for coupling a high performance RISC interface to a peripheral bus having different performance characteristics
US6307868B1 (en) * 1995-08-25 2001-10-23 Terayon Communication Systems, Inc. Apparatus and method for SCDMA digital data transmission using orthogonal codes and a head end modem with no tracking loops
US6625219B1 (en) 1999-02-26 2003-09-23 Tioga Technologies, Ltd. Method and apparatus for encoding/framing for modulated signals over impulsive channels
US20020194571A1 (en) 2001-06-13 2002-12-19 Michael Parr System and method of coding cyclic redundancy check bits to enhance frequency reuse in a communications network
US7406647B2 (en) 2001-12-06 2008-07-29 Pulse-Link, Inc. Systems and methods for forward error correction in a wireless communication network
US20040019845A1 (en) * 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
US7392464B1 (en) * 2004-04-30 2008-06-24 Marvell International Ltd. Universal parity encoder
KR101102396B1 (ko) 2006-02-08 2012-01-05 엘지전자 주식회사 이동통신 시스템에서의 코드워드 크기 정합 방법 및 송신장치
US8312323B2 (en) * 2006-12-22 2012-11-13 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network and reporting a failed migration operation without accessing the data being moved
CN101325474B (zh) * 2007-06-12 2012-05-09 中兴通讯股份有限公司 Ldpc码的混合自动请求重传的信道编码及调制映射方法
US8386879B2 (en) * 2007-08-23 2013-02-26 Nec Laboratories America, Inc. GLDPC encoding with Reed-Muller component codes for optical communications
US8233532B2 (en) 2007-09-21 2012-07-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal, apparatus and method for encoding an information content, and apparatus and method for error correcting an information signal
US8776161B2 (en) 2008-02-12 2014-07-08 Ciena Corporation Systems and methods for video processing in network edge devices
US20090271686A1 (en) 2008-04-28 2009-10-29 Qualcomm Incorporated Communication signal decoding with iterative cooperation between turbo and reed-solomon decoding
US8327234B2 (en) * 2009-02-27 2012-12-04 Research In Motion Limited Code block reordering prior to forward error correction decoding based on predicted code block reliability
US8352827B2 (en) * 2009-06-25 2013-01-08 Nec Laboratories America, Inc. LDPC hard decision decoder for high-speed wireless data communications
EP2486697B1 (en) 2009-10-06 2013-12-11 Thomson Licensing A method and apparatus for hop-by hop reliable multicast in wireless networks
US9116826B2 (en) 2010-09-10 2015-08-25 Trellis Phase Communications, Lp Encoding and decoding using constrained interleaving
US8879640B2 (en) * 2011-02-15 2014-11-04 Hong Kong Applied Science and Technology Research Institute Company Limited Memory efficient implementation of LDPC decoder
CN102164025B (zh) * 2011-04-15 2013-06-05 北京邮电大学 基于重复编码和信道极化的编码器及其编译码方法
CN102122966B (zh) * 2011-04-15 2012-11-14 北京邮电大学 基于信道极化的交错结构重复码的编码器及其编译码方法
CN102694625B (zh) * 2012-06-15 2014-11-12 北京邮电大学 一种循环冗余校验辅助的极化码译码方法
CN103516476B (zh) 2012-06-29 2016-12-21 华为技术有限公司 编码方法和设备
CN103684477B (zh) * 2012-09-24 2017-02-01 华为技术有限公司 混合极性码的生成方法和生成装置
AU2013234368B2 (en) * 2012-10-01 2016-08-18 Hybrid Electronics Australia Pty. Ltd. Residual current device (rcd) with earth current sensing
CN108650057B (zh) * 2012-10-17 2023-10-13 华为技术有限公司 一种编译码的方法、装置及系统
CN107659384A (zh) 2012-11-16 2018-02-02 华为技术有限公司 数据处理的方法和装置
KR102007770B1 (ko) 2012-12-14 2019-08-06 삼성전자주식회사 패킷의 부호화 방법과 그 복호화 장치 및 방법
KR101951663B1 (ko) 2012-12-14 2019-02-25 삼성전자주식회사 Crc 부호와 극 부호에 의한 부호화 방법 및 장치
US9304859B2 (en) 2012-12-29 2016-04-05 Emc Corporation Polar codes for efficient encoding and decoding in redundant disk arrays
CN103023618B (zh) * 2013-01-11 2015-04-22 北京邮电大学 一种任意码长的极化编码方法
US9362956B2 (en) 2013-01-23 2016-06-07 Samsung Electronics Co., Ltd. Method and system for encoding and decoding data using concatenated polar codes
US9235467B2 (en) * 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
CN104079370B (zh) 2013-03-27 2018-05-04 华为技术有限公司 信道编译码方法及装置
CN103281166B (zh) * 2013-05-15 2016-05-25 北京邮电大学 一种基于极化码的混合自动重传请求传输方法
CN104219019B (zh) * 2013-05-31 2021-06-22 华为技术有限公司 编码方法及编码设备
US9459956B2 (en) * 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
WO2015053788A1 (en) 2013-10-11 2015-04-16 Hewlett-Packard Development Company, L.P. Utilizing collected data from a software-defined networking network to diagnose a user experience
US9489256B2 (en) * 2013-11-07 2016-11-08 Seagate Technology Llc Device quality metrics using unsatisfied parity checks
KR101496182B1 (ko) * 2013-12-16 2015-03-09 성균관대학교산학협력단 최소거리가 확장된 극 부호 생성 방법 및 장치
JP6184603B2 (ja) 2013-12-24 2017-08-23 華為技術有限公司Huawei Technologies Co.,Ltd. Polarコード復号方法および復号装置
US10193578B2 (en) * 2014-07-10 2019-01-29 The Royal Institution For The Advancement Of Learning / Mcgill University Flexible polar encoders and decoders
US9722651B2 (en) * 2015-01-09 2017-08-01 Qualcomm Incorporated Adaptive channel coding using polarization
US10298271B2 (en) 2015-02-03 2019-05-21 Infineon Technologies Ag Method and apparatus for providing a joint error correction code for a combined data frame comprising first data of a first data channel and second data of a second data channel and sensor system
CN105099622B (zh) * 2015-07-01 2018-10-19 北京邮电大学 极化编码调制中信道可靠度的确定方法及装置
CN105680883B (zh) * 2015-12-23 2017-11-14 华中科技大学 一种极化码和多比特奇偶校验码级联的纠错编码方法
CN105656604B (zh) * 2016-01-21 2019-03-26 北京邮电大学 一种比特交织极化编码调制方法及装置
CN105743621B (zh) * 2016-02-02 2019-03-26 北京邮电大学 基于极化码的harq信号发送、接收方法及装置
CN105811998B (zh) 2016-03-04 2019-01-18 深圳大学 一种基于密度演进的极化码构造方法及极化码编译码系统
US10728080B2 (en) 2016-05-20 2020-07-28 Qualcomm Incorporated Polar codes and modulation mappings
EP3273602B1 (en) 2016-07-19 2022-01-26 MediaTek Inc. Low complexity rate matching design for polar codes
US10389484B2 (en) 2016-07-29 2019-08-20 Lg Electronics Inc. Method for performing polar coding and apparatus therefor
CN107666370B (zh) 2016-07-29 2023-09-22 华为技术有限公司 编码方法和设备
CN109661787A (zh) 2016-08-10 2019-04-19 Idac控股公司 用于控制信息的基于优先级的信道编码
US10644829B2 (en) 2016-09-15 2020-05-05 Huawei Technologies Co., Ltd. Method and apparatus for encoding data using a polar code
WO2018201409A1 (en) 2017-05-04 2018-11-08 Nokia Technologies Oy Coding apparatus for polar codes

Also Published As

Publication number Publication date
CA3036916A1 (en) 2018-03-22
CN109716662B (zh) 2024-01-30
EP3510699A1 (en) 2019-07-17
US20180076929A1 (en) 2018-03-15
EP3510699B1 (en) 2021-06-02
JP6881859B2 (ja) 2021-06-02
CN110855299A (zh) 2020-02-28
US10491326B2 (en) 2019-11-26
AU2017326021B2 (en) 2020-09-03
CA3036759C (en) 2022-05-10
WO2018050063A1 (en) 2018-03-22
KR20190052054A (ko) 2019-05-15
AU2017326021A1 (en) 2019-04-11
US20230046507A1 (en) 2023-02-16
CA3036759A1 (en) 2018-03-22
AU2017326022A1 (en) 2019-04-11
EP3510700A4 (en) 2019-09-04
US20200295867A1 (en) 2020-09-17
ZA201901831B (en) 2021-05-26
US11509414B2 (en) 2022-11-22
JP6859429B2 (ja) 2021-04-14
US10637607B2 (en) 2020-04-28
US20190089481A1 (en) 2019-03-21
US10700808B2 (en) 2020-06-30
CN110808813A (zh) 2020-02-18
BR112019004937A2 (pt) 2019-06-25
BR112019005074A2 (pt) 2019-07-09
EP3510700A1 (en) 2019-07-17
US10644829B2 (en) 2020-05-05
US20200092035A1 (en) 2020-03-19
US20190068316A1 (en) 2019-02-28
US11923973B2 (en) 2024-03-05
KR102199298B1 (ko) 2021-01-06
CN110808813B (zh) 2020-12-25
CN109804566A (zh) 2019-05-24
CN110855299B (zh) 2021-02-12
JP2019533345A (ja) 2019-11-14
WO2018050062A9 (en) 2018-04-12
JP2019530333A (ja) 2019-10-17
WO2018050062A1 (en) 2018-03-22
EP3510699A4 (en) 2019-09-04
EP3510700B1 (en) 2022-02-23
KR20190053899A (ko) 2019-05-20
MY195393A (en) 2023-01-18
US20180076922A1 (en) 2018-03-15
CA3036916C (en) 2021-08-24
US11374682B2 (en) 2022-06-28
EP3940961A1 (en) 2022-01-19
KR102206307B1 (ko) 2021-01-21
AU2017326022B2 (en) 2020-08-27
CN109716662A (zh) 2019-05-03
ZA201901830B (en) 2021-02-24

Similar Documents

Publication Publication Date Title
BR112019005074B1 (pt) Método para um dispositivo para codificação de dados com um código polar, dispositivo para codificação de dados com um código polar, método de decodificação para um dispositivo, dispositivo para decodificação com um código polar, e meio legível por computador
JP2020504508A (ja) Polar符号構築に用いる装置及び方法
CN108574561A (zh) 极化码编码的方法和装置
AU2018305459C1 (en) Polar coding method and apparatus

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 13/09/2017, OBSERVADAS AS CONDICOES LEGAIS