FPGA – A flexibilidade no projeto de hardware. Parte 2 de 3.
FORMAS DE IMPLEMENTAÇÃO EM HARDWARE RECONFIGURÁVEL
Caso ainda não tenha visto o post anterior, leia-o em http://www2.decom.ufop.br/imobilis/fpga-o-prodigio-de-flexibilidade/ :p.
Continuando, a implementação na placa FPGA é feita por linguagens de descrição chamadas Linguagens de Descrição de Hardware (HDL) como as linguagens VHDL, Verilog, ABEL, etc., ou por meio do desenvolvimento de diagramas esquemáticos com ferramentas gráficas assistidas pelo computador. Atualmente, também é possível escrever funcionalidades através de linguagens de alto nível como Handel-C ou mesmo a SystemC.
É importante ter em mente alguns conceitos de fundamentos de linguagens de descrição de hardware para esse tipo de equipamento. Estas linguagens permitem por exemplo loops infinitos ou portas lógicas com inúmeras entradas na qual é possível ser descritas em software mas impossível de implementar em hardware.
Ao final, no ato da síntese do projeto a ser enviado ao hardware, são extraídas todas as funções invocadas pelo desenvolvedor das bibliotecas disponíveis no ambiente de desenvolvimento e enviado hardware. Se houver duas bibliotecas diferentes tratando do mesmo assunto, haverá erro de programação.
Na síntese feita pelo Altera Quartus II, primeiro é realizado o mapeamento das estruturas do projeto nos blocos lógicos disponíveis e assim, calculado se é possível a projeção no hardware e estes serão colocados no hardware reconfigurável. A utilização do algoritmo de floorplanning proporciona uma melhor organização seja de espaço ou velocidade do blocos lógicos que serão utilizados frequentemente com outros blocos menos usados pensando em uma performance maior mesmo que seja pequena. Ao final é feito o encaminhamento do circuito que interliga aos componentes reconfiguráveis.
Segundo Skliarova e Ferrari [1], “uma colocação eficiente é essencial para que esta fase seja bem-sucedida porque caso os componentes interligados fiquem colocados longe uns dos outros, as ligações respectivas vão precisar de muito mais recursos de encaminhamento”.
Também é possível com ajuda de algumas ferramentas, acompanhar o funcionamento em forma de diagrama de transição de estados (linhas de tempo) por exemplo.
CARACTERÍSTICAS IMPORTANTES DO FPGA
É importante ressaltar que ele não possui funções lógicas básicas como AND, OR, entre outras. Seu arranjo de células configuráveis permite a implementação dessas portas lógicas dentro de um campo chamado Look-Up Tables (LUTs). Assim, as LUTs diferem bastante em termos do tamanho e das capacidades de implementação de funções lógicas.
É possível notar atrasos em seu processamento que são consequência da distribuição lógica e pelo encaminhamento das estruturas utilizadas. Então, é de grande importância estudar qual a melhor maneira de usá-la para cada projeto pois o modo da implementação em seu circuito afeta diretamente seu desempenho.
Sua arquitetura flexível permite uma serie de aplicações sendo as principais Implementação de Controladores de Dispositivos, Circuitos de Codificação, Lógica Arbitrária, Prototipagem e Emulação de Sistemas entre muitos outras. Também é possível com os novos modelos de FPGAs implementar sistemas complexos totalmente completos.
É possível utilizá-la como ferramenta para fabricação de protótipos em projetos industriais como um novo dispositivo eletrônico por exemplo. Primeiramente cria-se o projeto numa placa reconfigurável (FPGA). Isso pois, em meio a construção do protótipo é grande a possibilidade de alterações ou melhorias no projeto podendo estas, ao serem feitas no FPGA, permitir em qualquer momento, alterações sem muito custo e com pouco tempo. Caso o projetista só tivesse o desenvolvimento direto em formato ASIC, teriam que ser produzidas circuitos integrados físicos para cada versão produzida a fim de fazer testes no equipamento. Após o término e teste no FPGA, o projeto poderá ser fabricado em placas de funções específicas (circuitos integrados) que serão mais baratas quando fabricadas em lote.
Até o próximo post :D.
[1] SKLIAROVA, I.; FERRARI, A. Introdução à computação reconfigurável. Electrónica e Telecomunicações, 2003.
[…] ainda não tenha lidos os posts anteriores, lêia-os: http://www2.decom.ufop.br/imobilis/fpga-o-prodigio-flexibilidade-parte-2/ […]