Implementação de codificador LDPC para um sistema de TV digital usando ferramentas de prototipagem rapida
Texto
(2) FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA DA ÁREA DE ENGENHARIA E ARQUITETURA - BAE - UNICAMP. G165i. Garcia, Fábio Lumertz Implementação de um codificador LDPC para um sistema de TV digital usando ferramentas de prototipagem rápida / Fábio Lumertz Garcia. --Campinas, SP: [s.n.], 2006. Orientadores: Dalton Soares Arantes, Fabbryccio Akkazzha Chaves Machado Cardoso. Dissertação (Mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computação. 1. Televisão digital. 2. Códigos de controle de erros (Teoria da informação). 3. FPGA. I. Arantes, Dalton Soares. II. Cardoso, Fabbryccio Akkazzha Chaves Machado. III. Universidade Estadual de Campinas. Faculdade de Engenharia Elétrica e de Computação. IV. Título.. Título em Inglês: Implementation of an LDPC encoder for a digital TV system using rapid prototyping tools. Palavras-chave em Inglês: Digital television, Error-correcting codes (Information theory), Field programmable gate arrays. Área de concentração: Telecomunicações e Telemática Titulação: Mestre em Engenharia Elétrica Banca examinadora: Renato Baldini Filho, José Raimundo de Oliveira e Maria Cristina Felippetto de Castro. Data da defesa: 21/12/2006.. ii.
(3) Fábio Lumertz Garcia. Implementação de um Codificador LDPC para um Sistema de TV Digital usando Ferramentas de Prototipagem Rápida. Dissertação apresentada à Faculdade de Engenharia Elétrica e Computação como parte dos requisitos exigidos para a obtenção do título de Mestre em Engenharia Elétrica. Área de concentração: Telecomunicações e Telemática. Banca Examinadora: Prof. Dr. Dalton Soares Arantes – UNICAMP Prof. Dr. Renato Baldini Filho – UNICAMP Prof. Dr. José Raimundo de Oliveira – UNICAMP Profa. Dra. Maria Cristina Felippetto de Castro – PUCRS. Campinas, SP 2006. iii.
(4) Resumo O objetivo deste trabalho é apresentar as diversas etapas de implementação de um codificador LDPC para um sistema de televisão digital, desenvolvido através do emprego de algumas tecnologias inovadoras de prototipagem rápida em FPGA. O codificador implementado foi baseado em um código LDPC eIRA, que consiste em uma classe estendida de códigos de repetição e acumulação irregulares, com palavra-código de 9792 bits e taxa de 3/4. Visando agregar outras tecnologias emergentes ao projeto de TV Digital, o sistema proposto foi desenvolvido para operar sobre o Protocolo de Internet - IP. Os esforços para a realização deste trabalho fizeram parte de um esforço mais amplo de um consórcio de universidades brasileiras, visando à concepção, ao projeto, à simulação e à implementação em hardware de um Sistema de Modulação Inovadora para o SBTVD. A grande sinergia obtida neste projeto e o uso intensivo de ferramentas de prototipagem rápida em FPGA possibilitaram a obtenção de uma prova de conceito implementada e testada em um prazo de apenas 12 meses. Palavras-chave: LDPC, FPGA, System Generator, Prototipagem Rápida.. Abstract This work presents the several phases in the implementation of an LDPC encoder for a digital television system, developed using innovative technologies for rapid prototyping on Field Programmable Gate Array devices - FPGAs. The implemented encoder was based on an eIRA extended Irregular Repeat Accumulate - LDPC code with codeword-length equal to 9792 bits and rate 3/4. The proposed system was developed to work with video streaming over the Internet Protocol- IP. This work is part of a more ambitious project that resulted in the development of an advanced Modulation System for the Brazilian Digital TV System - SBTVD. Key-Words: LDPC, FPGA, System Generator, DSP Rapid Prototyping.. iv.
(5) Agradecimentos Primeiramente ao Bom Deus, fonte de todo bem, toda felicidade e toda sabedoria. Sem Ele nada teria sentido, nem mesmo a busca do conhecimento. Ao meu orientador, professor Dr. Dalton Arantes, pelas suas orientações, tanto as profissionais quanto as pessoais. Faço uso destas poucas linhas para expressar minha gratidão e estima. À minha família. Agradeço à minha mãe e aos meus irmãos pelo amor e pela presença. Apesar de longe, nunca estivemos separados. Especialmente, agradeço à Valéria que tem sido meu porto seguro nestes últimos anos. Ao meu co-orientador, ao qual tenho o privilégio de chamar de amigo, Dr. Fabbryccio Cardoso. Deus permita que eu possa um dia adquirir um pouco de sua humildade e boa vontade. Ao meu colega, Tarciano Pegoraro, pela ajuda nas implementações e auxílio nos estudos de codificação. Aos colegas do laboratório ComL@b e aos companheiros de muitos almoços no RA. À minha amiga Adriane Sartori, pela amizade desde a primeira viagem de Porto Alegre a Campinas e pelo companheirismo, principalmente nas dificuldades do primeiro ano... A todas as senhoras que lavaram minha roupa, limparam minha casa e prepararam minhas refeições durante estes anos. v.
(6) Por último, mas não em último, aos amigos do Rio Grande do Sul. Agradeço a amizade apesar da distância. Ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), Financiadora de Estudos e Projetos (Finep), bem como à Fundação de Amparo à Pesquisa do Estado de São Paulo (Fapesp) pelo apoio financeiro e material.. vi.
(7) “Não tenhas medo homem querido. Anima-te! Sim, anima-te! Coragem!” Daniel 10,19. vii.
(8) Sumário Lista de Figuras .......................................................................................................................xi Lista de Tabelas .....................................................................................................................xiv Lista de Variáveis ...................................................................................................................xv Lista de Siglas e Abreviações..............................................................................................xviii 1. Introdução .............................................................................................................................1 1.1 A Importância das Ferramentas de Prototipagem Rápida nas Soluções de DSP .......1 1.2 Contextualização Política e Temporal da Dissertação ................................................8 2. Tecnologias para Implementação de Sistemas em FPGAs .............................................11 2.1 Introdução as FPGAs.................................................................................................11 2.1.1 Introdução, Conceitos Fundamentais e Origem das Tecnologias .................11 2.1.2 Arquiteturas e Configurações .......................................................................23 2.1.3 Formas de Desenvolvimento e Implementação ............................................31 2.1.3.1 Linguagem Esquemática ..................................................................31 2.1.3.2 Linguagem de Descrição de Hardware (HDL) .................................34 2.1.3.3 Linguagem C, SVP e DSP ................................................................37 2.1.4 Principais Fornecedores e Parceiros .............................................................40 2.2 ISE Design Flow e System Generator .......................................................................42 2.2.1 Project Navigator ..........................................................................................42 2.2.2 System Generator .........................................................................................48 2.2.3 Simulação HDL ............................................................................................52 viii.
(9) 2.3 AccelChip (AccelDSP) e AccelWare ........................................................................53 2.3.1 AccelChip (AccelDSP) .................................................................................53 2.3.2 AccelWare e Núcleos de Propriedade Intelectual (NPIs ou IP Cores) .........60 3. O Sistema de TV Digital sobre IP .....................................................................................63 3.1 Vídeo Bruto ..............................................................................................................64 3.2 Codificador/Decodificador de Vídeo .......................................................................65 3.3 Empacotador UDP/IP ...............................................................................................68 3.4 Conversor Camada MAC .........................................................................................70 3.5 Aleatorizador/Desaleatorizador ................................................................................71 3.6 Codificador/Decodificador Reed-Solomon ..............................................................71 3.7 Codificador/Decodificador LDPC ...........................................................................72 3.8 Mapeador/Demapeador e LLR .................................................................................72 3.9 Modulador/Demodulador e Alamouti ......................................................................74 3.10 Conversores A/D e D/A ..........................................................................................77 3.11 Conversores Elevador e Rebaixador ......................................................................78 3.12 Amplificador de Potência .......................................................................................79 3.13 Amplificador de Baixo Ruído e Controle Automático de Ganho ..........................79 4. Codificação LDPC ..............................................................................................................81 4.1 Introdução à Codificação de Canal............................................................................81 4.2 Reed-Solomon ...........................................................................................................86 4.3 LDPC .........................................................................................................................89 4.3.1 Codificação ...................................................................................................95 4.3.2 Decodificação ...............................................................................................97 5. Implementação do Codificador LDPC .............................................................................99 5.1 Codificador LDPC.....................................................................................................99 5.1.1 Estrutura da Codificação ...............................................................................99 5.1.2 Implementação em System Generator.........................................................101 5.2 Descrição do Hardware Empregado ........................................................................105 5.3 Detalhamento da Implementação do Sistema..........................................................111 6. Resultados, Demonstrações e Comparações ..................................................................119 6.1 Quanto ao Desempenho e Comprimento do Código LDPC....................................119 6.2 Comparações de Modelos de Implementação .........................................................121 6.2.1 System Generator Versus AccelChip ..........................................................121 ix.
(10) 6.2.2 System Generator Versus VHDL ................................................................122 6.2.3 Otimização em Área Versus Otimização em Velocidade ...........................124 6.3 Demonstrações de Ocupação dos Dispositivos .......................................................125 7. Considerações Finais e Trabalhos Futuros ....................................................................129 Referências Bibliográficas ...................................................................................................131 Apêndice A ...........................................................................................................................135. x.
(11) Lista de Figuras 1 – Diagrama temporal das tecnologias relacionadas com FPGAs.........................................16 2 – Arquitetura de arranjo de células básicas com canais.......................................................18 3 – Estrutura genérica de um ASIC estruturado......................................................................20 4 – Configuração de um ASIC com FPGA associada...............................................................22 5 – Visão intercamada da FPGA................................................................................................24 6 – Diagrama esquemático de descrição de hardware.............................................................31 7 – Netlist ao nível de portas lógicas...........................................................................................32 8 – Níveis de abstração de um modelo HDL genérico..............................................................34 9 – Design Flow da Xilinx............................................................................................................42 10 – Etapa de descrição do Design Flow da Xilinx...................................................................43 11 – Interface da ferramenta Project Navigator da Xilinx......................................................44 12 – Interface da ferramenta IMPACT.....................................................................................47 13 – Browser das bibliotecas do Simulink mostrando os toolboxes da Xilinx........................49 14 –Fluxo de desenvolvimento a partir do System Generator até a etapa de download na FPGA............................................................................................................................................51 15 – Fluxo de desenvolvimento da ferramenta AccelChip (Accel DSP).................................53 16 – Interface do AccelChip para definição das ferramentas utilizadas................................55 17 – Interface do AccelChip mostrando a tabela de quantização...........................................56 18 – Interface do AccelChip mostrando o recurso de exportação para o System Generator......................................................................................................................................57 19 – Interface do AccelChip mostrando o relatório final de desenvolvimento......................58 20 – Seleção de parâmetros da FFT do AccelWare..................................................................60 21 – Diagrama de blocos do sistema de televisão digital proposto..........................................62 xi.
(12) 22 – Quadro MAC.......................................................................................................................69 23 – Mapeamento feito para a modulação QPSK.....................................................................72 24 – Mapeamento feito para a modulação 16QAM..................................................................73 25 – Diagrama de blocos de um sistema de comunicação digital............................................79 26 – Demonstração de um código de bloco binário sistemático θ(4,3)....................................81 27 – Polinômios associados às palavras-código.........................................................................84 28 – Codificação RS (20,16) com mrs = 8 ......................................................................................86 29 – Exemplo de matriz de paridade H.....................................................................................88 30 - Exemplo de gráfico de Tanner............................................................................................89 31 – Diagrama simplificado do codificador LDPC...................................................................94 32 – Esquema de troca de mensagens dos nós de bit para os nós de cheque (esquerda) e dos nós de cheque para os nós de bit (direita)........................................................................95 33 – Modelo de referência da implementação do codificador LDPC...................................100 34 – Bloco do codificador LDPC em detalhes.........................................................................102 35 – Placa Nallatech Xtreme DSP Development Kit-IV com cabo paralelo IV em destaque......................................................................................................................................105 36 – Entradas dos conversores da placa Nallatech Xtreme DSP Development Kit-IV.......105 37 – Placa Xilinx ML-402..........................................................................................................107 38 – Equipamentos de RF da National Instruments..............................................................108 39 – Visão global da implementação com definições de hardware.......................................109 40 – Diagrama simplificado da implementação do ajuste de taxa........................................111 41 – Implementação do aleatorizador......................................................................................113 42 – Curva de desempenho de código LDPC em função do comprimento do código.........116 43 – Curva característica de um código LDPC em função do comprimento do mesmo.....117 44 – Relatório de ocupação da FPGA com o código do codificador LDPC desenvolvido em AccelChip....................................................................................................................................118 45 – Relatório parcial de ocupação da FPGA com o código do codificador LDPC desenvolvido no bloco M-Code do System Generator............................................................119 46 – Relatório parcial de ocupação da FPGA com o conjunto codificador LDPC desenvolvido em VHDL.............................................................................................................120. xii.
(13) 47 – Relatório parcial de ocupação da FPGA com o conjunto codificador LDPC, com otimização em termos de velocidade e desenvolvido em System Generator........................120 48 – Relatório parcial de ocupação da FPGA com o conjunto codificador LDPC, otimização em termos de área e desenvolvido em System Generator...................................121 49 – Relatório parcial de ocupação da primeira FPGA empregada no protótipo. Nesta FPGA, estão implementados o MAC Ethernet, o ajuste de taxa, o aleatorizador e o codificador LDPC......................................................................................................................123 50 – Relatório parcial de ocupação da segunda FPGA empregada no protótipo. Nesta FPGA, estão implementados o mapeador, o multiplexador, o modulador e Alamouti e a inserção de prefixo cíclico.........................................................................................................123 51 – Relatório parcial de ocupação da terceira FPGA empregada no protótipo. Nesta FPGA, estão implementados o filtro passa-baixa, o demodulador e Alamouti, o demapeador e a LLR................................................................................................................................................................. 124 52 – Relatório parcial de ocupação da quarta FPGA empregada no protótipo. Nesta FPGA, está implementado o decodificador LDPC.................................................................125 53 – Relatório parcial de ocupação da quinta FPGA empregada no protótipo. Nesta FPGA, estão implementados o desaleatorizador, o ajuste de taxa e o MAC Ethernet.......125. xiii.
(14) Lista de Tabelas 2.1. Fabricantes de FPGAs ....................................................................................................39 2.2 Desenvolvedores de ferramentas completas para FPGAs ............................................40 2.3 Especialistas e desenvolvedores independentes de ferramentas para FPGAs ............40 2.4 Consultores e desenvolvedores especiais de ferramentas para FPGAs .......................41. xiv.
(15) Lista de Variáveis. A - Conjunto de alfabeto-código; Amap - Conjunto de símbolos ou alfabeto do mapeador; a - Número de linhas da submatriz M em um código LDPC; b - Número de colunas da submatriz M em um código LDPC; C - Conjunto de palavras-código; c - Palavra-código;. ci - I-ésimo bit da palavra-código c; dv - Maior grau de nós de bit em um código LDPC; DC – Nível contínuo de sinal;. dc - Maior grau de nós de cheque em um código LDPC; GF – Corpo de Galois; G - Matriz geradora de um código;. g i - EXIT chars elementares do processo de evolução de densidade num código LDPC; H - Matriz de paridade; H 1 - Parte da matriz de paridade H, com dimensões (n-k)xk; H 2 - Parte da matriz de paridade H, com dimensões (n-k)x(n-k);. I - Matriz identidade; xv.
(16) i - Grau de um ramo ou nó em um código LDPC; k - Número de símbolos de uma mensagem a ser codificada; Li - LLR (Log-Likelihood Ratio); M - Submatriz de H 1 em um código LDPC, m vezes menor do que a mesma; m - Grau de paralelização de um código LDPC, relação entre as matrizes H 1 e M; m rs - Número de bits por símbolo em um código Reed-Solomon; MM - Tamanho do conjunto X; Mmap - Número de símbolos de um alfabeto Amap; n - Número de símbolos de uma palavra-código; nmap - Número de bits utilizados para representar um símbolo do mapeador; Nquant - Número de valores de tensão representados por um conversor A/D ou D/A; P – Parte do conjunto das palavras-código correspondente às paridades; p – Parte da palavra-código correspondente às paridades associadas a x; pin - Taxa de erro das mensagens de entrada de um código LDPC; p out - Taxa de erro das mensagens de saída de um código LDPC; Q – Número de elementos de um dado corpo de Galois; q – Variável utilizada para representar o produto entre H 1 e a mensagem a ser codificada em um código LDPC; r - Seqüência de bits recebidos em um decodificador RS; resbits – Resolução de conversor A/D ou D/A, dada em bits; S – Matriz auxiliar usada no cálculo de H 1 em um código LDPC; s – Elementos da matriz S;. xvi.
(17) T – Estrutura compacta que permite emular a matriz H 1 através de permutações no contexto de um código LDPC; t – Número máximo de símbolos que pode ser corrigido por um código; u – Mensagem de um nó de cheque para um nó de bit em um código LDPC; v – Mensagem de um nó de bit para um nó de cheque em um código LDPC; X – Conjunto de mensagens a ser codificado; x – Mensagem a ser codificada;. xi - I-ésimo bit da palavra-código x; θ – Notação de código;. λ x - Fração dos ramos conectados a nós de bit de grau x; wv - Número total de nós de bit em um código LDPC; wc - Número total de nós de cheque em um código LDPC;. ρ x - Fração dos ramos conectados a nós de cheque de grau x;. xvii.
(18) Lista de Siglas e Abreviações. •. AGC – Automatic Gain Control;. •. ARP – Address Resolution Protocol;. •. ASIC – Application Specific Integrated Circuit;. •. ASSP – Application Specific Standard Part;. •. AVHDL – Altera Very high speed Hardware Description Language;. •. bps – Bits por segundo;. •. C – Linguagem de programação de propósito geral;. •. C++ – Linguagem de programação de propósito geral, orientada a objeto, baseada em C;. •. CI – Integrated Circuit;. •. CAD –Computer Aided Design;. •. CAE – Computer Aided Engineering;. •. CPLD – Complex Programmable Logic Device;. •. DAC – Developing Automation Conference;. •. DCM – Digital Clock Manager;. •. EDA – Electronic Design Automation;. •. EEPROM – Electrically Erasable Programmable Read Only Memory;. •. EPROM – Erasable Programmable Read Only Memory;. •. FIFO – First In First Out;. •. FPGA – Field Programmable Gate Array;. •. GAL – Gate Array Logic;. •. Gbps – Giga bits por segundo;. xviii.
(19) •. GHz – Giga Hertz;. •. Hz – Hertz;. •. IEEE – Institute of Electrical and Electronics Engineer (http://www.ieee.org);. •. IP – Internet Protocol;. •. IP (2) – Intellectual Property;. •. ISP – In System Programmable;. •. ITU – International Telecommunication Union (http://www.itu.int/home/);. •. JTAG – Joint Test Action Group (IEEE 1149.1);. •. Kbps – Kilo bits por segundo;. •. KHz – Kilo Hertz;. •. LDPC – Low Density Parity Check;. •. LNA – Low Noise Amplifier;. •. MAC – Media Access Control;. •. Mbps – Mega bits por segundo;. •. MHz – Mega Hertz;. •. MOSFET MOS – Metal Oxide Semiconductor Field Effect Transistor;. •. MPEG – Moving Picture Experts Groups (www.mpeg.org);. •. MSPS – Mega Sample Per Seconds;. •. NPI – Núcleo de Propriedade Intelectual;. •. OFDM - Orthogonal Frequency Division Multiplexing;. •. PAL – Programmable Array Logic;. •. PCI – Peripheral Component Interconnect;. •. PLD – Programmable Logic Device;. •. PLL – Phase-locked loop;. •. PMCD – Phase Matched Clock Divider;. •. PROM – Programmable Read Only Memory;. •. RAM – Random Access Memory;. •. RFP – Requisição Formal de Proposta;. •. ROM – Read Only Memory;. •. RS – Reed-Solomon; xix.
(20) •. RTL – Register Transfer Level;. •. SBTVD – Sistema Brasileiro de Televisão Digital;. •. SPLD – Simple Programmable Logic Device;. •. SVP – Silicon Virtual Prototyping;. •. TTL – Transistor-Transistor Logic;. •. UDP – User Datagram Protocol;. •. USB – Universal Serial Bus;. •. Verilog – Linguagem de Descrição de Hardware (IEEE 1364);. •. VHDL –Very high speed Hardware Description Language (IEEE1164);. •. VHSIC – Very High Speed Integrated Circuit;. xx.
(21) 1. Capítulo 1 Introdução 1.1 A Importância das Ferramentas de Prototipagem Rápida nas Soluções de DSP Aplicações que envolvem Processamento Digital de Sinais (DSP) são cada vez mais freqüentes e importantes na vida cotidiana, e a utilização de ferramentas que possibilitem seu desenvolvimento e emprego é de essencial importância. Em um mundo que exige cada vez mais rapidez e agilidade na demonstração de resultados de pesquisas científicas e no desenvolvimento de novos produtos, encontrar soluções de uma forma eficiente e rápida é fundamental para manter-se competitivo. Desta forma, este trabalho apresenta a implementação de um codificador LDPC (Low Density Parity Check) para um sistema de televisão digital, desenvolvido através do emprego de tecnologias inovadoras de prototipagem rápida baseadas em FPGA (Field Programmable Gate Array).. A concepção de um projeto de DSP, assim como qualquer outro projeto, demanda alguns cuidados que antecedem à etapa de aplicação das ferramentas de desenvolvimento. Ao iniciar-se um projeto, o primeiro passo é determinar quais as suas finalidades, objetivos e quais necessidades que ele visa suprir. Depois, necessita-se definir quais serão os recursos empregados. Em seguida, deve-se especificar uma metodologia de desenvolvimento bem definida a ser empregada. Finalmente, determinam-se quais serão as ferramentas utilizadas para executar-se o projeto. Um bom e simples exemplo de comparação para esta concepção é o projeto de construção de uma casa. Inicialmente o arquiteto necessita definir as finalidades do projeto, ou 1.
(22) Capítulo 1 – Introdução. 2. seja, delimitar questões iniciais relativas ao seu objetivo, como, por exemplo, quantas pessoas habitarão a casa, qual o tamanho da mesma, quantas peças ela terá etc. Depois, visando aos objetivos do projeto da casa, ele deverá determinar os recursos que serão empregados, se a casa será construída de madeira, de alvenaria, com acabamentos de gesso etc. A próxima etapa referese à metodologia empregada, ou seja, por qual parte começará a obra, quais as primeiras paredes a serem alicerçadas, entre outras. Finalmente ele deverá especificar as ferramentas a serem utilizadas de acordo com os recursos escolhidos, por exemplo, espátula e betoneira, caso a obra seja de alvenaria, serra e plaina, caso a casa seja de madeira e assim por diante. Assim, tal qual o arquiteto deparando-se com o projeto da casa, quando uma equipe de desenvolvimento está diante de uma aplicação de DSP a ser implementada, ela depara-se com o mesmo tipo de processo descrito anteriormente: objetivos, recursos, metodologias e ferramentas. Para a definição desses pontos, fatores diretamente relacionados a questões como custo, qualidade e tempo de desenvolvimento do produto são fortemente pertinentes, bem como questões tais quais: a solução será implementada em software ou hardware? Se em software, usar processadores de uso geral (Power PC ou ARM) ou processadores de uso específico (Analog Device Sharc e Blackfin, Texas Instruments C6000 ou Motorola i350)? Se a implementação for feita em hardware, utilizar FPGA, ASIC ou ASIC estruturado? Será possível utilizar algum Núcleo de Propriedade Intelectual (NPI ou IP Core) existente? Qual linguagem de desenvolvimento deve ser utilizada (C, C++, VHDL, Matlab)? Essas são questões que corriqueiramente encontram-se na mente de desenvolvedores nas etapas iniciais de projeto [1]. Os processadores de DSP de uso geral apresentam uma grande penetração de mercado, especialmente por disporem de uma flexibilidade relativamente elevada, uma vez que seu desenvolvimento é totalmente baseado em software, o que facilita a correção de erros e atualizações. Além disso, geralmente apresentam plataformas de desenvolvimento relativamente amigáveis, utilizando, em sua maioria, linguagens de programação difundidas como C ou C++. No entanto, os requisitos atuais dos sistemas eletrônicos e de comunicações excedem a capacidade dos processadores de DSP de uso geral, ou seja, eles estão deixando de atender a atual demanda de processamento [2] [1]. A lacuna criada entre a capacidade de desempenho dos processadores de DSP de uso geral e os requisitos das novas tecnologias de comunicações tende a.
(23) Capítulo 1 – Introdução. 3. aumentar ainda mais nos próximos anos [1]. A solução para os desenvolvedores de sistemas em processadores de DSP de uso geral é colocar seus algoritmos “em silício” para uma “aceleração” em hardware, uma vez que a demanda de desempenho de sistemas de DSP está forçando os limites das tecnologias de software existentes e a capacidade de desempenho em hardware está aumentando. Ademais, os processadores DSP de uso geral possuem recursos fixos e cada processador possui um número limitado de funções computacionais básicas. As principais tecnologias disponíveis para implementação de sistemas de DSP em hardware são FPGA, ASIC, ASIC estruturado e processadores de DSP. Quando da implementação em silício, as principais questões que são consideradas são relativas ao desempenho, flexibilidade ou capacidade de reprogramação, custo por unidade, tempo de fabricação e flexibilidade dos recursos dos dispositivos (recursos ditos embarcados) como memórias, somadores etc. Algoritmos de DSP implementados em ASIC, quando comparados com FPGAs, têm a vantagem de ter o melhor desempenho, pois operam com freqüências de relógio (clock) maiores do que 1GHz. A implementação em FPGA reduz o desempenho em comparação ao ASIC, atingindo uma freqüência de operação máxima em torno de 500MHz. Além disso, as implementações em FPGA exigem o maior custo por unidade e possuem a menor flexibilidade dos recursos embarcados, dependendo da família de dispositivos adotada. Ademais, dispositivos ASIC possibilitam um menor custo por unidade quando produzidos em larga escala. Entretanto, os ASICs sacrificam a flexibilidade ou capacidade de reprogramação, possuem um alto custo inicial de implementação e um longo processo de prototipagem (algo em torno de seis meses de desenvolvimento mais três meses de fabricação, de acordo com [1]), além de exigirem a compra de ferramentas de desenvolvimento relativamente caras. Por sua vez, os algoritmos de DSP implementados em FPGAs possuem a vantagem de apresentar o menor tempo de fabricação (tipicamente de um a três meses, de acordo com [1]) e o maior grau de flexibilidade ou capacidade de reprogramação. Uma vantagem das FPGAs sobre processadores DSP é que elas permitem que o desenvolvedor “ajuste a arquitetura ao algoritmo”. Isso significa dizer, por exemplo, que é possível implementar na FPGA um grau de paralelismo tal qual necessário para atingir-se o desempenho desejado. Como nos processadores de DSP de uso geral os recursos são fixos no dispositivo, ocorre que o “algoritmo tem que ser ajustado à arquitetura”. Já a solução de desenvolvimento em ASIC estruturado é uma solução híbrida entre as soluções em ASIC e.
(24) Capítulo 1 – Introdução. 4. FPGA. Assim, ela proporciona ao desenvolvedor uma solução intermediária entre os dois tipos de solução. Diante do desenvolvimento das novas famílias de FPGAs, especialmente dos maiores fabricantes como Xilinx e Altera, uma nova e viável alternativa de hardware tornou-se disponível para desenvolvedores de algoritmos de DSP, combinando as vantagens dos processadores de DSP de uso geral com as vantagens de desempenho dos ASICs. Soluções de alto desempenho que antes só eram atingidas através de ASICs agora são implementáveis em FPGA [3]. Além da determinação do uso do recurso (no caso a FPGA), a metodologia e as ferramentas de desenvolvimento são determinantes para o sucesso de um projeto. Durante os anos 70, observou-se uma proliferação dos semicondutores, aflorada principalmente pela introdução de sistemas como o IC CAD. A tecnologia das memórias dinâmicas explodiu nos anos 80, quando ferramentas de simulação permitiram que um modelo preciso do comportamento das células de memórias fosse simulado, aumentando significativamente a capacidade das memórias. Também as tecnologias de microprocessadores, ASICs e FPGAs, deram um grande salto nos anos 90 quando os desenvolvedores deixaram de lado suas velhas ferramentas esquemáticas e acreditaram nas metodologias de fluxo top-down de síntese lógica e em linguagens como o VHDL. Todo crescimento rápido, em qualquer setor de tecnologia, necessitou da introdução de uma nova metodologia de desenvolvimento e ferramentas para aumentar consideravelmente a produtividade. O desafio com o qual os desenvolvedores de DSP se deparam hoje é o mesmo com o qual os desenvolvedores de ASIC se depararam nos anos 90: quais as mudanças em termos de ferramentas e em suas metodologias de desenvolvimento que devem ser feitas para utilizar FPGAs ao invés de processadores de DSP de uso geral; como obter essas habilidades; como migrar de uma tecnologia para outra sem perder os projetos atuais? Comercialmente, muitas vezes, ao escolher-se a ferramenta de desenvolvimento, a metodologia de projeto já está incutida no fluxo de utilização da própria ferramenta. O desenvolvimento tradicional de soluções de DSP, geralmente, dá-se dividido entre duas equipes, uma de desenvolvimento de sistemas/algoritmos e outra de implementação em software/hardware. Algumas vezes, em grandes empresas, essas equipes chegavam a ficar.
(25) Capítulo 1 – Introdução. 5. fisicamente distantes umas da outras. Desenvolvedores de algoritmos deveriam criar, analisar e refinar os algoritmos de DSP, usando ferramentas de análise matemática, visando a um comportamento que não se preocupasse com a arquitetura de hardware ou software que seria implementada [2]. Enquanto estes experientes desenvolvedores de sistemas possuem familiaridade com implementação de algoritmos em software, eles, em geral, apresentam dificuldades na hora de adaptar seus projetos às limitações de silício. Na outra equipe por sua vez, o engenheiro de implementação também necessita conhecer teoria de comunicações e processamento de sinais para poder interpretar a especificação escrita pelos engenheiros de algoritmo. Além disso, o processo de criar um RTL (Register Transfer Mode) para a implementação em hardware consome um longo período de trabalho devido à necessidade de verificação manual do RTL com o modelo feito em Matlab ou em outra linguagem utilizada pela equipe de desenvolvimento de algoritmo [2]. Esse processo se mostra lento, custoso e pouco produtivo para a atualidade. Assim que o modelo RTL e o ambiente de simulação são criados, o engenheiro de implementação interage com os engenheiros desenvolvedores do algoritmo para analisar desempenho, ocupação de área de silício etc. É bastante comum que o algoritmo original necessite ser modificado, porque os engenheiros de algoritmo não possuem uma visão física do projeto durante o desenvolvimento. Existe a necessidade de iteração nos processos. A produção de circuitos integrados em larga escala continua seguindo um avanço exponencial (lei de Moore) gerando um incremento no desempenho e no número de componentes lógicos, enquanto a produtividade de projeto, no entanto, avança linearmente [4]. Desta forma, existe a criação de uma nova lacuna entre o número de portas lógicas realmente disponíveis e o número de portas lógicas “projetáveis”, de tal forma que novos produtos acabam sendo particularmente vulneráveis a se tornarem prematuramente produtos de uma tecnologia obsoleta. Segundo [4], “o único desafio com o qual se deparam os engenheiros de projeto/desenvolvimento atualmente é conceber sistemas cada vez mais complexos em um time-to-market (janela de tempo de desenvolvimento até sua chegada ao mercado) comprimido, para produtos que possuem ciclos de vida cada vez mais curtos”. O cenário mostrava que, embora FPGAs oferecessem grandes vantagens como baixo consumo de energia e bom desempenho, sua programação ainda parecia difícil quando.
(26) Capítulo 1 – Introdução. 6. comparada com a programação dos processadores de DSP. Anteriormente, enquanto para programar-se um processador de DPS bastava escrever um programa em C, para programar-se uma FPGA necessitava-se de um vasto conhecimento da arquitetura de hardware e um conhecimento avançado em uma linguagem de implementação em hardware como, por exemplo, VHDL. Felizmente, a comunidade científica observou esse problema e trabalhou no sentido de alcançar um modo que tornasse mais viável e mais rápido o caminho do desenvolvimento à implementação. Os novos modelos de desenvolvimento em FPGA provêm do uso de fontes de núcleos de propriedade intelectual (NPIs) e de programação feita em linguagens de mais alto nível, como Matlab e Simulink, e são conhecidos como geradores ou sintetizadores. Linguagens de uso geral como C, C++, SYSTEM C, VHDL e VERILOG não oferecem eficiência para criar funções matemáticas complexas de uma maneira eficiente em termos de tempo de desenvolvimento. Atualmente, Matlab sozinho corresponde ao desenvolvimento de 90% das aplicações de DSP [5]. Em [4], é apresentado um exemplo de comparação entre a implementação, desde a especificação do projeto até a etapa de verificação e layout, feita em ASIC pelo modo tradicional de desenvolvimento e utilizando a metodologia de projeto com geradores de VHDL. Observou-se uma redução de três a dez vezes no tempo de projeto com as novas tecnologias, dependendo da complexidade do mesmo. O ponto-chave das novas tecnologias de desenvolvimento é o suporte para rápida exploração de relações de compromisso (trade-offs) de área, velocidade e consumo de energia do algoritmo e da arquitetura já nas etapas iniciais do projeto. O poder dos geradores está no encapsulamento do conhecimento e do know-how do especialista em arquitetura e microarquitetura, pois os parâmetros dos geradores providenciam um mecanismo de especificação de alto nível para características como paralelismo e ocupação. Quando se busca aumentar o desempenho de um sistema através de técnicas de pipelining e ou de paralelismo, há um aumento da ocupação de área de silício do dispositivo. Com o uso de ferramentas de desenvolvimento rápido, essa relação de compromisso pode ser facilmente acompanhada e o projeto facilmente reestruturado de forma a atingir-se a relação de compromisso ideal. Este recurso de exploração de relação de compromisso é essencialmente útil para traçar-se, ainda na etapa de desenvolvimento, a curva de desempenho versus área ocupada, o que pode auxiliar na determinação da família de dispositivos a ser utilizada e na avaliação de fatores que constituem o custo final da solução..
(27) Capítulo 1 – Introdução. 7. Um fato bastante considerável é que até pouco tempo atrás, apenas companhias com experientes engenheiros e grandes orçamentos podiam dispor de implementações em hardware como FPGAs e ASICs. Atualmente, com a nova classe de ferramentas disponíveis, existe a possibilidade que implementações de algoritmos de DSP possam ser amplamente empregadas, introduzindo um novo paradigma no desenvolvimento de DSP que é a síntese de algoritmos. Como já exposto anteriormente, velocidade de desenvolvimento e o time-to-market são vitais no desenvolvimento de um produto. Transcendendo a questão comercial, porém, existe também a questão do crescimento científico e tecnológico da sociedade. Este crescimento pode ser impulsionado pela disponibilidade de ferramentas que possibilitem, em um período relativamente curto de tempo, a obtenção de um protótipo capaz de comprovar conceitos teóricos e de alicerçar o desenvolvimento de tecnologias futuras. Um perfeito exemplo de quão custoso pode ser o desenvolvimento de uma tecnologia sem a possibilidade de uma rápida implementação é a forma como se deu o avanço das técnicas de OFDM, ao qual foi aplicado o codificador LDPC. A origem do desenvolvimento do OFDM deuse no final dos anos 50 com a introdução da multiplexação por divisão de freqüência (FDM) para a comunicação de dados. Em 1966, um engenheiro chinês chamado Chang patenteou a estrutura do OFDM e publicou o conceito do uso de freqüências ortogonais. Em 1971, outro engenheiro, Weinstein, introduziu a idéia de usar transformada discreta de Fourier (DFT) para a implementação da geração e de recepção de sinais OFDM, eliminando os bancos de osciladores analógicos que eram necessários até então. Estes avanços proporcionaram uma implementação menos complexa do OFDM, especialmente com o uso posterior da transformada rápida de Fourier (FFT) ao invés da DFT. Isto conduz a pensar que a forma mais fácil de implementar técnicas de OFDM é através de processadores de DSP que possibilitem a implementação de FFT. Contudo, a viabilidade desse tipo de implementação é bem recente. A dependência da implementação da FFT “amarrou” a difusão do OFDM durante o seu desenvolvimento, e seu emprego de uma forma mais ampla só se deu nos anos 80, quando o uso de processadores de DSP tornou-se mais viável, quase 30 anos depois do início dos trabalhos. Diante do exposto, considerando-se custo e desempenho das atuais FPGAs, combinados com outras de suas vantagens, as FPGAs tornaram-se a melhor alternativa para implementação de.
(28) Capítulo 1 – Introdução. 8. aplicações de DSP de alto desempenho. Por esta razão, as ferramentas de rápido desenvolvimento de soluções baseadas nestes dispositivos constituem o foco central desta dissertação. Desta forma, este texto apresenta ainda nesta introdução uma contextualização temporal e política dos trabalhos desenvolvidos. Posteriormente, é delineada uma introdução às FPGAs, descrição de algumas ferramentas e metodologias de desenvolvimento - especialmente às aplicadas no projeto do sistema de televisão digital em que está inserido este trabalho-, uma breve introdução teórica no que tange às principais tecnologias envolvidas no projeto de televisão digital e uma descrição sobre a codificação de canal utilizada no projeto. Em seguida, os detalhes de implementação são apresentados e também os mais significativos resultados obtidos. Por fim, apresentam-se as considerações finais e as sugestões para trabalhos futuros.. 1.2 Contextualização Política e Temporal da Dissertação No ano de 2005, entre os meses de março e dezembro, o Governo Federal brasileiro financiou pesquisas científicas visando ao desenvolvimento de um sistema brasileiro de televisão digital (SBTVD). Esse projeto, financiado pelo Ministério das Comunicações, deveria empregar as técnicas mais inovadoras de radiodifusão. O SBTVD tinha como objetivos, ao menos teoricamente: promover a inclusão social e a diversidade cultural do país visando à democratização da informação; estimular a pesquisa e o desenvolvimento e propiciar a expansão de tecnologias brasileiras e da indústria nacional relacionadas à tecnologia de informação e comunicação; planejar o processo de transição da televisão analógica para a digital, de modo a garantir a gradual adesão de usuários a custos compatíveis com sua renda; aperfeiçoar o uso do espectro de radiofreqüências; contribuir para a convergência tecnológica e empresarial dos serviços de comunicações e aprimorar a qualidade de áudio, vídeo e serviços, consideradas as atuais condições do parque instalado de receptores no Brasil [6]. Para alcançar os seus objetivos, o SBTVD foi dividido em vinte e dois grupos, denominados consórcios, onde a distribuição dos trabalhos foi realizada através de Requisições Formais de Propostas (RFPs). Estes consórcios foram formados por setenta e nove universidades e instituições brasileiras de pesquisa e contou com a atuação de mais de mil e trezentos.
(29) Capítulo 1 – Introdução. 9. pesquisadores em todo o país. Um dos consórcios responsáveis pelo segmento do projeto denominado Modulação Inovadora (MI-SBTVD), correspondente à RFP18, foi constituído pelo Instituto Nacional de Telecomunicações (INATEL), Universidade Estadual de Campinas (UNICAMP), Universidade Federal de Santa Catarina (UFSC), Centro Federal de Educação Tecnológica do Paraná (CEFET-PR) e pela Linear Equipamentos Eletrônicos S.A. Esta dissertação de mestrado, por sua vez, foi desenvolvida no âmbito deste consórcio. Desta forma, os conhecimentos adquiridos nos trabalhos desenvolvidos durante o SBTVD auxiliaram na elaboração desta dissertação e vice-versa, apesar das propostas serem parcialmente diferentes. Até a data da elaboração desta dissertação, a comunidade científica, bem como toda a sociedade brasileira, não tem uma definição sobre o futuro da televisão digital no Brasil. Neste cenário, faz-se importante destacar que os trabalhos propostos pelo SBTVD foram satisfatoriamente concluídos e apresentados ao Ministério das Comunicações brasileiro..
(30) 10. 10.
(31) 11. Capítulo 2 Tecnologias para Implementação de Sistemas em FPGAs 2.1. Introdução às FPGAS. 2.1.1 Introdução, Conceitos Fundamentais e Origem das Tecnologias Dispositivos FPGAs (Field Programmable Gate Arrays) são circuitos integrados digitais que contêm blocos reconfiguráveis de lógica com interconexões entre eles. Programadores podem configurar estes dispositivos de forma a desempenhar as mais diferentes tarefas. A parte do nome referenciada como “campo programável” refere-se ao fato de que sua programação se dá “em campo”, diferentemente dos dispositivos nos quais as funcionalidades internas são fortemente “amarradas” pelo fabricante. Isto significa que as FPGAs podem ser configuradas tanto nos laboratórios como podem ser modificadas depois de já estarem em seus locais definitivos de operação. Uma questão bastante interessante é saber por que as FPGAs são tão empregadas, sendo que existem muitos tipos de circuitos integrados – alguns deles já comentados no capítulo introdutório deste trabalho – onde as FPGAs poderiam ser apenas mais um deles. Assim, buscarse-á expor as tecnologias de dispositivos lógicos programáveis (PLDs), ASICs, ASSPs (Application Specific Standard Part) e FPGAs. O histórico e os conceitos apresentados neste capítulo são amplamente difundidos e encontram-se pleonasticamente disponíveis em inúmeras. 11.
(32) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 12. bibliografias. Para tanto, este trabalho fundamentalmente baseou-se em [3], considerando o reconhecido know-how e autoridade deste autor sobre o tema. PLDs são dispositivos os quais, apesar da arquitetura interna ser pré-determinada pelo fabricante, são criados de maneira a serem programados por desenvolvedores para desempenharem inúmeras funções. A grande dificuldade em trabalhar-se com estes dispositivos encontra-se no número relativamente baixo de portas lógicas disponíveis quando comparados às FPGAs e na natureza simples e pequena das funções que podem implementar. No outro extremo encontram-se os ASSPs e os ASICs (estes brevemente abordados no capítulo introdutório), que podem conter centenas de milhares de portas lógicas e serem usados para implementar funções bastante grandes e complexas. Tanto os ASICs quanto os ASSPs são desenvolvidos para aplicações específicas, onde a principal diferença é que um ASIC é projetado e construído endereçado a uma única empresa, enquanto um ASSP é destinado a inúmeros clientes. Como já apresentado anteriormente, apesar dos ASICs oferecerem a melhor solução em tamanho, capacidade de processamento e desempenho, eles possuem um alto custo de desenvolvimento, consomem um grande período de desenvolvimento até sua chegada ao mercado (time-to-market), além de não possuírem flexibilidade alguma. Assim, dentre as soluções de implementação em hardware, as FPGAs representam um meio termo entre os PLDs e os ASICs, porque sua funcionalidade pode ser customizada em campo como os PLDs e, ao mesmo tempo, eles podem conter milhões de portas lógicas. Também, o custo de desenvolvimento de soluções em FPGA é muito menor do que em ASICs, além das FPGAs apresentarem um time-to-market muito menor. Quando da aparição das primeiras FPGAs no mercado, em meados dos anos 80, elas eram usadas apenas para implementar as chamadas “lógicas de cola” (lógicas simples usadas para “colar” grandes blocos ou dispositivos lógicos), máquinas de estado de complexidade média e algumas simples tarefas de processamento. No começo dos anos 90, com o aumento da capacidade lógica das FPGAs, seu uso começou a crescer principalmente estimulado pelo mercado das telecomunicações, o qual necessitava de grandes blocos de processamentos de dados. Posteriormente, iniciou-se o uso das FPGAs também na indústria automobilística e em outras aplicações industriais. Freqüentemente, as FPGAs são usadas para implementar protótipos de ASICs e para comprovar a implementação de algoritmos em hardware. Entretanto, devido ao.
(33) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 13. seu baixo custo de desenvolvimento e curto time-to-market, mais e mais FPGAs são usadas para produtos finais, competindo diretamente com os ASICs. No começo dos anos 2000, o desempenho das FPGAs deu um grande salto, disponibilizando milhares de portas lógicas, microprocessadores embarcados, além de pinos de alta velocidade para serem usados como entradas e saídas. O resultado disto foi que hoje FPGAs são usadas para implementar basicamente tudo, incluindo dispositivos de comunicações, funções de DSP, funções de processamento de imagens, entre outros. Resumindo, as FPGAs estão ganhando fatias importantes de mercado que antes pertenciam aos ASICs, DSPs, microcontroladores e circuitos integrados de comunicações de camada física. As FPGAs criaram um novo mercado, conhecido como computação reconfigurável. Sabe-se que a regra básica para distinguir uma FPGA de um ASIC é o termo reconfigurável, presente na composição do nome FPGA. Porém, para que um dispositivo de hardware seja reconfigurável, alguns mecanismos básicos devem estar presentes no mesmo. O primeiro passo dado pelas tecnologias de hardware configurável foi a tecnologia de fusão de conexão (fusible link), uma das primeiras técnicas que permitia ao usuário programar o seu próprio dispositivo de hardware. Nesta técnica, o componente é fabricado com várias conexões nas quais existem fusíveis que podem ser fundidos (rompidos) pelo usuário. Em seu estado inicial, todas as conexões encontram-se intactas e para montar a lógica desejada, ao usuário é permitido fundir o fusível (rompendo a conexão) de forma irreversível. Posteriormente, surgiu a tecnologia de antifusão de conexão (antifuse link). Nesta tecnologia, em seu estado inicial de programação, cada caminho ou trilha possui uma resistência tal que o circuito pode ser considerado um circuito aberto. Assim, estes dispositivos podem ser facilmente programados através da aplicação de pulsos de corrente com tensão relativamente elevada em suas entradas. Então, em termos físicos, a conexão pode ser formada através de saturação do material semicondutor utilizado na sua fabricação. Um período de tempo ligeiramente anterior ao das tecnologias de fusão e antifusão de conexões, os dispositivos programados por máscaras (mask-programmed devices) surgiram, fazendo uso de memórias apenas de leitura (ROM) e de memórias de acesso randômico (RAM)..
(34) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 14. Memórias são componentes fundamentais na constituição de um dispositivo eletrônico e por essa razão é necessário conhecê-las, ao menos, ao nível básico. As memórias ROM são ditas não voláteis, pois os dados, uma vez gravados, permanecem nas mesmas ainda quando a energia do sistema é retirada. Em geral, memórias ROM são de baixa capacidade de armazenamento. Já as memórias do tipo RAM são ditas voláteis por perderem todos os dados uma vez retirada a energia do sistema. Memórias ROM básicas são ditas programadas por máscara, pois todos os dados contidos nelas são gravados durante a construção do dispositivo através de foto-máscaras, as quais são usadas para criar os transistores e as faixas de metal que os conectam ao silício do chip. A geração seguinte às memórias ROM foi a das memórias programáveis somente de leitura (PROM), criadas em 1970 para solucionar o problema de que as memórias programadas por máscara eram feitas a partir de um processo altamente custoso. Além disso, para obter-se as memórias programadas por máscara, muitos componentes eram usados nas etapas de desenvolvimento e precisavam ser alterados freqüentemente, o que não era possível. As memórias PROM foram criadas baseadas na tecnologia de fusão de conexão. Em seu estado não programado, tal qual entregue pelo fabricante, todas as fusões de conexões estão intactas. Assim, engenheiros de desenvolvimento podem selecionar as conexões a serem fundidas (rompidas). Quando rompida a conexão, a célula lógica desta dada conexão aparece com nível lógico ‘1’. Faz-se importante destacar que estes dispositivos eram inicialmente desejados para serem usados como memórias capazes de armazenar programas de computador e valores constantes de dados. Entretanto, engenheiros notaram sua grande utilidade para implementar simples funções lógicas como tabelas de lookup. A grande vantagem da memória PROM para a ROM é que a primeira poderia ser gravada pelo usuário, ainda que uma única vez. O passo seguinte na evolução de dispositivos de memória foi o da criação, em 1971, pela Intel, da memória apenas de leitura programável e apagável (EPROM). As memórias existentes até então (ROM e PROM) só podiam ser programadas uma única vez, pois eram baseadas em fusão ou antifusão de conexões, processos ditos irreversíveis e, por isso, menos eficientes em termos de ocupação de silício. Havia a necessidade de poder-se programar, apagar e reprogramar uma memória não volátil com novos dados. A estrutura básica de uma memória EPROM é a.
(35) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 15. mesma de uma PROM, com a diferença de que ao invés de um diodo, é utilizado um transistor do tipo MOS e no lugar do fusível para a fusão da conexão é utilizado um transistor MOS com gate flutuante. Assim, através de tensões relativamente altas, consegue-se armazenar carga no gate flutuante. Então, se o gate tem carga, na linha de endereço selecionada aparecerá o nível lógico zero, do contrário, se o gate não estiver carregado, aparecerá o nível lógico ‘1’. As memórias do tipo EPROM são regraváveis através de descarga de elétrons no gate flutuante, aplicadas através de uma pequena janela de quartzo. A energia necessária para tal processo é provida por raios ultravioletas. O principal problema do uso deste tipo de memória é o custo da janela de quartzo e o longo tempo (em torno de vinte minutos) necessário para apagar os dados do dispositivo. O degrau subseqüente na evolução das memórias apenas de leitura foi o surgimento da memória apenas de leitura programável e apagável eletricamente (EEPROM). Uma célula de memória EEPROM é aproximadamente duas vezes e meia maior do que sua equivalente na versão EPROM, pois possui dois transistores onde na EPROM era apenas um. Uma alteração na dopagem do silício é o que torna possível que a propriedade de apagar os dados seja feita de forma elétrica. Após (não necessariamente em ordem cronológica, mas em ordem de evolução) as memórias EPROMs, foram apresentadas as memórias flash. O nome flash surgiu justamente da comparação com o longo tempo que as EPROMs despendiam para apagar dados, uma vez que as memórias flash podiam apagar os dados eletricamente, embora não parcialmente. Chegando ao campo das memórias de acesso randômico (RAM) depara-se com dois tipos dessas memórias, uma tecnologia de memória dinâmica de acesso randômico (DRAM) e outra de memória estática de acesso randômico (SRAM). No caso das memórias DRAM, cada célula é formada por um par transistor/capacitor que consome muito pouco silício. O adjetivo “dinâmica” é usado porque o capacitor perde sua carga a cada ciclo de tempo e, então, cada célula deve periodicamente recarregar-se, se a mesma necessitar manter o dado. A esta operação é dado o nome de refresh. Quando o custo das operações de refresh é amortizado pelos milhões de bits em uma memória DRAM, esse modelo se torna muito viável, especialmente por possuir um consumo de energia muito baixo e por ter uma alta densidade de integração. O custo de uma memória DRAM é bem mais baixo que o de uma SRAM. Já as memórias do tipo SRAM guardam os dados enquanto as mesmas forem alimentadas por energia, sem precisar do recurso de refresh. Estas.
(36) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 16. operam em uma freqüência dez vezes superior às memórias DRAM, mas possuem capacidade de integração bastante baixa e consumo de energia e de silício bastante significativos. Muitos dos dispositivos desenvolvidos no passado possuíam um time-to-market relativamente grande em comparação a outros, ou seja, alguns chegaram ao mercado tão logo foram desenvolvidos, enquanto outros levaram grandes períodos de tempo para serem efetivamente absorvidos pelo mercado. A Figura 1 apresenta o time-to-market de diversas tecnologias. Como pode ser observado na mesma figura, por exemplo, as FPGAs, desenvolvidas em meados dos anos 80, só foram incorporadas ao mercado em meados nos anos 90. Assim, ao longo deste capítulo, apresentar-se-ão alguns dados referentes ao surgimento das tecnologias presentes nas FPGAs ou que, de alguma forma, contribuíram para o surgimento das mesmas. Em dezembro de 1947, nos laboratórios Bell nos Estados Unidos, surgia o primeiro transistor, desenvolvido por William Shockley e Walter Brattain, obtido a partir de germânio. Já nos anos 50, viu-se o emprego de transistores bipolares (BJT), os quais eram mais baratos e fáceis de serem fabricados. No final dos anos 50, os transistores começaram finalmente a ser fabricados com silício, elemento bem mais barato. Com os transistores BJT, surgiram as portas lógicas implementadas nos famosos TTL (lógica transistor-transistor), que eram relativamente rápidos e possuíam um consumo de energia consideravelmente elevado. Surgiram também as portas lógicas implantadas nos ECL (lógica par emissor), que eram mais rápidas que os TTLs e consumiam ainda mais energia. Em 1962, surgiram os transistores MOSFET, desenvolvidos nos laboratórios RCA por Steven Hofstein e Frederic Heiman. A grande vantagem destes transistores era o preço baixo, dimensões físicas menores e um consumo de energia significativamente menor. Os transistores MOSFET deram origem aos transistores CMOS, ainda menores e de consumo de energia bastante pequeno, comparado ao seu principal concorrente, a família dos transistores TTL. As discussões acerca da implementação de circuitos inteiros em pequenas peças de semicondutores foram apresentadas em 1952 por um britânico especialista em radar, chamado Dummer. No entanto, o primeiro circuito integrado foi apresentado em 1958 por Jack Kilby que desenvolveu nos laboratórios da Texas Instruments um CI oscilador de fase que continha cinco.
(37) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 17. componentes. Em meados dos anos 60, a Texas Instruments difundiu de uma forma bastante significativa diferentes famílias de CIs implementadas em famílias TTL. Apenas em 1968, a RCA desenvolveu CIs equivalentes utilizando tecnologias CMOS.. - Fabricação - Real entrada no mercado 1945 1950 1955 1960 1965 1970 1975 1980 1985 1990 1995 2000. Transistor CI (Geral) SRAM e DRAM Microprocessadores SPLDs CPLDs ASICs FPGAs. Figura 1 – Diagrama temporal das tecnologias relacionadas com FPGAs.. No final dos anos 60 e início dos anos 70, dava-se um desenfreado desenvolvimento no âmbito dos CIs. Em 1970, a Intel apresentou a primeira memória DRAM de 1.024 bits e no ano seguinte, o primeiro microprocessador, com aproximadamente 2.300 transistores e a capacidade de executar até 60.000 operações por segundos. A razão para esta seção abordar as tecnologias de memórias SRAM e microprocessadores está no fato de que, além da importância desta análise da evolução dos dispositivos, as atuais FPGAs são baseadas em memórias SRAM e podem possuir núcleos de microprocessadores embarcados no dispositivo. Os primeiros CIs programáveis disponíveis no mercado foram os PLDs, que sugiram por volta dos anos 70 e, pode-se afirmar, eram simples memórias PROMs [3]. Apenas no final dos anos 70 surgiram versões mais complexas de PLDs. Assim, as versões mais rudimentares de PLD foram denominadas de SPLDs e as posteriores e mais desenvolvidas denominadas PLDs.
(38) Capítulo 2 – Tecnologias para Implementação de Sistemas em FPGAs. 18. complexos ou CPLDs. Além disso, a categoria dos dispositivos lógicos programáveis menos complexos (SPLDs) é dividida entre PROM (sua primeira versão), PLA, PAL e GAL e outras. Entre os circuitos integrados de aplicação específica, ASICs, tais quais conhecidos atualmente, existem quatro tipos que, por ordem de complexidade, são: arranjo de portas lógicas (Gate Arrays), ASIC estruturados, célula padrão e ASIC completamente customizado. Assim, os tipos de dispositivos ASICs serão brevemente abordados nos parágrafos seguintes. O ASIC completamente customizado surgiu quando só existiam dois tipos de circuitos integrados (sem considerar os circuitos de memória). Um era a categoria mais simples, vendido como padrão para qualquer usuário e o outro era a categoria desenvolvida para uma única aplicação específica, o ASIC completamente customizado. Neste tipo de ASIC, os engenheiros de desenvolvimento possuem um total controle sobre cada camada da máscara usada para fabricar o chip de silício. O fabricante não pré-desenvolve qualquer componente no silício e não provê qualquer biblioteca de lógica pré-definida. Através de ferramentas próprias, é possível controlar as dimensões de cada transistor e assim criar funções de alto nível baseadas nestes componentes. O desenvolvimento de um ASIC completamente customizado é extremamente complexo, além de exigir um período de tempo bastante longo. Entretanto, o resultado final é um chip com máxima otimização, com uma grande quantidade de lógica em uma área otimizada de silício. A concepção de arranjo de portas lógicas (Gate Arrays) surgiu em companhias como IBM por volta dos anos 60, mas apenas para uso interno. Para o mercado, seu “surgimento” foi bem posterior. O conceito de arranjo de portas lógicas é baseado na idéia de uma célula básica constituída a partir de uma coleção de transistores e resistores desconectados. Cada fabricante de ASIC determina qual é a combinação ideal de componentes para formar uma célula básica. Os fabricantes começam pré-fabricando chips de silício contendo arranjos destas células básicas. Em geral estas células básicas são representadas por arranjos de colunas, simples ou duplas, e uma área livre entre elas chamada de canal. A Figura 2 apresenta a arquitetura de arranjo de portas lógicas com canais e arranjos de células básicas em colunas duplas. No caso de dispositivos livres de canais, as células básicas são representadas como um grande e único arranjo. A superfície do dispositivo é coberta em um “mar” de células básicas e não existem canais dedicados para.
Documentos relacionados
A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas
Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição
Discussion The present results show that, like other conditions that change brain excitability, early environmental heat exposure also enhanced CSD propagation in adult rats.. The
Os Coordenadores Setoriais, enquanto professores, procuram dar o exemplo, mas deixam claro que encontram, no seu percurso como extensionistas, esse elemento dificultador; O
- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar
Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças
Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades
c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no