Escolar Documentos
Profissional Documentos
Cultura Documentos
Introducao FPGA Fluxo de Projeto PDF
Introducao FPGA Fluxo de Projeto PDF
Leitura Complementar
Aula 5: FPGA e Fluxo de Projeto
2 Semestre/2007
Fabbryccio A. C. M. Cardoso
Marcelo Augusto Costa Fernandes
Prof. Responsvel: Dalton S. Arantes
DECOM-FEEC-UNICAMP
Introduo a FPGA
Antes do advento da lgica programvel, circuitos lgicos eram construdos em placas de circuitos
utilizando componentes padres, ou pela integrao de portas lgicas em circuitos integrados para
aplicaes especficas.
FPGA um circuito integrado que contm um grande nmero (na ordem de milhares) de unidades
lgicas idnticas. Neste aspecto estas unidades lgicas podem ser vistas como componentes padres
que podem ser configurados independentemente e interconectados a partir de uma matriz de trilhas
condutoras e switches programveis. Um arquivo binrio gerado para configurao da FPGA a
partir de ferramentas de software seguindo um determinado fluxo de projeto. Esse arquivo binrio
contm as informaes necessrias para especificar a funo de cada unidade lgica e para
seletivamente fechar os swiches da matriz de interconexo. Resumindo, o array de unidades lgicas
e a matriz de interconexo, que podem ser programados pelo usurio, formam a estrutura bsica da
FPGA para especificao de circuitos integrados complexos.
Na famlia Virtex da Xilinx a menor unidade lgica configurvel denominada slice de lgica e
mostrada na Figura 1. O slice bastante verstil e pode ser configurado para operar como LookUp
Tables (LUT) com quatro entradas e uma sada, RAMs distribudas de 16 bits e registradores de
deslocamento de 16 bits. Na operao como LUT, os recursos adicionais como D-flip flops,
multiplexadores, lgica de transporte (carry) dedicado, e portas lgicas, podem ser utilizados em
conjunto com as LUTs para implementar funes booleanas, multiplicadores e somadores com
palavras de comprimento bastante flexvel. Na operao como SRL (Shift Register LUT), estes
recursos adicionais podem ser utilizados para se implementar contadores, conversores serialparalelo e paralelo-serial, entre outras funcionalidades. Os recursos adicionais mencionados podem
ainda ser utilizados na interconexo de unidades lgicas para se implementar, por exemplo,
multiplicadores, contadores, somadores e memrias com praticamente qualquer comprimento de
palavra. O limite para este comprimento determinado pela quantidade de unidades lgicas
disponveis na FPGA, que proporcional a rea do circuito integrado.
Alm dos recursos padres (slices) uma FPGA pode disponibilizar no arranjo bidimensional
recursos bastante sofisticados, tais como multiplicadores dedicados, MACs programveis
(multiplicador e acumulador, tambm denominados de slice XtremeDSP), blocos de memria,
DCM (Digital Clock Manager utilizados para multiplicar ou dividir a freqncia de um sinal de
clock), microcontroladores (IBM PowerPC) e trans-receptores multi-giga bit (que servem para
implementar interfaces seriais para transferncia de bits a altssima velocidade). A utilizao de tais
recursos embarcados possibilita otimizar o consumo de rea (slices) e tambm desenvolver projetos
mais eficientes.
Nota Vale destacar que o System Generator consegue abstrair recursos mais complexos e mapelos eficientemente para recursos bsicos (primitivas) da FPGA, tornando transparente o trabalho
rduo de interconectar essas primitivas. Por exemplo, o bloco Dual Port RAM uma memria
bastante flexvel no comprimento das palavras e na profundidade da memria (nmero de
endereos) que extrapola a capacidade individual das BRAM e das RAM distribudas (slices
padres) disponveis no dispositivo. Dependendo dos parmetros escolhidos, o System Generator
ir gerar um cdigo VHDL que ir conectar vrias BRAMs ou RAM distribudas para implementar
o recurso desejado.
Field Programmable por sua vez significa que as funes da FPGA so definidas por um programa
do usurio em vez de serem definidas pelo fabricante do dispositivo. Em circuitos integrados tpicos
(ASIC Application Specific Integrated Circuit) a implementao realizada no tempo da
manufatura. Nas FPGAs, dependendo do dispositivo, o programa pode ser queimado
permanentemente, semi-permanentemente como parte do processo de montagem da placa, ou
carregado a partir de uma memria flash cada vez que o dispositivo ligado. No ltimo caso, a
tecnologia utilizada para implementao da FPGA a de memria esttica (SRAM). Por este
motivo, toda vez que o dispositivo desligado perde-se a programao. Esta flexibilidade de
programao, associada a potentes ferramentas de desenvolvimento e modelagem, possibilita ao
usurio acesso a projetos de circuitos integrados complexos sem os altos custos de engenharia
associados aos ASICs.
Com relao programao da FPGA, o conjunto de ferramentas de software associado a um fluxo
de projeto prov ao desenvolvedor um nvel de abstrao que o permite focar no algoritmo que se
deseja implementar, ao invs de se preocupar com os circuitos que sero implementados. Desta
forma, a programao do dispositivo pode ser feita atravs de uma linguagem de programao
(VHDL) ou mesmo atravs de modelagem de sistemas (System Generator).
Fluxo de Projeto
O fluxo tradicional de projeto de circuitos para FPGA pode ser dividido em quatro fases distintas:
especificao, verificao, implementao e debug de sistema. Sobre este fluxo de desenvolvimento
adicionada uma nova etapa de modelagem de sistemas e gerao de cdigo HDL atravs da
ferramenta System Generator.
Uma etapa importante do projeto consiste na especificao ou gerao do Netlist, que uma
descrio compacta, ou mesmo textual, do circuito para as ferramentas de verificao e de
implementao de circuitos. O Netlist basicamente uma listagem de componentes do circuito e de
como estes componentes esto interconectados, incluindo ainda os nomes dos pinos de IO do chip
FPGA utilizados pelo circuito. Vale destacar que a descrio do circuito realizada pelo Netlist
dependente do fabricante e da famlia do dispositivo empregado, uma vez que os componentes
utilizados na descrio so provenientes de bibliotecas especficas deste fabricante.
A gerao do Netlist pode ser feita atravs de captura de esquemtico ou de sntese de cdigo HDL.
Um esquemtico pode ser visto como uma representao grfica de um Netlist. Deste modo, a
gerao do Netlist a partir da captura de esquemtico imediata. A vantagem do esquemtico
facilitar o desenvolvimento do projeto de circuitos em vez de se trabalhar diretamente na descrio
textual do Netlist. Por outro lado, a desvantagem do projeto concebido por esquemticos est na
portabilidade. Uma vez concebido para uma famlia de dispositivos de um fabricante, a migrao
para um dispositivo de outra famlia, ou mesmo de outro fabricante, pode significar o reincio de
todo o projeto a partir do zero.
Por causa desta dificuldade de migrao, a especificao do projeto evoluiu para uma representao
comportamental e funcional do circuito atravs de uma linguagem de programao HDL (hardware
description language), como o VHDL e o Verilog. Neste caso, deve ser disponibilizada uma
ferramenta de sntese que interprete o cdigo HDL e gere um Netlist otimizado, em rea ou
velocidade, a partir de bibliotecas especficas de componentes de um determinado fabricante.
O HDL bastante verstil. Possibilita trs nveis de abstrao em HDL, como mostrado na Figura
3. O nvel mais alto de abstrao o comportamental (behavioral), que permite descrever o
comportamento do circuito atravs de loops e processos. Neste nvel de abstrao tambm
possvel compor equaes atravs de multiplicaes e somas. O prximo nvel de abstrao
possibilita descrever o funcionamento do circuito em termos de lgica combinacional (por exemplo,
if, then, else) e booleana. Este nvel de abstrao tambm engloba a representao do circuito no
nvel de registros de transferncias (RTL Register Transfer level), que consiste basicamente em
uma representao por registradores interligados por lgica combinacional. O nvel mais baixo de
abstrao de um HDL o estrutural, que consiste em uma representao do circuito semelhante a
um Netlist de portas lgicas ou de switches.
Uma vez especificado o Netlist, pode-se entrar na fase de implementao. Isto necessrio porque
o Netlist descreve apenas os componentes e como os mesmos so interconectados. Em linhas
gerais, na implementao, faz-se necessrio mapear tais componentes para clulas lgicas, que
podem ser configuradas como look-up tables (LUT), SRL ou mesmo RAM. Em seguida,
necessrio definir o posicionamento dos componentes no dispositivo de tal forma que as
interconexes (roteamentos) entre os mesmos atendam s restries de tempo especificadas.
Tipicamente, estas restries podem ser geradas automaticamente a partir das informaes dos
clocks praticados no circuito. O processo de mapeamento ainda pode ser otimizado visando
minimizao da rea ocupada da FPGA ou a maximizao da velocidade de operao do circuito.
No fluxo de projeto da Xilinx existe ainda uma etapa anterior (Traduo) que traduz o Netlist de
componentes lgicos para um Netlist de primitivas da Xilinx. O objetivo facilitar a etapa de
mapeamento.
Especificao
Modelagem de Sistema
In
I_In
I_Out
Bibliotecas
sysgen
d z-1 q
Out
sysgen
d z-1 q
Out
Error
Q_Out
Interpolation
I_Out
Q_Out
In
Q_In
HDL
DHAT
Coeff
T_2 FSE
Captura de
Esquemtico
Sntese
System
Generator
Netlist
Resource
Estimator
Verificao
Simulao
Vetores de teste
Implementao
Traduo
Mapeamento
Fitting
Place & Route
Timing Analyzer
Back-Annotation
Download
device
Debug de
Sistema
Verificao
em circuito
Placa de Circuito Impresso
Symbols
Nvel
Comportamental
(Algoritmo)
Loops
Processos
Nvel
Funcional
RTL
Boolean
Nvel
Estrutural
Portas
Lgicas
switch
A modelagem de sistemas atravs do System Generator representa o nvel mais alto de abstrao no
fluxo de projeto apresentado na Figura 2. O System Generator estende as funcionalidades do
Simulink para possibilitar o desenvolvimento de projetos de hardware atravs da gerao
automtica de cdigo VHDL. Atravs do System Generator tambm possvel acionar todas as
ferramentas do fluxo de projeto apresentado na Figura 2. Alm da abstrao de funes aritmticas
e de funcionalidades complexas, atravs do acesso a bibliotecas de IP Cores, vale destacar ainda
que o System Generator possibilita acessar recursos bsicos da FPGA, como as primitivas e os
componentes embarcados. Por este motivo, quanto mais se conhece da arquitetura do chip utilizado
maior ser a possibilidade de se obter projetos mais otimizados e de melhor desempenho.
De acordo com a Xilinx, a idia do System Generator no substituir o desenvolvimento de
projetos em HDL, mas sim focar o desenvolvimento de partes crticas relacionadas tipicamente ao
processamento de sinais. Nas partes do projeto onde se envolvem interfaces externas e
gerenciamento interno de clock, deve ser utilizado o HDL. Uma vantagem do System Generator a
possibilidade de importar mdulos HDL em seus projetos, o que torna possvel um alto nvel de
integrao e reuso de cdigos em HDL diretamente em System Generator. Outro aspecto do System
Generator a possibilidade de gerao automtica de testbench para simulao HDL (incluindo
vetores de teste) e a gerao de netlists para serem utilizados como componentes em projetos
desenvolvidos em HDL. Finalmente, um recurso muito til a co-simulao em hardware atravs
de interfaces tais como GigaBit Ethernet, PCI e JTAG (Cabo Paralelo IV e Plataforma USB). Este
recurso de co-simulao tambm denominado de FPGA Hardware in the Loop porque
possibilita rodar o projeto em hardware sob o controle do Simulink, disponibilizando todo o
potencial do Matlab/Simulink para anlise e visualizao de dados.
[0, 2
Pb
)]
2 Nb 1
[ 2
Pb
)]
2 Nb1 , 2 Pb 2 Nb1 1
com passo 2 Pb . Por exemplo, Fix_4_0 representa os valores -8, -7, -6, , 0, 1, 2, , 7 enquanto
Fix_4_2 representa os valores -2, -1.75, -1.5, , 0, 0.25, 0.5, , 1.75. Observe que o nmero de
bits Nb aumenta a faixa de valores da representao numrica enquanto que o fator de escala Pb
aumenta a preciso dessa mesma representao.
Uma vantagem da notao complemento de 2 est na possibilidade da utilizao do mesmo circuito
de adio para se implementar a subtrao. Para mais informaes sobre este tpico veja a pgina
http://en.wikipedia.org/wiki/2%27s_complement.
Inverte e soma 1
0
0000
1111
0000
0001
1110
-1
1111
0010
1101
-2
1110
0011
1100
-3
1101
0100
1011
-4
1100
0101
1010
-5
1011
0110
1001
-6
1010
0111
1000
-7
1001
1000
0111
-8
1000
Figura 4. Obteno do nmero negativo a partir do positivo na representao complemento de 2 com quatro bits.