NOSSAS REDES SOCIAIS -

FPGA – Alternativa para Projetos (ART2873)

Nos nossos dias, os projetistas de equipamentos eletrônicos podem contar com muitas soluções para seus produtos. A escolha da melhor alternativa está condicionada a diversos fatores que vão desde a escala da produção até o tempo em que o produto deve estar no mercado e seu custo de desenvolvimento. Dentre estas alternativas destacamos os FPGAs, dos quais trataremos neste artigo, mostrando seu princípio de funcionamento e vantagens na utilização em novos projetos.

Muitas são as alternativas modernas para a criação de um novo produto. Microcontroladores, DSPs, ASICs e mesmo circuitos integrados de funções comuns podem ser utilizados. Tudo dependerá de diversos fatores que o projetista deve considerar ao fazer a escolha. Esta escolha deve ser a melhor, para atender às necessidades do projeto, para que o produto seja um sucesso.

Uma solução comum que se adota na industria de grande porte é o ASIC, (Application Specific Integrated Circuit) ou seja, o circuito integrado para uma aplicação específica que é criado com todos os recursos para se fazer o que se deseja. Telefones celulares, CD e DVD players, câmeras digitais são alguns exemplos de produtos que fazem uso de ASICs.

A vantagem deste produto está no fato de se ter um componente único para aquela aplicação, com todos os recursos e apenas eles, que se deseja minimizando custos e espaço numa placa, pois não há desperdício. A desvantagem está no tempo de desenvolvimento e custo, que só permite que este tipo de aplicação seja adotado numa linha de produção de larga escala.

Outra solução é o microcontrolador, que pode ser programado para se fazer o que se deseja. Existem centenas de soluções no mercado que permitem escolher um microcontrolador com características que sejam mais apropriadas a um projeto. No entanto, este tipo de solução também tem suas desvantagens.

Os microcontroladores, mesmo os que estejam mais próximos do que se desejam, nem sempre têm todas as funções necessárias à aplicação e circuitos externos de certa complexidade devem ser agregados. Por outro lado, sobram sempre funções que não são usadas, o que também significa um desperdício. O microcontrolador vem com suas funções implementadas na fábrica.

Uma solução cada vez mais adotada é aquela que não vem programada de fábrica ou com todas as funções já disponibilizadas de fábrica. Trata-se da solução em que as funções são implementadas pelo usuário. Trata-se do FPGA, de que trataremos a seguir.

 

O FPGA

FPGA é o acrônimo para Field Programmable Gate Array consistindo num dispositivo ou hardware que pode ser reconfigurado ou programado pelo usuário. Trata-se de um circuito integrado que vem com um grande conjunto de blocos que, através de programação podem ser configurados de tal forma que o conjunto exerça um determinado número de funções específicas.

Em outras palavras, trata-se de um chip que pode ser programado pelo usuário para fazer o que se deseja. Diferentemente de um microcontrolador que vem com os blocos prontos já numa estrutura definida e que pode ser programado para determinadas funções, o FPGA vem com os blocos desligados, sendo então interconectados por programação pelo usuário para fazer o que ele deseja. O microcontrolador vem com os blocos de funções fixos, enquanto que no FPGA o usuário os cria, conforme sugere a figura 1.

 

 


 

 

 

O FPGA foi criado pela Xilinx em 1983 mas hoje existem muitas empresas que disponibilizam em suas linhas de produtos este tipo de componente como a Altera, Actel, etc.

Um FPGA típico conta com três tipos de blocos, mostrados em sua disposição básica na figura 2. Estes blocos são:

 

 


 

 

 

CLB- Configuration Logical Blocos ou Blocos Lógicos de Configuração. Trata-se do coração do FPGA, consistindo em circuitos formados pela reunoição de flip-flops além de lógica combinacional. Com eles é possível criar funções lógicas. Diversas são as configurações para estas células, dependentes do fabricante e do que se denomina “granulação” (grain).

Assim, nos FPGAs em que os grãos são grandes, os blocos lógicos podem ser complexos contendo pequenos microprocessadores, memórias, unidades lógicas e aritméticas, etc. Nos PFGAs com granulação média, já encontramos blocos lógicos menos complexos como funções lógicas de média complexidade. Finalmente, nos FPGAs de granulação fina ou grãos pequenos, encontramos funções simples em cada bloco como multiplexadores, flip-flops, etc.

Para cada empresa encontramos arquiteturas típicas com diversos tipos de granulação que influem na velocidade do dispositivo. Podemos então em primeiro lugar citar os FPGAs da Altera que utilizam LUTs ou Look-Up Table em que temos células de armazenamento que são empregadas para implementar as funções. Nesta arquitetura, cada bloco armazena apenas um bit, ou seja, um nível lógico 0 ou 1. Esta arquitetura também é usada pela Xilinx, conforme mostra um bloco típico na figura 3.

 


 

 

 

Neste bloco temos diversas entradas que entram numa matriz programada que vai determinar que tipo de função o bloco executa. Cria-se uma tabela verdade para o bloco, conforme a vontade do usuário. A saída deste bloco é então armazenada num flip-flop e utilizada quando solicitada pelo clock.

Outro tipo de configuração é a usada pela Plessey, mostrada na figura 4, e que consiste em portas NAND de duas entradas que são conectadas a outros blocos de funções de modo a implementar a função desejada.

 


 

 

 

Este bloco é do tipo de granulação fina, assim como o denominado “crosspoint” (ponto de cruzamento) que é mostrado na figura 5.

 


 

 

 

Num dos tipos possíveis temos um par de transistor em filas que são dispostos em linhas paralelas.

A Actel utiliza um outro tipo de configuração que é mostra a figura 6.

Nela temos as entradas de multiplexadores conectadas de tal forma a permitir a implementação de diversas funções lógicas. Por exemplo, um multiplexador de duas entradas(a) e (b) selecionadas pode ser usado para implementar a função ac+bc.

 


 

 

 

IOB – Input/Output Blocks – Estes são os circuitos que têm por finalidade fazer o interfaceamento doFPGA com o mundo exterior. Eles levam às entradas dos CLBs os sinais externas e depois trazem de volta o resultado de suas operações. Basicamente, estes circuitos funcionam como buffers, exatamente como no caso de microcontroladores e DSP, trabalhando com sinais nos dois sentidos, conforme a programação.

 

Switch Matrix – São as chaves que fazem as interligações dos diversos blocos ou o roteamento dos sinais. Conforme podemos ver pela figura 7, os blocos lógicos formam uma matriz.

 

 


 

 

 

Para que o circuito funcione, os diversos blocos devem ser interligados de forma apropriada o que é conseguido através de uma programação externa. Esta programação vai determinar exatamente o que o conjunto de blocos do FPGA vai fazer, ou seja, o modo final de seu comportamento.

As interligações dos blocos são chamadas também de roteamento, e existem diversas maneiras de se fazer isso, sendo as metodologias adotadas pelas diversas empresas próprias, dotando cada produto de características próprias pois elas influem na capacidade de processamento do dispositivo, na sua velocidade e em outros fatores que devem ser observados quando se realizada um projeto.

Na figura 8 temos um exemplo de roteamento utilizado pela Xilinx. Nele, as conexões são cruzadas havendo aquelas que se destinam à interligação dos blocos (passando os sinais de um para o outro) e as que se destinam à programação, ou seja, que determinam o que o bloco vai fazer.

 

 


 

 

 

Para fazer as conexões são utilizados transistores que funcionam como chaves ligando as diversas linhas de programação dos blocos, conforme elas devam ser utilizadas. Transistores também transportam os sinais para as linhas em que eles devem ser encaminhados.

Analisando estas linhas de interligação, podemos encontrar quatro funções diferentes: as linhas de uso geral que passam de um bloco para outro, conectando chaves. As linhas de conexão direta que tem a função de ligar um bloco a outro diretamente. As linhas longas, cuja finalidade é fornecer retardos para sincronizar os circuitos e as linhas de clock que enviam os sinais que sincronizam todas as funções do FPGA.

Outras metodologias podem ser encontradas. A Actel, por exemplo, utiliza mais segmentos ou conexões no sentido horizontal do que no sentido vertical, conforme mostra a figura 9.

 


 

 

 

Nesta tecnologia as linhas horizontais conectam os blocos comutadores enquanto que as linhas verticais correspondem aos blocos que devem ser comutados.

 

As Tecnologias de Roteamento

As características das chaves programáveis de roteamento determinam muito do comportamento do dispositivo. Capacitâncias, resistências e a própria tecnologia segundo as quais são fabricadas vão influir em certas características como a velocidade, volatilidade e consumo de energia do dispositivo. Por exemplo, uma capacitância mais elevada reduz a velocidade de propagação do sinal e além disso causa um aumento do consumo do dispositivo. Existem basicamente três tecnologias disponíveis para os FPGAs quanto aos dispositivos que são integrados no chip.

 

a) SRAM (Static Access Memory). Trata-se da mesma tecnologia usada para a fabricação de outros tipos de memórias. Nela, a chave que faz o roteamento dos sinais é um transistor que é controlado por uma memória SRAM, ou seja, uma memória estática. A principal desvantagem desta tecnologia está no fato de que a memória SRAM é volátil, ou seja, seus dados desaparecem quando o circuito é desligado. Para superar esta característica, os FPGAs deste tipo devem usar uma memória externa FLASH que contenha o programa. Com isso, temos de usar componentes adicionais na placa, significando custos e espaço adicionais na placa.

b) Antifuse – trata-se de uma tecnologia em que temos um dispositivo de dois terminais, semelhante a um fusível, conforme mostra a figura 10. O dispositivo apresenta uma alta impedância quando em condições normais, mas passa a apresentar uma resistência muito baixa quando lhe é aplicada uma tensão de programação entre 11 e 20 V. Antifuse ou antifusível, porque diferentemente dos fusíveis comuns que “abrem” com a corrente, este dispositivo “fecha” o circuito quando a corrente de programação é aplicada. Trata-se da mesma tecnologia usada na programação de PROMs.

 

 


 

 

 

c) Floating Gate (Comporta Flutuante) – nesta tecnologia temos a existência de transistores MOS, como os utilizados nas memórias EEPROM e EEPROM. Estes transistores possuem duas comportas para programação e controle. A maior vantagem desta tecnologia está no fato de que os dados são retidos, mesmo depois de cortada a alimentação, podem ser reprogramados por tensão (EEPROM) e além disso, esta operação pode ser feita com o CI instalado na pópria placa, recurso denominado ISP (In System Programmability).

 

Que FPGA escolher?

Conforme pudemos ver, existem diversas tecnologias disponíveis e dentro de uma mesma tecnologia, o modo de construção pode variar, por exemplo, o tamanho dos blocos lógicos. O que isso significa para a performance de um FPGA? Como levar em conta estes fatores. Damos a seguir alguns itens importantes que devem ser considerados:

 

Comparação com outras tecnologias

Pelo que vimos a respeito dos FPGAs,o leitor já pode ter uma visão geral do que estes dispositivos podem fazer e como são utilizados. No entanto, sua escolha pode ser feita de uma maneira melhor, se fizermos uma comparação com outras tecnologias.

Por exemplo, o tamanho dos blocos lógicos é um primeiro ponto que deve ser observado na escolha de um FPGA para uma aplicação. Um bloco grande implementa mais funções, exigindo-se assim menor número de blocos para o equipamento. No entanto, um bloco maior exige mais espaço . Existe portanto um compromisso entre o tamanho do bloco e o número de funções implementadas, devendo o projetista escolher a melhor relação entre os dois para o seu projeto.

A área lógica ativa é menor do que a área lógica total, incluindo a de programação e de saídas/entradas e também as conexões de roteamento. Na verdade, de 70 a 90% da área de um FPGA consiste em conexões de roteamento. Assim, o tipo de roteamento deve ser considerado na escolha de um FPGA para uma aplicação.

A granulação também é importante. Maior granulação (grãos maiores) significam em menor retardo dos sinais. Com o aumento da granulação também temos menor número de percursos para os sinais (entre blocos).

Os FPGAs também não devem ser confundidos com os CPLDs. Enquanto os FPGAs são formados por uma grande quantidade de pequenos blocos, os CPLDs são formados por pequena quantidade de grandes blocos. Os FPGAs são baseados em RAMs, o que significa que eles precisam ser reprogramados quando ligados novamente, existindo uma memória externa para isso. Os CPLDs são baseados em EPROM não sendo, portanto, voláteis.

Os CPLDs são mais rápidos, por terem menos blocos, mas em compensação são menos flexíveis. Os FPGAS podem ser facilmente roteados para implementar funções aritméticas e RAM, o que não ocorre com os CPLDs. Os cPLDs são mais indicados para projetos simples, enquanto que os FPGAs podem ser usados em projetos complexos.

Comparando com os microcontroladores, vemos que estes componentes já vêm com todas as funções prontas e podemos apenas mexer no software. Se o projeto que desejamos não puder usar o hardware existente precisaremos de componentes externos, o que pode encarecer o projeto. Da mesma forma, os DSPs já vem com todas funções prontas devendo as mesmas ser aproveitadas apenas por programação. Se não puderem comportar o que se deseja, devem ser empregados circuitos externos adicionais.

Finalmente temos o caso de circuitos integrados comuns, que certamente serão necessários em grande quantidade, pois cada um só pode conter poucas funções e além do custo, vão ocupar uma área muito grande na placa de circuito impresso, se a implmentação do propjeto exigir um circuito de alguma complexidade. Esta solução se aplica apenas a circuitos muito simples.

 

Conclusão

FPGAs consistem em soluções bastante interessantes para o desenvolvimento de projetos, já que a maioria das empresas facilitam ao máximo os projetistas. Placas de desenvolvimento e softwares simples de usar estão disponibilizados, inclusive com demonstrações nos sites das empresas fabricantes. Sugerimos ao leitor que pensa neste tipo de solução ao abordar seu próximo projeto. Visite os sites das principais empresas que fabricam estes componentes:

 

Artigo publicado originalmente em 2008

 

 

BUSCAR DATASHEET

 


N° do componente 

(Como usar este quadro de busca)

 

Opinião

Em busca de novos tempos

Em nossos últimos artigos, participações em lives, podcasts e vídeos temos ressaltado que estamos rapidamente caminhando para uma mudança de hábitos. São os novos tempos que estão chegando e que, em vista da pandemia estamos buscando para que sejam melhores e que nos tragam esperanças, paz e novos graus de compreensão, principalmente em nível mundial.

Leia mais...

Invejoso
Os invejosos invejam-se reciprocamente.
Joaquim Nabuco - Ver mais frases


Instituto Newton C Braga
Entre em contato - Como Anunciar - Políticas do Site

Apoio Social
Lions Clube de Guarulhos Sul SOS Mater Amabilis
Advertise in Brazil
If your business is Electronics, components or devices, this site is the correct place to insert your advertisement (see more)