1 Projecto de Hardware com FPGAs Integração Hardware-Software João M. P. Cardoso Email:...
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/1.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/2.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/3.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/4.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/5.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/6.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/7.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/8.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/9.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/10.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/11.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/12.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/13.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/14.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/15.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/16.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/17.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/18.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/19.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/20.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/21.jpg)
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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062418/552fc101497959413d8bd5fb/html5/thumbnails/22.jpg)
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