3
Fundamentos da tecnologia FPGA Overview Arranjos de portas programáveis em campo (FPGAs - field-programmable gate arrays) são chips de silício reprogramáveis. Ross Freeman, o cofundador da Xilinx inventou o primeiro FPGA em 1985. A adoção do chip FPGA pela indústria é conduzida pelo fato de que o FPGA combina os melhores recursos dos Circuitos Integrados Construídos para Tarefas Específicas (ASICs - application-specific integrated circuits) e sistemas baseados em processadores. Os FPGAs fornecem velocidade temporizada por hardware e alta confiabilidade, não necessitando de compra em altos volumes para justificar a grande despesa de um projeto de ASIC customizado. As pastilhas de silício reprogramáveis possuem a mesma flexibilidade de software de um sistema baseado em processadores, mas não é limitado pelo número de núcleos do processador. Diferentemente dos processadores, os FPGAs são verdadeiramente paralelos por natureza, então diferentes operações de processamento não têm que competir pelos mesmos recursos. Cada tarefa de processamento é enviada para uma seção dedicada do chip e pode funcionar de modo autônomo sem nenhuma influência de outros blocos lógicos. Como resultado, o desempenho de uma parte da aplicação não é afetada quando você adiciona mais tarefas. Figura 1. Um dos benefícios dos FPGAs em comparação a sistemas baseados em processadores é que a lógica da aplicação é implementada em circuitos físicos em vez de executá-los em um sistema operacional, drivers e software de aplicação. Se este conceito é novo para você, o objetivo deste documento é apresentar os fundamentos de FPGA, os blocos que constituem um FPGA e as ferramentas de projeto que tornam possível ter um chip de silício reconfigurável. Table of Contents Definindo as partes de um FPGA Todo chip FPGA é constituído de um número finito de recursos de hardware predefinidos, com interconexões programáveis por software e implementadas em hardware. Também possui blocos de E/S que permitem que o circuito acesse o mundo externo. Figura 2. Diferentes partes de um FPGA As especificações de um FPGA geralmente incluem o número de blocos lógicos configuráveis, número de blocos lógicos de funções fixas como multiplicadores e blocos de RAM (tamanho de memória). Entre todas as partes de um chip FPGA, estas geralmente são mais as importantes para uma aplicação. Os blocos lógicos configuráveis (CLBs – configurable logic blocks) são a unidade lógica básica de uma FPGA. Algumas vezes referido como células lógicas, os CLBs são feitos de dois componentes básicos: flip-flops e lookup tables (LUTs). Várias famílias de FPGAs diferem na maneira com que os flip-flops e LUTs são agrupados, então é importante entender flip-flops e LUTs. Expanda as seções abaixo para aprender mais sobre cada componente. Aprenda mais sobre os Flip-Flops Aprenda mais sobre LUTs Aprenda mais sobre Multiplicadores e DSP Slices Aprenda mais sobre os blocos de RAM Projetando FPGAs em um sistema Com este entendimento dos componentes fundamentais do FPGA, você pode claramente ver a vantagem de implementar sua lógica em circuito de hardware (físico): você pode realizar melhorias na velocidade de execução, confiabilidade e flexibilidade. Entretanto, você enfrentará algumas dificuldades no processamento e conectividade de E/S no seu sistema, pois os FPGAs não têm o ecossistema de drivers e a base de IP/código que as arquiteturas de microprocessadores e sistemas operacionais possuem. Além disso, microprocessadores com sistemas operacionais fornecem a fundação para estruturas de arquivo e comunicação com periféricos usados por muitas tarefas, geralmente essenciais, como registro de dados no disco. Como resultado, durante a última década uma arquitetura híbrida, algumas vezes chamada de arquitetura heterogênea, tem emergido na qual um microprocessador é emparelhado com um FPGA que é então conectado à E/S. Esta abordagem tira proveito dos benefícios que estes dois targets oferecem. Recentemente, empresas como a Xilinx com sua família Zynq de targets, têm adotado esta abordagem e lançado soluções que combinam o processador e o FPGA em um único chip para criar esta arquitetura híbrida.

FPGA

Embed Size (px)

DESCRIPTION

fpga

Citation preview

Page 1: FPGA

Fundamentos da tecnologia FPGA

OverviewArranjos de portas programáveis em campo (FPGAs - field-programmable gate arrays) são chips de silício reprogramáveis. Ross Freeman, o cofundador da Xilinx inventou o primeiro FPGA em1985. A adoção do chip FPGA pela indústria é conduzida pelo fato de que o FPGA combina os melhores recursos dos Circuitos Integrados Construídos para Tarefas Específicas (ASICs -application-specific integrated circuits) e sistemas baseados em processadores. Os FPGAs fornecem velocidade temporizada por hardware e alta confiabilidade, não necessitando de compra emaltos volumes para justificar a grande despesa de um projeto de ASIC customizado.

As pastilhas de silício reprogramáveis possuem a mesma flexibilidade de software de um sistema baseado em processadores, mas não é limitado pelo número de núcleos do processador.Diferentemente dos processadores, os FPGAs são verdadeiramente paralelos por natureza, então diferentes operações de processamento não têm que competir pelos mesmos recursos. Cadatarefa de processamento é enviada para uma seção dedicada do chip e pode funcionar de modo autônomo sem nenhuma influência de outros blocos lógicos. Como resultado, o desempenho de

uma parte da aplicação não é afetada quando você adiciona mais tarefas. Figura 1. Um dos benefícios dos FPGAs em comparação a sistemas baseados em processadores é que a lógica da aplicação é implementada em circuitos físicos em vez de executá-los em umsistema operacional, drivers e software de aplicação.

Se este conceito é novo para você, o objetivo deste documento é apresentar os fundamentos de FPGA, os blocos que constituem um FPGA e as ferramentas de projeto que tornam possível terum chip de silício reconfigurável.

Table of Contents

Definindo as partes de um FPGATodo chip FPGA é constituído de um número finito de recursos de hardware predefinidos, com interconexões programáveis por software e implementadas em hardware. Também possui blocosde E/S que permitem que o circuito acesse o mundo externo.

Figura 2. Diferentes partes de um FPGA

As especificações de um FPGA geralmente incluem o número de blocos lógicos configuráveis, número de blocos lógicos de funções fixas como multiplicadores e blocos de RAM (tamanho dememória). Entre todas as partes de um chip FPGA, estas geralmente são mais as importantes para uma aplicação.

Os blocos lógicos configuráveis (CLBs – configurable logic blocks) são a unidade lógica básica de uma FPGA. Algumas vezes referido como células lógicas, os CLBs são feitos de doiscomponentes básicos: flip-flops e lookup tables (LUTs). Várias famílias de FPGAs diferem na maneira com que os flip-flops e LUTs são agrupados, então é importante entender flip-flops e LUTs.

Expanda as seções abaixo para aprender mais sobre cada componente.

Aprenda mais sobre os Flip-Flops

Aprenda mais sobre LUTs

Aprenda mais sobre Multiplicadores e DSP Slices

Aprenda mais sobre os blocos de RAM

Projetando FPGAs em um sistemaCom este entendimento dos componentes fundamentais do FPGA, você pode claramente ver a vantagem de implementar sua lógica em circuito de hardware (físico): você pode realizarmelhorias na velocidade de execução, confiabilidade e flexibilidade. Entretanto, você enfrentará algumas dificuldades no processamento e conectividade de E/S no seu sistema, pois os FPGAsnão têm o ecossistema de drivers e a base de IP/código que as arquiteturas de microprocessadores e sistemas operacionais possuem. Além disso, microprocessadores com sistemasoperacionais fornecem a fundação para estruturas de arquivo e comunicação com periféricos usados por muitas tarefas, geralmente essenciais, como registro de dados no disco.

Como resultado, durante a última década uma arquitetura híbrida, algumas vezes chamada de arquitetura heterogênea, tem emergido na qual um microprocessador é emparelhado com umFPGA que é então conectado à E/S. Esta abordagem tira proveito dos benefícios que estes dois targets oferecem. Recentemente, empresas como a Xilinx com sua família Zynq de targets, têmadotado esta abordagem e lançado soluções que combinam o processador e o FPGA em um único chip para criar esta arquitetura híbrida.

Page 2: FPGA

2/3 www.ni.com

Figura 8. A NI oferece uma família de produtos completa de dispositivos RIO. Com FPGA e sistema operacional Real-Time, você pode programar em LabVIEW e aproveitar todos os benefíciosdestes sistemas. A NI também possui produtos com a arquitetura híbrida de microprocessador e FPGA.

Nos últimos anos, a National Instruments tem implementado uma poderosa ferramenta com a arquitetura FPGA nos seus dispositivos de E/S reconfiguráveis (RIO). Estes dispositivos alcançammuitos formatos diferentes, de sistemas robustos a sistemas de alto desempenho, todos baseados nessa mesma arquitetura RIO.

Ferramentas de projeto de FPGAAgora que você conhece os blocos que constituem um chip FPGA, você pode perguntar “Como você configura todos estes milhões de componentes para construir uma lógica que você precisaexecutar?”.

A resposta é que você define tarefas de computação digital em software utilizando ferramentas de desenvolvimento e então as compila para um arquivo de configuração ou bitstream que contéminformações sobre como os componentes devem ser conectados. O desafio no passado com a tecnologia FPGA era que as ferramentas de projeto de baixo nível FPGA podiam ser utilizadasapenas por engenheiros com um profundo entendimento do projeto de hardware digital. Entretanto, o surgimento de ferramentas de síntese de alto nível (HLS – high-level synthesis), como o

, muda as regras da programação de FPGA e traz novas tecnologias que convertem diagramas de blocos gráficos em circuitos de hardware digital.software de projeto de sistemas NI LabVIEW

Ferramentas tradicionais de projeto de FPGA

Ao longo dos primeiros 20 anos de desenvolvimento de FPGA, as linguagens de descrição de hardware (HDLs – hardware description languages) como VHDL e Verilog evoluíram de linguagensprimárias para projeto de algoritmos para execução no chip FPGA. Estas linguagens de baixo nível integram alguns dos benefícios oferecidos por outras linguagens textuais. A sintaxe híbridarequer que os sinais sejam mapeados ou conectados de portas externas de E/S para sinais internos, a qual serão ligados à funções dentro do FPGA. Entretanto, a verdadeira natureza paralelade execução de uma tarefa em FPGA é difícil de visualizar em um fluxo sequencial em que as informações são tratadas linha por linha. HDLs refletem alguns dos atributos de outras linguagentextuais, mas elas diferem substancialmente porque são baseadas em um modelo de fluxo de dados onde E/S são conectadas em uma série de blocos de função através dos sinais.

Para verificar a lógica criada por um programador de FPGA, é uma prática comum escrever códigos de teste em HDL para avaliar o projeto do FPGA declarando entradas e verificando asrespectivas saídas. O código de teste e o código do FPGA são executados em um ambiente de simulação que modela o comportamento de temporização de hardware do chip FPGA e apresentatodos os sinais de entrada e saída para que o projetista faça a validação do teste. O processo de criação do código de teste em HDL e execução da simulação geralmente requer mais tempo doque criar o próprio projeto original de FPGA em HDL.

Uma vez que você criou um projeto de FPGA usando HDL e o verificou, você precisa utilizar a ferramenta de compilação para fazer com que a lógica baseada em texto, através de vários passoscomplexos, sintetize sua HDL em um arquivo de configuração ou bitstream que contém informações sobre como os componentes devem ser conectados. Como parte de um processo manual devários passos, normalmente é necessário que você especifique o mapeamento dos nomes dos sinais aos pinos do chip FPGA que você está utilizando.

Figura 9. Projeto de um contador simples em FPGA programado em VHDL

Finalmente, o desafio neste fluxo de projeto é que a expertise necessária para programar em HDLs tradicionais não é muito difundida, como resultado, a tecnologia FPGA não tem sido acessívelà vasta maioria de engenheiros e cientistas.

Ferramentas de projeto de síntese de alto nível

O aparecimento de ferramentas de projeto de HLS gráfica, como o LabVIEW, tem removido alguns dos maiores obstáculos do processo de projeto tradicional com HDL. O ambiente deprogramação LabVIEW é ideal para a programação de FPGAs porque ele representa claramente o paralelismo e o fluxo de dados, possibilitando que usuários experientes ou inexperientes noprocesso tradicional de projeto de FPGAs possam tirar proveito da tecnologia FPGA. Além disso, para que a propriedade intelectual (IP) anterior não seja perdida, você pode utilizar o LabVIEWpara integrar VHDL existente em seus projetos no LabVIEW FPGA.

Page 3: FPGA

Figura 10. Na direita está o , que é uma ferramenta de alto nível para projeto de FPGAs em dispositivos de hardware NI RIO. Esta ferramenta fornece asoftware de projeto de sistemas LabVIEWabstração para a complexidade de baixo nível geralmente encontrada ao criar ou escalar projetos em VHDL.

Então para simular e verificar o comportamento da lógica FPGA, o LabVIEW oferece recursos diretamente no ambiente de desenvolvimento. Sem conhecimento da linguagem de baixo nível,HDL, você pode criar códigos de teste para avaliar a lógica do seu projeto. Além disso, a flexibilidade do ambiente LabVIEW ajuda os usuários mais avançados a modelar a temporização e lógicade seus projetos, exportando para simuladores de ciclo preciso como o Xilinx ISim.

As ferramentas de compilação FPGA automatizam o processo de compilação para que você possa iniciar o processo com o clique de um botão e receber a cada estágio de compilação osrelatórios e erros, se existentes. Caso os erros de temporização ocorram por causa do seu projeto de FPGA, o LabVIEW destaca estes caminhos críticos graficamente para expedir o processo dedepuração.