FPGA Artigo
-
Upload
tiberio-tavares-rezende -
Category
Documents
-
view
94 -
download
0
Transcript of 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
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.
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
“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
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).
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
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