Você está na página 1de 24

FPGA & VHDL

Tutorial
2009-2

FPGA Field Programmable Gate Array


Dispositivo lgico contendo uma matriz de:
Clulas lgicas genricas
Configurveis (programadas) para desempenhar uma funo simples

Chaves programveis
Interconectam as clulas segundo uma configurao

Implementao de um projeto:
Especificao da funo de cada clula Configurao da conexo de cada chave

Configurao de uma FPGA:


Sntese do projeto Arquivo de configurao enviado para FPGA por cabo Processo feito em campo (Field), invs de em fbrica

Estrutura Conceitual

Clula Lgica Conceitual


Exemplo: clula baseada em look-up table (LUT) de 3 entradas
Exemplo:

Diagrama conceitual

LUT = a b c

Exemplos de Arquiteturas Reais

Podem possuir mdulos Podem possuir mdulos dedicados e mais avanados dedicados e mais avanados (macro clulas) (macro clulas)

Algumas Aplicaes
Processamento de sinais digitais (DSP) Sistemas embarcados (embedded)
Ex.: Aeroespaciais, de defesa, reconhecimento de voz

Prototipagem de ASICs
Application Specific Integrated Circuit

Computao de alto desempenho acelerao


Alto paralelismo das FPGAs vs. CPUs
Ex.: clock = 500MHz, 100 instrues de FPU por ciclo

Configurao flexvel da preciso dos clculos de FPU vs. preciso fixa das CPUs Nova rea: Computao Reconfigurvel
Tarefas custosas realocadas do software (CPUs) p/ FPGAs Ex: clculos de FFT, convoluo etc.

Projeto e Programao
Independem do CI:
(1) Projeto do sistema: arquivos VHDL (2) Desenvolvimento do teste

Dependem do CI:
(3) Sntese
Gera componentes genricos (portas e flipflops)

(3) Implementao
Conexes de E/S do CI com os perifricos

(4) Gerao e transferncia do arquivo de configurao

Projeto e Programao
1) Definio do comportamento da FPGA
Projeto esquemtico (grfico) Linguagens de descrio de hardware (HDL Hardware Description Language)
Descrio formal de circuitos digitais
Operao, design e organizao Teste de funcionamento por simulao (circuitos testbench)

Pricipais:
VHDL (Very-high-speed integrated circuit HDL) Verilog

Projeto e Programao
Linguagens HDL
Exemplo de cdigo VHDL
-- import std_logic from the IEEE library -- import std_logic from the IEEE library library IEEE; library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_1164.all; -- this is the -- this is the entity ANDGATE entity ANDGATE port ( port ( IN1 : IN1 : IN2 : IN2 : OUT1: OUT1: end ANDGATE; end ANDGATE; entity entity is is in std_logic; in std_logic; in std_logic; in std_logic; out std_logic); out std_logic);

architecture RTL of ANDGATE is architecture RTL of ANDGATE is begin begin OUT1 <= IN1 and IN2; OUT1 <= IN1 and IN2; end RTL; end RTL;

Projeto e Programao
2) Gerao de uma netlist por uma ferramenta de EDA (Electronic Design Automation)
Netlist: Descreve a conectividade de um circuito
Componentes Portas Pinos Etc.

Projeto e Programao
3) Processo de Place-and-Route
Ajuste da netlist arquitetura verdadeira da FPGA Normalmente feito por um software proprietrio do fabricante da FPGA

4) Validao do mapeamento por anlise temporal, simulao etc. 5) Gerao do arquivo binrio 6) Configurao da FPGA pela transferncia do arquivo binrio
Interface serial protocolo JTAG

Famlias de FPGAs Xilinx


Baixo custo Spartan/XL Spartan-II Spartan-IIE Spartan-3 Spartan-6 Alto desempenho Virtex Virtex-II Virtex-4 Virtex-5 Virtex-6
LX: lgica de alto desempenho; LXT: conectividade serial de baixa potncia SXT: DSP e uso intenso de memria Etc.

Placas Didticas Spartan-3E Starter Kit

FPGA: FPGA: Spartan 3E Spartan 3E

Placas Didticas Diligent Nexys 2

Diagrama em blocos da placa Programao da FPGA Dispositivos de E/S

Placas Didticas Diligent Nexys 2


Dispositivos de E/S e circuitos

VHDL: CKTs combinacionais


Comparador de 1 bit i0 i1 eq 0 0 1 1 0 1 0 1 1 0 0 1

Nvel do projeto: portas (gate-level design) Nvel do projeto: portas (gate-level design)

eq = i 0 i1 + i 0 i1

VHDL: CKTs combinacionais

Descrio estrutural Descrio estrutural

Testbench
Operaes Operaes executadas executadas sequencialmente sequencialmente

VHDL
Conexes do circuito
Atribuies concorrentes de sinal

Condicional Condicional

Selecionada Selecionada

VHDL
Conexes do circuito
Atribuies concorrentes de sinal

case case if if

VHDL: CKTs sequenciais


Flip-Flop D Flip-Flop D

VHDL: CKTs sequenciais


Registrador de Registrador de deslocamento deslocamento

Testbench Testbench

VHDL: CKTs sequenciais


Contador binrio Contador binrio Testbench Testbench

VHDL: CKTs sequenciais


Contador mdulo-m Contador mdulo-m Testbench Testbench

Clock da placa: Clock da placa: F = 50 MHz; T = 20 x 10-9 s F = 50 MHz; T = 20 x 10-9 s Para T = 0,5 s: Para T = 0,5 s: m = 25.000.000 m = 25.000.000 n = 25, pois 225 = 33.554.432 n = 25, pois 225 = 33.554.432

Você também pode gostar