1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email:...

22
1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: [email protected] URL: http://w3.ualg.pt/~jmcardo 2004/2005

Transcript of 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email:...

Page 1: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

1

Projecto de Hardware com FPGAs

Integração Hardware-Software

João M. P. CardosoEmail: [email protected]: http://w3.ualg.pt/~jmcardo

2004/2005

Page 2: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

2

FPGAs

FPGAs: Field-Programmable Logic Arrays Introduzidos no começo dos anos 80 Com crescente utilização Classe de dispositivos de Lógica

Programável Empresas representativas

Xilinx Inc. (www.xilinx.com) Altera Inc. (www.altera.com)

Page 3: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

3

FPGAs

Cada empresa tem um conjunto de FPGAs Exemplo Xilinx

Spartan-II Spartan-IIE Spartan-III Virtex Virtex-II Virtex-Pro Virtex-4 (nova)

Page 4: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

4

FPGAs

Estrutura genérica

Page 5: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

5

Exemplo: Spartan-IIE 1.8V FPGA Composto por 5 elementos principais:

IOBs permitem o interface entre os pinos do chip e a lógica interna

CLBs os elementos lógicos para construir funções

Blocos de RAM dedicados cada com 4096 bits

Interligações versáteis multi-nível Clock DLLs: para compensação do atraso

na distribuição do relógio e controlo do relógio

Page 6: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

6

Exemplo: Spartan-IIE 1.8V FPGA

Page 7: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

7

Exemplo: Spartan-IIE 1.8V FPGA

Cada CLB é constituído por dois Slices

LC: logic cell

Slice

Page 8: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

8

Exemplo: Spartan-IIE 1.8V FPGA

Geradores de funções: Implementados com 4-input

look-up tables (LUTs) LUTs: Além de poderem ser

utilizados para gerar funções: Cada LUT pode ser utilizado

como uma RAM síncrona de 16 x 1-bit s

2 LUTs num slice podem ser combinados para produzir 16 x 2-bit or 32 x 1-bit RAM síncrona,

Ou uma 16 x 1-bit RAM síncrona de duplo porto.

LUTs permitem implementar 16-bit shift registers rápidos

LUT: Look-Up Table

Page 9: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

9

Exemplo: Spartan-IIE 1.8V FPGA

Elementos de armazenamento podem ser configurados: Flip-flops tipo D ou latches. A entrada D pode vir de

geradores de funções no slice ou diretamente das entradas do slice

Adicionalmente aos sinais Clock e Clock Enable, cada slice tem sinais de set ou reset síncronos ou assíncronos.

Elementos de armazenamento

Page 10: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

10

Exemplo: Spartan-IIE 1.8V FPGA

Estrutura do CLB

Page 11: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

11

Exemplo: Spartan-IIE 1.8V FPGA

Blocos de RAM Cada célula de RAM

é constituída por uma memória síncrona, de duplo porto, de 4096 bits

O tamanho de bits de cada porto pode ser configurado independente

Page 12: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

12

Exemplo: Spartan-IIE 1.8V FPGA

Programação do FPGA é constituída por ficheiros de bits cujo tamanho depende do sistema digital implementado

Page 13: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

13

Projecto Hardware com FPGAs

Page 14: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

14

Projecto Hardware com FPGAs Hardware a implementar é descrito numa linguagem

de descrição de hardware (ex.: VHDL) A ferramenta de síntese lógica encarrega-se de criar a

estrutura do circuito que implementa a especificação A ferramenta de Place & Route mapeia, coloca

encaminha o circuito no FPGA utilizado Ligação de sinais internos a pinos do dispositivo é

realizada com indicações do programador: por atributos em VHDL ou com a utilização de um ficheiro de restrições (*.ucf)

Por último é gerado o código binário que programa o hardware

Page 15: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

15

Projecto Hardware com FPGAs

Fluxo de projecto de hardware digital em FPGAs utilizando síntese lógica

Page 16: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

16

Hierarquia no desenho?

Projectos com HDLs podem ser modelos planares com um único módulo ou constituídos por muitos módulos pequenos

Ambos têm vantagens e desvantagens Contudo, com a complexidade dos FPGAs, a hierarquia é mais vantajosa

Vantagens dos desenhos com hierarquia Verificação/simulação mais fácil e mais rápida Possibilidade de vários engenheiros trabalharem no mesmo desenho ao

mesmo tempo Aumenta a velocidade da compilação do desenho Reduz tempo de desenho, ao permitir a re-utilização de módulos neste e

nos próximos desenhos Desenhos mais fáceis de perceber Fluxo de projecto mais fácil de gerir

Desvantagens dos desenhos com hierarquia: Mapeamento do desenho no FPGA pode não ser tão boa entre fronteiras de

módulos: pode causar menor utilização do dispositivo e diminuir a performance do desenho

Controlo do ficheiro do desenho torna-se mais difícil Desenhos tornam-se mais verbose

Algumas destas desvantagens podem ser torneadas com uma escolha adequada da hierarquia

Page 17: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

17

Utilização das RAM distribuídas do FPGA

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity ram_dist_single is

generic( INIT_00: String :="1F1E1D1C1B1A191817161514131211100F0E0D0C0B0A0980706050403020100";d_width : integer := 8;addr_width : integer := 5;mem_depth : integer := 32);

port ( o : out STD_LOGIC_VECTOR(d_width - 1 downto 0);we, wclk : in STD_LOGIC;d : in STD_LOGIC_VECTOR(d_width - 1 downto 0);addr : in STD_LOGIC_VECTOR(addr_width - 1 downto 0));

end ram_dist_single;architecture xilinx of ram_dist_single is

type mem_type is array (mem_depth - 1 downto 0) of STD_LOGIC_VECTOR (d_width - 1 downto 0);signal mem : mem_type;

beginprocess(wclk, we, addr)begin if (rising_edge(wclk)) then if (we = '1') then

mem(conv_integer(addr)) <= d; end if; end if;end process;o <= mem(conv_integer(addr));

end xilinx;

Page 18: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

18

Utilização de blocos de RAM do FPGA

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

entity ram_block isgeneric( data_width : integer := 8; address_width : integer := 8; mem_depth : integer := 256);port( data : in std_logic_vector(data_width-1 downto 0); address : in std_logic_vector(address_width-1 downto 0);

en, we, clk : in std_logic;q : out std_logic_vector(data_width-1 downto 0));

end ram_block;

architecture rtl of ram_block istype mem_array is array (mem_depth-1 downto 0) of std_logic_vector (data_width-1 downto 0);signal mem : mem_array;

attribute syn_ramstyle : string;attribute syn_ramstyle of mem : signal is "block_ram";

signal raddress : std_logic_vector(address_width-1 downto 0);begin

l0: process (clk, address)begin if (clk = '1' and clk'event) then if (we = '1') then mem(CONV_INTEGER(address)) <= data; end if; end if; q <= mem(CONV_INTEGER(address));end process;

end rtl;

Page 19: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

19

Utilização de blocos de RAM do FPGA

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

entity ram_block isgeneric( data_width : integer := 8; address_width : integer := 8; mem_depth : integer := 256);port( data : in std_logic_vector(data_width-1 downto 0); address : in std_logic_vector(address_width-1 downto 0);

en, we, clk : in std_logic;q : out std_logic_vector(data_width-1 downto 0));

end ram_block;

architecture rtl of ram_block istype mem_array is array (mem_depth-1 downto 0) of std_logic_vector (data_width-1 downto 0);signal mem : mem_array;

attribute syn_ramstyle : string;attribute syn_ramstyle of mem : signal is "block_ram";

signal raddress : std_logic_vector(address_width-1 downto 0);begin

l0: process (clk)begin if (clk = '1' and clk'event) then if (we = '1') then

mem(CONV_INTEGER(address)) <= data; else

q <= mem(CONV_INTEGER(address)); end if; end if;end process;

end rtl;

Page 20: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

20

Utilização de blocos de RAM do FPGA

entity ram_block_dual isgeneric( data_width : integer := 8; address_width : integer := 8; mem_depth : integer := 256);port( data : in std_logic_vector(data_width-1 downto 0);

address1, address2 : in std_logic_vector(address_width-1 downto 0);en, we, clk : in std_logic;q : out std_logic_vector(data_width-1 downto 0));

end ram_block_dual;

architecture rtl of ram_block_dual istype mem_array is array (mem_depth-1 downto 0) of std_logic_vector (data_width-1 downto 0);signal mem : mem_array;

attribute syn_ramstyle : string;attribute syn_ramstyle of mem : signal is "block_ram";

signal raddress : std_logic_vector(address_width-1 downto 0);

beginWRITE: process (clk, address1)begin if (clk = '1' and clk'event) then if (we1 = '1') then

mem(CONV_INTEGER(address1)) <= data; end if; end if;end process;READ: process (clk, address2)begin q <= mem(CONV_INTEGER(address2));end process;

end rtl;

Page 21: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

21

Pipelining

Forma de aumentar o ritmo de computação Inserir registos entre lógica de computação Nos FPGAs os registos já existem

Page 22: 1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email: jmcardo@ualg.ptjmcardo@ualg.pt URL: jmcardojmcardo.

22

Sumário

FPGAs são dispositivos Programáveis, substitutos de hardware, substitutos

de tarefas desempenhadas por microprocessadores Projecto parte de uma HDL: VHDL, por exemplo

Partir de software é um tópico muito importante de investigação: compiladores

Arquitectura é escolhida pelo projectista Para se tirar partido dos recursos do FPGA é

necessário Ler com atenção as sugestões em termos de estilo

de VHDL dadas pelo fabricante de FPGAs