LABORG Parte 4 Introduo a FPGAs Fernando Gehm
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 ES Bloco K ES ES ES Fernando Moraes / César Marcon / Ney Calazans ES ES ES Funções Booleanas Configuráveis 4
FPGAs – Conceitos Básicos • Exemplo de conexão entre duas redes 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 – Conteúdo de memórias Configuration Memory Layer – 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 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 LUT 4 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. D 1 F( A, B, C, D) = å (0, 3, 7, 8, 10, 12, 14) 1 0 1 0 As entradas (variáveis Booleanas) controlam um multiplexador 2 n: 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 Spartan 3 e Spartan 2 – 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 S 3 CLB, IOB, DCM Slice S 2 Switch Matrix • Fully Buffered • Fast, Predictable Slice S 0 BRAM Block RAM • 18 KBits True Dual Port • Up to 3. 5 Mbits / device Fernando Moraes / César Marcon / Ney Calazans Slice S 1 Multiplicadores • 18 b x 18 b mult • 200 MHz pipelined • 8 LUTs • Logic (primary use) • 128 b distributed RAM • Shift registers • Wide Input functions (32: 1) 12
Arquitetura Virtex II – CLB e Interconexão • Conexões diretas entre CLBs vizinhas – Lógica de vai-um • Matrix de conexão – CLB às linhas de roteamento • Linhas de roteamento – Simples – Hexas – Longas – Tri-state Fernando Moraes / César Marcon / Ney Calazans DIRECT CONNECT 13
Arquitetura do CLB do Dispositivo VIRTEX-II Slice • Fast Carry Logic Path • Provides fast arithmetic add and sub 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
Virtex 2 P XC 2 VP 7 FPGA Editor View With All Wires Virtex 2 P XC 2 VP 7 4, 928 slices 44 BRAMs 1 Power. PC 11, 627 logic sites 2, 653 tiles 1, 423, 681 wires 544, 549 segments Fernando Moraes / César Marcon / Ney Calazans 16
Virtex 2 P XC 2 VP 7 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
Virtex 2 P XC 2 VP 7 Visão do software FPGA Editor com todos os fios Slice da Família Virtex 2 Pro 2 LUTs 2 flip-flops Vários muxs Lógica de vai-um dedicada Fernando Moraes / César Marcon / Ney Calazans 18
XC 2 VP 7 Virtex-II Pro FPGA • Layout do XC 2 VP 7 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 18 kbits • Blocos DSP – Multiplicadores 18 x 18 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 Power. PC (clock de 300 -500 MHz) – 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 = "L 15" LOC = "M 16" LOC = "M 15" LOC = "N 16" ; # 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 = "N 15" LOC = "J 16" LOC = "K 15" ; ; NET "Soma<0>" NET "Soma<1>" NET "Soma<2>" NET "Soma<3>" LOC = "N 14" LOC = "M 13" LOC = "P 14" LOC = "R 16" Fernando Moraes / César Marcon / Ney Calazans ; ; Soma(3 downto 0) A(3 downto 0); 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 Spartan 3, 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 Ex. Port ( ), 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 XCF 02 S (para não programar ele ao programar o FPGA, ou seja fazer um bypass do XCF 02 S). 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 XC 3 S 200) 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 LED 3 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
- Slides: 38