BRPI0514179B1 - Ldpc coding method - Google Patents

Ldpc coding method Download PDF

Info

Publication number
BRPI0514179B1
BRPI0514179B1 BRPI0514179-6A BRPI0514179A BRPI0514179B1 BR PI0514179 B1 BRPI0514179 B1 BR PI0514179B1 BR PI0514179 A BRPI0514179 A BR PI0514179A BR PI0514179 B1 BRPI0514179 B1 BR PI0514179B1
Authority
BR
Brazil
Prior art keywords
matrix
hbm
column
sub
petition
Prior art date
Application number
BRPI0514179-6A
Other languages
English (en)
Inventor
W. Blankenship Yufei
K. Classon Brian
Keith Blankenship T.
A. Desai Vipul
Original Assignee
Google Technology Holdings LLC
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=35758925&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0514179(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Google Technology Holdings LLC filed Critical Google Technology Holdings LLC
Publication of BRPI0514179A publication Critical patent/BRPI0514179A/pt
Publication of BRPI0514179B1 publication Critical patent/BRPI0514179B1/pt

Links

Classifications

    • 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/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
    • H03M13/6368Error control coding in combination with rate matching by puncturing using rate compatible puncturing or complementary puncturing
    • H03M13/6393Rate compatible low-density parity check [LDPC] 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
    • 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
    • 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1174Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC 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/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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • H03M13/1188Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

método e aparelho para codificar e decodificar dados é proposta uma matriz h de verificação de paridade estruturada, em que h é uma expansão de uma matriz base h~ b~ e em que h~ b2~ compreende uma primeira parte que compreende uma coluna h~ b~ tendo um peso ímpar maior que 2 e uma segunda parte que compreende elementos de matriz para a linha i, coluna j igual a 1 para i=j, 1 para i=j+1, e 0 nos demais lugares. a expansão da matriz base h~ b~ utiliza sub-matrizes idênticas para is em cada coluna da segunda parte h~ b2~, e a expansão utiliza sub-matrizes em pares para um número par de 1s em h~ b~.

Description

(54) Título: MÉTODO DE CODIFICAÇÃO LDPC (51) lnt.CI.: H03M 13/00; G06F 11/00 (30) Prioridade Unionista: 03/12/2004 US 11/004.359, 09/08/2004 US 60/600.005 (73) Titular(es): GOOGLE TECHNOLOGY HOLDINGS LLC (72) Inventor(es): YUFEI W. BLANKENSHIP; BRIAN K. CLASSON; T. KEITH BLANKENSHIP; VIPUL A. DESAI
1/25
MÉTODO DE CODIFICAÇÃO LDPC CAMPO DA INVENÇÃO [001] A presente invenção relaciona-se genericamente à codificação e decodificação de dados e, em particular, a um método e aparelho para codificar e decodificar dados utilizando códigos de verificação de paridade de baixa densidade (LDPC).
HISTÓRICO DA INVENÇÃO [002] Conforme é descrito no Pedido de Patente dos Estados Unidos número de série 10/839.995, que é aqui incorporado por referência, um código de verificação de paridade de baixa densidade (LDPC) é um código de bloco linear especificado por uma matriz de verificação de paridade H. Em geral, o código LDPC é definido por um Galois Field GP(q),q>2. Se q=2, o código é um código binário. Todos os códigos de bloco linear podem ser descritos como o produto de um vetor de informação de k-bit Sixk com uma matriz geradora de código Gkxn para produzir uma palavra de código de n-bit Xixn, em que a taxa de código é r=k/n. A palavra de código X é transmitida através de um canal ruidoso, e o vetor de sinal recebido y é passado para o decodificador para estimar o vetor de informação Sixk.
[003] Dado um espaço n-dimensional, as linhas de G abrangem o sub-espaço de palavra de código k-dimensional C, e as linhas da matriz de verificação de paridade HmXn abrangem o espaço dual m-dimensional C1, em que m=n-k Como x=sG e GHT=0, segue-se que xHT=0 para todas as palavras de código no sub-espaço C, em que T (ou T.) denota transposição de matriz. Na discussão de códigos LDPC, isto é geralmente escrito como
Petição 870170064730, de 31/08/2017, pág. 8/35
2/25
Ηχττ, (1) em que 0 é um vetor de linha de todos os zeros, e a palavra de código x=[s p] = [so, si, . . ., Sk-i, Po, Pi, . . ., Pm-i] , em que Po, . . ., Pm-i são os bits de verificação de paridade; e so, . . ., Sk-i são os bits sistemáticos, iguais aos bits de informação dentro do vetor de informação.
[004] Para um código LDPC a densidade de entradas nãozero em H é baixa, isto é, há apenas uma pequena porcentagem de l's em H, permitindo um melhor desempenho de correção de erro e uma decodificação mais simples do que utilizar um H denso. A matriz de verificação de paridade também pode ser descrita por um gráfico bipartido. O gráfico bipartido não é apenas uma descrição gráfica do código mas também um modelo para o decodificador. No gráfico bipartido, um bit de palavra de código (portanto, cada coluna de H) é representado por um nó variável à esquerda, e cada equação de verificação de paridade (portanto, cada linha de H) é representada por um nó de verificação à direita. Cada nó variável corresponde a uma coluna de H referidos intercambiavelmente, como o são nó de verificação e linha de H. Os nós variáveis são apenas conectados aos nós de verificação, e os nós de verificação são apenas conectados a nós variáveis. Para um código com n bits de palavra de código e m bits de paridade, o nó variável v± é conectado ao nó de verificação Cj por uma borda se o bit de palavra de código i participa na equação de verificação j, i=0,1,...,n-1, j=0,1,...,m-l. Em outras palavras, o nó variável i é conectado ao nó de verificação j se a entrada hji da matriz de verificação de paridade H for 1. Espelhando a Equação (1) , os nós variáveis
Petição 870170064730, de 31/08/2017, pág. 9/35
3/25 representam uma palavra de código válida se todos os nós de verificação tiverem uma paridade par.
[005] Um exemplo é mostrado abaixo para ilustrar o relacionamento entre a matriz de verificação de paridade, as equações de verificação de paridade, e o gráfico bipartido. Que n=12, taxa de 1/2 código seja definida por
Ί 0 1 ΰ ΰ ο! ι ί ΰ 0 0 ΰ'
0 I 0 0 1 0 ί 0 I i 0 0 0
0 0 Ϊ 0 0 ] ; ι 0 ΐ ι ΰ 0
1 0 ΰ 1 ΰ ΰ ; 0 0 0 1 I ΰ
0 1 0 0 1 0 Ε 0 r 0 0 0 I ί
0 0 ΰ 1 ΰ 1 ί 1 0 ΰ 0 ΰ ι-
n com a parte no lado esquerdo correspondente a k(=6) bits de informação S, a parte no lado direito correspondente a m(=6) bits de paridade p. Aplicando (1), o H em (2) define 6 equações de verificação de paridade conforme segue:
,TQ + x1 + j6 + x, =0 + .ν5 + λ; + λ'Ε +1, ~ 0 +Υ +A’s-r.V|0 =0 + =0
Η também tem ο gráfico bipartido correspondente mostrado na Figura 1.
[006] Como foi discutido acima, o receptor obtém uma versão contaminada y da palavra de código transmitida x. Para decodificar y e determinar a seqüência de informação original S, um algoritmo de decodificação iterativo, como a propagação de crença, é aplicado com base no gráfico
Petição 870170064730, de 31/08/2017, pág. 10/35
4/25 bipartido. Informação suave no formato de proporção de probabilidade log (LLRs) dos bits de palavra de código é passada entre o banco de nós variáveis e o banco de nós de verificação. A iteração é interrompida quer quando todas as equações de verificação são satisfeitas ou um limite de iteração permitida máximo for atingido.
[007] O projeto de código LDPC estruturado começa com uma pequena (mbxnb) matriz base Hb, faz z cópias de Hb, e interconecta as z cópias para formar uma grande (mxn) matriz H, em que m=mbxz, n=nbxz. Utilizando a representação da matriz, para construir um H de Hb, cada 1 em Hb é substituído por uma sub-matriz de permutação zxz, e cada 0 em Hb é substituído por uma sub-matriz zxz toda de zeros. Este procedimento essencialmente mapeia cada borda de Hb para uma borda vetora de comprimento z em H, cada nó variável de Hb para um nó variável vetor de comprimento z em H, e cada nó de verificação de Hb para um nó de verificação de vetor de comprimento z em H. Os benefícios da vetorização de uma pequena matriz Hb para construir uma grande matriz H são:
1. Ao utilizar valores diferentes de z, códigos da taxa kb/nb, em que kb=nb-mb, podem ser projetados para muitos tamanhos de seqüência de informação diferentes k=zxkb de uma única matriz base Hb;
2. Os requisitos de memória são grandemente reduzidos. Com um projeto LDPC estruturado, apenas a matriz base Hb e a permutação para seus l's precisa ser armazenada, o que requer significativamente menos memória, pois Hb é tipicamente bem menor que H e a permutação podem ser muito simples;
Petição 870170064730, de 31/08/2017, pág. 11/35
5/25
3. A codificação e a decodificação podem ser efetuadas em grupos de bits em vez de por bits individuais. Por exemplo, um grupo de z mensagens pode ser apanhado da memória, permutado, e passado entre um nó variável vetor e um nó de verificação vetor.
[008] Embora a filosofia de projeto LDPC estruturado reduza grandemente a complexidade da implementação, não existe uma técnica para projetar a matriz base e designar as matrizes de permutação para um tamanho H alvo dado que resulta em um código LDPC que tem um bom desempenho de correção de erro e pode ser eficientemente codificado e decodificado. Portanto, existe uma necessidade de um método e aparelho para projetar um H estruturado e um método e aparelho para codificar e decodificar dados utilizando a matriz H estruturada.
BREVE DESCRIÇÃO DOS DESENHOS [009] A Figura 1 ilustra o gráfico bipartido de uma matriz H (12,6).
[0010] A Figura 2 ilustra os relacionamentos entre a matriz base Hb, a matriz modelo Hbm, e a matriz expandida final H.
[0011] A Figura 3 é um diagrama de blocos de um codificador.
[0012] A Figura 4 é um diagrama de blocos de um decodifica-dor.
[0013] A Figura 5 é um fluxograma que mostra a operação do codificador da Figura 3.
[0014] A Figura 6 é um fluxograma que mostra a operação do decodificador da Figura 4.
DESCRIÇÃO DETALHADA DOS DESENHOS
Petição 870170064730, de 31/08/2017, pág. 12/35
6/25 [0015] Para enfrentar a necessidade citada acima, uma matriz de verificação de paridade estruturada H é proposta, em que H é uma expansão de uma matriz base Hb e em que Hb compreende uma seção Hbi e uma seção Hb2, e em que Hb2 compreende uma primeira parte que compreende uma coluna hb tendo um peso impar maior que 2, e uma sequnda parte que compreende elementos de matriz para a linha i, coluna j iqual a 1 para i=j, 1 para i=j+l, e 0 nos demais luqares. A expansão da matriz base Hb utiliza sub-matrizes idênticas para ls em cada coluna da sequnda parte Η%2, e a expansão utiliza sub-matrizes em pares para um número par de ls em
Hb.
[0016] A presente invenção abranqe um método para operar um transmissor que qera bits de verificação de paridade p= (po, . . .,pm-i) com base em um conjunto de símbolo corrente S= (So, . . ., Sk-i) , O método compreende as etapas de receber o conjunto de símbolos corrente S= (So, . . ., Sk-i) , e utilizar a matriz H para determinar os bits de verificação de paridade. Os bits de verificação de paridade são transmitidos juntamente com o conjunto de símbolos corrente. A matriz H é uma expansão de uma matriz base Hb em que Hb compreende uma seção Hbi e uma seção Hb2, e em que Hb2 compreende uma primeira parte que compreende uma coluna hb tendo um peso ímpar maior que 2, e uma sequnda parte H'b2, que compreende elementos de matriz para a linha i, a coluna j iqual a 1 para i=j, 1 para i=j+l, e 0 nos demais luqares. A expansão da matriz base Hb utiliza sub-matrizes idênticas para ls em cada coluna da sequnda parte Η%2, e em que a expansão utiliza sub-matrizes em pares para um número par de ls em hb.
Petição 870170064730, de 31/08/2017, pág. 13/35
7/25 [0017] A presente invenção abrange adicionalmente um método para operar um receptor que estima o conjunto de símbolos corrente S= (So, . . . , Sk-i) . O método compreende as etapas de receber um vetor de sinal recebido y= (yo, . . ., Yn-i) e utilizar a matriz H para estimar o conjunto de símbolos corrente S= (So, . . ., Sk-i) . A matriz H é uma expansão de uma matriz base Hb e em que Hb compreende uma seção Hbi e uma seção Hb2, com Hb2 compreendendo uma primeira parte que compreende uma coluna hb tendo um peso ímpar maior que 2, e uma segunda parte H'b2 que compreende elementos de matriz para a linha i, coluna j igual a 1 para i=j, 1 para i=j+l, e 0 nos demais lugares. A expansão da matriz base Hb utiliza sub-matrizes idênticas para ls em cada coluna da segunda parte H'b2, e em que a expansão utiliza submatrizes em pares para um número par de ls em hb.
[0018] A presente invenção abrange adicionalmente um aparelho que compreende meio de armazenamento para armazenar uma matriz H, um microprocessador que utiliza a matriz H para determinar bits de verificação de paridade,
em que H é uma expansão de uma matriz base Hb e Hb
compreende uma seção Hbi e uma seção Hb2, com Hb2
compreendendo uma primeira parte que compreende a coluna hb
tendo um peso ímpar maior que 2 , e uma segunda parte H ' b2
que compreende elementos de matriz para a linha i, coluna j igual a 1 para i=j, 1 para i=j+l, e 0 nos demais lugares. A expansão da matriz base Hb utiliza sub-matrizes idênticas para ls em cada coluna da segunda parte H'b2, e em que a expansão utiliza sub-matrizes em pares para um número par de ls em hb.
Petição 870170064730, de 31/08/2017, pág. 14/35
8/25 [0019] A presente invenção abrange um aparelho que compreende meio de armazenamento para armazenar uma matriz H, um receptor para receber um vetor de sinal y= (yo, . . ., yn1) , e um microprocessador que utiliza a matriz H para determinar um conjunto de símbolos corrente (So, . . . , Sk-i) . A matriz H é uma expansão de uma matriz base Hb com Hb compreendendo uma seção Hbi e uma seção Hb2, e em que Hb2 compreende uma primeira parte que compreende uma coluna hb tendo um peso ímpar maior que 2. Hb2 compreende uma segunda parte H'b2 tendo elementos de matriz para a linha i, coluna j igual a 1 para i=j, 1 para i=j+l, e 0 nos demais lugares. Duas sub-matrizes idênticas são utilizadas para expandir ls em cada coluna de H'b2, e sub-matrizes em pares são utilizadas para expandir um número par de ls em hb.
[0020] Passando agora para os desenhos, em que números iguais designam componentes iguais, a Figura 3 é um diagrama de blocos do codificador 300 de acordo com uma primeira versão da presente invenção. Conforme é mostrado, o codificador 300 compreende o microprocessador 301 e uma tabela de pesquisa 303. Na primeira versão da presente invenção, o microprocessador 301 compreende um processador de sinal digital (DSP) , como, mas sem a ele se limitar, os DSPs MSC8300 e DSP56300. Adicionalmente, a tabela de pesquisa 303 serve como meio de armazenamento para armazenar uma matriz, e compreende memória de apenas leitura; entretanto, alguém de habilidade ordinária na tecnologia reconhecerá que outras formas de memória (por exemplo, memória de acesso aleatória, memória de armazenamento magnético, etc.) também poderão ser utilizadas. Em uma segunda versão, a funcionalidade do
Petição 870170064730, de 31/08/2017, pág. 15/35
9/25 microprocessador 301 e da tabela de pesquisa 303 podem ser incorporadas dentro de um circuito integrado específico da aplicação (ASIC) ou malha de portal programável de campo (FPGA) . Em particular, a tabela de pesquisa 303 pode ser implementada em uma forma de memória que corresponde à existência ou a não existência de vias de sinal em um circuito.
[0021] Conforme foi discutido acima, dados codificados são geraimente emitidos como uma pluralidade de bits de verificação de paridade além dos bits sistemáticos, em que juntos o bit de verificação de paridade e os bits sistemáticos formam uma palavra de código x. Na primeira versão da presente invenção, uma matriz de verificação de paridade H é armazenada na tabela de pesquisa 303, e é acessada pelo microprocessador 301 para resolver a Equação (1). Em particular, o microprocessador 301 determina valores apropriados para os bits de verificação de paridade p= (po, . . .,pm-i) com base no conjunto de símbolos corrente S= (So, . . ., Sk-i) e a matriz de verificação de paridade H. Os bits de paridade e o conjunto de símbolos são então passados para um transmissor e transmitidos para um receptor.
[0022] A Figura 4 é um diagrama de blocos do decodificador 400 de acordo com uma versão da presente invenção. Como é mostrado, o decodificador 400 compreende o microprocessador 401 e a tabela de pesquisa 403. Em uma primeira versão da presente invenção, o microprocessador 401 compreende um processador de sinal digital (DSP) como, mas sem a eles se limitar, os DSPs MSC8300 e DSP56300. Adicionalmente, a tabela de pesquisa 403 age como meio de
Petição 870170064730, de 31/08/2017, pág. 16/35
10/25 armazenamento para armazenar a matriz H, e compreende memória de apenas leitura. No entanto, alguém de habilidade ordinária na tecnologia reconhecerá que outras formas de memória (por exemplo, memória de acesso aleatório, memória de armazenamento magnético, etc.) também poderão ser utilizadas. Em uma segunda versão, a funcionalidade do microprocessador 401 e da tabela de pesquisa 403 pode ser incorporada dentro de um circuito integrado específico da aplicação (ASIC) ou malha de portal programável de campo (FPGA) . Em particular, a tabela de pesquisa 403 pode ser implementada em uma forma de memória correspondente à existência ou a não existência de vias de sinal em um circuito.
[0023] O vetor de sinal recebido (recebido através de um receptor) y= (yo, . . ., yn-i) corresponde à palavra de código x transmitida através de um canal ruidoso, em que os dados codificados x, conforme foi discutido acima, é um vetor de palavra de código. Na primeira versão da presente invenção, uma matriz de verificação de paridade H é armazena na tabela de pesquisa 403, e é acessada pelo microprocessador 401 para decodificar y e estimar o conjunto de símbolos corrente S (isto é, o conjunto de símbolos corrente (So, . . ., Sk-i) . Em particular, o microprocessador 401 estima o conjunto de símbolos corrente (So, . . ., Sk-i) com base no vetor de sinal recebido y (yo, . . ., yn-i) e na matriz de verificação de paridade H.
[0024] Como é bem conhecido na tecnologia, há muitas maneiras em que o decodificador 400 pode utilizar a matriz de verificação de paridade H no microprocessador 401 para decodificação. Uma maneira assim é efetuar uma
Petição 870170064730, de 31/08/2017, pág. 17/35
11/25 multiplicação de matriz de vetor com H para determinar um padrão de erro provável. Outra maneira assim é utilizar H para construir um gráfico bipartido em que as bordas do gráfico correspondem a l's em H e processar iterativamente y no gráfico bipartido.
[0025] Para um LDPC estruturado, a sub-matriz zxz poderá ser uma matriz de permutação, a soma de matrizes de permutação, ou qualquer tipo de matriz binária. Como a matriz de permutação P tem um único 1 em cada linha e um único 1 em cada coluna, a distribuição ponderai da matriz H é o mesmo que a matriz base Hb se a sub-matriz de permutação for utilizada. Portanto, a distribuição ponderai de Hb é escolhida tão próximo da distribuição de peso final desejada quanto possível. A descrição seguinte é ilustrativa do caso em que as entradas de Hb são substituídas por matrizes de permutação, embora quaisquer matrizes poderão ser utilizadas. Se uma sub-matriz de permutação Pzxz de uma borda de vetor tem um 1 na (linha, coluna) entrada (p(i),i) então a iésima borda dentro da borda do vetor é permutada para a p(i)ésíma posição antes da borda do vetor ser conectada ao nó de verificação do vetor. Em outras palavras, esta permutação torna o iésimo nó variável dentro do nó variável de vetor relacionado conectado ao p(i)ésímo nó de verificação dentro do nó de verificação de vetor relacionado.
[0026] As permutações que compreendem H podem ser muito simples sem comprometer o desempenho, como a deslocamentos cíclicos simples e/ou reversões de bits. Por exemplo, um deslocamento para a direita circular simples pode ser utilizado. Com esta restrição, cada matriz H pode ser
Petição 870170064730, de 31/08/2017, pág. 18/35
12/25 singularmente representada por uma matriz modelo mbxnb de Hbm, que pode ser obtida por:
• substituição de cada 0 em Hb por -1 para denotar uma sub-matriz toda de zero zxz, e • substituição de cada hij=l em Hb por um deslocamento circular de tamanho p(i,j) em que p(i,j) é não negativo.
[0027] Como o deslocamento à esquerda circular (x mod z) vezes é equivalente a deslocamento à direita circular ((z-x) mod z) vezes, é adequado discutir deslocamento à direita circular e referir-se a ele como um deslocamento circular por brevidade. Como foi discutido anteriormente, há um mapeamento um-para-um entre H e Hbm. Portanto, Hbm é uma representação taquigráfica de H se z for dado. Notacionalmente, a matriz modelo é distinguida da matriz base pelo subscrito 'bm', e as matrizes expandidas são distinguidas pela remoção do subscrito 'bm'. O relacionamento entre as três matrizes é ilustrado na Figura 2. Utilizando a estrutura, o código tem um desempenho de correção de erro similar a uma H aleatória de tamanho mxn, enquanto a codificação e a decodificação são efetuadas com base em uma Hbm bem menor.
[0028] Por exemplo, a matriz da Equação (2
utilizada comc a matriz base Hb para construi.
modelo Hbm conforme segue:
' ] -1 ΰ — I -1 -1 í Ú 0 -J _i
-I 2—1-10 -!!- ΰ 0 -1 -I -1
-1 -1 1 -1 -! τ ι > -1 0 0-1 -1
2 -1 -1 ] -1 :,í:, 1 -1 -10 0 -1
-1 1 -1-10 -i !-] I -1 -1-1 0 0
-l -1 ~l 0 -1 1 1 0 -1 -l -1 -1 θ j
(4)
Petição 870170064730, de 31/08/2017, pág. 19/35
13/25 [0029] Quando z=3, Hbm é convertida para uma matriz H (mbxz) x (nbxz) ao substituir cada -1 por uma sub-matriz toda de zero de 3x3 e cada i com a sub-matriz Pi, i=0,l,2, em que
Ί 0 0’ '0 1 0 0 0 ]’
0 1 0 > p,= 0 0 ] 1 0 0
0 0 1 1 0 0 Ü 1 0 J
[0030] Observe que Po é a matriz de identidade, e as colunas de Pi, i>0, são as colunas de Po deslocadas à direita circular i vezes.
[0031] Dado um vetor q=[qO,ql,q2], qPo=[q0,ql,q2], qPi=[qO,ql,q2], qP2=[q0,ql,q2]. Em outras palavras, qPi resulta em deslocamento à direita circular do vetor q. Por outro lado, PiqT, resulta no deslocamento superior circular de qT, ou de modo equivalente, o deslocamento à esquerda circular esquerda de q. Regras similares aplicam-se quando uma matriz zxz Q é utilizada: QPi resulta no deslocamento à direita circular das colunas de Q, PiQ resulta no deslocamento superior circular das linhas de Q.
Matriz Base H [0032] Para um código LDPC sem vetorização, uma matriz H com uma estrutura de escada modificada para a parte de paridade de H leva a uma codificação eficiente sem comprometer o desempenho. Em geral, supondo x=[s p] = [So, Si, . . . , Sk-i, por pi, . . . , Pm-i] , uma matriz H m-por-n pode ser dividida em duas sub-matrizes,
H=[Hi H2] , (5) em que H2 tem uma estrutura de escada modificada, e Hi pode ser qualquer matriz binária de tamanho m-por-k. Esta mesma estrutura pode ser utilizada para construir a matriz base
Petição 870170064730, de 31/08/2017, pág. 20/35
14/25
Hb em um projeto LDPC estruturado. De modo similar, utilizando a estrutura de e particionada em duas seções bits sistemáticos s, Hb2 verificação de paridade p:
Figure BRPI0514179B1_D0001
cala modificada, Hb pode ser
em que Hbi corresponde aos
corresponde aos bits de
(6)
[0033] A seção Hb2 pode ser ainda particionada em duas seções, em que o vetor hb tem o peso ímpar Wh, e Η%2 tem uma estrutura de escada:
’[>>„ i H'K]
ft„(o) I
*b(l) 1 1 fi
+
\ 1
0 1 1
[0034] A seção Hbi pode ser construída aleatoriamente. Preferivelmente, a matriz inteira Hb tem uma distribuição de peso tão próxima da distribuição de peso desejada quanto possível.
Tamanhos do Deslocamento [0035] Para converter a matriz base Hb na matriz Hbm modelo mbxnb (que se expande para H) , os tamanhos de deslocamento circular p(i,j) precisam ser determinados para cada 1 em Hb. Os tamanhos do deslocamento podem ser primeiro especificados para ο H2. Após os tamanhos de deslocamento para a seção H2 são determinadas, os tamanhos de deslocamento da seção Hi podem ser determinados para
Petição 870170064730, de 31/08/2017, pág. 21/35
15/25 alcançar o desempenho bom geral de Η. A parte Hi da matriz base e os tamanhos de deslocamento da parte Hi da matriz base (seção Hbmi) podem ser designadas de muitas maneiras diferentes. Por exemplo, valores aleatórios para os tamanhos de deslocamento poderão ser selecionados e aceitos se os tamanhos do deslocamento não causam a degradação significativa no desempenho. A degradação do desempenho poderá resultar da introdução de números excessivos de ciclos de comprimento curto ou palavras de código de peso baixo. Outras técnicas disponíveis na tecnologia LDPC também poderão ser utilizadas.
[0036] Os tamanhos de deslocamento circular p(i,j) para um tamanho H alvo dado deve ser especificado para permitir a codificação eficiente sem comprometer o desempenho na decodificação. Para facilitar a codificação, os deslocamentos poderão ser designados tal gue todas exceto uma das matrizes de deslocamento correspondentes a l's em hb cancelam guando somadas juntas, e todas as linhas de vetor de Η%2 cancelam guando somadas. Isto traduz em designar tamanhos de deslocamento para hb em pares exceto para uma entrada, e designar o mesmo tamanho de deslocamento para ambos os l's em cada coluna de h'b2. Por exemplo, se hb=[l 0 0 1 0 0 1]T, é aceitável ter hbm= [3-1-1 3-1-1 4)T como a coluna correspondente na matriz modelo pois o tamanho de deslocamento 3 é designado em pares. Como todas as entradas não zero (ambos l's) em cada coluna Η%2 são designados os mesmos tamanhos de deslocamento, gualguer opção de tamanho de deslocamento é equivalente ao tamanho de deslocamento de 0 (isto é, sub-matrizes de identidade) mais uma permutação dos bits dentro da coluna vetor. Assim,
Petição 870170064730, de 31/08/2017, pág. 22/35
16/25 todos os tamanhos de deslocamento de Η%2 podem ser designados 0 por conveniência, isto é, cada 1 em Η%2 é substituído por uma sub-matriz de identidade zxz quando expandindo para H.
[0037] Devido à existência de ciclos, os tamanhos de deslocamento de hbm devem ser designados cuidadosamente. Regras podem ser aplicadas para evitar formar ciclos curtos de palavras de código de baixo peso. Uma propriedade que pode ser utilizada para evitar ciclos é:
[0038] Se 2c bordas formam um ciclo de comprimento 2c
na matriz base Hb, então as bordas de vetor 2c
correspondentes formam z ciclos de comprimento 2c na matriz
H expandida se e apenas se
ΣΧ'·)= ΣΑ') mod z, (S)
1=1/ >=2 >*i >9,. ,C-1 J=ü.....c-i em que z é o fator de expansão, p(i) é o tamanho de deslocamento circular da borda i na matriz modelo Hbm, e a borda 0,1,2,...,2c-l (nesta ordem) formam um ciclo em Hb.
[0039] Devido à estrutura de Hb2, existem ciclos entre hb e H'b2. Assim, quaisquer dois tamanhos de deslocamentos idênticos em hbm resultariam em replicar o ciclo z vezes na matriz expandida H de acordo com a propriedade acima. Contudo, se esses dois deslocamentos estão localizados bem distantes, então os ciclos têm comprimento longo, e têm pouco efeito na decodificação iterativa. Portanto, em uma versão preferida, quando hb da matriz base tem três ls, para maximizar o comprimento do ciclo, dois ls que são designados tamanhos de deslocamento iguais podem ser localizados na parte superior e inferior de hbm (tão distantes quanto possível), enquanto deixa um 1 no meio de
Petição 870170064730, de 31/08/2017, pág. 23/35
17/25 hb com um tamanho de deslocamento não em par. Por exemplo, hbm=[3-l 3-1 -1-1 4]T resultaria em z ciclos de comprimento 6 entre h e H'2, enquanto hbm=[3-l 4-1-1-1 3]T resultaria em z ciclos de comprimento 14 entre h e H'2, em que h e H'2 são expandidos de hb e H'b2.
[0040] Em resumo, a seção Hb2 é mapeada para a matriz biíi2 = [^bm 1 biw2
Ai xT_. P. p. 1- p(0,^+l) X.iA+0 XW + á p(2,kb+2) \ Xwií, -3,nb -2) -2,)1,,-2} p(mb -l)
- O.
modelo em que kb=nb~mb, há Wh (ímpar, Wh>=3) entradas não negativas em hbm, e as entradas -1 em H'bm2 são deixadas em branco por brevidade. Todos os valores p(i,kb) aparecem um número par de vezes em hbm exceto por um, que poderá ser mapeado para qualquer sub-matriz não zero. Portanto, todos os
deslocamentos Wh poderiam ser dados o mesmo valor (por
exemplo, 0), pois Wh é ímpar. Para H'bm2 , p(i,j)=p(i+1,j),
j =kb+l, kb+2, . . ., nb-1, i=j-kb-l. Na versão preferida,
supondo Wh=3, um exemplo tem hbm=[0-l ...-1 ph-l . . . -1
...0]T, ph mod z/0, e p (i, j ) =p (i + 1, j ) =0, j=kb+l,kb+2, ..., nb-1, i=j-kb-l na parte H'bm2.
[0041] Embora a discussão acima tenha focalizado em utilizar sub-matrizes que são deslocamentos circulares da matriz de identidade, em geral, quaisquer outras submatrizes poderão ser utilizadas (e serem representadas em um equivalente da matriz modelo base). Para facilitar a codificação, as restrições são então:
Petição 870170064730, de 31/08/2017, pág. 24/35
18/25
1. Em cada coluna de H'bm2, as duas sub-matrizes não zero são idênticas;
2. 0 Wh (impar, Wh>=3) sub-matrizes não zero de hbm são em pares (isto é, uma sub-matriz é idêntica à outra submatriz), exceto por uma sub-matriz, que pode ser qualquer matriz não zero.
Codificação [0042] A codificação é o processo de determinar a seqüência de paridade p dada uma seqüência de informação s. Para codificar o código LDPC estruturado, cada operação é efetuada por um grupo de z bits em vez de um único bit. Alternativamente, operações de vetor não precisam ser utilizadas, e as equações abaixo são implementadas em forma escalar equivalente. Para codificar, s é dividido em kb=nb-mb grupos de z bits. Que este grupo s seja denotado u,
U=[u(0) u(l) ... u(kb-l) ] , (10) em que cada elemento de u é um vetor de coluna conforme segue
Figure BRPI0514179B1_D0002
[0043] Utilizando a matriz modelo Hbm, a seqüência de paridade p é determinada em grupos de z. Que o p agrupado seja denotado v,
V=[v(0) v(l) ... v(mb-l) ] , (12) em que cada elemento de v é um vetor de coluna conforme segue
Pv+i Γ' (13) [0044] A codificação prossegue em duas etapas, (a) inicialização, que determina v(0), e (b) recursão, que determina v(i+l) de v(i), 0^i^mb-2.
Petição 870170064730, de 31/08/2017, pág. 25/35
19/25 pares, assim l<x<mb-2. A Equação (14) pela multiplicação de ambos os lados caso especial aqui considerado em que deslocamento circular, 1 p(m>) v(0) é obtido por [0045] Uma expressão para v(0) pode ser derivada ao somar pelas linhas da Equação (1) para obter i.-l fy.r.^)v(o)= Σ (14) j'=Ü ί=ϋ em que x é o índice de linhas de hbm quando a entrada é não negativa e é utilizado um número ímpar de vezes. Na versão preferida, as entradas superior e inferior de hbm são em é resolvida para v(0) por Para o p(x,kb) representa um . Em outras palavras, (15) /=0 v(o)=) Σ ΣUíiM') ’ [0046] Em geral, as recursões expressas nas Equações (16) e (17) podem ser derivadas ao considerar a estrutura de H'b2, fc-l ''=o.
ρ„(ΓΛ+[+1) ν(?'+0=2 i=v >0 em que
P_»o.
(16) m, (1$) [0047] Assim, todos os bits de paridade não em v(0) são determinados ao avaliar iterativamente as Equações (16) e (17) para 0^i^mb-2 .
[0048] Em uma versão preferida em que os tamanhos dos deslocamento dos l's em Η%2 são todos zero, as Equações
Petição 870170064730, de 31/08/2017, pág. 26/35
20/25 (16) e (17) podem ser simplificadas para as Equações (19) e (20) ,
VÚ)= Σ Pp(í,/|»G'j+ pp(íA)v(üf
7=0 í = 0, (19)
Figure BRPI0514179B1_D0003
>0 [0049] Assim, como no caso geral, todos os bits de paridade não em v(0) são determinados ao avaliar iterativamente as Equações (19) e (20) para 0^i^mb-2.
[0050] As Equações (14), (19), e (20) descrevem o algoritmo de codificação. Essas equações também têm uma interpretação direta em termos de arquiteturas lógicas digitais padrão. Primeiro, como os elementos não negativos p(i,j) de Hbm representam tamanhos do deslocamento circular de um vetor, todos os produtos da forma Pp<i,j)U(j) podem ser implementados por um deslocador de barril de tamanho z. Um tamanho de deslocamento circular de zero poderá não necessitar ser deslocado por barril. Como o deslocador de barril que implementa todos os deslocamentos circulares possíveis precisa fornecer conexões de cada bit de entrada para todos os bits de saída, a velocidade com que ele pode ser processado depende de z. Para um z dado, a complexidade pode ser reduzida e a velocidade aumentada ao permitir apenas um subconjunto apropriado de todos os possíveis deslocamentos circulares. Por exemplo, Hbm poderia ser construído com apenas tamanhos de deslocamentos circulares par. As somatórias nas Equações (14), (19), e (20) representam operações XOR (OU exclusivo) quanto ao vetor
Petição 870170064730, de 31/08/2017, pág. 27/35
21/25 que são portalizadas (isto é, não atualizam) quando p (i,j)=-l.
[0051] Para implementar os somatórios nas Equações (14), (19), e (20), as entradas p(i,j) de Hbm, O^i^kb,
0<j<mb~l, podem ser armazenados em uma memória de apenas leitura (ROM) de largura [log2z]+l bits. A seqüência de informação agrupada pode ser armazenada em uma memória de tamanho z, que pode ser lida em ordem seqüencial. À medida que cada vetor de informação u(j) é lido, a entrada correspondente da ROM Hbm pode ser lida, que instrui o deslocador de barril do deslocamento circular necessário.
Após o deslocamento circular, um registro contendo um somatório parcial é atualizado. Para a Equação (14), após cada somatório interno ser completado, o resultado pode ser utilizado para atualizar outro registro contendo o somatório exterior. Quando o somatório exterior estiver completo, ele pode ser deslocado circularmente por z-p (x, kb) .
[0052] Supondo que o deslocamento de barril pode ser implementado em um único ciclo de relógio, a codificação pode ser efetuada em aproximadamente (kb+l)mb ciclos de relógio. Este número pode ser reduzido à custa de mb-1 extra registros de largura z ao calcular e armazenar os somatórios das Equações (19) e (20), utilizando resultados que se tornam disponíveis à medida que a Equação (14) está sendo calculada.
Estender a Matriz [0053] O procedimento de extensão de código pode ser aplicado ao código estruturado para atingir um código de taxa inferior. Código de taxa progressivamente mais baixa
Petição 870170064730, de 31/08/2017, pág. 28/35
22/25 pode ser utilizado em transmissões sucessivas de um procedimento de redundância incrementai (IR) . Especificamente, se a matriz modelo da primeira transmissão é (21) bm ? “biTil “bm2 então a matriz modelo para a segunda transmissão poderá utilizar r„o>
fr-ú ·_ “bm
Ó) bm I bm2 i —ω MLi (22) etc., em que, para cada transmissão i, a sub-matriz tem o formato em (9) e tem , (i) _ , ,(l) A primeira transmissão poderá enviar grupos de bits, Cada grupo tendo o tamanho z. A decodificação após a primeira transmissão é efetuada, utilizando sinais recebidos de [7/(0),7((1),.. .,ίί(/ίΑ -1),1^(0),^(1),. - l)] e (2D · A segunda transmissão poderá enviar outros grupos Wj. de bits do tamanho z, [vίΞ>(θ)?r^(l),..,,- l)]; em que , e os bits da primeira transmissão e da segunda transmissão juntos, [„(θΗΐμ.,«&- ΐ)ν«(θ),^(ΐ),...,ν^-ΐ)] são uma palavra de código correspondente a (22) . Portanto, a decodificação após a segunda transmissão é efetuada com base em (22) e o sinal recebido combinado da primeira transmissão e da segunda transmissão. Este procedimento poderá ser repetido por mais transmissões. A decodificação após a segunda transmissão tem por base um código de taxa
Petição 870170064730, de 31/08/2017, pág. 29/35
23/25 + ' 9ue θ inferior àquele da primeira transmissão. Este procedimento poderá ser repetido para mais transmissões, com cada transmissão adicional contribuindo para um código de taxa mais baixa e mais forte.
[0054] A Figura 5 é um fluxograma que mostra a operação do codificador 300 e, em particular, o microprocessador 301. O fluxo lógico começa na etapa 501, onde um conjunto de símbolos correntes (So, . . . , Sk-i) é recebido pelo microprocessador 301. Na etapa 503, valores de bits de verificação de paridade são determinados com base no conjunto de símbolos correntes e H. Em particular, os bits de verificação de paridade (po, . . ., pm-i) são determinados conforme descrito acima, com H sendo uma expansão de uma matriz base Hb. Como foi discutido, Hb compreende uma seção Hbi e uma seção Hb2, e em que Hb2 compreende uma primeira parte que compreende a coluna hb tendo um peso ímpar maior que 2, e uma segunda parte compreendendo elementos de matriz para a linha i, coluna j igual a 1 para i=j, 1 para i=j+l, e 0 nos demais locais. Além disso, a expansão da matriz base Hb (para produzir H) utiliza sub-matrizes idênticas para os ls em cada coluna da segunda parte Η%2, e em que a expansão utiliza sub-matrizes em pares para um número par de ls em hb. Na etapa 505, o conjunto de símbolos corrente e os bits de verificação de paridade são transmitidos através da transmissão pelo ar.
[0055] A Figura 6 é um fluxograma que mostra a operação do decodificador 400 e, em particular, o microprocessador 401. O fluxo lógico começa na etapa 601, quando o vetor de sinal recebido y=(yo, ···, yn-i) é recebido. Na etapa 603,
Petição 870170064730, de 31/08/2017, pág. 30/35
24/25 estimativas do conjunto de símbolos corrente s (isto é, o conjunto de símbolos corrente (So, ···, Sk-i) ) são determinados com base em H. Como foi discutido, H é uma expansão de uma matriz base Hb e em que Hb compreende uma seção Hbi e uma seção Hb2, e em que Hb2 compreende uma primeira parte que compreende uma coluna hb tendo um peso ímpar maior que 2, e uma segunda parte que compreende elementos de matriz para a linha i, coluna j igual a 1 para i=j, i para i=j+l, e 0 nos demais lugares.
[0056] Embora a invenção tenha sido particularmente mostrada e descrita com referência a uma versão particular, será compreendido por aqueles habilitados na tecnologia que várias mudanças na forma e nos detalhes poderão ser nela feitas sem desviar do espírito e escopo da invenção. Por exemplo, embora a invenção tenha sido mostrada com a ordenação de Si e pi dentro de x definido, alguém de habilidade ordinária na tecnologia reconhecerá que outras ordenações dos bits dentro de x podem ocorrer pois os bits de palavras de código podem ser coletados em qualquer ordem desde que as colunas de H são reordenadas de acordo. Adicionalmente, embora a descrição acima tenha sido particularmente mostrada e descrita com referência a códigos binários (isto é, códigos definidos sobre o Galois Field GF(2)), alguém de habilidade ordinária na tecnologia reconhecerá que um GF arbitrário poderá também ser utilizado. Embora os exemplos dados acima são mostrados em um formato, outros formatos são possíveis que permitem uma similar codificação e procedimento de modificação do código. Por exemplo, as linhas de H poderão ser permutadas sem afetar o valor dos bits de verificação de paridade. Em
Petição 870170064730, de 31/08/2017, pág. 31/35
25/25 outro exemplo, a estrutura de escada modificada poderá ser utilizada para um subconjunto dos bits de verificação de paridade. Em ainda outro exemplo, etapas adicionais poderão ser efetuadas quando expandir a matriz base até a matriz expandida. A matriz H também poderá ser utilizada em qualquer tipo de decodificador que depende de uma matriz de verificação de paridade. É pretendido que essas mudanças recaiam dentro do escopo das reivindicações seguintes.
Petição 870170064730, de 31/08/2017, pág. 32/35
1/2

Claims (3)

  1. REIVINDICAÇÕES
    1. Método de codificação LDPC de uma sequência de informação S (So, . . . , Sk-i) de comprimento k=kbxz utilizando uma matriz modelo Hbm mb x nb com elementos de matriz mb-1 e j=0, 1, ..., nb-1, para obter
    Pm-i) , m=mbxz p(i,j), i=0, 1, uma sequência de paridade p(po, pi, denotado por v, onde v=[v(0) v(l) ... v(mb-l)] e cada elemento de v é um vetor coluna como v(zj=[pfe pfe+1 ··· ^(z+iJz-iK >
    i=0, 1, ..., mb-1, o método caracterizado por compreender:
    dividir a sequência de informação s em grupos kb=nb~mb de z bits denotados por u=[u(0) u(l) ... u(kb-l)], onde cada elemento de u é um vetor coluna conforme uG’)=k ^+i ··· ^·+ι)ζ-ιΓ i = 0, 1, . . ., kb-l;
    determinar v(0) por kb-\mb-\ y{^) = ^z-p[x,kb)lL llFpIjjyÁj) j=0 i=0 onde x denota o índice de linhas de hbm onde a entrada possui o único valor não negativo que é utilizado um número ímpar de vezes dentro de hbm e hbm é a coluna kb-th da matriz modelo Hbm, onde uma matriz de verificação de paridade de código LDPC é uma expansão da matriz modelo Hbm ao substituir cada p(i, j) negativo por uma matriz toda de zero zxz e cada p(i, j) não negativo por uma matriz de permutação Pp<í, j) que é uma matriz identidade zxz cujas colunas são deslocadas circularmente por um deslocamento circular de tamanho de p(i, j) para a direita;
    determinar v(l), v (2) , v (3) , ..., v(mb-l) por kb-l VW = Σ Vp(i,kbyà°\ í = 0 ,
    7=0 i — -2 .
    Petição 870170064730, de 31/08/2017, pág. 33/35
  2. 2/2
    2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a matriz modelo compreende duas sub-matrizes, [Hbmi Hbm2] , onde a primeira matriz é de dimensão mbxkb, e Hbm2 é de dimensão mb x mb e ainda Hbm2 tem a sequinte estrutura «bm2 t^bm l H bm2 ]
    ΧθΑ) p(0,kb +l) p(íh) p(t,kb +l) p(),kb +2) ^(2,^+2) . p(mb -3,nb -2) p(mb -2,nb -2) p(mb -2,nb -l) p(mb -l,kb) p(mb -\,nb -l)
    e há wh^3 entradas não neqativas em hbm.
  3. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o produto da forma Pp<i,j)U(j) é implementado por um deslocador de barril de tamanho z.
    Petição 870170064730, de 31/08/2017, pág. 34/35
    Ο íCC
    Ο
    -s s
    Ό φ c >
    a_ n
    Ό ·=
    E £ .g Í5 11 cM
    O
    E â 1 o t- E .± »- o = 3 X *: 2= q? S
    O 51 v>
    s °
    XI
    N C “ ro « E S 42 tn *O c
    :5
    Έ (O >
    d h-Ή fc)
    Cfl _o
    Ο φ Ρ c (η '55
    Φ -° -σ <» φ
    •σ η;
    Ή χ“ θ ro ο Cl U) Φ 'c ° S ο c
    Οϋ
BRPI0514179-6A 2004-08-09 2005-08-03 Ldpc coding method BRPI0514179B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60000504P 2004-08-09 2004-08-09
US60/600.005 2004-08-09
US11/004.359 2004-12-03
US11/004,359 US7143333B2 (en) 2004-08-09 2004-12-03 Method and apparatus for encoding and decoding data
PCT/US2005/027782 WO2006020495A1 (en) 2004-08-09 2005-08-03 Method and apparatus for encoding and decoding data

Publications (2)

Publication Number Publication Date
BRPI0514179A BRPI0514179A (pt) 2008-06-03
BRPI0514179B1 true BRPI0514179B1 (pt) 2018-01-23

Family

ID=35758925

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0514179-6A BRPI0514179B1 (pt) 2004-08-09 2005-08-03 Ldpc coding method

Country Status (10)

Country Link
US (1) US7143333B2 (pt)
EP (2) EP1790081A4 (pt)
JP (1) JP4516602B2 (pt)
KR (1) KR100884698B1 (pt)
CN (1) CN101032082B (pt)
BR (1) BRPI0514179B1 (pt)
ES (1) ES2421942T3 (pt)
PL (1) PL2387157T3 (pt)
RU (1) RU2370886C2 (pt)
WO (1) WO2006020495A1 (pt)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100906474B1 (ko) * 2003-01-29 2009-07-08 삼성전자주식회사 저밀도 부가정보 발생용 매트릭스를 이용한 에러 정정방법 및그 장치
US7581157B2 (en) 2004-06-24 2009-08-25 Lg Electronics Inc. Method and apparatus of encoding and decoding data using low density parity check code in a wireless communication system
KR101065693B1 (ko) * 2004-09-17 2011-09-19 엘지전자 주식회사 Ldpc 코드를 이용한 부호화, 복호화 방법 및 부호화또는 복호화를 위한 ldpc 코드 생성 방법
CN101395804B (zh) * 2004-09-17 2011-09-07 Lg电子株式会社 使用ldpc码编码和解码的方法
WO2006055086A1 (en) * 2004-10-01 2006-05-26 Thomson Licensing A low density parity check (ldpc) decoder
WO2006068435A2 (en) * 2004-12-22 2006-06-29 Lg Electronics Inc. Apparatus and method for decoding using channel code
CN100486150C (zh) * 2005-01-23 2009-05-06 中兴通讯股份有限公司 基于非正则低密度奇偶校验码的编译码器及其生成方法
US20070180344A1 (en) * 2006-01-31 2007-08-02 Jacobsen Eric A Techniques for low density parity check for forward error correction in high-data rate transmission
US7941737B2 (en) * 2006-04-19 2011-05-10 Tata Consultancy Services Limited Low density parity check code decoder
KR101119111B1 (ko) * 2006-05-04 2012-03-16 엘지전자 주식회사 Ldpc 부호를 이용한 데이터 재전송 방법
KR101227514B1 (ko) 2007-03-15 2013-01-31 엘지전자 주식회사 Ldpc 부호화 및 복호화를 위한 모델 행렬을 구성하는방법
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
US20080320374A1 (en) * 2007-06-22 2008-12-25 Legend Silicon Corp. Method and apparatus for decoding a ldpc code
JP4823176B2 (ja) 2007-08-31 2011-11-24 パナソニック株式会社 復号方法及び復号装置
EP2223431A4 (en) * 2008-08-15 2010-09-01 Lsi Corp DECODING LIST OF CODED WORDS CLOSE IN RAM MEMORY
CN102077173B (zh) 2009-04-21 2015-06-24 艾格瑞系统有限责任公司 利用写入验证减轻代码的误码平层
US8392789B2 (en) * 2009-07-28 2013-03-05 Texas Instruments Incorporated Method and system for decoding low density parity check codes
US8464142B2 (en) 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
US8499226B2 (en) 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8504900B2 (en) 2010-07-02 2013-08-06 Lsi Corporation On-line discovery and filtering of trapping sets
US8768990B2 (en) 2011-11-11 2014-07-01 Lsi Corporation Reconfigurable cyclic shifter arrangement
US8977937B2 (en) * 2012-03-16 2015-03-10 Lsi Corporation Systems and methods for compression driven variable rate decoding in a data processing system
RU2012146685A (ru) 2012-11-01 2014-05-10 ЭлЭсАй Корпорейшн База данных наборов-ловушек для декодера на основе разреженного контроля четности
US9203440B1 (en) 2013-01-29 2015-12-01 Xilinx, Inc. Matrix expansion
US9083383B1 (en) * 2013-01-29 2015-07-14 Xilinx, Inc. Parity check matrix
WO2014127129A1 (en) 2013-02-13 2014-08-21 Qualcomm Incorporated Ldpc design using quasi-cyclic constructions and puncturing for high rate, high parallelism, and low error floor
CN106201781B (zh) * 2016-07-11 2019-02-26 华侨大学 一种基于右边正则纠删码的云数据存储方法
US10289348B2 (en) * 2016-12-30 2019-05-14 Western Digital Technologies, Inc. Tapered variable node memory
WO2018171043A1 (zh) 2017-03-24 2018-09-27 中兴通讯股份有限公司 一种准循环低密度奇偶校验编码处理方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4564944A (en) * 1983-12-30 1986-01-14 International Business Machines Corporation Error correcting scheme
JPS6250943A (ja) * 1985-08-30 1987-03-05 Hitachi Ltd 記憶装置
KR20030036227A (ko) * 2000-06-16 2003-05-09 어웨어, 인크. Ldpc 코드형 변조를 위한 시스템 및 방법
US6567465B2 (en) * 2001-05-21 2003-05-20 Pc Tel Inc. DSL modem utilizing low density parity check codes
US6948109B2 (en) * 2001-10-24 2005-09-20 Vitesse Semiconductor Corporation Low-density parity check forward error correction
WO2004006443A1 (en) * 2002-07-03 2004-01-15 Hughes Electronics Corporation Bit-interleaved coded modulation using low density parity check (ldpc) codes
AU2002364182A1 (en) * 2002-08-20 2004-03-11 Flarion Technologies, Inc. Methods and apparatus for encoding ldpc codes
US6785863B2 (en) * 2002-09-18 2004-08-31 Motorola, Inc. Method and apparatus for generating parity-check bits from a symbol set
KR20040033554A (ko) * 2002-10-15 2004-04-28 삼성전자주식회사 에러 정정 부호화 장치 및 그 방법
KR20040036460A (ko) * 2002-10-26 2004-04-30 삼성전자주식회사 Ldpc 복호화 장치 및 그 방법
US7702986B2 (en) * 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법

Also Published As

Publication number Publication date
EP2387157A1 (en) 2011-11-16
CN101032082B (zh) 2010-09-15
EP1790081A4 (en) 2009-06-03
RU2007107953A (ru) 2008-09-20
CN101032082A (zh) 2007-09-05
KR20070035072A (ko) 2007-03-29
JP2008509635A (ja) 2008-03-27
EP1790081A1 (en) 2007-05-30
KR100884698B1 (ko) 2009-02-19
BRPI0514179A (pt) 2008-06-03
US20060031744A1 (en) 2006-02-09
EP2387157B1 (en) 2013-07-10
JP4516602B2 (ja) 2010-08-04
WO2006020495A1 (en) 2006-02-23
US7143333B2 (en) 2006-11-28
PL2387157T3 (pl) 2013-12-31
RU2370886C2 (ru) 2009-10-20
ES2421942T3 (es) 2013-09-06

Similar Documents

Publication Publication Date Title
BRPI0514179B1 (pt) Ldpc coding method
CN104868925B (zh) 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
US8499218B2 (en) System and method for determining quasi-cyclic low-density parity-check codes having high girth
US7395494B2 (en) Apparatus for encoding and decoding of low-density parity-check codes, and method thereof
ES2529182T3 (es) Diseño de LDPC estructurado con agrupación de filas de vector
US6961888B2 (en) Methods and apparatus for encoding LDPC codes
US10892778B2 (en) Encoding method and device and decoding method and device for structured LDPC
CN110114978B (zh) 高效可解码qc-ldpc码
US7493548B2 (en) Method and apparatus for encoding and decoding data
WO2004019268A1 (en) Methods and apparatus for encoding ldpc codes
EP1699138A1 (en) Method and device for decoding LDPC encoded codewords, in particular DVB-S2 LDPC encoded codewords
WO2008112625A1 (en) Encoding and decoding of low density parity check (ldpc ) codes
EP3232576A1 (en) Feed-forward staircase codes for channel coding in optical communication systems
CN113612486A (zh) 一种构建pbrl ldpc码的基矩阵方法、系统、装置及存储介质
CN105680877A (zh) 一种cc-qc-ldpc码的构建方法及译码装置
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
KR100550101B1 (ko) 저밀도 패리티 검사 부호의 부호화와 복호 장치 및 그방법
EP2195928A2 (en) Encoding method and device for tail-biting trellis ldpc codes
Xu et al. Low-Density Parity Check (LDPC) Codes
Lu Designing structured low density parity check codes with large girth
Chung et al. Efficient Design of Structured LDPC Codes

Legal Events

Date Code Title Description
B25D Requested change of name of applicant approved

Owner name: MOTOROLA SOLUTIONS, INC. (US)

B25A Requested transfer of rights approved

Owner name: MOTOROLA MOBILITY, INC. (US)

B25G Requested change of headquarter approved

Owner name: MOTOROLA MOBILITY, INC. (US)

B25E Requested change of name of applicant rejected

Owner name: MOTOROLA MOBILITY, INC. (US)

Free format text: INDEFERIDA A ALTERACAO DE NOME SOLICITADA ATRAVES DA PETICAO NO 020130025976-RJ, DE 28/03/2013, UMA VEZ QUE NAO FOI PAGA A RESPECTIVA TAXA DE RETRIBUICAO.

B25D Requested change of name of applicant approved

Owner name: MOTOROLA MOBILITY, LLC (US)

B25A Requested transfer of rights approved

Owner name: GOOGLE TECHNOLOGY HOLDINGS LLC (US)

B07A Application suspended after technical examination (opinion) [chapter 7.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]