projecto de hardware com fpgas
DESCRIPTION
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. FPGAs. FPGAs: Field-Programmable Logic Arrays Introduzidos no começo dos anos 80 Com crescente utilização - PowerPoint PPT PresentationTRANSCRIPT
1
Projecto de Hardware com FPGAs
Integração Hardware-Software
João M. P. CardosoEmail: [email protected]: http://w3.ualg.pt/~jmcardo
2004/2005
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)
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)
4
FPGAs
Estrutura genérica
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
6
Exemplo: Spartan-IIE 1.8V FPGA
7
Exemplo: Spartan-IIE 1.8V FPGA
Cada CLB é constituído por dois Slices
LC: logic cell
Slice
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
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
10
Exemplo: Spartan-IIE 1.8V FPGA
Estrutura do CLB
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
12
Exemplo: Spartan-IIE 1.8V FPGA
Programação do FPGA é constituída por ficheiros de bits cujo tamanho depende do sistema digital implementado
13
Projecto Hardware com FPGAs
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
15
Projecto Hardware com FPGAs
Fluxo de projecto de hardware digital em FPGAs utilizando síntese lógica
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
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;
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;
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;
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;
21
Pipelining
Forma de aumentar o ritmo de computação Inserir registos entre lógica de computação Nos FPGAs os registos já existem
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