FPGA Artigo

21
1 Graduando do curso de Engenharia de Controle e Automação da Faculdade de Extrema (FAEX) 2 Mestre Professor do curso de Engenharia de Controle e Automação da Faculdade de Extrema (FAEX) Tecnologia de Lógica Programável Especificada como Hardware Reconfigurável, FPGA (Field Programmable Gate Array) ou Dispositivo Lógico Programável em Campo TIBÉRIO TAVARES REZENDE¹ , MARCOS CARNEVALI² 1. O Início da Tecnologia do FPGA O FPGA (Field Programmable Gate Array) ou arranjo de portas programável em campo, é um componente projetado em forma de chip que suporta a combinação de milhares de circuitos lógicos interligados para executar funções específicas. Foi desenvolvido em 1984 para ser usado como um dispositivo que poderia ser programado de acordo com as aplicações do programador, pela indústria americana Xilinx Inc, que é hoje uma das maiores fornecedoras de dispositivos lógicos programáveis do mundo, fundada nos Estados Unidos. Antes do desenvolvimento da lógica programável, circuitos lógicos eram construídos em placas de circuitos impressos utilizando componentes padrões e de poucas funcionalidades. Com a evolução do PLD com o tipo de memória PROM, a fabricação do FPGA surgiu através da lógica programável em um circuito integrado que contem um número na ordem de milhares de unidades lógicas idênticas. No entanto, a lógica programável do FPGA foi uma combinação difícil entre diversos conceitos de tecnologias para matrizes programáveis e portas lógicas que estavam sendo desenvolvidas na época. Essas tecnologias vieram se modificando e se ampliando de diferentes formas, como na década de 1980, quando

Transcript of FPGA Artigo

Page 1: FPGA Artigo

1 Graduando do curso de Engenharia de Controle e Automação da Faculdade de Extrema (FAEX)

2 Mestre Professor do curso de Engenharia de Controle e Automação da Faculdade de Extrema (FAEX)

Tecnologia de Lógica Programável Especificada como Hardware

Reconfigurável, FPGA (Field Programmable Gate Array) ou

Dispositivo Lógico Programável em Campo

TIBÉRIO TAVARES REZENDE¹ , MARCOS CARNEVALI²

1. O Início da Tecnologia do FPGA

O FPGA (Field Programmable Gate Array) ou arranjo de portas programável em campo,

é um componente projetado em forma de chip que suporta a combinação de milhares de circuitos

lógicos interligados para executar funções específicas. Foi desenvolvido em 1984 para ser usado

como um dispositivo que poderia ser programado de acordo com as aplicações do programador,

pela indústria americana Xilinx Inc, que é hoje uma das maiores fornecedoras de dispositivos

lógicos programáveis do mundo, fundada nos Estados Unidos. Antes do desenvolvimento da

lógica programável, circuitos lógicos eram construídos em placas de circuitos impressos

utilizando componentes padrões e de poucas funcionalidades. Com a evolução do PLD com o

tipo de memória PROM, a fabricação do FPGA surgiu através da lógica programável em um

circuito integrado que contem um número na ordem de milhares de unidades lógicas idênticas.

No entanto, a lógica programável do FPGA foi uma combinação difícil entre diversos conceitos

de tecnologias para matrizes programáveis e portas lógicas que estavam sendo desenvolvidas na

época. Essas tecnologias vieram se modificando e se ampliando de diferentes formas, como na

década de 1980, quando

Page 2: FPGA Artigo

pesquisadores do departamento naval americano, chamado de SurfaceWarfare, financiaram um

experimento proposto por Steve Casselman. Casselman foi um dos engenheiros que ajudaram a

desenvolver a tecnologia utilizada nos primórdios do FPGA. A ideia inicialmente era desenvolver

um computador super avançado para a época, que poderia implementar 600.000 portas

reprogramáveis. Steve Casselman e seus companheiros, Ross Freeman e Bernard Vonderschmitt

(fundadores da indústria Xilinx, Inc.) foram bem sucedidos e conseguiram gerar uma patente do

sistema que seria a primeira matriz comercialmente viável da tecnologia programável em campo,

o FPG (Field Programmable Gate), tendo por codinome "XC2064". Esta tecnologia apresentava

interconexões e portas programáveis que poderiam ser modificadas após a fabricação.

Foi o início de uma nova tecnologia para um mercado ainda não explorado. O FPG

XC2064 apresentava uma configuração de 64 CLBs, (Configurable Logic Block) ou blocos

lógicos configuráveis, tendo duas tabelas de referência de três entradas LUTs (Look Up Table,

esse tipo de bloco lógico contém células de armazenamento que são utilizadas para implementar

pequenas funções lógicas). A indústria Xilinx continuou investindo neste tipo de tecnologia que

se desenvolvia rapidamente e com isso a década de 1990 foi o auge para os dispositivos lógicos

programáveis, tanto em termos de sofisticação como em volume de produção, onde foram

adaptados para serem utilizados principalmente em áreas como a da eletrônica, telecomunicações

e informática.

2. Fabricantes e Especialistas em FPGA

Xilinx

A maior indústria fornecedora de dispositivos lógicos programáveis do mundo, sendo

considerada a primeira a consolidar a tecnologia do FPGA e a primeira empresa de

semicondutores a se especializar na fabricação de hardware. Fundada no Vale do Silício, em San

Jose, Califórnia, Estados Unidos, em 1984, com sedes por todo o mundo. Apontada como a

empresa veterana no desenvolvimento do EDA (Electronic Devices Automation), dispositivos

eletrônicos de automação e os ASICs (Application Specific Integrated Circuits) ou aplicação

específica de circuitos integrados. Vem sempre promovendo a divulgação e o fornecimento do

FPGA via software e através de kits para endereçamento em aplicações como escolas técnicas e

universidades.

Page 3: FPGA Artigo

Altera Corporation

É uma empresa americana também do Vale do Silício, fabricante de PLDs reconfiguráveis

e circuitos digitais em geral. A empresa lançou seu primeiro PLD em 1984 e seus principais

produtos são: o Stratix e Arriae Cyclone, séries de FPGAs; o MAX, série de CPLDs (dispositivos

lógicos programáveis complexos); o HardCopy, série dos ASICs; e o software Quartus II, uma

ferramenta para a produção de linguagens de descrição de hardwares AHDL. Com uma

tecnologia criativa e diferenciada pela facilidade de manuseio produzida pela Altera, atualmente,

42% dos projetos que necessitam de dispositivos lógicos reconfiguráveis são construídos com os

seus componentes.

Lattice Semiconductor Corporation

É uma fabricante de dispositivos lógicos programáveis de alto desempenho, como

FPGAs, CPLDs e SPLDs. Foi fundada em 1983, nos Estados Unidos, em Oregon, e seus

principais dispositivos são a série de FPGAs, ECP e XP – para esta categoria de FPGAs de “90

nm”, a empresa possui uma grande variedade de dispositivos –; a série de CPLDs Mach; a série

ispPAC POWR, de produtos de gerenciamento de energia programáveis (Programmable Mixed

Signal FPAA) e o software de desenho de estrutura, o Diamond.

Actel Corporation

Agora chamada de Microsemi Corporation, está sediada em Aliso Viejo, Califórnia,

EUA. É uma grande empresa fabricante de FPGAs, dispositivos analógicos, circuitos integrados

de sinais mistos e circuitos integrados de “RF”. Tendo produzido FPGSs baseados em dois tipos

de tecnologias, a antifuse desenvolvendo as famílias Axcelerator, SX-A, eX e MX e através da

base flash desenvolvendo as famílias Fusion, IGLU e a ProASIC3.

Achronix Semiconductor Corporation

É uma empresa americana do Vale do Silício, que produz os FPGAs mais rápidos

fabricados atualmente, com sistemas que atingem até 2 GHz de desempenho de processamento. A

Achronix vem desenvolvendo os dispositivos HD 22i Speedster oferecendo até 1,7 milhões de

LUT’s efetivos e 138 Megabits de memória RAM incorporada. Todas as gerações de Speedster

Page 4: FPGA Artigo

são direcionadas a aplicações de alta largura de banda e incluem alta densidade efetiva, com

baixo consumo de energia e pouca complexidade para o desenvolvimento de projetos.

Atmel Corporation

A Atmel é uma manufaturadora de semicondutores, fundada em 1984, também no Vale do

Silício. Sua produção inclui as memórias EEPROM e Flash, microcontroladores, FPGAs e outros

componentes eletrônicos. Os FPGAs desenvolvidos pela Atmel são destacados em diferentes

tipos de tecnologia, como o AVR, que pode ser de 8 ou 32 bits; os processadores ARM (flexíveis

e altamente integradas as soluções baseadas em ARM são projetadas para otimizar o controle do

sistema, a conectividade através dos componentes com fios e sem fios, o gerenciamento da

interface do usuário, o baixo consumo de energia e a facilidade de uso); e o microcontrolador

com arquitetura “8051”, que pode ser de dois tipos, os de 8 bits, baseados no potente núcleo de

baixo consumo de energia AT89LP, e os dispositivos tipo drop in com soquete MCS-51 de

padrão industrial, todos apresentando tecnologias Flash.

QuickLogic

QuickLogic Corporation desenvolve e comercializa soluções de semicondutores

personalizáveis de baixa potência para as áreas de informática e telecomunicações em geral.

Também fabrica dispositivos programados em campo baseados na tecnologia antifuse.

FPGAWorld

É uma conferência mundial sobre FPGA. Este ano foi realizada nos dias 10 de setembro,

na Suécia, em Estocolmo, e dia 12 de setembro na Dinamarca, em Copenhague. A conferência

FPGAWorld reúne pesquisadores, professores, estudantes e engenheiros especialistas, e aborda

todos os aspectos da tecnologia digital, envolvendo hardware e software para sistemas de

engenharia e trabalhando em projetos de desenvolvimento e pesquisa focados na tecnologia do

Field Programmable Gate Array.

Portal FPGA Para Todos

Tem como objetivo desenvolver uma plataforma de soluções para o ensino da lógica

programável, estabelecendo uma base para a implantação de uma rede de laboratórios de

Page 5: FPGA Artigo

pesquisa e desenvolvimento com foco em técnicas modernas de sistemas embarcados, de

dispositivos lógicos reconfiguráveis e de microeletrônica, como FPGAs e CLPDs. Pode ser

acessado através do site fpgaparatodos.com.br.

3. Desenvolvimento do FPGA

O dispositivo consiste de um grande arranjo de células lógicas ou blocos lógicos

configuráveis contidos em um único circuito integrado. Cada célula apresenta capacidade

computacional para programar funções lógicas e realizar roteamento para comunicação entre

elas. Estes tipos de tecnologias semicondutoras possuem planos de portas OU (OR) ou E (AND) e

consistem de um grande arranjo de células configuráveis que podem ser utilizadas para a

implementação de funções lógicas. As células são constituídas por milhares de transistores e

fazem basicamente o que vários circuitos integrados fazem, com a diferença de que a matriz pode

ser reprogramada. O chip FPGA é composto por três partes que são denominadas: IOB (Input

Output Block’s) ou blocos de entrada e saída; CLBs (Configurable Logic Block’s) ou blocos

lógicos configuráveis e SM’s (Switch Matrix’s) ou chaves de interconexão. Os CLBs são

compostos por circuitos idênticos construídos da união de flip-flops com lógica combinacional. Já

os blocos de entrada e saída são responsáveis pela interface (interconexão das entradas e das

saídas que possuem diferentes funções). Esses blocos de entrada e saída podem ser considerados

buffer’s, funcionando como um pino bidirecional do chip. Já as chaves de interconexão são

trilhas utilizadas para a ligação dos blocos de entrada e saída e dos blocos lógicos configuráveis

para as redes apropriadas. Essa configuração é estabelecida pela programação interna das células

de memória estáticas, células essas que determinam as funções lógicas e as conexões no chip

entre os CLBs e os IOBs. Tal processo é chamado de roteamento unsegmented (sem segmento),

porque cada segmento de fiação abrange apenas um bloco lógico antes de terminar em uma caixa

comutadora. Ao ligar algumas das opções programáveis dentro de uma caixa de comutação, os

caminhos mais longos podem ser construídos. Como um FPGA é basicamente constituído por

blocos lógicos de entrada e saída e chaves de interconexão, os blocos lógicos formam uma matriz

bidimensional e as chaves de interconexão são organizadas como canais de roteamento horizontal

e vertical entre as linhas e colunas dos blocos lógicos. Para maior velocidade de interconexão,

algumas arquiteturas usam mais de um canal entra as linhas para poder abranger vários blocos

Page 6: FPGA Artigo

lógicos de maneira mais conveniente em função da necessidade apresentada por cada projeto.

Figura 1. Metodologia de Projeto do FPGA.

3.1 Tecnologias e Arquiteturas

As arquiteturas de FPGAs mais comuns são de dois tipos e dependem de cada modo de

fabricação. Pode ser do tipo de blocos lógicos, CLB (Configurable Logic Block), chamado de

bloco lógico configurável, ou LAB (Logic Array Block), chamado lógica de matriz de bloco.

Geralmente, todos os canais de encaminhamento têm a mesma largura, que é especificada por

quantidade de número de fios. Vários blocos de entrada e saída podem encaixar-se na altura de

uma linha ou na largura de uma coluna na matriz. Os blocos lógicos são dispostos de forma

bidimensional e as chaves de interconexão são dispostas em formas de trilhas verticais e

horizontais entre as linhas e as colunas dos blocos lógicos. Um circuito de aplicação deve ser

mapeado em um FPGA com recursos adequados. A ideia de utilizar blocos lógicos de construção

de circuitos é chamada de projeto hierárquico, que são circuitos lógicos mais simples e úteis que

Page 7: FPGA Artigo

podem ser definidos da maneira que for mais conveniente através de gráficos, linguagens de

descrição de hardware e diagramas de tempo. Esses blocos são combinados com outros para

formar uma grande seção para projetos mais complexos. Para saber o número de CLBs, ou LABs

e entradas e saídas que deverão ser utilizados, é preciso determinar a partir do início do projeto o

número de faixas necessárias de encaminhamento que podem variar consideravelmente, mesmo

entre os projetos com a mesma quantidade lógica. Por exemplo, um comutador de barra exige

muito mais do que uma matriz de encaminhamento sistólica com a mesma contagem de portas.

Em geral, um bloco lógico CLB ou LAB consiste de umas poucas células lógicas que

podem ser ALM, LE, e Slice. Uma célula típica consiste em uma LUT com 4 entradas, um

somador completo e um flip-flop do tipo D. No modo normal, os LUTs e o multiplexador são

combinados. Já no modo de aritmética, suas saídas são alimentadas para o somador completo. A

seleção de modo pode ser programada e a saída do FPGA pode ser síncrona ou assíncrona,

dependendo da sua configuração.

Figura 2. Estrutura simples de um FPGA.

Cada célula presente na estrutura do chip é capaz de armazenar um valor lógico, podendo

Page 8: FPGA Artigo

ser 0 ou 1. Esse valor armazenado é produzido na saída dos blocos lógicos LUTs que podem ser

criados onde o seu tamanho é definido pelo número de entradas das células. Nos FPGAs

disponíveis comercialmente, como o da empresa Altera, os blocos lógicos LUTs possuem

geralmente quatro ou cinco entradas, o que permite endereçar 16 ou até 32 células de

armazenamento. Quando um circuito lógico é implementado em um FPGA, os blocos lógicos são

programados para realizar as funções necessárias e os canais de roteamento são estruturados de

uma forma para realizar a interconexão necessária entre os blocos lógicos.

A arquitetura de roteamento é a forma pela qual os seus barramentos e as suas chaves de

comutação são posicionados para permitir a interconexão entre as células lógicas, que devem

permitir um sentido de rotas completo e uma alta densidade. Para uma melhor compreensão dessa

arquitetura é necessária a definição de alguns conceitos como os pinos, conexões, rede,

segmentos de trilha, blocos de comutação e comunicação e os canais de roteamento. Os canais

programáveis de roteamento apresentam algumas propriedades, tais como tamanho, resistência,

capacitância e tecnologia de fabricação, as quais afetam principalmente a velocidade e o tempo

de propagação dos sinais e definem características como volatilidade e capacidade de

reprogramação. Na escolha de um dispositivo reconfigurável, esses fatores devem ser avaliados.

4. A Programação do FPGA

Esse é um dos processos mais importantes ao se trabalhar com um dispositivo lógico

programável, pois é durante a programação que será definida a função das operações lógicas.

Programar significa estabelecer as reais conexões na matriz, determinar quais dessas conexões

estarão abertas e quais estarão fechadas. A programação consiste em carregar o chip de FPGA

com os dados de programação em linguagem binária. A maneira mais usada de se carregar esses

bits de configuração é serialmente. Com esse modo serial temos um bit de cada vez sendo

armazenado. Para que cada bloco lógico e suas interconexões sejam configurados, são

necessárias algumas centenas de bits, tendo cada bit uma configuração que define o estado de

uma célula de memória estática, que controla uma função LUT (Look Up Table) e seleciona uma

entrada de um multiplexador ou define o estado de um transistor em uma interconexão.

Após ser configurado, o chip está pronto para ser testado. Uma característica interessante

em alguns tipos de dispositivos lógicos programáveis é que eles permitem uma reconfiguração no

Page 9: FPGA Artigo

próprio sistema onde se encontram. Este tipo de característica faz com que o processo de teste e

as possíveis reconfigurações sejam mais rápidos, tornando o processo mais seguro e fácil de ser

manuseado. Para definir o comportamento do dispositivo, o usuário fornece uma linguagem de

descrição de hardware, HDL (Hardware Description Language), ou um desenho esquemático. O

formulário de HDL é mais adequado e ágil para se trabalhar com grandes estruturas, pois é

possível especificar cada etapa por numeração ao invés de comprovar todo o projeto

manualmente. No entanto, o desenho esquemático pode facilitar a visualização de um projeto

mais simples, mostrando cada etapa de uma forma mais ampla. Depois de especificar qual será o

comportamento do dispositivo FPGA, através da programação, um netlist (tecnologia mapeada) é

gerado. O netlist pode ser equipado com a arquitetura real do dispositivo usando um processo

chamado place and route, geralmente realizado por softwares fornecidos pela própria empresa

que desenvolveu o chip para o arranjo lógico (exemplo, Altera ou Xilinx). Com o software

fornecido pelo fabricante, o usuário ou programador poderá validar o mapa, o “lugar” e a rota que

será traçada por meio de análise de tempo, simulação e outras metodologias de verificação. Uma

vez que o processo do projeto e validação estiver concluído, o arquivo binário é gerado e poderá

ser usado para quando for necessária a reconfiguração. Este arquivo binário é transferido para o

chip de arranjos lógicos através de uma ferramenta chamada de interface, como a série JTAG ou

para um dispositivo de memória externa, como uma memória EEPROM.

As linguagens de descrição de hardware mais comuns são as AHDL, VHDL e Verilog,

embora alguns fabricantes e engenheiros especialistas na tecnologia dos dispositivos lógicos

programáveis estejam pesquisando meios de reduzir a complexidade de concepção nas

linguagens de descrição de hardware. Através de pesquisas e testes, algumas linguagens novas

foram adaptadas para se tornarem equivalentes das linguagens de montagem ou descrição de

hardware conhecidas. Com isso surgiram projetos para aumentar o nível de abstração de

linguagens criadas a partir de códigos mais simples. A linguagem de programação gráfica

LabVIEW, da National Instrument (também chamada de linguagem “G”), apresenta um módulo

add in disponível para o destino da programação no hardware dos chips de FPGAs. Para

simplificar o desenho de sistemas de programação complexos, foram criadas bibliotecas de

funções predefinidas, testadas e otimizadas para acelerar o processo de criação dos projetos com

arranjos lógicos. Circuitos criados com ferramentas que já possuem as funções pré-definidas são

chamados de núcleos IP e estão disponíveis pelos próprios fabricantes ou a partir de comunidades

Page 10: FPGA Artigo

de desenvolvedores, como os Open Cores, em que os códigos são liberados sob licenças livres

para serem repassados como códigos abertos.

4.1 Diferenças entre Linguagem de Programação e Linguagem de Descrição de Hardware

As diferenças entre as linguagens de descrição de hardware e as linguagens de

programação comum é que uma linguagem simples de programação é criada para ser utilizada

como controle de softwares, por outro lado as HDLs foram desenvolvidas para o controle de

hardwares. O desenvolvimento de uma linguagem comum se faz através de compilações, ligações

e interpretações e na HDL por uma compilação para a simulação e síntese do hardware. Em um

fluxo de projeto típico de síntese de descrição de hardware, um desenvolvedor de aplicativos de

dispositivos lógicos, irá simular o projeto em vários estágios durante o processo. Inicialmente

com a descrição RTL em, por exemplo, VHDL ou Verilog que serão simulados através da criação

de bancos de testes do sistema para observar os resultados. Os testes são divididos em subseções,

para depois serem combinados, desta forma o projeto pode ser feito em equipe onde várias

pessoas trabalham em conjunto, todos responsáveis por seus próprios circuitos e seções que

acabam compondo o sistema. Depois que os circuitos foram agrupados, e a função completa de

síntese foi mapeada para um netlist, os códigos são traduzidos para uma descrição no nível das

portas onde a simulação é repetida para confirmar se a síntese passou pela transferência sem

erros.

4.2 Linguagens de Descrição de Hardwares

A linguagem de descrição de hardware ou linguagem de computador especializada é

utilizada para descrever a estrutura, o projeto e a operação de circuitos lógicos digitais, através de

uma descrição textual que consiste em desenvolver expressões, declarações e estruturas de

controle. Este tipo de linguagem é muito semelhante ao tipo de programação projetada por

"sistema C" e permite uma precisa descrição, uma análise automatizada e uma simulação para

testes de um circuito eletrônico em uma especificação física de componentes, tais como o

conjunto de máscaras utilizadas para criar um circuito integrado de nível inferior e também para

circuitos complexos utilizando microcontroladores. Em HDL cada subsistema deve ser

Page 11: FPGA Artigo

construído a partir de seu nível mais simples para depois ser encaixado com outras partes ou

blocos até serem formadas camadas completas do que será o projeto final. Significa basicamente,

escrever trechos de códigos para poder desenvolver um plano de teste, como simulação, e

garantir que ele funcione corretamente. Toda vez que um circuito for simulado deverá estar

dentro de um cenário que iguale totalmente o projeto ao sistema em que será exposto em campo

no modo real, sabendo qual será a resposta dada a cada parte que for solicitada. Uma linguagem

de descrição de hardware descreve o que um sistema deve fazer e como. Este sistema descrito em

linguagem de hardware pode ser implementado em um dispositivo programável FPGA (Field

Programmable Gate Array) ou um dispositivo ASIC (Aplication Specific Integrated Circuit),

permitindo ser utilizado em campo. Existem dezenas de linguagens HDLs, como, a VHDL, a

AHDL, o VERILOG, o Handel-C, a SDL, a ISP entre outras.

AHDL (Altera Hardware Description Language) Linguagem de Descrição de Hardware

Altera.

O AHDL é uma linguagem de descrição desenvolvida pela empresa Altera Corporation

para configurar, de modo mais conveniente, os seus próprios dispositivos lógicos. Diferente do

VHDL, essa linguagem quando foi criada não foi desenvolvida para ser utilizada de modo

universal e descrever qualquer circuito lógico disponível. Foi aperfeiçoada para a programação de

sistemas digitais complexos em FPGAs da Altera tornando os métodos de síntese mais simples,

sendo descrita de um modo muito semelhante com a linguagem VHDL.

VHDL ou VHSIC HDL (Very High SpeedIntegratedCircuits Hardware DescriptionLanguage)

Linguagem de Descrição de Hardware com ênfase em Circuitos Integrados de Altíssima

Velocidade.

É uma linguagem usada para facilitar o projeto e a concepção de circuitos digitais

em FPGAs e ASICs. A linguagem VHDL foi originalmente desenvolvida sob o comando

do Departamento de Defesa dos Estados Unidos (DARPA), em meados da década de 1980, para

documentar o comportamento de ASICs que compunham os equipamentos vendidos às forças

armadas americanas. Isto quer dizer que a linguagem VHDL foi desenvolvida para substituir os

complexos manuais que descreviam o funcionamento dos ASICs. Até aquele momento, a única

metodologia largamente utilizada no projeto de circuitos era a criação através de diagramas

Page 12: FPGA Artigo

esquemáticos. O problema com a metodologia de diagramas era o fato de serem feitos através de

desenhos gráficos, o que os tornavam muito mais complexos para compreensão e extremamente

dependentes das ferramentas utilizadas para produzi-los. Como o VHDL foi criado e

aperfeiçoado para ser uma linguagem de descrição de hardware mais rápida, os projetos puderam

ser desenvolver amplamente através da forma estruturada de descrição de circuitos digitais. Por

isso é muito utilizado quando se pretende simular um sistema digital a um nível elevado de

abstração de hardware. Os projetos com sistemas em VHDL são geralmente bem mais complexos

se comparados a linguagens de programação básicas, pois não possuem executáveis e só é

possível testar seus códigos programados através de simulações.

O VHDL é uma linguagem "concorrente", ou seja, os comandos envolvidos em um

mesmo evento acontecem simultaneamente. A etapa inicial do projeto é seguida de uma

simulação funcional para a execução do projeto confirmando as saídas e as entradas de dados. A

compilação se inicia quando já existe uma representação funcional correta do hardware. A

representação funcional é chamada de synthesys ou síntese, é onde o compilador tem uma ideia

de como implementar o projeto e falta apenas posicionar e rotear as estruturas lógicas em

macrocélulas, interconexões e pinos de entrada e saída. Feita a compilação, um bitstream ou

fluxo de bits (o termo fluxo de bits é frequentemente utilizado para descrever os dados de

configuração a serem carregados em um arranjo de portas programável em campo) é criado. Os

dados binários deverão ser carregados no FPGA ou CLPD para fazer com que o chip execute um

projeto em particular.

As características da linguagem VHDL são destacadas por se tratar de um modo de

programação que é análogo a uma linguagem comum e concorrente ao HDL. Esse tipo de

linguagem permite que todos os comandos ocorram simultaneamente (com exceção dos

processos) e através de simulação, verificar o comportamento do sistema digital. Utilizada para

transferência entre registradores RTL e para prover mecanismos de modelagem e sincronização

que ocorrem a nível físico.

Page 13: FPGA Artigo

Figura 3. Síntese de Descrição em VHDL.

VERILOG

É uma linguagem de descrição de hardware usada para modelar sistemas eletrônicos. Esta

ferramenta suporta o desenvolvimento, verificação e implementação de projetos analógicos,

digitais e circuito híbridos em vários níveis de abstração. Com placas especiais é possível

descarregar o código gerado nessa linguagem em chips de FPGAs. Os autores do VERILOG

definiram sua sintaxe com estruturas de controle de fluxo simples, como if e while e são

projetados em blocos com begin e and, se caracterizando em uma linguagem modular.

A linguagem VERILOG, também chamada de VERILOG HDL, se diferencia das outras

pela maneira de como é executada, pois não segue os padrões lineares que as demais linguagens

utilizam. Um projeto em VERILOG consiste em processos sequenciais e paralelos que definem o

comportamento dos módulos e são executados dentro de blocos begin e end.

Page 14: FPGA Artigo

4.3 Ferramentas para o Desenvolvimento da Programação

Fazer a configuração de um FPGA manualmente seria uma tarefa simplesmente

impensável devido à complexidade do circuito. Por isso toda a parte de projeto, processamento,

simulação e programação, são normalmente feitas através de programas específicos ou

ferramentas de programação. Cada fabricante disponibiliza ferramentas que suportam seus

próprios tipos de FPGAs ou fazem parcerias com empresas que possam dar assistência para tais

softwares. A ferramenta que a Altera utiliza para fazer a programação de seus dispositivos se

chama Quartus II, e a Xilinx disponibiliza o programa denominado Foundation. Esses softwares

de programação são capazes de receber as descrições do circuito, em linguagem VHDL gerados

de outros fabricantes ou criar novos arquivos que serão utilizados na configuração do dispositivo

a ser programado. Para se programar o chip é necessário então transformar a informação desses

arquivos de configuração para uma linguagem binária e carregar esses bits para as memórias

estáticas do componente. A maioria das ferramentas de programação modernas tem a

característica de serem conectadas a um computador, que executa bibliotecas de informações

sobre os diversos tipos de dispositivos programáveis disponíveis. A ferramenta de programação é

ativada, por meio de um comando, e executado no computador para estabelecer uma

comunicação com o projetista. Esse software permite ao usuário configurar a programação com

os dados referentes ao tipo de dispositivo de FPGA.

4.4 Programação através do sistema ISP

Programação em sistema ISP (In System Programmability), consiste basicamente em uma

tecnologia que permite a configuração, reconfiguração e testes do FPGA sem ter que retirá-lo do

circuito onde foi acoplado. Utilizando a porta serial ou paralela de um computador para se

conectar, é possível utilizando programas específicos, programar o componente, verificar, testá-lo

com determinadas entradas e comparar suas saídas com as saídas esperadas. Com a possibilidade

de reconfiguração o FPGA pode ser permanentemente soldado a placa de montagem. Essa

facilidade de reconfiguração permite ao projetista fazer alterações mais rápidas no dispositivo, o

que reduz o tempo de programação, e diminui a probabilidade de acontecer algum dano devido

Page 15: FPGA Artigo

ao excesso de manuseio. Outra vantagem é que o layout da placa pode ser feito durante a própria

fase de projeto da lógica diminuindo ainda mais o tempo de projeto. Existem vários tipos de

softwares e hardwares que podem ser utilizados para se implementar a programação em sistema

ISP.

5. Tipos de Dispositivos FPGAs e Suas Características

Atualmente no mercado podemos encontrar vários tipos de FPGAs produzidos de

diferentes modos dependendo de seus fabricantes. Cada tipo de dispositivo terá melhor

desempenho dependendo da aplicação para a qual será utilizado. Os tipos podem ser os de

Memória RAM Estática, os feitos através de Transistores de Passagem, os baseados nas

memórias, EPROM (Erasable Programmable Read Only Memory) e EEPROM (Electrical

EPROM), os dispositivos da Tecnologia Antifuse e os FPGAs de Portas Futuantes. Os FPGAs de

memória RAM Estática, tem suas conexões feitas entre blocos lógicos, por meio de portas de

transmissão ou multiplexadores controlados por células de memória SRAM (Static Random

Access Memory) ou memória estática de acesso aleatório. Devido à volatilidade dessas memórias,

os FPGAs que se utilizam dessa tecnologia precisam de uma memória externa tipo FLASH

EEPROM. Essa tecnologia ocupa mais espaço no circuito integrado, entretanto é rapidamente

reprogramável. Os dispositivos fabricados com transistores de passagem podem ser uma opção

mais barata que a opção de RAM estática, por serem compostos por uma grande concentração de

transistores configurados em modo de corte ou modo de condução.

Os FPGAs baseados nas memórias EPROM e EEPROM têm como principal vantagem

permitir reprogramação sem que precise armazenar a configuração externa, tornando esse em um

componente mais rápido. Já a tecnologia Antifuse é configurada por dois terminais, podendo estar

no estado não programado onde será apresentada uma alta impedância, podendo ser chamado de

“circuito aberto”, ou quando este é aplicado a uma tensão entre 11 e 20 volts, o que faz com que

o dispositivo forme um caminho de baixa impedância entre seus terminais, sendo chamado de

“circuito fechado”.

Os FPGAs da tecnologia de porta flutuante são baseados em transistores MOS (Metal

Oxide Semiconductor’s), especialmente construídos com duas portas flutuantes semelhantes aos

usados nas memórias EPROM e EEPROM. A maior vantagem dessa tecnologia é a sua

Page 16: FPGA Artigo

capacidade de programação e a retenção dos dados que podem ser programados com o circuito

integrado instalado na placa, característica denominada ISP (In System Programmability).

6. Famílias de FPGAs (Xilinx)

Artix7 e Artix 7Q

Apresenta menor potência por células lógicas gerando uma boa economia. Esta família

gasta cerca de 50% menos energia do que os dispositivos da geração de 45nm e apresenta um

ótimo desempenho para memórias DDR3, DSP com entradas e saídas para portas paralelas e

seriais. Disponibiliza maiores portfólios para dispositivos de defesa da classe 100% full-range,

sendo produzido tendo como opções de fabricação dispositivas que suportam temperaturas

prolongadas de até -55 a +125 °C. Foi criado para obter um aumento do desempenho do sistema

com 3.125 Gbps para transceptores de alto transporte BW (vídeo em tempo real) e 250 MHz entre

os seus Slices para o processamento do FPGA.

Kintex7 e Kintex 7Q

Os dispositivos FPGAs da família Kintex tem como vantagem a sua arquitetura otimizada

podendo acelerar os processos de desenvolvimento através de ferramentas, kits com placas de

projeto e até endereçamentos de protocolos de rede. Assim como os Artix, essa família consegue

uma boa economia de energia se comparada com os chips da geração anterior de 40nm onde

também foi possível obter aumentos nos desempenhos de sistema através da integração de até

478k LC’s, com velocidades que variam de 32 a 12,5 GTs, com 2845 GMACs e 34MB para

memórias BRAM e memórias DDR3.

Virtex, Virtex E e Virtex II

A família Virtex surgiu com a ideia de permitir a configuração de um projeto de sistema

digital complexo em um único chip. Nessa família a menor unidade lógica programável é

denominada Slice (cada célula é composta de quatro LUTs e 8 registradores), que pode ser

configurada para o modo de operação de quatro entradas e uma saída, com memórias RAM e

registradores de 16 bits. Com a unidade lógica Slice os recursos adicionais de flip-flops do tipo

Page 17: FPGA Artigo

“D”, multiplexadores, função de transporte carry, e as portas lógicas podem ser utilizadas para

implementar funções booleanas com words (grupos de bits que representa uma unidade de

informação) de tamanhos bem variáveis. Estes recursos podem ser usados como contadores e

conversores através da operação SRL (Shift Register Look Up Table). As entradas e saídas do

Virtex são operadas por 2,5 volts e a Virtex E por 1,8 volts. As duas famílias são capazes de

operar com memórias SDRAM de 133 MHz, RAM ZBT de 200 MHz e DDR (Double Data Rate)

ou taxa dupla de transferência, significando que esta tecnologia permite que dois dados sejam

transferidos ao mesmo tempo. Esses FPGAs foram os primeiros a apresentarem dispositivos

programáveis com mais de um milhão de portas lógicas e suportar diferentes tipos de tensão para

entrada e saída de informação, como, 5, 3,3, 2,5 e 1,8 volts positivos. Para essas famílias são

usadas classes diferenciais para padrões USB e Firewire, onde 2 pinos de entrada e saída são

agrupados e constituem um único sinal de informação que é armazenado dependendo da

diferença dos valores de tensão presentes nos pinos. A vantagem da comunicação diferencial é

permitir imunidade aos ruídos após a subtração, melhorando a velocidade de comunicação. Para

um dispositivo convencional a velocidade de informação pode alcançar para cada sinal, cerca de

311 Mbs, e usando a técnica do diferencial, cerca de 622 Mbs.

Virtex 7e Virtex 7Q

Os componentes da família Virtex7 são divididos em grupos como T, XT e HT com

diferentes modos para configuração pretendendo atender várias exigências dos projetos com

FPGAs de 28nm.

Spartan e Spartan XL

Essas famílias surgiram como uma melhoria na arquitetura interna dos XC4000 que

apresentavam arquiteturas totalmente compatíveis com as famílias Spartan e operam com

alimentação e interface de entradas e saídas, utilizando tensão de 5 volts positivos. Os FPGAs da

família Spartan XL, são alimentados com uma tensão por volta de 3,3 volts positivos. Estes

dispositivos apresentam tolerâncias nas operações de entrada e saída, através da utilização de um

circuito específico com diodos nos blocos IOB, que permite aos dispositivos receber sinais de

entrada e saída com excursão de 5 volts positivos. Em termos de capacidade possuem de 3 a 20

Page 18: FPGA Artigo

mil portas internas, 360 a 2016 flip-flop’s, de 3,2K a 25K de memória RAM e 77 a 224 pinos de

entrada e saída configuráveis.

Spartan 2 e Spartan 3

A família Spartan 2 surgiu dos melhoramentos das tecnologias de integração, que a

família Spartan possuía, e a família Spartan 3 atualmente disponibiliza mais de 1 milhão de

portas para configuração, através de um processo microeletrônico de 0,09 mm, com operação de

1,2 volts e apresenta o melhor desempenho de células lógicas (cerca de 30% melhor que outros

FPGAs). Tem por destaque em suas características os multiplicadores embutidos 18x18 para o

suporte a aplicações de processamento digital de sinais, gerenciadores internos de relógio (CLK),

memória distribuída e 8 bancos de entrada e saída para 24 tipos. A família Spartan 3disponibiliza

dispositivos com 50 K a 5 M para portas lógicas, com até 1,8 Mb de memória RAM e 124 a 784

pinos de para entrada e saída de dados.

Figura 4. Tabela de Comparação das Famílias de FPGA (Xilinx).

Page 19: FPGA Artigo

7. Aplicações dos Dispositivos Lógicos Programados

São utilizados em amplas e diversas áreas, tanto as mais restritas como a militar, sendo

destacados em equipamentos de segurança, monitoramento, comunicação, defesa e até em

mísseis e munições, como também por outros diversos campos mais acessíveis e muito

importantes para o avanço tecnológico de todo o mundo, como o da medicina, sistemas de

segurança computacional, sistemas automotivos, telecomunicações, informática e em todos os

equipamentos eletrônicos que necessitam de um processamento mais complexos e rápidos.

Inicialmente os FPGAs foram reservados para aplicações específicas em que o volume de

produção seria limitado aos aparelhos mais restritos, mas com a evolução rápida da

microeletrônica, foram surgindo cada vez mais necessidades em que o uso deste componente era

extremamente necessário. Um recente estudo mostra que na área educacional os FPGAs, estão

sendo usados com grande frequência na produção de nanossatelites, como o NANOSATC-BR,

(utilizados para possíveis testes do Centro Regional Sul de Pesquisas Espaciais). Como uma

alternativa de baixo custo, essa tecnologia surge como sendo apropriada para o desenvolvimento

de um satélite científico estudantil, com altas capacidades de desempenho os dispositivos

programados em campo, vem sendo escolhidos para os projetos dos computadores de bordo dos

satélites. Muitos testes foram realizados com FPGAs, da família Spartan 3E da Xilinx, mostrando

que o seu uso, apresenta diversas vantagens e custo benefícios em relação à microcontroladores

simples. Esse e vários outros projetos estão em desenvolvimento, focados na tecnologia de

arranjo de portas lógicas em campo, por apresentarem a opção de serem fabricados com

tolerâncias à radiação, baixo consumo de potência e altas capacidades de processamento.

8. Referências Bibliográficas

TOCCI, Ronald J. WIDMER, Neal S. MOSS, Gregory L. Sistemas digitais: princípios e

aplicações. Revisão técnica Renato Giacomini; tradução Jorge Ritter. – 11 ed – São Paulo:

Pearson Prentice Hall, 2011.p. 586 – 627.

http://en.wikipedia.org/wiki/Field-programmable_gate_array - acessado em 24/09/2013, às 00:52

Page 20: FPGA Artigo

e dia 25/09/2013, às 00:23

http://fpgaparatodos.com.br - acessado em 24/09/2013, às 1:10 e em 25/09/2013, às 00:25

http://www.fpgaworld.com/ - acessado em 25/09/2013, às 00:34

http://www.xilinx.com/ - acessado em 26/09/2013, às 08:37

http://www.dcc.ufrj.br/~gabriel/circlog/vhdl.pdf - acessado em 20/10/2013, às 23:17

http://www.velocityreviews.com/forums/t675507-whats-a-slice-in-a-fpga.html - acessado em

27/10/2013, às 19:01

http://www.decom.fee.unicamp.br/~cardoso/ie344b/Introducao_FPGA_Fluxo_de_Projeto.pdf -

acessado em 27/10/2013, às 20:11

http://e.ubmelectronics.com/2013EmbeddedStudy/index.html - acessado em 01/11/2013, às 01:34

Tibério Tavares Rezende

Page 21: FPGA Artigo