Baixe o app para aproveitar ainda mais
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
Compartilhar