A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Parte 4 - Introdução a FPGAs

Apresentações semelhantes


Apresentação em tema: "Parte 4 - Introdução a FPGAs"— Transcrição da apresentação:

1 Parte 4 - Introdução a FPGAs
LABORG Parte 4 - Introdução a FPGAs Fernando Gehm Moraes César Augusto Missio Marcon Ney Laert Vilar Calazans 21/setembro/2009

2 Teoria – Estrutura de FPGAs

3 Sem Projeto de Dispositivos Com Projeto de Dispositivos
O Que São FPGAs? FPGAs permitem implementar circuitos digitais diretamente de HDLs, sem os custos de fabricação de chips Projeto e Implementação de Produtos Tecnológicos Baseados em Circuitos Eletrônicos Sem Projeto de Dispositivos Com Projeto de Dispositivos Chip Sets Sistema digital dedicado, programável (microcontroladores e/ou DSPs) Sistemas computacional programável (e.g. PC) Dispositivos personalizáveis (FPGAs e CPLDs) Dispositivos projetados e fabricados sob encomenda ASIC (gate-arrays ou standard cells) Aumento de desempenho (maior velocidade e menor potência dissipada), sigilo de projeto, custo de desenvolvimento TECNOLOGIA Diminuição da complexidade de projeto

4 FPGAs – Conceitos Básicos
Matriz de CLBs (configurable logic blocks) interconectados por matrizes de chaveamento Switch Blocks: ES ES ES Entrada/Saída Configuráveis Bloco K Bloco K Bloco K ES ES Conexões Configuráveis Bloco K Bloco K Bloco K ES ES Bloco K Bloco K Bloco K ES ES Funções Booleanas Configuráveis ES ES ES

5 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

6 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 Definição das funções lógicas (LUTs) Interface externas e internas (mproc) Configuração de memórias Conteúdo de memórias Configuração dos pinos de E/S Configuration Memory Layer User Logic Layer Virtex 4: memória de configuração entre 1 MB – 4 MB

7 Tecnologias de Configuração
Algumas das diferentes tecnologias usadas para definir o comportamento de um FPGA: Antifusível (E)EPROM SRAM Configuração uma única vez Configuração um número limitado de vezes, mantida com o chip desconectado da alimentação Configuração deve ser realizada cada vez que o FPGA for alimentado

8 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: LUT Altamente flexível Método mais utilizado (Xilinx e Altera) 2 (2) 4 = funções implementáveis

9 FPGAs – LUT – O Gerador Universal de Funções
Implementação física de uma LUT4 D A C B F . ) , ( + = å 14 12 10 8 7 3 As entradas (variáveis Booleanas) controlam um multiplexador 2n:1 15 1 Tabela verdade da função é armazenada em um memória durante a configuração do FPGA A B C D Considerando 150 transistores / LUT Para LUTS  transistores !

10 Principais 4 Vendedores (2000)
Mercado de FPGAs Xilinx 42% Altera 37% Lattice 15% Actel 6% Principais 4 Vendedores (2000)

11 Dispositivos XILINX Baixo Custo Alto desempenho
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

12 Arquitetura Virtex II Active Interconnect ™ CLBs Block RAM
Switch Matrix CLB, IOB, DCM Switch Matrix Slice S3 Slice S2 Slice S1 Fully Buffered Fast, Predictable Slice S0 BRAM 8 LUTs Logic (primary use) 128b distributed RAM Shift registers Wide Input functions (32:1) The Virtex-II PRO will be based on the industry leading fabric of the Virtex-II family, which includes: Active Interconnect™ technology for fast, predictable routing delays due to the fully buffered, segmented routing architecture Memory rich architecture with True Dual Port embedded memory (BRAM) in 18Kbit blocks 18bx18b multipliers operating at 200+MHz pipelined And a feature rich CLB architecture optimized for wide input functions and supporting up to 128 bits of distributed RAM per CLB. Block RAM Multiplicadores 18KBits True Dual Port Up to 3.5Mbits / device 18b x 18b mult 200MHz pipelined

13 Arquitetura Virtex II – CLB e Interconexão
DIRECT CONNECT 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 17

14 Arquitetura do CLB do Dispositivo VIRTEX-II
Slice Fast Carry Logic Path Provides fast arithmetic add and sub 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 Slice Slice Slice

15 Arquitetura – Metade de um Slice

16 Virtex2P XC2VP7 FPGA Editor View With All Wires
4,928 slices 44 BRAMs 1 PowerPC 11,627 logic sites 2,653 tiles 1,423,681 wires 544,549 segments Let’s look at a sample device. I’m going to pick a Virtex2P XC2VP7 for the sake of illustration, but the principles apply to other architectures as well. This device is relatively small, but it still includes nearly 5,000 slices, a bunch of BRAM, and a PowerPC. Since I’ve already introduced the notion of tiles, let’s zoom in on one of them.

17 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 This happens to be a CENTER tile. As you can see, it contains a mess of wiring, along with a big empty hold in the middle, called a switch box. That’s where most of the connections between wires occur. The tile also contains logic resources, in this case two tristate buffers and four slices. Let’s take a closer look at one of the slices.

18 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 The slice shows us the kinds of things that we would expect. Two LUTs, two flip-flops, some muxes, and some dedicated carry logic.

19 XC2VP7 Virtex-II Pro FPGA
Layout do XC2VP7 Power PC DCM (clock manager) MGTs (gigabit transceiver)

20 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

21 Demais Componentes de FPGA Moderno (2/2)
Processadores embarcados do tipo hard macro Xilinx disponibiliza o processador PowerPC (clock de 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)

22 Prática – Trabalhando com FPGAs

23 Utilizando o FPGA Para Prototipação
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;

24 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); B(3 downto 0);

25 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) Abrir o arquivo: Nexys_rm.pdf Ir na página 5 e achar figura ao lado

26 Onde as Entradas e Saídas se Conectam? (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>" LOC = "L15" ; # Bit 0 do vetor A NET "A<1>" LOC = "M16" ;# Bit 1 do vetor A NET "A<2>" LOC = "M15" ;# Bit 2 do vetor A NET "A<3>" LOC = "N16" ;# Bit 3 do vetor A NET "B<0>" LOC = "N15" ; NET "B<1>" LOC = "J16" ; NET "B<2>" LOC = "K16" ; NET "B<3>" LOC = "K15" ; NET "Soma<0>" LOC = "N14" ; NET "Soma<1>" LOC = "M13" ; NET "Soma<2>" LOC = "P14" ; NET "Soma<3>" LOC = "R16" ; A(3 downto 0); B(3 downto 0); Soma(3 downto 0)

27 Ambiente de Síntese: ISE
Criar um diretório, colocando neste os arquivos VHDL (soma.vhd) e o arquivo UCF (soma.ucf) Abrir a ferramenta ISE( ) e criar um novo projeto (File  New Project), como abaixo: Cuidado: Não podem haver espaços em branco no nome do caminho para o projeto, nem no nome do projeto

28 Definição do FPGA da Placa de Prototipação
Para a placa que estamos trabalhando, o FPGA é um dispositivo da família Spartan3, escolher na janela como abaixo: Características do dispositivo FPGA

29 Inclusão dos Fontes A próxima janela é para criar arquivos-fonte novos, selecionar Next 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):

30 Ambiente ISE – Browser do Projeto
Se todos os passos de criação foram corretamente seguidos, deve-se ter: Top do projeto

31 Passo 1 da Síntese: Síntese Lógica
Transforma o VHDL em portas lógicas 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

32 Passo 2 da Síntese: Síntese Física
Realiza o posicionamento e as conexão no FPGA Dar duplo click em “Implement Design” Em seguida, dar duplo click em “Generate Programming File”

33 Visualização no FPGA Selecionar FPGA Editor , executar o programa e visualizar o “layout” gerado automaticamente pelo processo de síntese 6 LUTs (em três SLICES)

34 Baixar para o FPGA (1/3) Executar o software ExPort ( ), ligar a placa, conectar o cabo USB e inicializar a cadeia. Resultado aparece abaixo.

35 Baixar para o FPGA (2/3) 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 é:

36 Baixar para o FPGA (3/3) 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!

37 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; o símbolo & significa concatenação em VHDL Modifique o UCF para o LED3 ser associado ao vai-um gerado (o quinto bit da soma.

38 A ENTREGAR 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. No dia limite de entrega, o projeto deve ser apresentado funcionando para o professor da disciplina. Data Final de Entrega: 05/10/2009, até o fim do dia, via moodle Aguardam possíveis acréscimos ao trabalho na aula seguinte


Carregar ppt "Parte 4 - Introdução a FPGAs"

Apresentações semelhantes


Anúncios Google