FPGA & VHDL Tutorial 2009-2
FPGA FieldProgrammableGateArray 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 possuir módulos dedicados e mais avançados (macro 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 flipflops) (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 std_logic from the IEEE library library IEEE; use IEEE.std_logic_1164.all; -- this is the entity entity ANDGATE is port ( IN1 : in std_logic; IN2 : in std_logic; OUT1: out std_logic); end ANDGATE; architecture RTL of ANDGATE is begin OUT1 <= IN1 and IN2; end 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: Spartan 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
VHDL: CKTs combinacionais Nível do projeto: portas (gate-level design) Comparador de 1 bit i0 i1 eq 0 0 1 0 1 0 1 0 0 1 1 1 eq = i0 i1 + i0 i1
VHDL: CKTs combinacionais Descrição estrutural
Testbench Operações executadas sequencialmente
VHDL Conexões do circuito Atribuições concorrentes de sinal Condicional Selecionada
VHDL Conexões do circuito Atribuições concorrentes de sinal case if
VHDL: CKTs sequenciais Flip-Flop D
VHDL: CKTs sequenciais Testbench Registrador de deslocamento
VHDL: CKTs sequenciais Contador binário Testbench
VHDL: CKTs sequenciais Contador módulo-m Testbench Clock da placa: F = 50 MHz; T = 20 x 10-9 -9 s Para T = 0,5 s: m = 25.000.000 n = 25, pois 2 25 25 = 33.554.432