laborg_parte4

Propaganda
LABORG
Parte 4 - Introdução a FPGAs
Fernando Gehm Moraes
César Augusto Missio Marcon
Ney Laert Vilar Calazans
21/setembro/2009
Teoria – Estrutura de FPGAs
O Que São FPGAs?
Projeto e Implementação de
Produtos Tecnológicos Baseados
em Circuitos Eletrônicos
FPGAs permitem
implementar
circuitos digitais
diretamente de
HDLs, sem os
custos de fabricação
de chips
Sem Projeto de
Dispositivos
Sistemas
computacional
programável
(e.g. PC)
Sistema digital
dedicado,
programável
(microcontroladores
e/ou DSPs)
Com Projeto de
Dispositivos
Chip Sets
Dispositivos
personalizáveis
(FPGAs e CPLDs)
Dispositivos
projetados
e fabricados
sob encomenda
ASIC (gate-arrays
ou standard cells)
TECNOLOGIA
Aumento de desempenho (maior velocidade e menor potência dissipada), sigilo de projeto, custo de desenvolvimento
Diminuição da complexidade de projeto
Fernando Moraes / César Marcon / Ney Calazans
3
FPGAs – Conceitos Básicos
• Matriz de CLBs (configurable logic blocks) interconectados
por matrizes de chaveamento
Switch
ES
ES
ES
Blocks:
Entrada/Saída
Configuráveis
Conexões
Configuráveis
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
ES
ES
ES
ES
Fernando Moraes / César Marcon / Ney Calazans
ES
ES
ES
ES
ES
Funções
Booleanas
Configuráveis
4
FPGAs – Conceitos Básicos
• Exemplo de conexão entre duas redes
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Bloco K
Fernando Moraes / César Marcon / Ney Calazans
5
FPGAs – Configuração (RAM-based)
• FPGA deve ser visto como “duas camadas”
– Memória de configuração
– Lógica do usuário
• Memória de configuração define:
– Toda a fiação da lógica do usuário
User Logic Layer
– Definição das funções lógicas (LUTs)
– Interface externas e internas (mproc)
– Configuração de memórias
Configuration Memory Layer
– Conteúdo de memórias
– Configuração dos pinos de E/S
Virtex 4: memória de configuração entre 1 MB – 4 MB
Fernando Moraes / César Marcon / Ney Calazans
6
Tecnologias de Configuração
Algumas das diferentes tecnologias usadas para definir o
comportamento de um FPGA:
• Antifusível
Configuração uma única vez
• (E)EPROM
Configuração um número limitado de vezes,
mantida com o chip desconectado da alimentação
• SRAM
Configuração deve ser realizada cada vez que o
FPGA for alimentado
Fernando Moraes / César Marcon / Ney Calazans
7
LUT – O Gerador Universal de Funções
• LUT - look-up table
– Uma porção de hardware configurável/reconfigurável capaz de
implementar qualquer tabela verdade de n entradas
– Para n=4:
4
(2)
2
= 65.536 funções implementáveis
– LUT
» Altamente flexível
» Método mais utilizado (Xilinx e Altera)
Fernando Moraes / César Marcon / Ney Calazans
8
FPGAs – LUT – O Gerador Universal de Funções
Implementação física de uma LUT4
1
0
0
0
1
0
Tabela verdade
da função é
armazenada em
um memória
durante a
configuração do
FPGA
0
0
F( A, B, C, D) = A.B.C.D + A.C.D + A.D
1
F( A, B, C, D) =  (0, 3, 7, 8,10,12,14)
1
0
1
0
1
0
1
0
As entradas (variáveis
Booleanas) controlam
um multiplexador 2n:1
Fernando Moraes / César Marcon / Ney Calazans
15
ABCD
Considerando 150 transistores / LUT
Para 50.000 LUTS  7.500.000 transistores !
9
Mercado de FPGAs
Lattice
15%
Actel
6%
Xilinx
42%
Principais 4 Vendedores (2000)
Altera
37%
http://www.yeald.com/Yeald/a/17251/pld_market_shares.html
Fernando Moraes / César Marcon / Ney Calazans
10
Dispositivos XILINX
• Baixo Custo
– Famílias Spartan3 e Spartan2
– 1 milhão de portas lógicas equivalentes por menos de 10 US$!
• Alto desempenho
– Família Virtex
– Virtex II, Virtex II-Pro, Virtex IV, Virtex V
Fernando Moraes / César Marcon / Ney Calazans
11
Arquitetura Virtex II
Active Interconnect ™
CLBs
Switch
Matrix
Slice S3
CLB,
IOB,
DCM
Slice S2
Switch
Matrix
• Fully Buffered
• Fast, Predictable
Slice S0
BRAM
Block RAM
• 18KBits True Dual Port
• Up to 3.5Mbits / device
Fernando Moraes / César Marcon / Ney Calazans
Slice S1
Multiplicadores
• 18b x 18b mult
• 200MHz pipelined
• 8 LUTs
• Logic (primary use)
• 128b distributed RAM
• Shift registers
• Wide Input functions (32:1)
12
TRISTATE BUSSES
– Lógica de vai-um
•
Matrix de conexão
– CLB às linhas de
roteamento
•
CARRY
CARRY
SINGLE
Conexões diretas entre
CLBs vizinhas
LONG
•
HEX
Arquitetura Virtex II – CLB e Interconexão
LONG
LONG
HEX
HEX
SWITCH
MATRIX
SINGLE
SINGLE
Linhas de roteamento
– Simples
– Hexas
SINGLE
DIRECT
CONNECT
HEX
– Tri-state
LONG
– Longas
SLICE
SLICE
DIRECT
CONNECT
Local
Feedback
Fernando Moraes / César Marcon / Ney Calazans
CARRY
CARRY
CLB
13
Arquitetura do CLB do Dispositivo VIRTEX-II
Slice
• Fast Carry Logic Path
• Provides fast arithmetic add and sub
Slice
Slice
RESUMINDO O CLB
• 4 Slices
• 8 LUTS / 8 Flip-Flops
• 2 cadeias de vai-um
• 64 bits para memória
• 64 bits para shift-register
Fernando Moraes / César Marcon / Ney Calazans
Slice
14
Arquitetura – Metade de um Slice
Fernando Moraes / César Marcon / Ney Calazans
15
Virtex2P XC2VP7
FPGA Editor View With All Wires
Virtex2P XC2VP7
4,928 slices
44 BRAMs
1 PowerPC
11,627 logic sites
2,653 tiles
1,423,681 wires
544,549 segments
Fernando Moraes / César Marcon / Ney Calazans
16
Virtex2P XC2VP7
FPGA Editor View With All Wires
Zoom de um CLB do
canto superior
esquerdo
Muitos recursos de
roteamento
Grande caixa de
conexões (switch box)
4 slices e 2 TBUFs
Fernando Moraes / César Marcon / Ney Calazans
17
Virtex2P XC2VP7
Visão do software FPGA Editor com todos os fios
Slice da Família
Virtex2Pro
2 LUTs
2 flip-flops
Vários muxs
Lógica de vai-um
dedicada
Fernando Moraes / César Marcon / Ney Calazans
18
XC2VP7 Virtex-II Pro FPGA
• Layout do XC2VP7
Power PC
DCM (clock manager)
MGTs (gigabit transceiver)
Fernando Moraes / César Marcon / Ney Calazans
19
Demais Componentes de FPGA Moderno (1/2)
• Gerenciamento de clock
– Reduz escorregamento de relógio
– Permite multiplicar, dividir, mudar a fase da(s) freqüências de
entrada
– Implementações digitais (DCM – Xilinx) e analógica (PLL –
Altera)
• Blocos de memória embarcada
– Tipicamente blocos de 18kbits
• Blocos DSP
– Multiplicadores 18x18 para funções de imagem, áudio,
telecomunicações
Fernando Moraes / César Marcon / Ney Calazans
20
Demais Componentes de FPGA Moderno (2/2)
• Processadores embarcados do tipo hard macro
– Xilinx disponibiliza o processador PowerPC (clock de 300-500MHz)
– Podem executar sistemas operacionais embarcados como Linux
• Transceptores Gigabit
– Blocos serializadores / deserializadores para receber dados em
altas taxas de transmissão
– Virtex-4 é capaz de receber e transmitir dados em freqüências de
3.2 Gbps usando dois fios.
• Outros
– Ethernet MAC
– Criptografia do bitstream
– Controle para reconfiguração interna (de dentro do FPGA - ICAP)
Fernando Moraes / César Marcon / Ney Calazans
21
Prática – Trabalhando com
FPGAs
Utilizando o FPGA Para Prototipação
1. Abaixo aparece um circuito somador baseado naquele visto na
Aula 1, que deve ser prototipado nesta aula:
library IEEE;
use IEEE.Std_Logic_1164.all;
use IEEE.std_logic_unsigned.all;
-- Nova linha
entity somador is
port ( A, B: in std_logic_vector(3 downto 0);
Soma: out std_logic_vector(3 downto 0)
);
end somador;
architecture comp of somador is
begin
Soma <= A + B;
-- Soma de dois vetores de N bits
end comp;
Fernando Moraes / César Marcon / Ney Calazans
23
Onde as Entradas e Saídas se Conectam? (1/3)
Placas de prototipação têm recursos de entrada e saída:
LEDs, chaves, displays, teclado, serial, USB, Ethernet...
Soma(3 downto 0)
A(3 downto 0);
Fernando Moraes / César Marcon / Ney Calazans
B(3 downto 0);
24
Onde as Entradas e Saídas se Conectam? (2/3)
Um arquivo relaciona as
entradas e saídas do
VHDL com os recursos
da placa
Este arquivo se chama
UCF (user constraint
file)
2. Abrir o arquivo:
Nexys_rm.pdf
Ir na página 5 e achar
figura ao lado
Fernando Moraes / César Marcon / Ney Calazans
25
Onde as Entradas e Saídas se Conectam? (3/3)
3. Criação do arquivo UCF – Arquivo define relação entre nome de
fio/pino em VHDL e pino físico do FPGA
### UCF DO PROJETO SOMADOR DE 4 BITS
NET "A<0>"
NET "A<1>"
NET "A<2>"
NET "A<3>"
LOC = "L15"
LOC = "M16"
LOC = "M15"
LOC = "N16"
; # Bit 0 do vetor A
;# Bit 1 do vetor A
;# Bit 2 do vetor A
;# Bit 3 do vetor A
NET "B<0>"
NET "B<1>"
NET "B<2>"
NET "B<3>"
LOC = "N15"
LOC = "J16"
LOC = "K16"
LOC = "K15"
;
;
;
;
NET "Soma<0>"
NET "Soma<1>"
NET "Soma<2>"
NET "Soma<3>"
LOC = "N14"
LOC = "M13"
LOC = "P14"
LOC = "R16"
;
;
;
;
Soma(3 downto 0)
A(3 downto 0);
Fernando Moraes / César Marcon / Ney Calazans
B(3 downto 0);
26
Ambiente de Síntese: ISE
4. Criar um diretório, colocando neste os arquivos VHDL (soma.vhd) e
o arquivo UCF (soma.ucf)
5. Abrir a ferramenta ISE(
New Project), como abaixo:
) e criar um novo projeto (File 
Cuidado: Não
podem haver
espaços em branco
no nome do
caminho para o
projeto, nem no
nome do projeto
Fernando Moraes / César Marcon / Ney Calazans
27
Definição do FPGA da Placa de Prototipação
6. Para a placa que estamos trabalhando, o FPGA é um dispositivo
da família Spartan3, escolher na janela como abaixo:
Características do
dispositivo FPGA
Fernando Moraes / César Marcon / Ney Calazans
28
Inclusão dos Fontes
7. A próxima janela é para criar arquivos-fonte novos, selecionar Next
8. A próxima janela é para inclusão dos fontes, incluir
Copia para o diretório do ISE e
preserva os arquivos originais
• Ao final há um resumo do projeto
(com detecção da função do UCF):
Fernando Moraes / César Marcon / Ney Calazans
29
Ambiente ISE – Browser do Projeto
9. Se todos os passos de criação foram corretamente seguidos,
deve-se ter:
Top do projeto
Fernando Moraes / César Marcon / Ney Calazans
30
Passo 1 da Síntese: Síntese Lógica
Transforma o VHDL em portas lógicas
10. Para executar, dá-se duplo click em “Synthesize XST”
– Ao final tem-se o relatório no lado direito
6 LUTs
de 3840
12 entradas
Fernando Moraes / César Marcon / Ney Calazans
31
Passo 2 da Síntese: Síntese Física
Realiza o posicionamento e as conexão no FPGA
11. Dar duplo click em “Implement Design”
12. Em seguida, dar duplo click em “Generate Programming File”
Fernando Moraes / César Marcon / Ney Calazans
32
Visualização no FPGA
13. Selecionar FPGA Editor ,
executar o programa e
visualizar o “layout”
gerado automaticamente
pelo processo de síntese
6 LUTs (em três SLICES)
Fernando Moraes / César Marcon / Ney Calazans
33
Baixar para o FPGA (1/3)
14. Executar o software ExPort (
), ligar a placa, conectar o
cabo USB e inicializar a cadeia. Resultado aparece abaixo.
Fernando Moraes / César Marcon / Ney Calazans
34
Baixar para o FPGA (2/3)
15. Marcar a check-box do chip de denominado XCF02S (para não programar ele
ao programar o FPGA, ou seja fazer um bypass do XCF02S). O resultado é:
Fernando Moraes / César Marcon / Ney Calazans
35
Baixar para o FPGA (3/3)
16. Clicar na opção Browse ao lado do FPGA (ícone de nome XC3S200)
e achar/selecionar o arquivo de nome somador.bit, gerado pela
síntese. Em seguida escolha a opção Program Chain. Pronto!
Fernando Moraes / César Marcon / Ney Calazans
36
TRABALHO A FAZER
• Note que este somador não tem “vai-um”. Seu trabalho é
acrescentar o cálculo do vai-um no circuito.
• Uma sugestão de modificação de código para incluí-lo:
– A saída “Soma” ser modificada para 5 bits
– Declarar dois sinais internos ‘AA’ e ‘BB’, ambos de 5 bits
– Antes de fazer a “Soma <= AA + BB”, criar ‘AA’ e ‘BB’ através de
uma concatenação com ‘0’ à esquerda:
AA <= ‘0’ & A;
VHDL
-- o símbolo & significa concatenação em
– Modifique o UCF para o LED3 ser associado ao vai-um gerado (o
quinto bit da soma.
Fernando Moraes / César Marcon / Ney Calazans
37
A ENTREGAR
1. O projeto ISE completo gerado com o cálculo do vai-um
acrescentado e mostrando em um LED da placa o resultado
da soma e o vai-um resultante.
2. No dia limite de entrega, o projeto deve ser apresentado
funcionando para o professor da disciplina.
3. Data Final de Entrega: 05/10/2009, até o fim do dia, via moodle
4. Aguardam possíveis acréscimos ao trabalho na aula seguinte
Fernando Moraes / César Marcon / Ney Calazans
38
Download