Anda di halaman 1dari 0

IE-344B - Tpicos em Comunicaes

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 serial-
paralelo 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.

Figura 1. Slice unidade lgica bsica da famlia Virtex.

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 mape-
los 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.
Finalizadas as etapas de traduo, mapeamento, posicionamento e roteamento (place and route),
obtm-se um arquivo binrio que pode ser baixado diretamente no dispositivo, atravs de uma
interface JTAG, para a sua configurao. As demais etapas do fluxo de projeto consistem
basicamente em simulaes (do HDL e do Netlist) e no debug do dispositivo por meio de um
analisador lgico. Vale destacar que as simulaes podem refletir o funcionamento do circuito de
forma bastante realista atravs da realimentao de informaes de timing pelo Timing Analizer
geradas aps a etapa Place & Route.

Capt ura de
Esquemt ico
Snt ese
Bibliot ecas
HDL
Netlist
Simulao
Vetores de teste
Traduo
Mapeament o
Fit t ing
Place & Rout e
Download
Timing Analyzer
Back-Annot at ion
device
Placa de Circuito Impresso
Debug de
Sistema
Verificao
Especificao Modelagem de Sistema
Implementao
Out
In
Out
In I_In
Q_In
I_Out
Q_Out
Error
DHAT
Coeff
T_2 FSE
Symbols
Resource
Estimator
sysgen d q
z
-1
sysgen d q
z
-1
I_Out
Q_Out
Interpolation
Syst em
Generat or
Verif icao
em circuit o

Figura 2. Fluxo de projeto de uma FPGA.

RTL
Boolean
Loops
Processos
Portas
Lgicas
switch
Nvel
Comportamental
(Algoritmo)
Nvel
Funcional
Nvel
Estrutural

Figura 3. Nveis de abstrao possveis atravs de uma linguagem HDL.
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 J TAG (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.

Representao em Ponto Fixo
O System Generator lida com sinais a partir de uma representao em ponto fixo, com ou sem sinal
e com ponto binrio. Na representao com sinal utilizada a notao complemento de 2. Nesta
notao, o nmero negativo obtido invertendo-se os bits do nmero positivo e em seguida
somando-se 1. Este procedimento mostrado na Figura 4 para representaes com quatro bits.
Observe que a soma de um nmero positivo pelo seu complemento de 2 vai dar sempre zero se for
descartado o vai um que excede o comprimento em bits da palavra. Por exemplo, +3 +(-3) =
0011 +1101 =10000. Observe ainda a partir do exemplo da Figura 4 que os limites +8 e 8 tm a
mesma representao, resultando que apenas um deles deve ser mantido na faixa de valores
possveis. Neste caso, o nmero 1000 includo como 8 porque o bit mais significativo 1. Desta
forma, note que o bit mais significativo pode ser utilizado para indicar o sinal do valor: 0 para
positivo e 1 para negativo.
Na representao em ponto fixo do System Generator, utiliza-se tambm um fator de escala em
potncia de 2, chamado ponto binrio (Pb), que possibilita a representao de nmeros reais com
preciso finita. Neste caso, vale a seguinte equao:
inteiro 2 real valor =
Pb
.
O System Generator define dois tipos bsicos Ufix_Nb_Pb e Fix_Nb_Pb, onde Nb o nmero de
bits e Pb o ponto binrio. Ufix representa um tipo sem sinal, enquanto Fix representa um tipo com
sinal. Para o tipo Ufix_Nb_Pb a faixa de valores possveis
( ) [ ] 1 2 2 , 0
Nb Pb

com passo
Pb
2 . Por exemplo, Ufix_4_0 representa os valores 0, 1, 2, , 15 enquanto Ufix_4_2
representa os valores 0, 0.25, 0.5, , 3.75. Para o tipo Fix_Nb_Pb a faixa de valores
( ) [ ] 1 2 2 , 2 2
1 1

Nb Pb Nb Pb

com passo
Pb
2 . 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.

0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
0 0000
-1 1111
-2 1110
-3 1101
-4 1100
-5 1011
-6 1010
-7 1001
-8 1000
0 1111
1 1110
2 1101
3 1100
4 1011
5 1010
6 1001
7 1000
8 0111
Inverte e soma 1

Figura 4. Obteno do nmero negativo a partir do positivo na representao complemento de 2 com quatro bits.

Anda mungkin juga menyukai