Você está na página 1de 24

FPGA & VHDL

Tutorial

2009-2
FPGA – Field Programmable Gate Array
 Dispositivo lógico contendo uma matriz de:
 Células lógicas genéricas
 Configuráveis (“programadas”) para desempenhar uma
função simples
 Chaves programáveis
 Interconectam as células segundo uma configuração
 Implementação de um projeto:
 Especificação da função de cada célula
 Configuração da conexão de cada chave
 Configuração de uma FPGA:
 Síntese do projeto
 Arquivo de configuração enviado para FPGA por cabo
 Processo feito “em campo” (Field), invés de “em fábrica”
Estrutura Conceitual
Célula Lógica Conceitual
 Exemplo: célula baseada em look-up table (LUT) de 3 entradas
Exemplo:

Diagrama conceitual LUT = a ⊕ b ⊕ c


Exemplos de Arquiteturas Reais

Podem
Podem possuir
possuir módulos
módulos
dedicados
dedicados ee mais
mais avançados
avançados
(macro
(macro células)
células)
Algumas Aplicações
 Processamento de sinais digitais (DSP)
 Sistemas embarcados (embedded)
 Ex.: Aeroespaciais, de defesa, reconhecimento de voz
 Prototipagem de ASICs
 Application Specific Integrated Circuit
 Computação de alto desempenho – aceleração
 Alto paralelismo das FPGAs vs. CPUs
 Ex.: clock = 500MHz, 100 instruções de FPU por ciclo
 Configuração flexível da precisão dos cálculos de FPU vs.
precisão fixa das CPUs
 Nova área: “Computação Reconfigurável”
 Tarefas custosas realocadas do software (CPUs) p/ FPGAs
 Ex: cálculos de FFT, convolução etc.
Projeto e Programação
 Independem do CI:
 (1) Projeto do sistema:
arquivos VHDL
 (2) Desenvolvimento do
teste
 Dependem do CI:
 (3) Síntese
 Gera componentes
genéricos (portas e flip-
flops)
 (3) Implementação
 Conexões de E/S do CI
com os periféricos
 (4) Geração e
transferência do arquivo
de configuração
Projeto e Programação

1º) Definição do comportamento da FPGA


 Projeto esquemático (gráfico)
 Linguagens de descrição de hardware (HDL –
Hardware Description Language)
 Descrição formal de circuitos digitais
 Operação, design e organização
 Teste de funcionamento por simulação (circuitos
testbench)
 Pricipais:
 VHDL (Very-high-speed integrated circuit HDL)
 Verilog
Projeto e Programação
 Linguagens HDL
 Exemplo de código VHDL
--
-- import
import std_logic
std_logic from
from the
the IEEE
IEEE library
library
library
library IEEE;
IEEE;
use
use IEEE.std_logic_1164.all;
IEEE.std_logic_1164.all;

--
-- this
this is
is the
the entity
entity
entity
entity ANDGATE
ANDGATE is
is
port
port ((
IN1
IN1 :: in
in std_logic;
std_logic;
IN2
IN2 :: in
in std_logic;
std_logic;
OUT1:
OUT1: out std_logic);
out std_logic);
end
end ANDGATE;
ANDGATE;

architecture
architecture RTL
RTL of
of ANDGATE
ANDGATE is
is
begin
begin
OUT1
OUT1 <=
<= IN1
IN1 and
and IN2;
IN2;
end
end RTL;
RTL;
Projeto e Programação

 2º) Geração de uma netlist por uma


ferramenta de EDA (Electronic Design
Automation)
 Netlist: Descreve a conectividade de um circuito
 Componentes
 Portas
 Pinos
 Etc.
Projeto e Programação
 3º) Processo de Place-and-Route
 Ajuste da netlist à arquitetura verdadeira da
FPGA
 Normalmente feito por um software proprietário
do fabricante da FPGA
 4º) Validação do mapeamento por análise
temporal, simulação etc.
 5º) Geração do arquivo binário
 6º) Configuração da FPGA pela transferência
do arquivo binário
 Interface serial – protocolo JTAG
Famílias 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: lógica de alto desempenho; LXT: conectividade serial de baixa
potência
 SXT: DSP e uso intenso de memória
 Etc.
Placas Didáticas – Spartan-3E Starter Kit

FPGA:
FPGA:
Spartan
Spartan 3E
3E
Placas Didáticas – Diligent Nexys 2

Diagrama em blocos da placa


Programação da FPGA

Dispositivos de E/S
Placas Didáticas – Diligent Nexys 2
Dispositivos de E/S e circuitos
Nível
Nível do
do projeto:
projeto: portas
portas (gate-level
(gate-level design)
design)
VHDL:
CKTs combinacionais
Comparador de 1 bit

i0 i1 eq
0 0 1
0 1 0
1 0 0
1 1 1

eq = i 0 ⋅ i1 + i 0 ⋅ i1
VHDL: CKTs combinacionais

Descrição
Descrição estrutural
estrutural
Testbench
Operações
Operações
executadas
executadas
sequencialmente
sequencialmente
VHDL
 Conexões do circuito
 Atribuições concorrentes de sinal

Condicional
Condicional Selecionada
Selecionada
VHDL
 Conexões do circuito
 Atribuições concorrentes de sinal

case
case

if
if
VHDL: CKTs sequenciais
Flip-Flop D
Flip-Flop D
Testbench
Testbench
VHDL: CKTs sequenciais
Registrador
Registrador de
de
deslocamento
deslocamento
VHDL: CKTs sequenciais
Contador
Contador binário
binário Testbench
Testbench
VHDL: CKTs sequenciais
Contador
Contador módulo-m
módulo-m Testbench
Testbench

Clock
Clock da da placa:
placa:
FF == 50
50 MHz; TT == 20
MHz; 10-9-9ss
20 xx 10
Para
Para TT == 0,5
0,5 s:
s:
mm == 25.000.000
25.000.000
25, pois
nn == 25, pois 2225
25 =
= 33.554.432
33.554.432

Você também pode gostar