87
UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA DA UFBA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA DEPARTAMENTO DE ENGENHARIA ELÉTRICA PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS EM COMUNICAÇÃO MÓVEL USADO NO PADRÃO LTE Autor Ilan Schnitman Souza Orientadora Ana Isabela de Araújo Cunha SALVADOR 2013

PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

Embed Size (px)

Citation preview

Page 1: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

UNIVERSIDADE FEDERAL DA BAHIA

ESCOLA POLITÉCNICA DA UFBA

PROGRAMA DE PÓS-GRADUAÇÃO EM

ENGENHARIA ELÉTRICA

DEPARTAMENTO DE ENGENHARIA ELÉTRICA

PROJETO DE UM SISTEMA DE CORREÇÃO DE

ERROS EM COMUNICAÇÃO MÓVEL USADO NO

PADRÃO LTE

Autor

Ilan Schnitman Souza

Orientadora

Ana Isabela de Araújo Cunha

SALVADOR

2013

Page 2: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

UNIVERSIDADE FEDERAL DA BAHIA

ESCOLA POLITÉCNICA DA UFBA

PROGRAMA DE PÓS-GRADUAÇÃO EM

ENGENHARIA ELÉTRICA

DEPARTAMENTO DE ENGENHARIA ELÉTRICA

PROJETO DE UM SISTEMA DE CORREÇÃO DE

ERROS EM COMUNICAÇÃO MÓVEL USADO NO

PADRÃO LTE

Autor: Ilan Schnitman Souza

Orientadora: Prof. Dra. Ana Isabela de Araújo Cunha

Dissertação elaborada pelo acadêmico Ilan

Schnitman Souza, como parte das exigências

para conclusão do curso de pós-graduação

stricto-senso em Engenharia Elétrica da

Universidade Federal da Bahia, sob a

orientação da professora Dra. Ana Isabela de

Araújo Cunha

SALVADOR

2013

Page 3: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

S729 Souza, Ilan Schnitman.

Projeto de um sistema de correção de erros em comunicação móvel usado no padrão LTE / Ilan Schnitman

Souza. – Salvador, 2013.

72f. : il. color.

Orientadora: Profa. Dra. Ana Isabela de Araújo de Cunha.

Dissertação (mestrado) – Universidade Federal da Bahia. Escola Politécnica, 2013.

1. Circuitos integrados. 2. Comunicações digitais. 3. Erro -

correção I. Cunha, Ana Isabela de Araújo. II. Universidade

Federal da Bahia. III. Título.

CDD: 621.381

Page 4: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

UNIVERSIDADE FEDERAL DA BAHIA

ESCOLA POLITÉCNICA DA UFBA

PROGRAMA DE PÓS-GRADUAÇÃO EM

ENGENHARIA ELÉTRICA

DEPARTAMENTO DE ENGENHARIA ELÉTRICA

PROJETO DE UM SISTEMA DE CORREÇÃO DE

ERROS EM COMUNICAÇÃO MÓVEL USADO NO

PADRÃO LTE

Autor: Ilan Schnitman Souza

Orientadora: Prof. Dra. Ana Isabela de Araújo Cunha

Banca Examinadora

____________________________________________

Profa. Dra. Ana Isabela de Araújo Cunha

____________________________________________

Prof. Dr. Antônio Cezar de Castro Lima

____________________________________________

Prof. Dr. Paulo César Machado de Abreu Farias

____________________________________________

Prof. Dr. José Luís Almada Güntzel

Page 5: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

EPÍGRAFE

“A moment of convenience, a lifetime of regret”

David Moon

Page 6: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

DEDICATÓRIA

A todos os que me ajudaram

Page 7: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

AGRADECIMENTOS

À professora Ana Isabela por aceitar me guiar neste desafio.

A Vinícius Torres dos Reis que dividiu a tarefa da realização deste projeto.

Ao LSI-TEC pelo apoio e por permitir a publicação deste trabalho.

A todos os que participaram direta ou indiretamente para que este trabalho fosse

realizado.

Page 8: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

SUMÁRIO

LISTA DE ILUSTRAÇÕES ................................................................................................... i

LISTA DE TABELAS ........................................................................................................ iii

LISTA DE ABREVIATURAS .............................................................................................. iv

RESUMO ...................................................................................................................... vi

ABSTRACT .................................................................................................................... vii

1. INTRODUÇÃO ....................................................................................................... 1

2. CORREÇÃO DE ERROS ........................................................................................... 5

2.1. PERSPECTIVA HISTÓRICA .................................................................................. 5

2.2. ALGORITMOS E OTIMIZAÇÕES DO TURBO-CODE .............................................. 18

2.2.1. Algoritmo Log-MAP ........................................................................................ 19

2.2.2. Decodificação em Paralelo .............................................................................. 21

2.2.3. Interleaver ..................................................................................................... 23

3. ARQUITETURA PROPOSTA E IMPLEMENTAÇÃO ................................................... 25

3.1. FLUXO DE PROJETO DIGITAL............................................................................ 25

3.2. APRESENTAÇÃO DA ARQUITETURA ................................................................. 31

3.3. IMPLEMENTAÇÃO ........................................................................................... 47

4. DISCUSSÃO DOS RESULTADOS ............................................................................ 60

4.1. ESTUDO COMPARATIVO ................................................................................. 63

5. CONCLUSÃO ....................................................................................................... 67

5.1. PROPOSTA DE TRABALHOS FUTUROS .............................................................. 68

6. REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................... 69

Page 9: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

i

LISTA DE ILUSTRAÇÕES

Figura 1: Codificador Convolucional ................................................................................................................. 7

Figura 2: Representação do Gráfico em Treliça Relativo ao Codificador Convolucional da Figura 1............. 8

Figura 3: Exemplo de Treliça ........................................................................................................................... 10

Figura 4: Forward Recursion ........................................................................................................................... 11

Figura 5: Backward Recursion ......................................................................................................................... 11

Figura 6: Probabilidade de Transição ............................................................................................................. 12

Figura 7: Codificador Non-Systematic Convolutional ..................................................................................... 14

Figura 8: Codificador Recursive Systematic Convolutional ............................................................................. 14

Figura 9: Estrutura Simplificada do codificador Turbo-Code ......................................................................... 18

Figura 10: Estrutura Simplificada do Decodificador Turbo-Code ................................................................... 18

Figura 12: Comparação Sliding Window com Paralelismo ............................................................................. 22

Figura 11: Operações com o Uso de Sliding Window ...................................................................................... 22

Figura 13: Representação em Alto Nível do Fluxo de Projeto ......................................................................... 26

Figura 14: Detalhamento das Etapas de Front-End ......................................................................................... 27

Figura 15: Detalhamento das Etapas de Back-End .......................................................................................... 27

Figura 16: Codificador Especificado para o Padrão LTE ............................................................................... 31

Figura 17: Demonstração das Etapas de Decodificação ................................................................................. 36

Figura 18: Início da Treliça do Codificador do Padrão LTE ........................................................................... 36

Figura 19: Transições Intermediárias da Treliça do Padrão LTE ................................................................... 36

Figura 20: Geração dos Tail Bits ..................................................................................................................... 37

Figura 21: Arquitetura de Hardware do Cálculo da Probabilidade de Transição .......................................... 38

Figura 22: Arquitetura da SISO ........................................................................................................................ 38

Figura 23: Arquitetura de Hardware das Probabilidades de Estados ............................................................. 39

Figura 24: Cálculo da LLR ............................................................................................................................... 41

Figura 25: Cálculo da Informação Extrínseca ................................................................................................. 41

Figura 26: Arquitetura do Decodificador ......................................................................................................... 42

Figura 27: Máquina de Estados da Operação de Decodificação ..................................................................... 43

Figura 28: Alimentação dos Dados em uma Arquitetura com 4 SISOs ............................................................ 46

Figura 29: Separação dos Blocos a serem Processados .................................................................................. 47

Figura 30: Representação do Ambiente de Simulação do Sistema ................................................................... 48

Figura 31: Diagrama de Constelação dos Esquemas de Modulação ............................................................... 49

Figura 32: Resultado do FER (ou BLER) vs SNR ............................................................................................. 50

Figura 33: Arquitetura do Interleaver .............................................................................................................. 51

Figura 34: Representação das Interfaces do Bloco do Decodificador ............................................................. 53

Figura 35: Ambiente de Verificação SystemVerilog ......................................................................................... 54

Figura 36: Ambiente de Simulação Bitmatching .............................................................................................. 56

Figura 37: Floorplanning ................................................................................................................................. 57

Figura 38: Leiaute do decodificador ................................................................................................................ 57

Figura 39: Desempenho do Sistema Comparando por Tamanho de Blocos ................................................... 61

Page 10: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

ii

Figura 40: Desempenho do Sistema Comparando os Resultados com Diferentes Valores de Iteração ........... 63

Page 11: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

iii

LISTA DE TABELAS

Tabela 1: Parâmetros do Interleaver ................................................................................................................ 33

Tabela 2: Relação entre o Tamanho do Bloco de Dados e a Quantidade de Processadores Utilizados na

Decodificação .......................................................................................................................................................... 47

Tabela 3: Parâmetros para a Simulação Variando o Tamanho do Bloco de Processamento .......................... 61

Tabela 4: Parâmetros para a Simulação Variando o Esquema de Modulação ................................................ 62

Tabela 5: Parâmetros para a Simulação Variando o Número de Iterações ..................................................... 62

Tabela 6: Tabela Comparativa entre o Decodificador Proposto e Congêneres ............................................... 64

Page 12: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

iv

LISTA DE ABREVIATURAS

16QAM - 16 Quadrature Amplitude Mudulation

64QAM - 64 Quadrature Amplitude Modulation

APP - A-Posteriori Probability

ARP - Almost Regular Permutation

ASIC - Application Specific Integrated Circuit

AT&T - American Telephone and Telegraph

BER - Bit Error Rate

BFM - Bus Functional Mode

BPSK - Binary Phase-Shift Keying

CI - Circuito Integrado

CMOS - Complementary Metal-Oxide-Semiconductor

DH - Design House

DUT - Device Under Test

EDA - Electronic Design Automation

ESF - Extrinsic Scaling Factor

FER - Frame Error Rate

FIFO - First-In First-Out

GSM - Global System for Mobile Communications

HDL - Hardware Description Language

IP - Internet Protocol

IP - Intellectual Property

LDPC - Low Density Parity Check

LLR - LOG Likelihood Ratio

Log-MAP - Logarithm MAP

LTE - Long Term Evolution

LUT - Look-Up Table

MAP - Maximum A-Posteriori

Max-Log-

MAMAP

- Maximum Logarithm MAP

MCT - Ministério da Ciência e Tecnologia

MIMO - Multiple-Input Multiple-Output

Musti-Vt - Multiple Voltage Threshold

NSC - Non-Systematic Convolutional

PLL - Phase Locked Loop

PVT - Process, Voltage and Temperature

QPP - Quadratic Permutation Polynomial

QPSK - Quadrature Phase-Shift Keying

RSC - Recusive Systematic Convolutional

RTL - Register Transfer Level

SDC - Synopsys Design Constraints

SISO - Soft-Input Soft-Output

SMS - Short Message Service

SoC - System On Chip

SOVA - Soft-Output Viterbi Algorithm

TSMC - Taiwan Semiconductor Manufacturing Company

VHDL - Very High Speed Integrated Circuit HDL

VLSI - Very Large Scale Integration

Page 13: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

v

VLSI - Very Large Scale Integration

WCDMA - Wideband Code Division Multiple Access

Page 14: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

vi

RESUMO

O presente trabalho propõe uma nova arquitetura para o sistema turbo-code de correções de

erro usado no padrão de comunicação móvel LTE (Long Term Evolution). Será estudada a

codificação de canal e o contexto do surgimento do turbo-code, contextualizando este

trabalho e dando uma visão da área das comunicações móveis abordados no trabalho.

Como o projeto foi proposto para tecnologia de semicondutores, será descrita uma breve

introdução à metodologia utilizada, detalhando os passos seguidos no projeto e a construção

da arquitetura. Serão reportadas e justificadas as decisões tomadas para a otimização do

hardware.

Foram utilizadas diversas técnicas de otimização de harware, como o processamento em

paralelo e a utilização do algorítmo de processamento Log-MAP. As técnicas são descritas

detalhadamente e suas vantagens e desvantagens são apresentadas, assim como são

justificadas as escolhas de projeto.

Os resultados medidos e estimados serão apresentados, mostrando então a prioridade

empregada para alguns parâmetros em detrimento de outros, sendo assim explicadas as

diferenças entre o desempenho da arquitetura proposta e de outras soluções descritas na

literatura.

No projeto foi desenvolvida uma arquitetura visando uma alta confiabilidade de correção de

erros. É neste aspecto que este trabalho se destaca dos demais relatados na literatura atual.

Porém, diversos outros aspectos foram levados em consideração como a latência, o

throughput, area de silício e consumo de potência os quais são impactados pela frequência

de operação e a tecnologia para o qual foi projetado. Os resultados foram bastante

satisfatórios comparativamente, em se ponderar o desempenho em função da correção de

erros.

Page 15: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

vii

ABSTRACT

This work proposes a new turbo-code system architecture for error correction used in LTE

(Long Term Evolution) mobile communication standard. Channel coding will be studied

and the turbo-code creation context, giving the foundation of this work and giving an

overview of the mobile communications area of the project.

As the project intended to be implemented in a semiconductor technology, a brief overview

of the methodology will be presented detailing the steps in this project and the conception

of the architecture. The decisions to optimize the hardware will be reported and explained.

During project design, several hardware optimization techniques were used as parallel

processing and Log-MAP algorithm. The techniques will be detailled described and their

advatages ans disadvantages will be presented. The design choices will be explained.

The measured and estimated results will be presented, showing the priority given to certain

parameters over others, explaining performance differences between the architecture and

other solutions found in the literature.

The architecture designed aims high reliability in error correction. This is the aspect that

distighish this work from othes described in current bibliography. However several other

aspects were considered, as latency, throughput, silicon area and power consuption which

are consequencies of the operation frequency and technology. The results were similar to

other architectures specially considering the error correction performance.

Page 16: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

1

1. INTRODUÇÃO

O desenvolvimento das tecnologias de comunicação está intimamente relacionado com

os avanços da microeletrônica. Devido à popularização das comunicações móveis e dos

sistemas computacionais o mercado de semicondutores movimenta uma quantidade de recursos

enorme, chegando a US$180 bilhões de dólares ainda no período de 1999-2000 [7].

Desde a década de 1940 os primeiros dispositivos de comunicação móveis foram

criados pela Bells Labs [3] e em 1946 começaram a ser homologados pela Comissão Federal de

Comunicações dos Estados Unidos da América, passando a ser operados pela American

Telephone and Telegraph (AT&T) [1]. O alto consumo de potência restringia a utilização

desses aparelhos, porém a configuração da rede de comunicação criada foi determinante para a

criação de um sistema divido em células com reutilização de frequências [1]. Devido ao alto

custo e baixa capacidade em número de usuários, esses sistemas ficaram restritos a poucos

equipamentos, tendo uso praticamente em dispositivos limitado a instalações em carros [3].

A partir da década de 1980 os sistemas de comunicação móveis começaram a ficar

disponíveis comercialmente em larga escala [3]. Nos primeiros padrões desenvolvidos, também

conhecidos como de primeira geração (1G), os sistemas ainda eram analógicos e proviam

serviços de voz apenas [1]. Porém, os dispositivos ainda consumiam muita potência, eram

caros, tinham baixa capacidade e o serviço ainda não era confiável [1].

Com os avanços das tecnologias e das teorias de comunicação digital, criaram-se a

partir do início da década de 1990 os sistemas de segunda geração (2G), sendo o Global System

for Mobile Communications (GSM) o mais popular e bem sucedido desses [2]. A capacidade já

permitia a inclusão de alguns novos recursos, como o serviço de mensagens curtas (SMS). A

própria evolução desses padrões elevou a capacidade original de forma a já permitir recursos

mais avançados, como o acesso à internet.

A partir da popularização das comunicações móveis em paralelo com o

desenvolvimento da internet, começou a existir uma demanda crescente por sistemas com

maior capacidade de transferência de dados. Muitos dos avanços tecnológicos vistos nas duas

últimas décadas se devem ao avanço das tecnologias aplicadas aos dispositivos semicondutores.

A partir dos anos 2000 os sistemas de terceira geração (3G) foram inseridos no mercado

[2] perdurando até os dias atuais. Essa tecnologia permite uma maior taxa de transmissão de

dados, o que é fundamental para suprir as necessidades de comunicação e acesso à informação

dos consumidores. Porém, os limites impostos são consideráveis com o avanço do número de

usuários e da taxa de transmissão de dados.

Page 17: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

2

O sistema Long Term Evolution (LTE) surgiu para tentar vencer os desafios associados

aos 2G e 3G, criando todo um novo ambiente para o desenvolvimento das comunicações

móveis, sem que haja a necessidade de compatibilidade [1]. Uma das características mais

interessantes é a de o sistema ser projetado primordialmente para suportar transferência de

dados via Internet Protocol (IP), inclusive os serviços de voz.

O LTE teve como motivação, além do aumento da taxa de transferência o melhor

aproveitamento espectral, já que pode enviar mais dados em uma mesma faixa de frequência.

Essa característica é importante para o provedor dos serviços já que irá permitir que, para uma

mesma faixa licenciada, mais usuários possam ser atendidos com melhor qualidade.

Outra vantagem dos sistemas LTE é a menor latência associada à comunicação, ou seja,

o tempo de resposta do sistema. Para determinadas operações essa característica é fundamental.

Um exemplo é a utilização de voz sobre IP (VoIP) que se torna bastante comprometido ao se

optar por uma rede 3G, sendo no LTE a solução natural para o serviço de voz.

É importante lembrar que apesar de estar sendo popularmente denominada uma

tecnologia de quarta geração (4G), o LTE não atinge originalmente os requisitos para ser

enquadrado nessa categoria.

Para atingir o máximo da capacidade do canal é necessária a utilização de esquemas de

codificação de dados. Um dos mais bem sucedidos codificadores é o Turbo-Code, sendo o

principal codificador do LTE.

O Turbo-Code é um dos principais blocos do projeto da camada física do LTE, como

observado em [3]:

“A codificação de canal, e particularmente o decodificador de canal manteve a

reputação de ser a fonte dominante de complexidade de implementação das

comunicações sem fios, apesar do relativamente recente predomínio das técnicas

avançadas de antena com suas complexidades associadas.”

A teoria de comunicações determinou um limite teórico para as taxas de transmissão de

dados. Para um melhor aproveitamento os sistemas devem transmitir à maior taxa possível. O

limite da capacidade de um canal foi determinado por Claude Shannon, em 1948 [39], como

expresso na equação (1):

.

/ (1)

onde C é a capacidade de transferência de dados do canal, B é a largura de banda e S/N é a

relação sinal ruído.

Um sistema de correção de erros pode aproximar as taxas de transmissão desse limite

teórico. De fato, ao se utilizar uma codificação complexa o bastante esse limite poderia ser

atingido, porém isso traria uma enorme dificuldade de implementação.

Page 18: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

3

Diversos esquemas de codificação foram propostos desde os estudos de Hamming sobre

o desempenho dos sistemas de detecção e correção de erros no combate aos efeitos negativos

do ruído introduzido pelo canal.

No início da década de 1990 foi idealizado o algoritmo do turbo-code [17] atingindo

uma taxa de transferência próxima ao limite de Shannon. Com o avanço das tecnologias esse

esquema de codificação se tornou viável, sendo crescente a sua utilização em sistemas de

comunicação modernos. O padrão LTE não foge a essa tendência, adotando o turbo-code como

o principal codificador de canal.

Este trabalho propõe uma nova arquitetura para o Turbo-Code especificado no sistema

LTE [18], sendo seu desempenho adequado aos requisitos definidos no padrão, com alguns

parâmetros de projeto superiores aos encontrados em trabalhos anteriores.

O codificador, como determinado no padrão do LTE, é bastante simples. Porém, o

decodificador não é especificado, dando flexibilidade de implementação. O objetivo principal

desse trabalho é apresentar a arquitetura de um processador dedicado, em tecnologia de

circuitos integrados para o decodificador e demonstrar o desempenho atingido pela arquitetura

proposta.

Como objetivos específicos este trabalho pretende:

a. Revisar a teoria de codificação com ênfase no Turbo-Code;

b. Revisar o fluxo de projeto digital e justificar o uso desta tecnologia para a realização do

Turbo-Code;

c. Desenvolver uma nova arquitetura de decodificação Turbo-Code, como parte integrante

do projeto da camada física de um sistema LTE em uma tecnologia de circuitos

integrados, passando por todas as etapas desde a modelagem e descrição até a geração

do leiaute final. Desta forma, objetiva-se criar toda a estrutura de um IP (Intelectual

Property) completo, ou seja, um bloco com boas possibilidades de reúso em outros

projetos;

d. Demonstrar a eficiência da solução desenvolvida, comparando-a a outros projetos

encontrados na bibliografia. Explicar os parâmetros das comparações e como isto afeta

o projeto;

e. Desenvolver um artigo científico para publicação em congresso internacional na área de

microeletrônica, tendo como parâmetro o SBCCI (Symposium on Integrated Circuits

and Systems Design)

Page 19: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

4

A metodologia para a determinação da eficiência do decodificador é importante para

definição do sucesso deste projeto. Assim, para uma análise sobre a eficiência da arquitetura

desenvolvida foram extraídos ou simulados os diversos parâmetros de desempenho e algumas

comparações foram realizadas. Na época do desenvolvimento do projeto poucos artigos haviam

sido publicados diretamente relacionados com o projeto do turbo-code voltado para a

tecnologia LTE, o que acarretou na importância da publicação de um artigo relacionado.

Um artigo científico foi desenvolvido e publicado no 24º SBCCI [8], em 2011, estando

entre os melhores do congresso, gerando um convite para a publicação de uma versão estendida

na revista relacionada ao congresso. Consequentemente um novo artigo foi desenvolvido e

devidamente publicado na JICS (Journal of Integrated Circuit and Systems), em 2012 [37].

Durante o desenvolvimento alguns blocos correlatos da camada física do LTE foram

estudados para se ter uma melhor ideia das restrições e do desempenho exigido. A informação

mais imediata é relacionada ao throughput do sistema. Esse parâmetro é a quantidade de

informação processada em um período de tempo e está diretamente relacionada com as taxas de

transmissão de dados especificados no padrão.

A capacidade de correção de erros é fundamental para que se tenha um sistema

confiável e bem projetado. O desempenho pode ser medido através da simulação do modelo e

da verificação do projeto. Inicialmente foram especificadas as tolerâncias a erros para cada

esquema de modulação e buscou-se o hardware mais otimizado para atender a esses valores.

Pode-se notar que há um compromisso entre o desempenho e os resultados obtidos após a

implementação. Esse tipo de escolha é bastante comum em projetos de ASIC e envolve outros

parâmetros como área, potência e frequência de operação.

Para demonstrar o trabalho proposto esta dissertação será dividida em mais quatro

capítulos. Inicialmente, haverá uma descrição da codificação de canal, chegando até o turbo-

code e sua versão para o LTE. No capítulo seguinte será apresentada a arquitetura proposta, sua

implementação em hardware. Posteriormente, serão apresentados os resultados de desempenho

atingidos pela arquitetura, comparando-os com outros trabalhos relevantes. Finalmente, no

último capítulo será feita a conclusão e observações finais sobre este trabalho.

Page 20: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

5

2. CORREÇÃO DE ERROS

Desde que Shannon estabeleceu os limites da capacidade do canal, vários estudos foram

realizados objetivando sistemas de comunicação mais eficientes. Segundo descrito em [5]

existem quatro requisitos básicos que podem ser otimizados ao se utilizar um sistema de

codificação em detrimento da necessidade de utilização de uma maior largura de banda:

- Desempenho com relação aos erros

- Potência

- Taxa de transferência de dados

- Capacidade

Nos sistemas de comunicação atuais os ganhos referentes aos quatro requisitos listados são

superiores à perda de desempenho associada a uma maior utilização da banda de transmissão.

O desempenho com relação aos erros é o requisito mais evidente, já que um esquema de

codificação irá necessariamente entregar os dados a uma taxa de erros menor do que um

sistema não codificado com uma mesma relação entre o sinal e o ruído do canal. Os sistemas de

detecção e correção de erros inserem informações redundantes, assim necessitando de uma

maior banda de transmissão para alocar as informações sobressalentes.

O requisito da potência é bastante interessante, pois se relaciona diretamente com o limite

da capacidade do canal. Uma forma de se aumentar esse limite é realizar a transmissão a uma

maior potência, assim melhorando a relação sinal/ruído. Contudo, essa não é uma boa

estratégia, especialmente em se tratando de dispositivos móveis, dependentes de uma fonte

bastante limitada de energia. Portanto, é mais eficiente inserir informações redundantes, o que

permite um desempenho semelhante ao aumento da potência, porém implicando em um menor

consumo.

A capacidade de transmissão está intimamente ligada ao aumento da taxa de transmissão.

Essa, por sua vez, também pode ser vista como uma expansão da relação sinal/ruído já que

estes fatores estão relacionados de uma forma inversamente proporcional. Portanto, um

codificador permite uma relação sinal ruído menor, gerando uma taxa de transmissão maior.

1.1. PERSPECTIVA HISTÓRICA

O telégrafo é considerado o primeiro sistema de comunicação elétrico. Inventado em 1837

por Samuel Morse, curiosamente utilizava um esquema digital de transmissão de dados em que

as letras do alfabeto eram codificadas em pulsos e pausas, o famoso código Morse.

Page 21: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

6

Foram os estudos de Nyquist publicado em 1928 [38], ainda baseados no sistema de

telégrafo, que deram início às teorias de comunicações digitais modernas. Nesse trabalho

Nyquist propôs seu famoso teorema da largura mínima de banda para a transmissão de um

sinal. Estabeleceu assim que um determinado símbolo só poderia ser corretamente detectado se

a frequência da banda tivesse um limite mínimo teórico igual ao dobro da frequência de

símbolos. Portanto, na prática, para uma determinada banda de transmissão poderão ser

enviados símbolos a uma taxa inferior à metade da frequência de banda, assim evitando o efeito

da interferência intersimbólica. Como símbolos podem ser entendidos qualquer tipo de sinal,

portanto, com uma modulação eficiente pode-se alterar a taxa real de transmissão de dados,

permitindo o envio de mais de um bit de informação por símbolo.

Seguinte aos trabalhos de Nyquist [38], Shannon em 1948 [39], baseado em rigorosas

representações matemáticas e estatísticas, estabeleceu a capacidade do canal, inaugurando

assim uma nova área da engenharia: a teoria da informação. A equação (1) define a capacidade

do canal, também chamada de limite de Shannon, mostrando que para um determinado meio de

transmissão, um sinal transmitido a uma potência específica pode ser detectado sem ocorrência

de erros.

Anteriormente a Shannon [39], Hamming [40] havia iniciado os estudos sobre códigos de

correção de erros. Trabalhando na Bell Telephone Laboratories, ele era uma dos responsáveis

por auxiliar outros cientistas quando esses enfrentavam problemas no manuseio dos

computadores, que na época trabalhavam com relés programados através de cartões perfurados

e bastante suscetíveis a erros. Após esperar por cálculos importantes para pesquisas dos seus

colegas serem processados por alguns dias e não receber resultados, Hamming relatou que,

irritado, pensou:

“Maldição. Se uma máquina pode descobrir que há um erro, porque ela não pode localizar

onde ele está e mudar as configurações do relé de um para zero ou de zero para um?” [9]

Os estudos de Hamming influenciaram bastante o desenvolvimento da teoria de Shannon,

que por sua vez estabeleceu os parâmetros para os algoritmos de correção de erros através do

limite da capacidade do canal.

Após os trabalhos de Shannon [39] que deram visibilidade aos estudos de Hamming [40],

Golay em 1949 [41] também criou seu próprio método de correção de erros, estendendo o

código de Hamming, e inserido-se também como um dos pioneiros da área. Seu primeiro artigo

fundamental foi na teoria de correção de erros.

Após a criação de alguns outros métodos de codificação, como o de Reed-Salomon, Elias

em 1955 [11], propôs um sistema de codificação baseado em uma máquina de estados finitos

Page 22: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

7

chamada de codificação convolucional, em que o sinal codificado depende apenas das entradas

e do estado passado. Esse tipo de codificador também ficou conhecido como codificação em

treliça devido à sua representação gráfica mais usual. Os códigos convolucionais podem ser

mostrados através de um gráfico que leva em consideração os estados dos registradores como

uma função temporal. O exemplo visto em [9] e reproduzido abaixo é bastante elucidativo da

forma como ocorre a construção do gráfico em treliça. O codificador convolucional é mostrado

na Figura 1.

Figura 1: Codificador Convolucional

O gráfico em treliça representa como a máquina de estados pode se comportar com o

tempo. Tomando um estado inicial em que todos os registradores têm valor zero, são

representados quais os estados que a máquina pode assumir e as saídas que o codificador pode

apresentar em se tendo as duas possibilidades de entrada. A máquina de estados do codificador

da Figura 1 pode ser representada pelo gráfico em treliça da Figura 2.

Page 23: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

8

Figura 2: Representação do Gráfico em Treliça Relativo ao Codificador Convolucional da Figura 1

As linhas sólidas representam as saídas geradas a partir de um bit de entrada de valor zero,

e uma linha tracejada denota a saída do decodificador para uma entrada binária de valor um. Os

nós caracterizam os estados possíveis dos registradores do codificador. Os gráficos em treliça

têm todos os registradores em zero como estado inicial (representado nesse gráfico pelo estado

a=00). Partindo deste estado, a entrada pode levar a dois caminhos na treliça dependendo do

seu valor, ou seja, do dado a ser codificado. Pode-se notar que a partir do tempo t4 a treliça se

repete, não precisando então haver uma representação formal de todas as possibilidades através

do tempo. Essa relação temporal pode ser extrapolada a partir do gráfico reduzido.

A grande dificuldade enfrentada na utilização de esquemas de codificação convolucional se

dá na complexidade do decodificador. O problema, para um codificador simples, pode

inicialmente ser reduzido a encontrar o caminho na treliça que apresente a menor probabilidade

de erro se comparado com os possíveis caminhos seguidos. Considerando uma sequência

recebida pelo decodificador, os dados decodificados serão os que estão no caminho com menor

probabilidade de erros - a esse conceito dá-se o nome de maximum likelihood.

A função de erros para cada ramo da treliça será representada pela distância entre os dados

recebidos e todas as possibilidades da sequência. Essas distâncias são calculadas pela distância

de Hamming, para algoritmos de decisão abrupta (o decodificador só interpreta valores

binários) ou Euclidiana, para algoritmos de decisão suave (o decodificador interpreta símbolos

com mais de um bit cada). A decisão suave, também chamada de SISO (Soft-Input Soft-

Output), se dá pela utilização de dados ainda na forma ponderada na entrada do decodificador.

A distância de Hamming é apenas utilizada em sistemas com decisão abrupta, em que cada

dado de entrada do decodificador é representado por um bit. Para se calcular a distância entre

Page 24: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

9

essa sequência recebida e a gerada por uma das possíveis sequências enviadas, basta fazer a

soma da quantidade de bits diferentes entre elas.

Já a distância Euclidiana está relacionada com os símbolos representados por mais de um

bit. Portanto, os sinais de entrada não apresentam apenas dois níveis lógicos. Para o cálculo se

considera que os ramos são constituídos pelos sinais sem ruídos e a métrica euclidiana será

simplesmente a distância entre o sinal recebido e o sinal sem ruído.

A ideia de encontrar a menor probabilidade de erros parece tentadora de início, porém essa

estratégia requer um hardware com uma complexidade enorme, pois deverão ser computados e

armazenados os dados para cada sequência possível.

Esse problema foi amenizado após Viterbi em 1967 [13] criar um sistema de decodificação

otimizado para os códigos convolucionais, gerando uma arquitetura mais simples. Porém a

ideia do algoritmo proposto continua sendo o de encontrar o caminho de maior probabilidade

(maximum-likelihood).

Através da análise do gráfico de treliça pode-se notar que a cada símbolo interpretado

existirão dois caminhos convergindo para cada nó. Portanto, só existirá um caminho mais

provável (menor distância) até um dado nó, assim, podendo eliminar uma das sequências,

sendo o caminho que não é eliminado chamado de sobrevivente. Desta forma, existirá sempre

um número limitado de sequencias a serem analisadas, reduzindo bastante a complexidade de

implementação.

Em contrapartida, Bahl et al. em 1972 [15] propuseram um decodificador baseado na

seguinte constatação: “O algoritmo de Viterbi, por ser um método de decodificação de máxima

probabilidade (maximum-likelihood), minimiza a probabilidade de erros de uma sequência para

o codificador convolucional. Esse algoritmo não necessariamente minimiza a probabilidade do

erro em um símbolo”. O algoritmo proposto em [15] se baseia na ideia de maximizar a

probabilidade a-posteriori (A-Posteriori Probability – APP) de cada símbolo ser correto, por

isso fora denominado Maximum A-Posteriori (MAP).

Segundo [14], maximizar as probabilidades a-posteriori por si só leva a um incremento

mínimo em termos de bits errados se comparado com o algoritmo de Viterbi, portanto essa

solução não foi usada de imediato, já que proporcionava um aumento de complexidade

significativo. Porém, essa informação a-posteriori é fundamental para um esquema de

decodificação iterativa.

O exemplo da funcionalidade do algoritmo MAP dado em [14], utilizando a notação

encontrada em [15], é bastante elucidativo:

Page 25: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

10

A Figura 3 mostra uma treliça de terminação curta com sete seções, usada como exemplo.

O sinal transmitido é , -, e os símbolos de informação são ,

- ou seja, existem dois bits de terminação (tail bits) que levam o codificador de volta

ao estado zero.

O propósito final do algoritmo é o cálculo das probabilidades a-posteriori, tais como

, | - ou , | -, onde y é a sequência recebida observada na saída do canal, do qual a

sequência transmitida é . Porém, conceitualmente, é mais imediato calcular a probabilidade

de o codificador atravessar uma transição específica da treliça; ou seja,

, | -, onde é o estado no tempo , e é o estado no tempo . O

algoritmo calcula essa probabilidade como um produto de três termos, conforme expresso em

(2).

, | -

( )

, -

( ) ( ) ( ) ( ) (2)

Os valores de são variáveis internas do algoritmo e são calculados pela forward

recursion, definida em (3).

( ) ∑ ( ) ( ) (3)

Figura 3: Exemplo de Treliça

A forward recursion avalia os α-valores no tempo dos -valores calculados previamente

no tempo , e a soma sobre todos os estados m’ no tempo que conectam ao estado m

no tempo . A forward recursion é ilustrada na Figura 4. Os valores de são inicializados

como ( ) ( ) ( ) ( ) . Isto automaticamente força à condição em que

o codificador começará no estado 0.

Page 26: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

11

Figura 4: Forward Recursion

Os β-valores são calculados por um procedimento análogo, chamado de backward

recursion, definido em (4).

( ) ∑ ( ) ( )

(4)

Os β-valores são inicializados por ( ) ( ) ( ) ( ) forçando a

condição de término da treliça. A soma se dá sobre todos os estados m’ no tempo , no qual

o estado m no tempo t se conecta. A backward recursion é ilustrada na Figura 5.

Figura 5: Backward Recursion

Os valores de são as probabilidades de transição condicional e são entradas para o

algoritmo. ( ) é a probabilidade conjunta de o estado no tempo ser e

ser recebido, sendo calculado por (5).

( ) ( | ) , | - ( | )

(5)

Page 27: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

12

onde o primeiro termo, , | -, é a probabilidade de transição a priori e é

relacionada à probabilidade de .

O segundo termo, ( | ), é simplesmente a probabilidade de transição condicional do

canal dado que o símbolo seja transmitido. Note que é o simbolo associado com a transição

do estado .

As probabilidades dos símbolos a posteriori , | - podem ser calculadas a partir das

probabilidades a priori de transição, somando todas as transições correspondentes a e,

separadamente, somando todas as transições correspondentes a , para obter:

, | -

( )∑ , -

(6)

, | -

( )∑ , -

(7)

Na Figura (6), a transição sólida corresponde a e a transição tracejada corresponde a

.

Figura 6: Probabilidade de Transição

A descrição formal detalhada foi demonstrada em [15], bem como o algoritmo passo-a-

passo. A operação foi posteriormente alterada por Berrou, Glavieux e Thitimajshima em [17]

para se adequar ao caso da decodificação do turbo-code.

Como já citado, o algoritmo MAP é de difícil implementação em hardware, já que requer

muitas multiplicações de números que necessitam de muitos bits para a sua correta

representação. Além de requerer que a treliça seja percorrida ao menos duas vezes para o

cálculo das componentes e . Uma alternativa bastante interessante é a de realizar as

operações no domínio logarítmico, o que possibilita a redução das operações mais complexas.

Essa otimização será mostrada posteriormente nesse trabalho.

Page 28: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

13

Durante um longo período essa decodificação não foi utilizada, por sua complexidade e

baixo ganho de desempenho com relação ao algoritmo de Viterbi [13]. O algoritmo MAP só foi

novamente discutido depois da criação dos turbo-codes, já que esses requeriam a informação a

posteriori de cada bit.

Durante muito tempo diversos estudos foram realizados e várias arquiteturas de codificação

foram propostas no sentido de usar mais esquemas de codificação de forma concatenada (por

exemplo, usar o codificador Reed-Solomon em série com um convolucional, como citado em

[14]). Os codificadores convolucionais eram uma boa alternativa como um dos codificadores a

serem concatenados. Para uma decodificação iterativa era preciso que as informações não

fossem abruptas, mas que houvesse um refinamento da informação. Com isso, algoritmos de

decisão suave foram mais estudados. A melhor alternativa neste período e com as

configurações desenvolvidas era a de utilizar os decodificadores do tipo SOVA (Soft-Output

Viterbi Algorithm).

O turbo-code mudou esse panorama propondo uma arquitetura em paralelo, onde dois

codificadores convolucionais recebiam a mesma entrada, porém com os dados permutados.

A criação do turbo-code foi proposta por Berrou, Glavieux e Thitimajshima em 1993 [17],

causando uma grande revolução no desenvolvimento dos codificadores, já que atingia

desempenho próximo ao estimado pelo limite de Shannon. Assim, o turbo-code se tornou

dominante como codificador de canal para comunicações digitais. A sua implementação porém

era desafiadora, sendo ainda atualmente um dos blocos mais complexos na implementação dos

sistemas de comunicação.

Primeiramente, [17] define um novo arranjo para realizar a codificação convolucional. Este

novo esquema já tinha um ganho de desempenho se comparado com os que vinham sendo

usados. Os codificadores sistemáticos são aqueles que enviam, além do sinal codificado, a

própria entrada. Contudo, é sabido que os codificadores convolucionais não sistemáticos (Non-

Systematic Convolutional – NSC) apresentam uma melhor resposta de erros para uma relação

sinal ruído alta [17]. A nova classe de codificadores chamados de convolucionais sitemáticos

recursivos (Recursive Systematic Convolutional – RSC) foi proposta por [17], sendo superior

aos NSC para qualquer relação sinal ruído em altas taxas de codificação. Neste caso, são

enviados sinais de sistemático (que é igual à entrada) e de paridade (resultado das operações do

codificador). Exemplos de codificadores NSC e RSC são mostrados nas Figuras 7 e 8, extraídas

de [17].

Page 29: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

14

Figura 7: Codificador Non-Systematic Convolutional

Figura 8: Codificador Recursive Systematic Convolutional

Deve-se notar que no codificador NSC representado ambas as saídas são de sinais de

paridade, enquanto na figura do RSC, é o bit de paridade e é o bit de sistemático.

Sabe-se que a decodificação com decisão suave proporciona um ganho de desempenho

considerável para algoritmos iterativos. O logaritmo da razão das probabilidades (Log

Likelihood Ratio – LLR) é uma importante informação para o aprimoramento da decodificação.

A LLR pode ser calculada através da função de probabilidades descrita por (8):

( ) * ⁄ +

* ⁄ + (8)

sendo * ⁄ +, a probabilidade a posteriori (APP) do dado .

A formalização do algoritmo proposto por [15] foi modificado por [17] para o cálculo de

um codificador RSC, levando em consideração sua estrutura recursiva. Os passos descritos são

(algumas notações foram modificadas para melhor compatibilidade com [17]):

Page 30: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

15

Considerando um RSC com comprimento K (quantidade de bits do codificador) em um

tempo k, os estados do codificador podem ser representados por:

( ) (9)

Sendo a entrada dos registradores de deslocamento com o dado de entrada , como

representado na Figura 8. O estados inicial e final do codificador, e , são iguais a zero.

A entrada do decodificador pode ser representada por * + onde

( ) são os sinais capturados que passam por um demodulador ou outro

processamento semelhante. Logo, a probabilidade conjunta para um estado m é definida por:

( ) *

⁄ + (10)

sendo então a probabilidade a posteriori (APP) definida por:

* ⁄ + ∑

( )

(11)

A LLR então fica:

( ) ∑

( )

∑ ( )

(12)

Para o cálculo da probabilidade conjunta, três funções de probabilidade são usadas,

descritas por (13).

( )

* +

* +

* ⁄ + (13.a)

( )

* ⁄ +

*

⁄ +

(13.b)

( ) * ⁄ + (13.c)

Pode-se notar que ( ) e ( ) são referentes às probabilidades de estado e

( ) se refere à probabilidade de transição entre estados, sendo esta variável calculada

pelas funções de probabilidades descritas em (14):

( ) ( )⁄

( ⁄ )

( ⁄ )

(14)

Page 31: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

16

onde:

- ( )⁄ representa a probabilidade de transição do canal

condicionada a ( ). Contudo, pode ser desmembrado nas

variáveis recebidas, separadamente sistemático e paridade.

- ( ⁄ ) é a probabilidade de, tendo-se uma entrada, os

registradores transitem entre estados. Esta variável é sempre 1 ou 0, já que apenas uma entrada

específica leva a máquina entre estados determinados.

- ( ⁄ ) é a probabilidade de mudança de um estado para outro específico.

Este fator é relacionado com a probabilidade da entrada do codificador. Esta componente é

chamada de probabilidade a priori.

A probabilidade conjunta pode ser reescrita como:

( )

*

+

*

+ (15)

Através de algumas transformações em (15), obtém-se:

( )

( ) ( ) (16)

Por sua vez, ( ) e ( ) podem ser calculados recursivamente através das funções de

probabilidade de transição entre os estados, equações 17 e 18, calculando a probabilidade de

estados desde as primeiras amostras e desde a última amostra para ( ) e ( ),

respectivamente:

(17)

(18)

Assim, os passos do algoritmo de Bahls modificado por Berrou ficam:

- Passo 1: Inicializar as probabilidades ( ) e ( ) levando em consideração que os

registradores sempre começam e terminam com valores 0. Portanto:

( )

( )

( ) ( )

- Passo 2: Para cada recebido, são calculadas as probabilidades ( ) e

( ).

Page 32: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

17

- Passo 3: Quando toda a sequência for recebida, ( ) é calculado e é multiplicado

por ( ) de forma a obter

( ) e posteriormente a LLR associada a cada .

Dessa forma, a decodificação de uma RSC é formalizada na forma de um algoritmo,

utilizando recursividade para o cálculo das probabilidades de estados. O algoritmo é mais

simples de entender graficamente através das figuras (4), (5) e (6).

O cálculo da LLR é reescrito como:

(19)

E a probabilidade de transição é representada pelas entradas independentes:

( )⁄

( )⁄ ( )⁄

(20)

Levando em consideração que um dos sinais do codificador é diretamente a entrada de

dados, a parte referente à informação do sistemático, ( )⁄ , no

cálculo de ( ) é independente do cálculo dos estados e , logo a LLR pode ser

fatorada em:

( ) ( ⁄ )

( ⁄ )

∑ ∑ ∑ ( )

( ) ( )

∑ ∑ ∑ ( ) ( ) ( )

(21)

A primeira parte da soma diz respeito apenas à entrada do sistemático, já a segunda parte se

refere à redundância inserida. Este fator representa a informação extrínseca, que, por sua vez,

não depende da informação do sistemático.

O codificador turbo-code é constituído por dois RSCs idênticos em paralelo, com a entrada

para um deles passando por uma função de interleave, que embaralha os dados de entrada,

alterando a sua ordem de uma forma pseudo aleatória de tal modo a permitir a reconstrução na

ordem natural dos dados. Este esquema pode ser visto na Figura 09.

Page 33: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

18

Figura 9: Estrutura Simplificada do codificador Turbo-Code

Pode-se notar que os codificadores recebem a mesma informação, porém os bits são

recebidos em uma sequência diferente.

O decodificador iterativo usa a informação contida em uma sequência de paridade para que

refine a decodificação do seguinte. Um esquema de decodificador é representado na Figura 10.

Figura 10: Estrutura Simplificada do Decodificador Turbo-Code

Na Figura 10, w representa a informação extrínseca e as entradas de sistemático do segundo

decodificador são os dados decodificados pelo primeiro. Uma informação importante é que os

decodificadores não podem ser alimentados por dados correlatos, para evitar a correlação entre

os dados gerados pelos codificadores e as entradas.

1.2. ALGORITMOS E OTIMIZAÇÕES DO TURBO-CODE

Apesar de ser apresentado na forma de um algoritmo e de ser realizável, a decodificação do

turbo-code ainda tem um grau de complexidade muito elevado e sua implementação e

Page 34: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

19

utilização na prática não seriam possíveis nas formas apresentadas até então. Para reduzir a

complexidade, algumas otimizações foram desenvolvidas, gerando uma forma bastante

simplificada do processador SISO.

1.2.1. Algoritmo Log-MAP

Segundo Robertson [16], o algoritmo apresentado por Bahls e modificado por Berrou

mesmo na sua forma recursiva apresenta um grau de complexidade alto. Isso se deve à

representação numérica, ao uso de funções não lineares e ao número elevado de somadores e

multiplicadores. A sua representação no domínio logarítmico resolve o problema numérico e

reduz a complexidade computacional.

No formalismo subsequente adotamos a notação:

( ) ∑

( )

(22)

As relações necessárias para o cálculo da LLR (posteriormente as componentes serão

separadas) no domínio logarítmico são desenvolvidas como mostrado em [16]:

( ) ( ( )) ( ) ( ( )) (23)

Logo:

( ) (∑∑ ( ( ) (

))

)

(∑∑∑ ( ( ) (

))

)

(24)

De acordo com [4]:

( ) ( ( )( | |)) ( ) ( | |) (25)

Inicialmente, aproximando-se a relação em (25) por ( ) ( ) pode-se

generalizar:

( ) * +

(26)

Page 35: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

20

A função de máximo pode ser recursivamente calculada fazendo-se a comparação sempre

sobre duas componentes. Assim, combinando as equações (24), (25) e (26), obtém-se:

( ) ( )

( ( ) (

)) ( )

( ( ) (

)) (27)

Analogamente, para ( ) ( ( )), temos:

( ) ( )

( ( ) ( ))

( )( (

) ( )) (28)

Assim, a LLR fica:

( )

( )( ( ) (

) ( ))

( )

( ( ) ( ) ( ))

(29)

Decompondo como nas equações (14) e (20), a LLR fica:

( ) ( )

( ( ) ( ) ( ))

( ⁄ ) * +

( )

( ( ) ( ) ( ))

( ⁄ ) * +

(30)

A informação, a priori, pode então ser calculada para ( ⁄ )

por:

( ) ( * +

* +) (

* | +

* | +) (31)

Portanto:

* | + ( ) ( ( )) ( ) ( ( )) (32)

De forma similar, para ( ⁄ ):

* | + ( ( )) (33)

Essa simplificação é chamada de Max-Log-MAP devido à utilização das funções de

máximo e da composição logarítmica das variáveis. Essa solução apresenta um desempenho

sub-ótimo, já que a aproximação gera uma diferença de desempenho com relação ao cálculo

logarítmico. Uma forma de minimizar esta queda de desempenho é utilizando uma função de

Page 36: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

21

correção baseada na componente não computada. Esta solução se aproxima bastante da

resposta ótima no domínio logarítmico. Este algoritmo é denominado de Log-MAP e tem sua

aproximação da função logarítmica representada por:

( ) ( ) ( | |)

( ) (| |)

(34)

onde ( ) é a função de correção. Consequentemente, pode-se provar que a expressão

( ) pode ser calculada com exatidão. Supondo que ( ) é

sabido. Então:

( ) ( )

( ) (| |)

( ) (| |)

(35)

Assim, todas as funções de máximo sobre dois valores têm uma função de correção. Como

consequência, por corrigir a cada passo a aproximação feita pelo Max-Log-MAP, o algoritmo

MAP original foi preservado.

Todavia, o cálculo de ( ) continua tendo um algo grau de complexidade. Como solução,

uma tabela com os valores pré-calculados pode ser inserida. Pode ser mostrado que poucos

valores já atendem a critérios bastante elevados de desempenho.

1.2.2. Decodificação em Paralelo

A implementação serial descrita por [17] e reproduzida anteriormente através da Figura 10,

é a forma iterativa do algoritmo de decodificação. Esta forma apresenta uma latência muito

elevada, impactando assim no desempenho do sistema.

Uma forma de reduzir o tempo de operação da decodificação é a implementação paralela

intra-SISO. Dobkin et al. [20] mostrou a arquitetura paralela para o decodificador MAP,

comparando o seu resultado com uma implementação utilizando janelas deslizantes (sliding-

window).

As janelas deslizantes são uma forma de acelerar a decodificação de forma a começar o

cálculo das componentes antes da conclusão do recebimento de todos os valores de entrada.

Um exemplo gráfico mostrado por [20] da utilização das janelas deslizantes pode ser visto na

Figura 11. Neste caso, primeiramente todos os dados são recebidos, posteriormente as

Page 37: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

22

componentes são calculadas e, finalizando, a componente é calculada juntamente com a

LLR:

Porém a solução de janelas deslizantes reduz apenas o tempo do cálculo de uma

componente ( neste caso). Um algoritmo mais agressivo foi proposto por [20] em que

algumas SISOs operam em paralelo, dividindo os dados em sub-blocos de processamento de

tamanho W. Quanto menor o valor de W, menor é a latência associada. O maior empecilho é a

operação do interleaver. Contudo, um projeto correto permite a utilização desta técnica.

Posteriormente neste texto será apresentada uma das técnicas de interleaver.

A Figura 12 representa o tempo de processamento para uma arquitetura de janelas

deslizantes sequencial e uma totalmente paralela, onde N é o tamanho da palavra a ser

processada:

Figura 12: Comparação Sliding Window com Paralelismo

Figura 11: Operações com o Uso de Sliding Window

Page 38: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

23

Existe uma queda de desempenho associada à descontinuidade do cálculo das componentes

de estado e . Neste sentido, algumas técnicas podem ser aplicadas para minimizar este

efeito. Uma delas é fazer a sobreposição dos cálculos: o fim dos sub-blocos se estende além do

começo do bloco subsequente, o que faz com que o cálculo seja mais apurado.

1.2.3. Interleaver

Segundo [22], o propósito do interleaver no turbo-code é assegurar que os padrões de

informação que causam palavras de baixo peso para o primeiro codificador não sejam

embaralhados gerando padrões de baixo peso para o segundo codificador, portanto melhorando

o peso do espectro do código.

Ainda segundo [22], otimizações de espalhamento do interleaver são desejáveis para

convergência rápida e uma boa propriedade de distância do código. Grandes distâncias abaixam

o ponto em que a curva de bit error rate (BER) planifica (“piso de erros”) e cresce a inclinação

da curva de BER.

O interleaver, como dito anteriormente, tem papel fundamental para permitir o uso de

certas técnicas de paralelização do decodificador. Segundo [21]:

“A seleção da codificação turbo foi cuidadosamente considerada durante a fase de estudo

do item do LTE para alcançar requisitos rígidos. Após a comparação com diversos

codificadores de alto desempenho (e.g., turbo codes, LDPC, etc) baseado na complexidade,

flexibilidade e compatibilidade, foi decidido usar o turbo code WCDMA existente com um

novo contention free interleaver, permitindo uma paralelização eficiente do decodificador para

altas taxas. Seguindo deliberações do grupo de trabalho, o Permutador Quase Regular (Almost

Regular Permutation – ARP) e o Permutador Polinomial Quadrático (Quadratic Permutation

Polynomial – QPP) emergiram como as soluções mais promissoras para os requisitos do LTE,

sendo o QPP selecionado.”

Uma contenção ocorre quando em uma arquitetura em paralelo, dois processadores SISO

tentam acessar o mesmo banco de memória ao mesmo tempo. A utilização de um interleaver

que não prevê paralelização requer hardware especializado para tratar as contenções, o que

gera uma solução pouco eficiente. Um contention-free interleaver com M sub-blocos de

tamanho W deve respeitar a seguinte relação:

( )

( )

(36)

Page 39: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

24

Onde é a função de interleave ( )/deinterleave ( ), e para

todo .

Uma forma de otimizar a utilização das memórias é garantir que todos os processadores

SISO acessem o mesmo endereço de memória a cada momento. Para isso, o interleaver deve

seguir a função:

( ) ( ) (37)

Para todo e .

Esse é o tipo de função selecionada para o sistema LTE, assim permitindo a decodificação

em paralelo com uma implementação recursiva que leva a um hardware simples.

Page 40: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

25

2. ARQUITETURA PROPOSTA E IMPLEMENTAÇÃO

O objetivo deste capítulo é o de introduzir a metodologia de desenvolvimento de circuitos

integrados digitais, justificar as decisões de projeto e descrever a arquitetura adotada.

A arquitetura adotada é a grande contribuição deste trabalho, já que foi pensada e

desenvolvida para otimizar o processo de decodificação e atender a objetivos específicos de

desempenho. Para tal, algumas técnicas para projeto do decodificador turbo-code foram

estudadas e algumas adotadas na medida em que afetam parâmetros estabelecidos.

2.1. FLUXO DE PROJETO DIGITAL

Com o evolução da tecnologia de fabricação de circuitos integrados CMOS permitindo um

avanço na miniaturização dos dispositivos e consequentemente da complexidade alcançada

pelos circuitos microeletrônicos, os desafios de projeto ficaram maiores. Uma das grandes

preocupações na microeletrônica é o de atingir a excelência técnica aliada a uma preocupação

com o tempo de execução, pois o momento de lançar o produto no mercado é fundamental para

o sucesso de uma solução (time to marketing). Esta preocupação já está em evidência há algum

tempo e definiu os rumos do fluxo de projetos adotado em SoCs. Já em 2002 [24] se

questionava:

“Como chegaremos lá (projetos com 12 milhões de portas lógicas)? Para qualquer

variável envolvida com a solução, uma coisa é clara: a habilidade de influenciar a

avaliação de propriedades intelectuais (Intellectual Property - IP) pelo reuso de projeto

será pedra fundamental invariável para qualquer combate efetivo à questão de

produtividade. IPs reusáveis são essenciais para atingir a qualidade em engenharia e a

realização no prazo de circuitos com muitos milhões de portas lógicas. Sem o reuso, a

indústria de eletrônicos simplesmente não será capaz de manter o ritmo com o desafio

de entregar dispositivos „melhores, mais rápidos e mais baratos‟ aos consumidores.”.

É neste contexto que se aplica o projeto desenvolvido, já que este teve como requisito

básico poder ser comercializado como um IP separado da camada física do LTE. Desta forma,

este se torna um projeto completo, percorrendo assim todas as etapas tradicionais do fluxo de

projetos digitais.

Diversas são as representações do fluxo de projeto, cada autor organizando as etapas da

forma que melhor lhe convém. Embora, todos sigam os mesmos passos básicos, diferindo

apenas na forma e não no conteúdo. Em [25] foi ilustrada uma forma bastante simplificada os

passos do design e suas respectivas etapas de verificação:

Page 41: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

26

Figura 13: Representação em Alto Nível do Fluxo de Projeto

A Figura 13 mostra as transformações realizadas em cada etapa do projeto, reduzindo o

nível de abstração até chegar ao seu leiaute final. Também há uma partição entre o Front-End e

o Back-End, esta estrutura pode ser entendida como a porção em que somente transformações

lógicas ou físicas são realizadas. Partindo dos requisitos do produto, é criada uma especificação

funcional. Por sua vez, após o trabalho de projeto do RTL e a passagem pela síntese lógica,

uma especificação estrutural mais comumente conhecida como netlist é gerada. Após o término

desta etapa, a síntese física é realizada gerando o leiaute final do projeto. Todas essas etapas

vêm em conjunto com fases de verificação. Essas tarefas são detalhadas por [25] nas Figuras 14

e 15.

Page 42: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

27

Figura 14: Detalhamento das Etapas de Front-End

Figura 15: Detalhamento das Etapas de Back-End

Na Figura 14 está representado o fluxo de desenvolvimento do Front-End, em que

inicialmente a especificação e, através de funções lógicas e matemáticas, evolui para uma

descrição em portas lógicas, entretanto ainda sem as informações físicas completamente

definidas.

Page 43: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

28

Uma etapa que não é claramente mostrada na Figura 14, que pode ser adicionada entre a

especificação e o desenvolvimento do RTL é descrita em [26]. Nesta etapa, a especificação é

modelada em uma linguagem de alto nível como C/C++ ou Matlab de forma a validar os

conceitos da especificação. Uma descrição desta etapa feita por [26] é reproduzida a seguir:

“Uma vez que você tenha concluído a especificação detalhada do sistema, você

deve provar novos conceitos que você propôs para a implementação. Por exemplo, você

pode ter desenvolvido um novo algoritmo ou uma nova arquitetura, os quais você quer

implementar. Estes ainda não foram provados, ao invés de provar a sua adequação para

o projeto, você precisa usar linguagens de alto nível como C ou Matlab e testar os

códigos para todas as combinações possíveis que você poderá encontrar posteriormente

no hardware real quando você implementar o design. Até mesmo os padrões não podem

ser tomados como garantia e necessitam ser testados antes dos demorados códigos

Verilog. Quando você tiver certeza que os conceitos estão funcionando, este será o

momento correto de se começar o projeto de hardware.”

Após a modelagem, as funções a serem implementadas são escritas na forma de uma

linguagem de descrição de hardware (Hardware Description Language - HDL). Esta etapa é

denominada de RTL (Register Transfer Level), pois o projetista já revela onde os elementos de

memória são colocados na lógica, ou seja, quais sinais serão registrados. Algumas definições de

RTL são comentadas abaixo:

“RTL, ou nível de transferência de registradores, é um método de descrever o

comportamento do hardware em software usando uma linguagem de descrição de

hardware (HDL). Em qualquer linguagem de descrição de hardware (Verilog ou

VHDL), existem duas abordagens diferentes para descrever um bloco de hardware. Um

método consiste em descrevê-lo apenas pelo seu comportamento. A outra abordagem é

descrever o sistema de uma forma estrutural, ou seja, para atingir as funções pretendidas

são descritos blocos básicos cujas funcionalidades são sabidas e bem definidas. Nesta

abordagem, uma descrição Verilog ou VHDL do sistema é criada quando os

engenheiros de hardware sabem aproximadamente quais portas lógicas eles querem e

onde elas estarão.” [27]

“RTL significa nível de transferência de registradores, significando que o dado transferido

em um sistema realiza-se através de registradores” [28]

“Um código RTL é caracterizado pelo fluxo de controle direto através do código; é

compreendido por subcircuitos conhecidos que são conectados juntos de uma forma simples”

[29]

Esta é a função mais importante durante o projeto, já que irá definir os limites das

otimizações das etapas subsequentes. Um dos grandes motivos para a realimentação entre o

Back-End e o Front-End se dá exatamente na alteração do RTL para permitir que o projeto do

Back-End possa atingir certos requisitos.

A verificação do RTL é uma etapa bastante trabalhosa, consistindo basicamente de uma

verificação formal. Algumas metodologias estão sendo desenvolvidas nos últimos anos,

baseadas na evolução da linguagem Verilog para a linguagem SystemVerilog, que possibilitou

Page 44: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

29

a introdução de muitas funções novas para a simulação, incluindo aí algumas características

que permitem o uso de estruturas com orientação a objetos. Porém, o conceito básico prevalece,

que é o de se comparar um modelo de referência (também chamado de Golden Model) com o

RTL a ser verificado, aplicando estímulos iguais aos dois modelos e comparando suas saídas.

Normalmente, esse modelo pode ser diretamente derivado do modelo desenvolvido após a

especificação.

Durante o Front-End ainda são realizadas as etapas de síntese e as respectivas verificações.

Uma etapa básica que acompanha o RTL é a descrição dos requisitos temporais (Timing

Constraints), já que é o projetista de Front-End que consegue definir cada requisito e restrição

para o que foi projetado. Estas informações são descritas em um arquivo no formato SDC

(Synopsys Design Constraints). A partir dos arquivos SDC e do RTL, é realizada a síntese

lógica, que tem como principal objetivo reduzir o projeto RTL de mais alto nível para o nível

de portas lógicas, porém sem apresentar as características físicas completas. Por todo o fluxo

digital as transformações se dão sempre tendo como objetivo principal atender aos requisitos de

tempo.

O resultado final de todas as etapas de síntese mostradas na Figura 14 é um netlist, ou seja,

um arquivo com a descrição das funções através de portas lógicas. As etapas de verificação

também são mostradas, consistindo na análise de temporização, análise de potência, uma

verificação funcional (não obrigatória) e uma verificação formal comparando através de uma

prova matemática que o netlist equivale ao RTL.

O fluxo de Back-End é simplificadamente representado pela Figura 15. Normalmente, as

etapas de síntese são automatizadas, embora guiadas pelo julgamento humano [25]. É de

extrema importância o conhecimento de todas as etapas percorridas pelas ferramentas de EDA

(Eletronic Design Automation) para poder solucionar qualquer dificuldade e para obter os

melhores resultados das ferramentas.

Na Figura 15 é mostrado que o primeiro passo após a síntese lógica é o placement. Uma

etapa anterior pode ser adicionada se o projeto tiver níveis hierárquicos ou módulos que não

obedecem às células padrão, como memórias ou Hard-IPs. Assim, a descrição das etapas

representadas na Figura 15 segundo [27] são reproduzidas a seguir:

Floorplanning: É a primeira grande etapa do projeto físico. As tarefas chaves incluem

analisar o tamanho do projeto (área de silício), selecionar o encapsulamento, posicionar as

entradas e saídas, posicionar as macrocélulas (tais como células de memória, células analógicas

e células de função especial), planejar a distribuição de potência e de clocks e particionar a

hierarquia.

Page 45: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

30

Placement: O posicionamento é uma etapa chave para o projeto físico. Como o nome

sugere, o posicionamento é o processo de posicionar as células ou procurar a melhor

localização para cada célula do netlist dentro do floorplan. É uma atividade crucial, pois um

posicionamento pobre consome mais área, além de prejudicar o desempenho da velocidade do

chip. Posicionamento ruim geralmente leva a uma tarefa de roteamento difícil e, algumas vezes,

impossível.

Route: Após a etapa de placement, a exata localização das células e os seus pinos são

fixados. O próximo passo é completar fisicamente as interconexões definidas no netlist. Isso

implica no uso de fios (metais) para conectar os terminais relacionados em cada fio. O processo

de encontrar os leiautes geométricos para os fios é chamado de roteamento (routing). Como um

requisito, os fios roteados devem estar confinados a uma área. Adicionalmente, os fios não

devem estar curto-circuitados. Em outras palavras, os fios não devem ter uma interseção com

outros.

O objetivo do processo de roteamento depende da natureza do projeto. Em projetos de

propósito-geral, é suficiente minimizar o comprimento dos fios enquanto completa as

conexões. Em projetos de alto desempenho, é crucial o roteamento de cada fio de forma a

atingir os requisitos de temporização. Fios de propósito-específico, como o de clock e o terra,

requerem um tratamento especial.

Parasitic Extraction: Após as células serem posicionadas, as conexões elétricas são feitas

por fios metálicos. As células e os fios têm resistência e capacitância que afetam a propagação

de corrente através deles. Como consequência, há um impacto no tempo de propagação do

sinal. A Extração de Parasitas é o processo de extrair os valores exatos das resistências e

capacitâncias associadas a cada segmento de metal, de modo que seu impacto no atraso do sinal

possa ser determinado precisamente.

Timing Analysis: Verificação temporal é o processo de comprovar que o leiaute do chip

pode operar até a frequência definida para o produto. Diferentemente da verificação funcional,

a qual busca a funcionalidade do chip, a verificação temporal foca na velocidade do chip. Outra

diferença entre as duas verificações é que a de temporização deve ser realizada em todos os

casos limites (corner cases) de processo, temperatura e tensão (Process, Voltage and

Temperature – PVT). Um produto confiável deve rodar à temperatura desejada com

transistores fracos/fortes, resistência dos metais e vias alta/baixa, e com tensão fornecida

alta/baixa. Antes do projeto ser mandado para a manufatura, o comportamento de temporização

em todas as combinações destas condições têm que ser testadas com os requisitos do projeto.

Page 46: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

31

2.2. APRESENTAÇÃO DA ARQUITETURA

O Turbo-Code do sistema LTE é definido em [18], consistindo apenas da especificação da

codificação como mostrado na Figura 16 e da definição do interleaver.

Figura 16: Codificador Especificado para o Padrão LTE

A Figura 16 mostra dois codificadores convolucionais de 8 estados em paralelo, ligados por

um interleaver, resultando em uma taxa de codificação de

. A cada bit de dados existirão 3 bits

codificados. Na Figura 16 as linhas pontilhadas representam o caminho de dados para a criação

dos tail bits, que levam o sistema ao estado em que todos os registradores tomam valor lógico

zero.

Em operação normal, apenas três sinais são enviados e ao final de um bloco de dados, o

sistema deve ser levado ao estado conhecido em que todos os registradores são zero, gerando

assim os tail bits.

As saídas de dados do codificador são um bit do sistemático e dois de paridade, sendo a

unidade de codificação composta por três registradores. Os três sinais devem ser enviados

concatenados entre si, sendo os bits modulados na seguinte sequência:

0 ( )

( )

( )

( )

( )

( )

( )

( )

( )

1 (38)

Page 47: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

32

Usando a relação das saídas com o sinal codificado, tem-se:

( )

( )

( )

(39)

E os tail bits completam a sequência e são definidos por [12]:

( )

( )

( )

( )

( )

( )

( )

( )

( )

( )

( )

( )

(40)

Portanto, a sequência de transmissão de dados para um bloco de entrada de K bits terá

bits, com os últimos 12 representando os bits de terminação.

Outra definição é a função de geração do interleaver e os seus parâmetros, que são dados

pela equação (41). A Tabela 1 mostra os valores dos parâmetros necessários para os cálculos

[18].

( ) ( ) (41)

Page 48: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

33

Tabela 1: Parâmetros do Interleaver

t K f1 f2 t K f1 f2 t K f1 f2 t K f1 f2

1 40 3 10 48 416 25 52 95 1120 67 140 142 3200 111 240

2 48 7 12 49 424 51 106 96 1152 35 72 143 3254 443 204

3 56 19 42 50 432 47 72 97 1184 19 74 144 3328 51 104

4 64 7 16 51 440 91 110 98 1216 39 76 145 3392 51 212

5 72 7 18 52 448 29 168 99 1248 19 78 146 3456 451 192

6 80 11 20 53 456 29 114 100 1280 199 240 147 3520 257 220

7 88 5 22 54 464 247 58 101 1312 21 82 148 3584 57 336

8 96 11 24 55 472 29 118 102 1344 211 252 149 3648 313 228

9 104 7 26 56 480 89 180 103 1376 21 86 150 3712 271 232

10 112 41 84 57 488 91 122 104 1408 43 88 151 3776 179 236

11 120 103 90 58 496 157 62 105 1440 149 60 152 3840 331 120

12 128 15 32 59 504 55 84 106 1472 45 92 153 3904 363 244

13 136 9 34 60 512 31 64 107 1504 49 846 154 3968 375 248

14 144 17 108 61 528 17 66 108 1536 71 48 155 4032 127 168

15 152 9 38 62 544 35 68 109 1568 13 28 156 4095 31 64

16 160 21 120 63 560 227 420 110 1600 17 80 157 4160 33 130

17 168 101 84 64 576 65 96 111 1632 25 102 158 4224 43 264

18 176 21 44 65 592 19 74 112 1664 183 104 159 4288 33 134

19 184 57 45 66 608 37 76 113 1696 55 954 160 4352 477 408

20 192 23 48 67 624 41 234 114 1728 127 96 161 4416 35 138

21 200 13 50 68 640 39 80 115 1760 27 110 162 4480 233 280

22 208 27 52 69 656 185 82 116 1792 29 112 163 4544 357 142

23 216 11 36 70 672 43 252 117 1824 29 114 164 4608 337 480

24 224 27 56 71 688 21 86 118 1856 57 116 165 4672 37 146

25 232 85 58 72 704 155 44 119 1888 45 354 166 4736 71 444

26 240 29 60 73 720 79 120 120 1920 31 120 167 4800 71 120

27 248 33 62 74 736 139 92 121 1952 59 610 168 4864 37 152

28 256 15 32 75 752 23 94 122 1984 185 124 169 4928 39 462

29 264 17 196 76 768 217 48 123 2016 113 420 170 4992 127 234

30 272 33 68 77 784 25 98 124 2048 31 64 171 5096 39 158

31 280 103 210 78 800 17 80 125 2112 17 66 172 5120 39 80

32 288 19 36 79 816 127 102 126 2176 171 136 173 5184 31 96

33 296 19 74 80 832 25 52 127 2240 209 420 174 5248 113 902

34 304 37 76 81 848 239 106 128 2304 253 216 175 5312 41 166

35 312 19 78 82 864 17 48 129 2368 367 444 176 5376 251 336

36 320 21 120 83 880 137 110 130 2432 265 456 177 5440 43 170

37 328 21 82 84 896 215 112 131 2496 181 468 178 5504 21 86

38 336 115 84 85 912 29 114 132 2560 39 80 179 5568 43 174

39 344 193 86 86 928 15 58 133 2624 27 164 180 5632 45 176

40 352 21 44 87 944 147 118 134 2688 127 504 181 5696 45 178

41 360 133 90 88 960 29 60 135 2752 143 172 182 5760 161 120

42 368 81 46 89 976 59 122 136 2816 43 88 183 5824 89 182

43 376 45 94 90 992 65 124 137 2880 29 300 184 5888 323 184

44 384 23 48 91 1008 55 84 138 2944 45 92 185 5962 47 186

45 392 243 98 92 1024 31 64 139 3008 157 188 186 6016 23 94

46 400 151 40 93 1056 17 66 140 3072 47 96 187 6080 47 190

47 408 155 102 94 1088 171 204 141 3136 13 28 188 6144 263 480

Page 49: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

34

São 188 possíveis tamanhos das sequências, que variam de 40 a 6144 bits, dependendo de

diversos fatores, como a relação sinal/ruído. Essa definição é feita através de sistemas de

controle externos ao turbo-code durante a codificação. Esta informação também é enviada ao

decodificador, de modo que este então sabe previamente o tamanho da sequência a ser

decodificada.

O projeto consiste na implementação VLSI do decodificador do sistema LTE, tomando

alguns outros requisitos, como, por exemplo, a frequência. A frequência de operação é bastante

importante para o sucesso em atingir o desempenho previsto pelo sistema, porém causa um

grande impacto no consumo de potência, o que para um dispositivo móvel é bastante relevante.

Inicialmente foi considerada, baseada nos outros blocos do sistema LTE, que a frequência

de operação ficaria limitada a aproximadamente 120 MHz. Esta discussão será melhor

abordada em outra seção.

Para melhorar o desempenho do turbo-code projetado, as otimizações citadas no primeiro

capítulo foram usadas. A implementação do algoritmo Log-MAP é obrigatória para a

minimização do hardware implementado, causando uma perda de desempenho mínima. O

paralelismo também foi explorado como forma de reduzir a latência e aumentar o throughput

do sistema. Isso se dá simplesmente pelo fato de que um bloco de dados pode ter seu tempo de

processamento reduzido em até oito vezes, portanto o hardware estaria disponível para

processamento em um tempo menor, suportando assim taxas de processamento maiores.

Outro bloco que tem seu processamento muito otimizado é o interleaver, cuja

implementação se apresenta bastante complicada para o cálculo das posições, já que faz o uso

da função de resto da divisão, que é uma operação muito complexa de ser sintetizada, gerando

um hardware pouco eficiente. Este cálculo pode ser reduzido bastante se for levado em

consideração que os endereços serão calculados sempre de forma sequencial. Isto leva à

redução da função de resto de divisão que passa a ser implementada apenas por comparadores e

subtratores interagindo recursivamente, como demonstrado a partir das equações (42) a (45):

( ) ( ( )) (42)

( ( ) ( )) ( ) (43)

( ) ( ( ) ) (((∑

) ) )

(44)

( ) ( ( ) ) ((( ( ) ) ) ) (45)

Page 50: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

35

Sendo um registrador com o valor agregado do somatório de 2 , demonstrando assim a

recursividade possível na implementação do interleaver. Isso só é possível, pois o sistema

sempre se iniciará na posição zero, continuando o processamento sequencialmente. Neste

formato pode-se ver claramente uma redução grande no hardware a ser implementado, sendo a

função do resto de divisão por um número qualquer constituída apenas por comparações e

subtrações, já que os valores nunca ultrapassam em três vezes o valor do quociente da divisão,

limitando os valores a serem calculados os restos de divisão. Não há, assim, a necessidade de se

usar a função completa de resto de divisão diretamente em hardware, apenas comparando com

os três primeiros múltiplos de K e subtraindo os valores correspondentes.

Portanto, para o codificador, todos os dados são armazenados antes que se comece o

processamento, já que os dados de entrada para o codificador que processa depois do

interleaver poderão ser acessados em qualquer ordem. Isto leva à necessidade de essas

informações estarem todas disponíveis para que não se tenha que parar o processamento até a

entrada atingir a posição necessária. O decodificador também obedece a este requisito.

Esta otimização do interleaver minimizou o hardware associado, uma vez que sendo

descrito e sintetizado na sua forma original, o interleaver necessitaria da introdução de um

nível de pipeline, o que elevaria sua latência, gerando um projeto com aproximadamente 34 mil

portas lógicas equivalentes. Contudo, introduzindo-se a otimização, atinge-se, para o mesmo

nível, aproximadamente 1500 portas lógicas equivalentes, sem nível de pipeline. Isso leva a um

hardware que ocupa menos área de silício e realiza a operação mais rapidamente.

Com a função de interleave implementada em hardware, o projeto do codificador segue o

descrito na especificação e mostrado na Figura 16, sendo necessário apenas sincronizar as

saídas válidas com o momento do interleaver.

A arquitetura do decodificador pode ser inicialmente entendida através da Figura 17, em

que aparecem dois processadores SISO, um processando os dados de forma regular e o outro

processando os dados que passaram pelo interleaver. A operação é iterativa, sendo que cada

SISO alimenta o outro de forma a refinar os resultados obtidos. É importante notar também que

os dados de realimentação entre os processadores devem passar necessariamente pelo processo

de interleave ou de-interleave.

Page 51: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

36

Figura 17: Demonstração das Etapas de Decodificação

O processador SISO, realizado pelo algoritmo Log-MAP, inicialmente calcula os valores da

probabilidade de transição entre estados. O processamento inclui possíveis estados de entrada

do codificador que permitem a saída codificada ser zero ou um.

A relação das entradas com os possíveis estados pode ser vista nas Figuras 18 a 20.

Figura 18: Início da Treliça do Codificador do Padrão LTE

Figura 19: Transições Intermediárias da Treliça do Padrão LTE

Page 52: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

37

Figura 0: Geração dos Tail Bits 2

A Figura 18 mostra o início da operação de codificação, enquanto a Figura 19 descreve a

operação normal da máquina de estados. Uma informação relevante consiste nos valores dos

dados codificados. A Figura 20 trata da terminação da treliça, em que o sistema é levado ao

estado em que todos os registradores têm valor zero. Neste caso, os dois sinais de codificação

são mostrados, tanto o sinal de paridade como o de sistemático.

Partindo destas figuras podem ser inferidos quais são os estados que levam a saída a um

valor específico. Dessa informação pode-se calcular a probabilidade de transição de estados.

Este cálculo é feito no domínio logarítmico assim sendo simplificado. Uma multiplicação de

quatro variáveis resulta em uma soma, e três possíveis inversores de sinal. Tomando-se como

ponto de partida as equações (14) e (20), chega-se a:

( )

( ( )) (⁄ ( )⁄ )

( ( ⁄ ))

(46)

Todos os elementos da soma são processados de acordo com as possibilidades de transição

de cada estado para outro específico, portanto o cálculo é feito para cada estado possível. No

caso do sistema LTE, desesseis valores serão calculados para cada estágio do processamento,

referentes a duas transições possíveis para cada estado. É importante notar que todos os valores

já são tratados no domínio logarítmico e o resultado esperado também deve ser representado

neste domínio, o que torna desnecessário o cálculo logarítmico. Este processamento já será

feito no momento da aquisição e demodulação dos sinais recebidos.

A arquitetura que representa os cálculos desenvolvidos para obter o valor das

probabilidades de transição de estados pode ser vista na Figura 21.

Page 53: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

38

Figura 21: Arquitetura de Hardware do Cálculo da Probabilidade de Transição

Na Figura 21, ( ), ( ) e ( ) são, respectivamente, os fatores referentes ao

sistemático, paridade e o valor a priori. E os dados extraídos da LUT (Look-Up Table) são os

valores possíveis em cada transição.

O cálculo dos fatores de probabilidade e incorre em um hardware semelhante, podendo

ser reusado numa mesma sequência de cálculo pois esses dois elementos não serão calculados

no mesmo momento. Como uma forma de otimizar o tempo de processamento, o cálculo de é

feito no começo e armazenado. Posteriormente, o cálculo de é relizado e o resultado do

processamento é apresentado. Este esquema é mostrado na Figura 22.

Figura 22: Arquitetura da SISO

Seguindo as equações (27), (28) e (35) o hardware necessário para realizar o cálculo das

probabilidades de estados é representado na Figura 23 (a representação está levando em

consideração , porém, para o cálculo do o hardware é idêntico):

Page 54: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

39

Figura 23: Arquitetura de Hardware das Probabilidades de Estados

Page 55: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

40

Inicialmente, faz-se a soma da probabilidade de transição com a probabilidade de estados

para os dois possíveis caminhos da treliça, para cada estado, e compara-se os resultados para

obter o maior valor. Obtém-se assim, a probabilidade de a treliça se encontrar em um estado

específico baseado nos sinais recebidos e no estado anterior (ou posterior, no cálculo do ). O

máximo entre esses valores representa, inicialmente, o resultado sub-ótimo obtido pelo

algoritmo max-log-MAP. Após este estágio, diversos fatores de correção são aplicados para se

obter um melhor desempenho através do algoritmo Log-MAP.

O cálculo dos fatores de correção são feitos a partir de Look-Up Tables – LUTs, que são

tabelas com os valores linearizados dos resultados de uma função logarítmica. Os valores dos

fatores de correção são tomados em relação à subtração dos valores de entrada da função de

máximos.

O valor final do cálculo das funções de probabilidade de estados obedecem à função

otimizada do algoritmo Log-MAP. São calculadas oito funções de probabilidade em cada

estágio de processamento, já que cada estado tem uma probabilidade específica para cada sinal

de entrada do decodificador.

O cálculo da LLR é feito através da subtração dos valores da probabilidade de a entrada do

codificador ter sido zero ou um. Portanto, a arquitetura seguida pelo hardware é apresentada na

Figura 24.

Page 56: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

41

Figura 24: Cálculo da LLR

É importante ressaltar, pela análise da Figura 24, que os índices dos componentes , e

das somas são combinados de forma a obedecer as possíveis transições entre os estados. Por

exemplo, o sinal que representa a probabilidade de o sistema estar no estado 1 e acabar no

estado 5 é calculado baseando-se nas probabilidades e dos estados 1 e 5, respectivamente, e

da probabilidade de a máquina fazer a transição entre estes estados.

A informação extrínseca pode então ser calculada, já que é parte integrante do cálculo da

LLR. Porém, pela facilidade de implementação, os dados extrínsecos são extraídos do valor da

LLR obtido. A implementação em hardware é representada na Figura 25.

Figura 25: Cálculo da Informação Extrínseca

Page 57: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

42

Na Figura 25, os dados obtidos pelo processamento da SISO são subtraídos da informação

a priori calculada nas iterações anteriores. Em operação iterativa é o resultado da LLR que

representa a tendência do valor dos dados a serem decodificados, sendo usado na decisão final

(hard-decision). Já a informação extrínseca será realimentada no sistema de forma a reforçar ou

anular tendências da escolha a cada iteração, tornando-se assim a informação a priori para a

próxima etapa de iteração. Esta estrutura da realimentação é mostrada na Figura 26.

Figura 26: Arquitetura do Decodificador

Na Figura 26 pode ser observado que o processador SISO é reutilizado tanto para a

decodificação, com os dados na sequência permutada pelo interleaver, como na sequência

normal. Os dados inicialmente são demodulados (esta etapa é realizada fora do bloco do Turbo-

Code), este processo podendo ser feito na forma tradicional. Contudo, o padrão LTE prevê o

uso de MIMO, permitindo diversidade espacial com o uso de mais de uma antena. Os dados são

então demultiplexados, separados nos sinais de sistemático e nos de paridade. Estes dados têm

que ser armazenados em memórias, já que serão utilizados a cada iteração. O processador SISO

é então alimentado pelos sinal de sistemático, por um de paridade e pela informação extrínseca

gerada na iteração anterior.

Para leitura do sistemático e da informação extrínseca, de forma a ser compatível com o

sinal de paridade da sequência permutada, necessita-se da função de interleaver. Este bloco é

exatamente igual ao usado no codificador. Os resultados gerados pela função do interleaver

representam os endereços a serem usados durante a leitura dos dados nas memórias. A

informação extrínseca a ser escrita na memória, quando os dados são processados na sequência

Page 58: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

43

com interleaver, deve seguir este mesmo padrão, para que, na forma direta, os sinais sejam

coerentes.

Uma otimização feita neste projeto é a sequência de processamento dos dados. No início de

cada bloco, são processados os sinais na sequência permutada do interleaver, já que assim o

throughput pôde ser otimizado em parte pelo fato de a última etapa de processamento se dar na

sequência linear, o que permite a escrita de novos dados de entrada na sequência em que são

lidos e processados os antigos. Desta forma, também o tempo de escrita na leitura não é um

período obrigatório de inatividade do processador SISO. Outra contribuição desta sequência de

processamento é que a saída dos dados após todas as iterações será realizada e logo enviada,

não precisando desfazer o processo da permutação do interleaver, que haveria caso o

processamento se iniciasse com a sequência linear.

A sequência de processamento é representada pela máquina de estados ilustrada na Figura

27.

Figura 2 : Máquina de Estados da Operação de Decodificação 7

Na Figura 27, SISO1 representa a etapa de processamento em que os dados advêm do

codificador que é alimentado diretamente com a sequência de entrada. Já a SISO2 é o

processamento com a utilização dos dados que passam pelo interleaver.

Page 59: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

44

No caso do Turbo-Code implementado, alguns sinais de protocolo foram inseridos para

facilitar o controle do sistema. O sink_valid, representado na máquina de estados, é um sinal de

entrada que, quando em valor lógico positivo, demonstra ao bloco Turbo-Code que existe uma

nova informação de dados a ser decodificada. Desta forma, o bloco anterior controla a entrada

de dados, sem seguir uma regra rígida.

Em aplicações normais, o processo de decodificação é finalizado quando o sistema atinge

certo número de iterações estabelecidas ou quando o decodificador converge para um valor. No

caso do projeto descrito neste trabalho, apenas a primeira opção foi implementada. Esta escolha

foi feita como uma especificação do projeto, para facilitar a conclusão. Porém, um benefício

também obtido é o de ter latências fixas para cada tamanho de bloco possível, tornando assim o

controle mais simples.

A máquina de estados também evidencia duas etapas do processamento da SISO, chamadas

de IN e OUT. Estas receberam estas denominações pois o processamento é feito inicialmente

apenas lendo os valores de entrada e calculando o valor de . Já na segunda etapa, os valores

são novamente lidos, porém as saídas já têm dados válidos.

É importante notar também que o cálculo da probabilidade de transição de cada estado é

feito nas duas etapas de processamento, já que esta informação é usada para o cálculo das

componentes diretas e inversas de probabilidade de estados. É mais simples e eficaz refazer

esta operação a guardá-la para posteriormente utilizá-la.

Apesar das otimizações feitas, esta arquitetura ainda apresenta um throughput baixo se

comparado com o especificado pelo padrão LTE. Uma forma de atingir este objetivo é a

replicação do hardware completo, que traria um aumento significativo em área. O próprio

padrão foi idealizado, através do projeto do interleaver, para atender a uma paralelização do

processamento. Esta arquitetura paralela permite quebrar as sequências de decodificação para

que, assim, sejam processados blocos menores de dados, o que faz o fluxo ser maior. Neste

caso, o aumento de hardware será apenas na parte do processamento, não impactando nas

memórias, que se mostrou como o bloco que ocupa a maior área.

O interleaver tem papel fundamental para permitir a paralelização do hardware e da

otimização para atingir o throughput necessário. O interleaver é apresentado apenas como uma

função mostrada na equação (41), com os valores de referência da Tabela 1. A otimização para

realizar a operação de forma sequencial e reduzir o cálculo do resto de divisão por subtração e

comparação foi mostrada na equação (45). Contudo, para demonstrar a possibilidade do uso da

arquitetura em paralelo, algumas outras manipulações são necessárias.

Page 60: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

45

Inicialmente, é importante ressaltar que nem todos os blocos tirarão proveito do

paralelismo. Este fato está ligado a uma queda de desempenho significativa ao se dividir a

operação em sequências pequenas. Isso se dá, pois, quando esta otimização é usada, os estados

iniciais das variáveis de probabilidade de estados não são conhecidos, o que no caso de

sequências mais longas é compensado pela melhor precisão dos dados realimentados e da outra

variável de estado. Portanto, o particionamento foi feito em escalas diferentes, baseadas no

tamanho das sequências. Os blocos podem não ter divisão do processamento, assim como

podem ser particionados em duas, quatro ou oito sequências de dados. O limite de 8 sequências

foi tomado com base em uma análise de desempenho e na dificuldade da implementação do

interleaver.

Para um particionamento da sequência em dois blocos de tamanho menor, é levado em

consideração que a constante de inicialização da equação (45) é sempre um valor ímpar, que

e são sempre pares e que o cálculo do endereço é sempre submetido à operação de resto de

divisão. Portanto, o endereço de permutação de uma posição com a correspondente na outra

metade da sequência é dado pela equação 47.

(

) (

) (47)

Pela operação de resto de divisão, todos os elementos múltiplos de um valor inteiro de K

podem ser eliminados, levando à simplificação:

(

) (

) (48)

(

) ( ( )

)

(49)

Esta relação demonstra que quando se divide a sequência em dois blocos, pode-se garantir

que cada processamento se dará em memórias separadas, ou seja, os dados a serem processados

em um modo com o interleaver serão obtidos cada um em uma metade dos dados. A mesma

demonstração pode ser feita para o caso em que se divide a sequência em quatro e oito blocos,

como pode ser visto nas equações (50).

(

) (

) (50)

(

) (

)

(51)

Page 61: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

46

Como os tamanhos dos blocos que farão a paralelização com quatro processadores são

sempre múltiplos de 16 e é ímpar, o que gera a relação .

/

( ), o cálculo se

reduz a:

(

) (

( )) (52)

(

) (

( ))

(53)

Levando em conta a relação entre as sequências acessadas, as equações (52) e (53) podem

ser reescritas na forma:

(

) ( ( )

( )) (54)

(

) ( ( )

( ))

(55)

Para oito processadores, é múltiplo de 64, o que conduz a:

(

) (

( )

) (56)

(

) (

( )

( )( )))

(57)

Com as equações anteriores fica demonstrada a possibilidade da implementação de uma

arquitetura paralela, como a ilustrada na Figura 28 para o caso de quatro processadores SISO:

(a) (b)

Figura 28: Alimentação dos Dados em uma Arquitetura com 4 SISOs

Page 62: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

47

As linhas contínuas representam uma ligação permanente, já que os bits de paridade são

sempre lidos de forma sequencial, mesmo quando estes são gerados com os dados recebidos na

forma permutada. O mesmo não ocorre com os sinais de sistemático e da informação

extrínseca, que devem ser lidos de qualquer memória. Nesta relação, os processadores SISO

não acessam a mesma memória ao mesmo tempo. Esta relação é mostrada na Figura 28b.

A paralelização do processamento das sequências de decodificação foi definida conforme a

Tabela 2.

Tabela 2: Relação entre o Tamanho do Bloco de Dados e a Quantidade de Processadores Utilizados na

Decodificação

1

2

3

4

O processamento em paralelo gera um grande problema relacionado com o

desconhecimento das condições iniciais, pois o turbo-code tem como pressuposto que a

máquina de estados se inicie e termine no estado em que todos os registradores se encontram no

valor lógico zero. Portanto, os valores da probabilidade de estado não são muito confiáveis nos

pontos de corte da janela a ser processada. A solução adotada foi estender o cálculo da

informação extrínseca de forma a prover uma melhor realimentação. A solução é mostrada na

Figura 29.

Figura29: Separação dos Blocos a serem Processados

2.3. IMPLEMENTAÇÃO

Todos os processos para a realização do fluxo completo de desenvolvimento do projeto

digital foram realizados dentro do ambiente de EDA da Cadence Design Systems®, desde a

simulação até a geração do leiaute final. Exceção feita à modelagem do sistema, que no caso

específico de comunicação digital se optou por utilizar o Matlab por motivos explicados

posteriormente.

Page 63: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

48

Após a especificação do projeto, as definições das arquiteturas mostradas na seção anterior

foram realizadas em conjunto com a modelagem do sistema. Isto se deu para que houvesse a

possibilidade de testar as novas definições e estimar o desempenho atingido. O objetivo é

realizar um balanceamento entre a otimização do hardware e a queda do rendimento dos

algoritmos, sendo este balanceamento fundamental para chegar a uma solução otimizada.

O modelo do sistema foi inicialmente realizado em Matlab devido às facilidades de cálculos

matriciais e de estruturas de processamento de sinais. Outra informação importante para a

utilização desta ferramenta e sua linguagem é a da compatibilidade, já que o modelo de toda a

camada física do LTE foi descrito usando a mesma linguagem. Porém, ao partir para um

modelo mais próximo ao que seria sintetizado para hardware, o sistema se tornou muito lento,

com as simulações tomando muito tempo de processamento. A alternativa encontrada foi de

modelar os cálculos críticos em uma linguagem que permite um maior controle e que tenha

uma interface mais direta com o processador, acelerando assim o tempo de processamento. A

linguagem escolhida para este trabalho específico foi a linguagem C, já que é de fácil acesso e

de conhecimento usual, além de poder ser facilmente integrada à ferramenta Matlab.

Com a modelagem, também pode ser feita uma análise detalhada do desempenho atingido

pelo sistema. Para isso, um ambiente de simulação foi criado, com a geração de dados, um

codificador, um modulador, um modelo do canal, um demodulador e finalmente o

decodificador. A saída do decodificador deve ser igual à entrada gerada e o desempenho é

medido pela quantidade de erros nesta comparação. O ambiente de simulação é mostrado na

Figura 30.

Figura 30: Representação do Ambiente de Simulação do Sistema

Os dados de estímulo são gerados aleatoriamente e reservados para uma futura comparação.

Estes sinais passam pelo codificador que insere a redundância necessária. O modulador neste

sistema apenas mapeia alguns bits para um símbolo, que posteriormente tem seu sinal

adicionado de um ruído gaussiano. As informações tomam um formato floating-point, podendo

tomar qualquer valor, como um sinal analógico. Os dados inicialmente digitais, com valores

discretizados, passam para um formato contínuo. Para gerar a interferência inerente ao canal de

Page 64: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

49

comunicação, são criados valores aleatórios representando um ruído branco. Esta forma de

modelar o canal é compatível com a maior parte das situações possíveis. Um ruído branco é

representado como uma função estatística gaussiana de média zero. Já a amplitude da

interferência do canal é controlada pela simulação de forma a estimular o sistema em diversas

condições.

O demodulador faz uma primeira estimativa dos valores recebidos. Finalmente, os dados

são inseridos no decodificador, que, por sua vez, realiza a decodificação dos dados. Uma das

medidas de desempenho consiste na porcentagem dos bits decodificados erroneamente, quando

comparados com a sequência original. Outro parâmetro interessante e bastante usado é o erro

de frame (Frame Error Rate – FER ou Block Error Rate – BLER), em que apenas um bit

errado implica que todos os dados estão comprometidos.

O tipo de modulação é prevista pela especificação, podendo ser BPSK (Binary Phase Shift

Keying), QPSK (Quadrature Phase Shift Keying), 16QAM (Quadrature Amplitude

Modulation) e 64QAM. Os diferentes esquemas de modulação permitem enviar mais bits em

um mesmo canal de comunicação. O aumento da quantidade de informação enviada reduz a

robustez do sistema, já que o demodulador tem menos margem para a detecção do símbolo,

sendo portanto mais suscetível ao ruído. O diagrama de constelações de cada um dos esquemas

de modulação evidencia esta relação, como ilustrado na Figura 31.

Figura 31: Diagrama de Constelação dos Esquemas de Modulação

No ambiente de simulação, esta operação se baseia apenas no mapeamento dos bits de saída

do codificador para os símbolos referentes ao esquema de modulação pretendido. Para a

aferição do desempenho atingido, dois componentes são testados: o esquema de modulação e o

ruído inserido. O desempenho é medido com base nessas duas variáveis. Quanto mais distantes

os símbolos são representados, mais imunes ao ruído, e portanto, melhor o desempenho do

decodificador.

Uma análise importante se refere à resposta para cada modulação em relação ao nível de

ruído inserido, ou seja, a imunidade ao ruído propiciada por cada esquema de modulação. Para

Page 65: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

50

isso, o gráfico da Figura 32 mostra a resposta de cada esquema de modulação ao ruído, tendo

sido fixado o número de iterações e o tamanho do bloco:

Figura 32: Resultado do FER (ou BLER) vs SNR

Pode-se notar claramente a diferença entre os esquemas de modulação, tornando a escolha

da modulação dependente da quantidade de ruído mensurado para o canal de comunicação.

O sinal é então demodulado em um esquema de cálculo da maior probabilidade, entregando

um valor ponderado (soft-bits). Esta operação tenta reproduzir de forma simplificada o

funcionamento do decodificador MIMO, sem as melhorias geradas pelo uso de múltiplas

antenas. Estes valores que são tomados como entrada para o decodificador sendo calculados

apenas para a simulação do sistema, não representando o bloco que realmente será integrado ao

decodificador.

O bloco responsável pela detecção dos valores recebidos é também chamado de LLR já que

faz uma estimativa, entregando uma probabilidade logarítmica. Para isso, este bloco recebe os

valores complexos do sinal e gera os novos sinais de probabilidade logarítmica.

O bloco do interleaver foi realizado de forma a utilizar as otimizações previstas para o

cálculo sequencial dos valores como mostrado pelas equações (42) a (45). Assim, o hardware

fica na forma mostrada abaixo:

Page 66: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

51

Figura 33: Arquitetura do Interleaver

Page 67: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

52

Neste caso, o interleaver irá calcular os valores de posição dos dados em uma sequência

crescente (quando usada para o processamento da probabilidade de estados direta), assim como

na sequência decrescente (para o cálculo de ). Estas funções devem ser realizadas pelo mesmo

hardware devido à inicialização no caso de se fazer na ordem decrescente. Porém, como

descrito anteriormente, o processamento se iniciará pela probabilidade , o que leva à operação

do interleaver a começar um ciclo antes, de forma a completar o cálculo até o fim, para deixar

o sistema no estado adequado.

A operação do interleaver é feita em duas etapas. Na primeira, o acúmulo da constante

representando a componente ((( ( ) ) ) ) da equação (45). Este

registrador é inicializado com o valor de para representar estes componentes na equação

(45), já que este valor deve ser adicionado em todos os ciclos de cálculo.

A segunda etapa de processamento, representada na Figura 33, realiza a parte incremental

do valor do acumulador com o endereço anterior calculado pelo interleaver. Alguns

comparadores e subtratores (soma para a operação decrescente) são usados para a operação de

módulo.

Como citado anteriormente, alguns sinais foram inseridos para facilitar a tarefa de controle

da camada física do LTE, bem como tornar o ambiente do IP mais controlável. Desta forma, o

decodificador tem suas entradas e saídas como ilustrado na Figura 34.

Page 68: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

53

Figura 34: Representação das Interfaces do Bloco do Decodificador

A Figura 34 apresenta todos os sinais de entrada e saída do turbo-decoder. Alguns sinais

genéricos, como a entrada do relógio e o reset do sistema, são apresentados no topo. Os sinais

de hadshaking são os controles para a comunicação entre blocos. O sinal sink_sop (sink start of

operation) representa o momento de início do recebimento de dados. Este sinal vai tomar o

valor lógico 1 apenas no começo da operação de cada bloco de processamento. Já o sink_valid

fica em estado alto por todo o período em que valores de entradas válidos são apresentados nas

entradas de dados. O sink_ready é um sinal que permite um bloco parar o processamento do

bloco anterior, de forma a não permitir que nenhum novo dado seja recebido. No caso do turbo-

code, devido à grande latência inerente à operação, sempre que o processador esteja ocupado, o

bloco não poderá receber dados novos. Operações inversas e análogas são realizadas pelos

sinais source_sop, source_valid e source_ready.

Os sinais de parâmetros são definições passadas para cada bloco de processamento, sendo

fixas por toda a operação. O tamanho do bloco é uma das informações importantes que deve

preceder os dados. Esta informação deve ser passada para os módulos posteriores da camada

física. Como a entrada pode mudar entre um bloco e outro, para manter a coerência o tamanho

do bloco que foi processado deve ser informado. O número de iterações também é um

parâmetro necessário e definido internamente ao sistema LTE, porém fora do decodificador.

Page 69: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

54

Finalmente, são apresentadas as interfaces de dados de processamento. As três entradas são

o sistemático e as duas de paridade, todas na forma ponderada. As saídas de dados podem ser

até oito, cada uma com a saída de cada processador.

Todo o decodificador foi descrito através da linguagem Verilog, assim como alguns outros

blocos fora do turbo-code, para facilitar a integração e o processamento.

A etapa de verificação funcional é de extrema importância para garantir o correto

funcionamento do turbo-decoder. Para esta tarefa foram usadas duas abordagens, em

momentos e com finalidades diferentes.

Inicialmente foi utilizado um ambiente de verificação semelhante ao descrito para o modelo

em Matlab. Para a realização desta tarefa, alguns conceitos básicos das novas metodologias de

verificação foram usados, como programação orientada a objetos. O ambiente foi montado

usando a linguagem SystemVerilog, que representa uma extensão do Verilog com diversas

estruturas que permitem uma programação orientada a objetos. Os resultados são baseados nos

parâmetros de BER e FER, tendo que se aproximar aos encontrados na simulação do modelo

Matlab. A estrutura montada é mostrada na Figura 35.

Figura 35: Ambiente de Verificação SystemVerilog

Na Figura 35 é representada uma arquitetura mista em que os elementos de programação

orientada a objetos se integram a blocos descritivos que modelam alguns processos que

ocorrem nos sistemas de comunicação, porém sem usar um modelo de referências devido ao

longo tempo de simulação. Os dados de verificação são gerados no bloco Driver no formato de

um pacote de dados (PKT – data_item). Os dados gerados são controlados através de variáveis

de aleatoriedade, que determinam parâmetros para a geração dos dados. O pacote de dados

inclui o tamanho do bloco a ser codificado/decodificado, o número de iterações, o tipo de

Page 70: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

55

modulação escolhida e os bits de informação. Os dados, então, são enviados ao codificador

através de um modelo funcional do barramento (BFM – Bus Functional Model), que gera sinais

de controle e sinalização, bem como a temporização da operação. O codificador é, juntamente

ao decodificador, um dispositivo sob teste (DUT – Device Under Test), já que estes são os

blocos que realmente se deseja verificar. O BFM também desempenha a função de receber os

dados decodificados e empacotá-los, para finalmente serem comparados com a entrada. O

bloco do Checker é responsável por esta análise de desempenho, computando quantos bits

errados ainda restaram após a decodificação.

Os blocos não englobados no Agent são estruturas que simulam o comportamento do

sistema de comunicação desde a codificação até a decodificação. Os dados codificados são

modulados, passam por um bloco que simula um canal sofrendo ruído branco e os dados são

demodulados. Algumas FIFOs (First In First Out) foram utilizadas para controlar o fluxo de

dados. Esta estrutura é bastante similar à apresentada para a simulação do modelo Matlab.

Uma segunda abordagem usada na verificação do turbo-code foi a de utilizar os dados da

simulação do modelo e comparar com o comportamento do sistema projetado. O modelo

Matlab criado foi modificado para que todas as variáveis atendessem a um limite de bits.

Assim, todos os valores devem ser exatamente iguais no modelo Matlab e no RTL. Este

processo é, apesar de trabalhoso e custoso, bastante interessante para manter a coerência entre

os dois modelos. Desta forma, todas as análises de desempenho podem ser feitas em um estágio

inicial apenas com os blocos descritos em Matlab. Esta metodologia de verificação é

denominada de bitmatch devido ao fato de os resultados serem exatamente iguais (bit a bit). A

Figura 36 demonstra o modelo em Matlab integrado ao ambiente. É importante lembrar que a

geração é feita anteriormente à simulação RTL.

Page 71: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

56

Figura 36: Ambiente de Simulação Bitmatching

Nesta arquitetura, os sinais são gerados e processados no Matlab e as entradas e resultados

são guardados em arquivos de referência. Estes valores alimentam os modelos RTL e têm os

valores finais comparados aos obtidos com o Matlab. Neste caso, apenas o decoder é

verificado. Outro ambiente específico para o codificador também foi realizado.

Com o projeto devidamente verificado, a descrição RTL finalmente é processada para

realizar a síntese.

A implementação física do projeto foi realizada na tecnologia de 65 nanômetros da

fabricante (foundry) TSMC. No caso das bibliotecas das memórias, estas, foram geradas a

partir de um sintetizador provido pela empresa fornecedora de IPs, ARM, em parceria com o

fabricante. O processo de síntese foi feito de forma a atingir os requisitos necessários. Por ser

um bloco interno à camada física, os requisitos de tempo não são críticos nas portas de entrada

e saída, porém a frequência de 120 MHz é crítica, já que algumas etapas de processamento

intenso são de difícil realização no período especificado. Este valor de frequência será discutido

com maior profundidade posteriormente. Alguns blocos de soma de valores representados com

muitos bits precisaram ser alterados para atingir o requisito de tempo.

Um processo iterativo teve que ser realizado para minimizar o número de bits das variáveis

nos caminhos críticos. Este procedimento foi realizado durante a modelagem e aprimorado

conforme a projeto foi sendo desenvolvido. No ambiente de simulação do modelo, a precisão

na representação das variáveis foi alterada e ajustada, de forma a se obter a menor área de

silício estimada, e ainda atender aos requisitos de desempenho previamente estabelecidos.

Uma etapa crítica é o planejamento do posicionamento das memórias. Como a arquitetura

proposta incorre na utilização de uma grande quantidade de memória integrada, o floorplan é

Page 72: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

57

de extrema importância para que estas estruturas sejam corretamente posicionadas. As

memórias ocupam a maior parte da área dedicada ao decodificador, especificamente 82%. Esta

etapa de floorplanning e a ocupação do espaço pelas memórias podem ser vistas na Figura 37.

Figura 37: Floorplanning

Os espaços entre as memórias são definidas pela própria fabricante, e os espaços restantes

são as localidades onde toda a lógica envolvida será implementada, ficando o leiaute final

como ilustrado na Figura 38.

Figura 38: Leiaute do decodificador

Como pode ser percebido, as memórias representaram um grande problema na

implementação do projeto de um decodificador. Esta afirmação é ratificada por [14]:

“A situação dos turbo codes é complicada de avaliar, já que a maior parte da

complexidade do decodificador reside nos requisitos de armazenamento dos grandes

blocos que necessitam de gerenciamento e processamento das memórias. As unidades

computacionais ocupam menos de 10% da área do VLSI. Porém, processar grandes

blocos é uma necessidade requerida pela complexidade do processador.”

A Figura 37 mostra as memórias usadas para as entradas dos processadores SISO e as

memórias internas a este bloco. Estas memórias são imprescindíveis para o correto

funcionamento do sistema, já que as operações são feitas iterativamente e em etapas, os

resultados parciais tendo que ser armazenados para futuro uso. Outra necessidade é a de

Page 73: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

58

armazenar os dados de entrada do sistema, já que estes são usados diversas vezes. Todas essas

memórias foram incluídas no leiaute final, sendo consideradas como parte do sistema do

decodificador.

Das memórias mostradas nas Figuras 37 e 38, as necessárias para armazenar os dados de

entrada do decodificador são 8 memórias de 768 posições, totalizando 6144 posições para as

informações de sistemático e de paridades. As informações armazenadas nas memórias são

representadas por 9 bits, representação esta determinada por um estudo detalhado do

comprometimento do desempenho. Com o uso em conjunto com outros blocos, especialmente o

MIMO, esta representação pode mudar. Na configuração atual, o sistema requer 24 memórias

(8 para sistemático, paridade1 e paridade2) de 768 posições e 9 bits para armazenar os dados de

entrada. Já no caso da informação extrínseca, são necessários os mesmos 9 bits para representá-

la, já que esta deve ser coerente com as outras entradas da SISO.

Os processadores SISO, como visto na Figura 22, devem armazenar o resultado do cálculo

da probabilidade reversa de estados ( ). A precisão desta variável também foi bastante

estudada, já que causa um impacto grande na implementação. Este dado também é registrado

em 8 memórias de 768 posições, porém cada palavra ocupa 12 bits. Esta quantidade e o

tamanho das memórias afetaram significativamente os resultados referentes à área obtida por

este projeto.

Ao todo, a área de silício ocupada ficou , sendo a maior parte referente às

memórias.

O consumo de potência é considerado neste projeto como um requisito básico. Isto se dá

pela flexibilidade pretendida, de forma que este bloco possa ser usado no projeto de um

dispositivo móvel, o que sugere uma economia de bateria como sendo fundamental para o

sucesso do produto. Foi feito apenas um estudo do pior caso de consumo, não levando em

consideração as otimizações possíveis na implementação.

Apenas a otimização do clock-gating foi usada durante a implementação física do projeto.

Esta técnica consiste em desligar o sinal de relógio nos flip-flops onde o sinal de enable está

presente e leva o registrador a manter o estado antigo. No caso de o sinal de enable indicar que

o valor deve ser repetido, o sinal de relógio permanece estável. O registrador dissipa energia

quando o relógio está ativo, mesmo com as entradas estáveis. Portanto, esta técnica reduz o

consumo na árvore de clock e o consumo inerente ao flip-flop, porém só atinge o consumo

dinâmico, não reduzindo o leakage presente em tecnologias com menores dimensões.

Com as geometrias dos processos encolhendo abaixo de 90 nm, a corrente de fuga

(leakage) do dispositivo cresce drasticamente [27]. Com isso, diversas otimizações podem ser

Page 74: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

59

realizadas, como multi-Vt (células com dopagem diferente, o que diminui o leakage, sendo

contudo bem mais lentas). Outra otimização é a de Power-Shutoff, que consiste em desligar a

alimentação de partes do sistema que não estão sendo usadas momentaneamente - isto leva a

uma economia tanto de potência dinâmica como estática. Esta técnica poderia ser usada no

projeto desenvolvido, pois, nos casos em que o sistema não operasse com as 8 SISOs atuando,

as inativas poderiam ser desligadas. Estas técnicas não foram usadas devido ao grande desafio

imposto, especialmente de verificação, e a não necessidade de se ter todas as possibilidades no

estágio de desenvolvimento, mas, o pior caso de consumo. Neste caso, a potência estimada

através da análise estática é 296,2 mW.

Apesar do crescimento da potência estática, a dinâmica ainda é dominante. Uma forma de

diminuir o consumo dinâmico é simplesmente promover a diminuição da frequência do

sistema, já que existe uma relação de proporção direta entre eles. Assim a frequência de todo o

projeto da camada física foi limitada a 120 MHz. Esta escolha não é aleatória, mas ditada pela

facilidade em se conseguir essa frequência na implementação de PLLs.

A redução da frequência tanto diminui o consumo diretamente, como indiretamente

contribui para a utilização de circuitos mais lentos, que consomem menos, já que com um

requisito de tempo menor, as ferramentas podem otimizar o hardware para haver uma

economia de energia.

Page 75: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

60

3. DISCUSSÃO DOS RESULTADOS

Para um estudo apurado da eficácia do IP desenvolvido, diversos aspectos devem ser

considerados, principalmente os que se relacionam ao desempenho na correção de erros, à área

de silício ocupada, ao consumo de potência, à frequência usada e à tecnologia utilizada. O grau

de paralelismo e o número de iterações permitidas também devem ser considerados quando se

realiza uma comparação entre as soluções encontradas.

A escassez de trabalhos realizados especificamente para o padrão LTE e as diversas

definições de projeto também dificultam um estudo comparativo detalhado. A utilização do

padrão LTE permite o uso de certas técnicas de paralelismo inexistentes em outros projetos.

Alguns resultados de desempenho foram mostrados anteriormente, e ao se fazer uma análise

comparativa deve-se aprofundar este estudo. O desempenho quanto à correção de erros foi

definido como um requisito inicial do projeto. A apuração da capacidade de correção de erros

só pode ser feita a partir de simulações, para o quê é usado o modelo em Matlab. Diversos

fatores influenciam a simulação, sendo o desempenho sempre estimado com relação a estes

parâmetros.

A capacidade de correção de erros é medida através de simulações variando os seguintes

fatores:

- Tamanho do bloco de dados a ser decodificado

- Modulação empregada

- Relação sinal/ruído

- Número de iterações

- Quantidade de bits que representa cada variável

Com exceção do último parâmetro, os outros podem ser facilmente alterados para se ter

uma análise de desempenho do projeto como em [30]. A seguir, são apresentadas algumas

análises:

I) A Figura 39 mostra os resultados das simulações usando os parâmetros definidos na

Tabela 3. Como pode ser notado, desempenho do decodificador varia dependendo

do tamanho, em bits, do bloco a ser decodificado.

No caso deste trabalho, uma particularidade com relação ao paralelismo empregado

deve ser notada, já que o sistema tem uma relação fixa entre o tamanho do bloco e o

nível de paralelismo usado, não podendo dissociar estes elementos.

Pode-se notar que quanto maior o tamanho do bloco de processamento maior é sua

eficácia em corrigir erros, devido à maior distância livre. Ou seja, o codificador é

Page 76: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

61

mais robusto. Porém, quando existem transições entre os níveis de paralelismo, esta

relação não é seguida, já que a quebra da cadeia de decodificação causa uma

operação sobre blocos menores e mais incertezas, devido à falta de continuidade na

treliça.

Tabela 3: Parâmetros para a Simulação Variando o Tamanho do Bloco de Processamento

Parâmetro de Simulação Valor

Tamanho do bloco de processamento

(bits)

576, 672 e 768

Esquema de Modulação QPSK

Número de Iterações 5

Figura 39: Desempenho do Sistema Comparando por Tamanho de Blocos

II) A Tabela 4 exibe as especificações da simulação e a Figura 32 mostra os resultados

obtidos do desempenho em função da capacidade de correção de erros para cada

tipo de modulação possível.

Page 77: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

62

A modulação é escolhida baseada no ruído estimado. A decodificação não será

diretamente influenciada pelo esquema de modulação, mas a estimativa inicial dos

valores recebidos através do canal será menos acurada para modulações mais

complexas.

Esquemas de modulação diferentes irão atuar em faixas de ruído. O BPSK é o mais

imune a ruídos, sendo, portanto utilizado quando o sinal está com a qualidade muito

ruim. Porém, a capacidade de envio de altas taxas de fluxo de informação é limitada.

Por outro lado, o esquema 64QAM possibilita um fluxo intenso de envio de dados,

porém é muito sensível a ruídos.

Tabela 4: Parâmetros para a Simulação Variando o Esquema de Modulação

Parâmetro de Simulação Valor

Tamanho do bloco de processamento 40

Esquema de Modulação BPSK, QPSK, 16QAM, 64QAM

Número de Iterações 6

III) Na Tabela 5 são exibidos os parâmetros de simulação e os resultados para uma

variação do número de iterações são mostrados na Figura 40. O número de iterações

é um importante parâmetro a ser observado já que afeta dois dos principais

requisitos do sistema, que são: a capacidade de correção de erros e o throughput.

Quanto mais iterações, mais refinado será o resultado, diminuindo então os

resultados errados, a melhora, contudo, não sendo linear. Porém, quanto mais

iterações, maior a demora no processamento de um bloco de dados, o que leva

consequentemente a uma queda no throughput.

Tabela 5: Parâmetros para a Simulação Variando o Número de Iterações

Parâmetro de Simulação Valor

Tamanho do bloco de processamento 768

Esquema de Modulação QPSK

Número de Iterações 5, 6, 7, 8

Page 78: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

63

Figura 40: Desempenho do Sistema Comparando os Resultados com Diferentes Valores de Iteração

Os resultados esperados e descritos em [30] podem ser comprovados através dos gráficos

mostrados nas Figuras 32, 39 e 40. Estas análises são importantes para estabelecer um

parâmetro de comparação. Outros trabalhos encontrados na literatura têm resultados diversos e

muitas vezes negligenciam a apresentação destes dados, o que dificulta a tarefa de comparação.

A próxima seção tem como objetivo a comparação entre os resultados encontrados neste

trabalho com outros existentes na literatura.

3.1. ESTUDO COMPARATIVO

A validação do projeto realizado deve ser feita comparando-se a solução encontrada com

outros trabalhos encontrados na literatura. Porém, devem-se levar em consideração os objetivos

estabelecidos para cada projeto.

Como discutido anteriormente, existem muitos fatores que influenciam a implementação do

decodificador turbo-code, tornando assim a comparação mais complexa. Devido à escassez de

trabalhos voltados diretamente à arquitetura LTE, muitos autores acabam por fazer

comparações entre decodificadores de padrões diferentes. Outra dificuldade ocorre devido à

Page 79: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

64

diferença de tecnologia empregada na implementação física do projeto. Como dito

anteriormente, o desempenho com relação à capacidade de correção de erros também acaba

tornando este estudo mais complexo.

As principais variáveis diretas abordadas na comparação e que influenciam na mesma são:

a área de silício ocupada, o throughput e o consumo de potência. Estes parâmetros são

diretamente relacionados com definições iniciais do projeto, como, por exemplo, a frequência

de operação, a tecnologia usada, nível de paralelismo, desempenho com relação à correção de

erros. Este desempenho, por sua vez, é influenciado pela quantidade de iterações usadas e pela

precisão das variáveis (quantidade de bits).

Os trabalhos mais relevantes, bem como seus resultados são mostrados na Tabela 6.

Tabela 6: Tabela Comparativa entre o Decodificador Proposto e Congêneres

Referência [31] [32] [33] [34] [35] [36] Proposto

Algoritmo MAP LogMAP Max-Log

MAP¹

Max-Log

MAP¹ - LogMAP

Max-Log

MAP LogMAP

Níveis de

Paralelismo 64 4/8 8 1/2/4/8 32 8 1/2/4/8

Iterações 6 5,5 8 8 6 8 8

Frequência (MHz) 400 302 300 275 200 250 120

Throughput (bit/s) 1,28 G 100 M 150 M 129 M 711 M 100 M 75 M

Tecnologia (nm) 65 130 65 90 65 130 65

Área (mm²) 8,3 3,57 2,1 2,1 - 10,7 6,7

Consumo de

Potência (mW) 845 69 300 219 - - 296,2

¹ Estas arquiteturas usam uma melhoria do algoritmo Max-Log MAP tradicional com o esquema de fator de escala

extrínseco (extrinsic scaling factor – ESF)

Algumas análises podem ser extraídas dos dados mostrados na Tabela 6. É importante

ressaltar que estes resultados não são mostrados com relação à capacidade de correção de erros.

Os trabalhos mostram uma diversidade de algoritmos empregados, dividindo-se entre a

opção LogMAP, Max-Log MAP e o Max-Log MAP modificado pela técnica de fator de escala

extrínseco. O algoritmo modificado reduz o fator de correção, em cada estágio de

processamento, por uma escala no valor da informação extrínseca, incorrendo em uma perda

baixa de desempenho. A grande vantagem seria a redução da operação da inclusão do fator de

correção. Como as operações não foram uma parte crítica do projeto, esta otimização não se faz

necessária, sendo adotada apenas por alguns autores e não sendo uma solução universal.

Page 80: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

65

O nível de paralelismo, como discutido anteriormente, afeta diretamente a latência e,

consequentemente, o throughput do sistema, já que divide operações longas em várias menores.

Neste caso, deve ser levada em consideração a perda de desempenho ocasionada pelo

processamento sobre blocos menores. Para blocos maiores esta perda é menos sentida, já que

estas configurações já têm uma melhor resposta na redução de erros. Assim, apenas trabalhos

que visam taxas de throughput muito altas usam mais níveis de paralelismo. Tais requisitos só

se fazem necessários em projetos voltados para estações rádio-base, que não é o caso do

trabalho discutido neste texto.

O número de iterações está diretamente ligado ao requisito da capacidade de correção de

dados e ao throughput. Quanto mais iterações o sistema permitir, maior a capacidade de

correção de erros. Contudo, há um momento em que o ganho associado não representa uma

vantagem se comparado com a latência inserida. Um estudo deve ser feito para atingir os

requisitos de correção de erros, sem violar o throughput especificado.

A frequência de operação do turbo-code é uma variável bastante importante, uma vez que

afeta muitos dos requisitos do sistema. A relação mais óbvia é com o throughput, já que um

aumento na frequência ocasiona um processamento mais rápido sobre um mesmo bloco de

dados. Com isso, ocorre um maior consumo de potência associado, pois estas variáveis tem

relação direta entre si.

Um aumento na frequência também tem um impacto na área ocupada pelo projeto devido às

células utilizadas para realizar uma mesma operação lógica. Existem células padrão de uma

biblioteca que podem realizar uma mesma função, porém com características físicas diferentes.

Células menores são mais lentas e consomem menos energia. Assim, ao se operar em

frequências muito elevadas, a síntese requer células mais rápidas, portanto maiores e menos

eficientes no consumo.

Como descrito anteriormente, este trabalho foi especificado para fazer parte de um projeto

da camada física do padrão LTE, portanto a frequência tem que ser compatível com o proposto

para o projeto completo. A frequência poderia ser alterada para melhorar o throughput, já que

esta relação é praticamente linear. Para o dobro da frequência, o throughput cresceria na mesma

proporção. Devido à relação com outros blocos, foi adotado o relógio com uma frequência de

120 MHz. Portanto, efetuando um escalamento de frequências, pode-se verificar que o

throughput atingido neste trabalho é da mesma ordem do throughput de trabalhos similares.

A área de silício ocupada por um projeto é um parâmetro importante na análise do IP do

turbo-code. Isso se dá pelos problemas causados por circuitos integrados muito grandes. E,

Page 81: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

66

considerando-se que o turbo-code é apenas um dos blocos constituintes da camada física do

LTE, o tamanho do IP é bastante importante para uma solução ótima.

Circuitos integrados muito grandes sofrem com diversos problemas, como o

encapsulamento, a alimentação e principalmente a porcentagem de chips perfeitos (no que se

refere a defeitos de manufatura. Esses fatores influenciam no grau de dificuldade do projeto da

placa bem como no preço unitário do circuito integrado.

A área deste projeto de decodificador turbo-code está diretamente relacionada com o

desempenho na correção de erros, pois a área das memórias representa mais de 80% de todo o

IP. Estas memórias devem representar os dados de entrada, a informação extrínseca e uma das

probabilidades de estados. A precisão destas variáveis irá afetar tanto a área da memória quanto

o desempenho.

Este trabalho teve como objetivo original atingir um desempenho na correção de erros

superior aos trabalhos existentes na literatura, a área acabou sendo maior que a esperada

inicialmente. Porém, fazendo-se uma comparação com [32], percebe-se o uso de variáveis com

uma precisão muito inferior, o que resultará em uma queda de desempenho. Contudo, esta

análise não é simples, pois não são explicitados todos os parâmetros de simulação. O mesmo

ocorre para [33]. Por outro lado, [34] não revela dados suficientes para a comparação das

variáveis internas ao projeto.

Page 82: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

67

4. CONCLUSÃO

O trabalho mostrou uma arquitetura proposta para o sistema turbo-code aplicada ao padrão

LTE. Foi realizada uma descrição do padrão, porém limitando-se ao tema da codificação de

canal.

O trabalho está inserido no âmbito de um projeto completo da camada física do padrão

LTE, visando a criação de um IP específico.

Para contextualizar o trabalho, foi realizada uma perspectiva histórica, desde o teorema de

Nyquist [38], que limita a taxa de amostragem, passando pelos trabalhos de Shannon [39], que

estabelecem o limite teórico do canal e os sistemas de correção de erros que perseguem este

limite, e chegando, finalmente, ao turbo-code, que apresenta um desempenho muito próximo

do limite.

Também foi mostrado o fluxo de projeto digital que foi seguido neste trabalho. Neste caso,

o embasamento teórico vem em conjunto com o conhecimento prático para a realização de

circuitos integrados em silício. Começou-se pela descrição RTL, tendo na verificação uma

importante ferramenta, e concluiu-se com a implementação física. O nível de detalhamento não

foi muito alto devido ao escopo limitado do trabalho.

Finalmente, as etapas desenvolvidas foram apresentadas. Foi dado um enfoque especial na

arquitetura do hardware, pois, é esta a grande diferenciação entre este e outros trabalhos.

Algumas etapas auxiliares se destacam, como a verificação e a criação de um modelo de

referência, no qual as ideias das arquiteturas puderam ser testadas antes da implementação.

Os resultados foram então comparados com outros trabalhos encontrados na literatura

corrente. Esta análise se mostrou complicada devido aos diferentes parâmetros que cada

trabalho assume. Porém, os resultados foram satisfatórios dentro dos requisitos propostos,

principalmente devido à grande capacidade de correção de erros.

Este projeto se mostrou superior a todos os que puderam ser comparados com relação à

capacidade de correção de erros, contudo, este ganho de desempenho causa uma deterioração

dos outros parâmetros de comparação. Ainda assim, o projeto apresentou características

similares ou superiores a outros trabalhos. Como se propôs ter uma alta fidelidade na correção

de erros, os outros parâmetros foram otimizados de forma a que esse não se deteriorasse. A área

de silício ocupada é diretamente afetada, já que para uma maior capacidade de correção, as

operações são feitas em uma precisão mais elevada, consequentemente, maior a área ocupada.

A latência também é afetada indiretamente através no número de iterações. Quanto mais

Page 83: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

68

iterações, mais preciso o resultado, elevando consequentemente o tempo de espera para o

cálculo.

Outro fator importante na comparação foi a frequência de operação do decodificador. Como

este projeto foi pensado para ser inserido em um contexto maior, integrado a outros blocos da

camada física do padrão LTE, a velocidade de funcionamento teve que obedecer a um valor

específico, inferior ao utilizado pelos outros trabalhos descritos na literatura. Este parâmetro

tem uma relação praticamente linear com o throughput e a latência, fatores estes, fundamentais

para a comparação de resultados.

4.1. PROPOSTA DE TRABALHOS FUTUROS

Apesar do êxito alcançado para o desempenho do sistema, o projeto, por se tratar de um IP,

poderia ter uma maior flexibilidade com relação à utilização de mais otimizações, em

detrimento de uma queda no desempenho a ser avaliada pelo possível usuário. Assim, o

desempenho, dependendo da aplicação, poderia não ser o objetivo principal, mas um hardware

menor ou com um maior throughput.

Uma análise interessante para medir o desempenho do sistema é a integração dele com os

blocos mais próximos, o que permite uma visão mais ampla do funcionamento do circuito

integrado e da capacidade de correção de erros. Os principais blocos são o Rate Matching, que

trata de ajustar o número de bits de acordo com a taxa de codificação necessária, para isso

retirando ou repetindo os bits originais. Outro bloco interessante é o MIMO, que é o

responsável pela recepção dos dados através de múltiplas antenas. Assim, a análise fica mais

completa, já que adiciona a melhora de desempenho proveniente do MIMO.

Page 84: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

69

6. REFERÊNCIAS BIBLIOGRÁFICAS

[1] - Dahlman, E., Parkvall, S., Sköld, J., Beming, P., “3G Evolution HSPA for Mobile

Broadband”, Second Edition, Academic Press - Elsevier, 2008

[2] – Cox, C., “An Introduction to LTE – LTE, LTE Advanced, SAE and 4G Mobile

Communications”, John Wiley and Sons, 2012

[3] – Sesia, S., Toufik, I., Baker, M., “LTE The UMTS Long Term Evolution – From Theory to

Practice”, Wiley, 2009

[4] – Proakis, J. G., “Digital Communications”, Fourth Edition, McGraw-Hill, 2000

[5] – Sklar, B., “Digital Communications – Fundamentals and Application”, Second Edition,

Prentice Hall P T R, 2000

[6] – Haykin, S., “Communication Systems”, Fouth Edition, John Wiley and Sons, 2001

[7] – André de Amaral Araújo, Paulo Bastos Tigre, Sérgio Bampi, Sérgio Francisco Alves

Márcio Wohlers de Almeida, “Programa Nacional de Microeletrônica – Contribuições para a

Formulação de um Plano Estruturado de Ações”, Secretaria de Política de Informática –

Ministério de Ciências e Tecnologia, Brasília 2002.

[8] – Reis, V. T., Souza, I. S., “A 65nm VLSI Implementation for the LTE Turbo Decoder”,

2011, Proceedings of the 24th

Symposium on Integrated Circuits and Systems Design, SBCCI,

pp, 155 - 160

[9] IEEE Annals of the History of Computing, Vol. 20, No. 2, 1998

[10] P.M. César, “Breve Introdução à Teoria dos Códigos Corretores de Erros”, Colóquio de

Matemática da região Centro-Oeste, Novembro 2009.

[11] P. Elias, “Coding for noisy channels”, IRE Conv. Rec., pt. IV, pp. 37-46, 1955

[12] P. Elias, “Error-free Coding”, IRE Professional Group on Information Theory, vol. 4,

issue 4, pp. 29-37, 1954

[13] A. J. Viterbi, “Error Bounds for Convolutional Codes and an Assymptotically Optimum

Decoding Algorithm”, 1967, IEEE Transactions on Information Theory 13 (2): 260–269.

[14] C. B. Schlegel, L. C. Pérez, “Trellis and Turbo Coding”, 2004, IEEE Press: John Wiley

and Sons

Page 85: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

70

[15] L.Bahl, J.Cocke, F.Jelinek, and J.Raviv, "Optimal Decoding of Linear Codes for

minimizing symbol error rate", IEEE Transactions on Information Theory, vol. IT-20(2),

pp.284-287, March 1974.

[16] P. Robertson, P. Hoe her, E. Villenbrun, “Optimal and Sub-Optimal Maximum a

Posteriori Algorithms Suitable for Turbo Decoding”, Eur. Trans. Telecommun., Vol. 8, pp.

119-125, March/April 1997

[17] C. Berrou, A. Glavieux, and P.Thitimajshima, “Near Shannon limit error-correcting

coding and decoding: Turbo-codes” in Proc. ICC ‟93, pp. 1064-1070, May 1993.

[18] “3GPP TS 36.212 version 9.1.0 Release 9”, 3GPP

[19] “Fundamentals of Turbo Codes”, Bernard Sklar

[20] Dobkin, R., Peleg, M., Ginosar, R., “Parallel VLSI Architecture for MAP Turbo Decoder”

in PIMRC, pp. 384-388, 2002.

[21] Nimbalker, A., Blankenship, Y., Classon, B., Blankenship, T. K., “ARP and QPP

Interleavers for LTE Turbo Coding” WCNC proceedings, 2008.

[22] Dobkin, R., Peleg, M., Ginosar, R., “Parallel Interleaver Design and VLSI Architecture for

Low-Latency MAP Turbo Decoders”, IEEE Transactions on Very Large Scale Integration

(VLSI) Systems, Vol. 13, nº 4, Abril 2005.

[23] D. A. Guimarães, “Noções sobre Decodificação Turbo: Um Estudo de Caso para os

Códigos SPC-TPC”, Departamento de Telecomunicações – Inatel.

[24] M. Keating, P. Bricaud, “Reuse Methodology Manual – For System-on-a-Chip Designs”

Kluwer Academic Publishers, 3ª Edição, 2002

[25] N. Weste, D. Harris, “CMOS VLSI Design – A Circuit and Systems Perspective”, Pearson

Education, 3ª Edição, 2005

[26] “Digital VLSI Systems Design – A Design Manual for Implementation of Projects on

FPGA and ASIC Using Verilog”, S. Ramachandran, 2007, Springer

Page 86: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

71

[27] “VLSI Circuit Design Methodology Demystified – A conceptual Taxonomy”, Liming Xiu,

Wiley-Interscience, 2007

[28] Bob Zeidman, Verilog Designer‟s Library, Prentice Hall. 1999

[29] Stephen Brown and Zvonko Vranesic, “Fundamentals of Digital Logic with VHDL

Design”, McGraw Hill, 2005

[30] Huahua, W. and Wenwen, L., “Analysis of Turbo Decoding Algorithm in LTE System”,

9th

International Conference on Fussy Systems and Knowledge Discovery, 2012

[31] Sun, Y., Cavallaro, J. R., “Efficient hardware implementation of a highly-parallel3GPP

LTE/LTE-advance turbo decoder”, INTEGRATION, the VLSI journal, Elsevier, 2011

[32] Studer, C., Benkeser, C., Belfanti, S., Huang, Q., “Design and Implementation of a Parallel

Turbo-Decoder ASIC for 3GPP-LTE”, IEEE Journal of Solid-State Circuits, Vol. 46, Nº 1,

January 2011

[33] May, M., Ilnseher, T., When, N., Raab, W., “A 150Mbit/s 3GPP LTE Turbo Code

Decoder”, Design, Automation & Test in Europe Conference & Exhibition (DATE), 2010.

[34] Wong, C. C., Lee, Y. Y., Chang, H. C., “A 188-size 2.1 mm² Reconfigurable Turbo

Decoder Chip with Parallel Architecture for 3GPP LTE System”, Symposium on VLSI Circuits

Digest of Technical Papers, 2009

[35] Sun, Y., Zhu, Y., Goel, M., Cavallaro, J. R., “Configurable and Scalable High Throughput

Turbo Decoder Architecture for Multiple 4G Wireless Standards”, IEEE International

Conference on Application-Specific Systems, Architectures and Processors (ASAP), 2008

[36] Kim, J. H., Park, I. C., “A Unified Parallel Radix-4 Turbo Decoder for Mobile WiMAX

and 3GPP-LTE”, IEEE Custom Integrated Circuits Conference (CICC), 2009

[37] Souza, I. S., Reis, V. T., “A VLSI Design for The LTE Turbo Decoder“, 2012, Journal of

Integrated Circuits and Systems, JICS, Vol. 7, nº 1, pp, 16 - 22

[38] Nyquist, H., “Certain Topics in Telegraph Transmission Theory“, 1928, Transactions of

the American Institute of Electrical Engineers, Vol. 47, Issue 2, pp, 617 - 644

Page 87: PROJETO DE UM SISTEMA DE CORREÇÃO DE ERROS · PDF fileOrientadora: Escola Politécnica, 2013. S729 Souza, Ilan Schnitman. Projeto de um sistema de correção de erros em comunicação

72

[39] Shannon, C. E., “A Mathematical Theory of Communication“, 1948, The Bell System

Technical Journal, Vol. 27, pp, 379 - 423

[40] Hamming, R. W., “Error Detecting and Error Correcting Codes“, 1950, The Bell System

Technical Journal, Vol. 29, pp, 147 - 160

[41] Golay, M. J. E., “Notes on Digital Coding“, 1949, Proc. IRE, 37, pp, 567