Buscar

Artigo FPGA (Concluído)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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. Os 
FPGAs foram industrializados com a opção de serem programados em lotes quando fabricados 
ou no campo sendo configurados pelos seus usuários. 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 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 e 
faculdades. 
 
 
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 FPGA 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 FPGA. 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 FPGAs 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 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 FPGA é 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 de um FPGA é 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. As células de armazenamento dos LUTs de um FPGA são voláteis, o que implica 
perda do conteúdo armazenado no caso de falta de suprimento de energia elétrica. Desta forma, o 
FPGA deve ser programado toda vez que for energizado. Geralmente, para evitar as perdas de 
dados, utiliza-se uma pequena memória FLASH EEPROM (Electrically Erasable Programmable 
Read Only Memory), cuja função é carregar automaticamente as células de armazenamento toda 
vez que o FPGA for energizado. 
 
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 asreais conexões na matriz, determinar quais dessas conexões 
estarão abertas e quais estarão fechadas. A programação consiste em carregar o 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 FPGA, usando uma ferramenta de automação de design eletrônico, 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 software fornecido 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ário reconfigurar o dispositivo FPGA. 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 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. Este tipo de procedimento é utilizado tanto para circuitos simples 
quanto para circuitos maiores e mais complexos. 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. Depois dos testes o projeto está pronto para ser fixado no chip FPGA. 
 
 
 
 
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 microprocessadores. 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 em um 
computador, 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 Alteratornando 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 Speed Integrated Circuits Hardware Description 
Language) 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 para avaliar se o seu funcionamento corresponde às especificações. 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 e se 
divide em duas etapas. A primeira, 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. Geralmente as empresas que desenvolvem dispositivos programáveis, 
fornecem também softwares capazes de carregar o bitstream no hardware utilizando linguagens 
mais simples de descrição de hardware como a HDL. 
 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 no hardware. A descrição em VHDL corresponde a um dos primeiros 
níveis na hierarquia do projeto de circuitos digitais e pode ser feito seguindo dois parâmetros, o 
comportamental e o estrutural. Inicialmente no parâmetro comportamental de um circuito ou 
sistema, sua característica é vista como uma blackbox ou caixa preta que implementa uma 
determinada funcionalidade, escrita por códigos com um conjunto de instruções. Essas instruções 
podem ser de níveis mais ou menos elevados que é perfeitamente válida em termos de 
programação, mas que, eventualmente, pode ser impossível de sintetizar num circuito sem a 
linguagem VHDL. 
 
 
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 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. 
 
JAM 
É uma linguagem otimizada para a programação de PLDs através de uma interface 
chamada de JTAG. A sintaxe dessa linguagem é bem parecida com a BASIC, com instruções e 
aspectos adicionais ligados diretamente a sua interface. O programa JAM Composer foi criado 
por fabricantes de PLDs para que fosse possível programar os dispositivos fabricados por eles. O 
arquivo JAM contém tanto os dados de programação quanto o algoritmo de programação 
necessário para programar a PLD. Já o JAM Player é um programa que interpreta o arquivo JAM 
e através da interface JTAG transfere as informações necessárias para os FPGAs ou PLDs. 
Qualquer JAM Player pode ler um arquivo JAM criado por um JAM Composer de qualquer 
fabricante, o que garante uma independência de fabricação. 
 Um arquivo JAM, apesar de ser do tipo ASCII e conter tanto os dados, quanto o algoritmo 
de programação, é muito compacto e proporciona maior rapidez no processamento. Um método 
utilizado para se atingir essa nível de compactação foi o de comprimir os dados que serão 
utilizados. A interface JTAG é um tipo de simulador de testes padronizado que serve para 
interligar uma porta paralela ou serial com uma PLD. Essa interface é conectada normalmente 
com o chip através de 4 pinos sendo possível usar até 5 pinos em alguns casos, onde o FPGA 
pode então ser programado e depois comandado por um programa, como o JAM Player. 
 
 
 
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 do FPGA 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 de desenvolvimento. A ferramenta que a Altera utiliza para fazer a programação de 
seus FPGAs 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 FPGA. 
 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 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 a um FPGA é possível, utilizando programas específicos, programar o componente, 
verificar sua programação, testá-lo com determinadas entradas e comparar suas saídas com as 
saídas esperadas. Os FPGAs que se utilizam da tecnologia ISP são mais práticos, pois não é 
necessário o uso de soquete já que o dispositivo tem a opção de ser reconfigurado enquanto está 
 
no circuito. 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 
fabricação de uma placa. 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 FPGA terá melhor 
desempenho dependendo da aplicação para a qual o mesmo 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. Apresenta como vantagem a possibilidade 
de ser rapidamente configurado. 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. 
 
XC4000 
A família XC4000, apresenta um suporte resistente, incluindo muitas ferramentas de 
desenvolvimento como, o WebPack, a Foundation, e o WorkView. Com está família o seu 
fabricante desenvolveu kits educativos de fácil manuseio, e conseguiu introduzir seus 
 
dispositivos nas universidades. A família XC4000opera com alimentação de 5 volts contínuos, 
possui internamente uma capacidade de flip-flop’s que varia de 360 para os da família XC4003, a 
2560 para os XC4025, oferecendo de 60 a 256 pinos reprogramáveis de interface. Apesar de ter 
sido muito importante e ainda abranger o mercado para este tipo de voltagem (5 volts), foi 
substituída pela família Spartan, que é praticamente compatível, pinagem por pinagem, com a 
família XC4000. 
 
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 
 
 Os FPGAs são utilizados em amplas e diversas tecnologias que se encontram tanto em 
áreas 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 complexo, especifico e rápido. 
 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 do FPGA, 
por apresentarem a opção de ser 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. 
 
 
9. Referências Webgráficas 
 
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

Continue navegando