SlideShare uma empresa Scribd logo
1 de 26
OpenCores

O Open “Hardware” com FPGA
Breve Apresentação

 Lucas Teske
 20 anos
 Formado Técnico em Eletrônica pela ETEc
 Getúlio Vargas em 2009
 Formado no curso HackerTeen em 2007
 Cursando Bacharelado em Sistemas de
 Informação na Universidade Federal de São
 Carlos previsão para término em 2016.
 Conhecimentos em Programação C/C++, Pascal,
 PHP, Delphi, x86 Assembly, Verilog, Eletrônica
 Avançada
Conteúdo da Palestra

 Questão Ambiental e Hardware Reprogramável
 Resumo da história da Lógica Programável
 Lógica Programável Moderna
 Como se trabalha com FPGA
 Funcionamento básico de um FPGA
 FPGA vs Microprocessadores
 Programação para FPGA
 Processamento em Pipeline
 Apresentação de Projetos com FPGA
Questão Ambiental

 Segundo Greepeace 20 a 50 milhões de toneladas de
 lixo eletrônico são geradas no mundo a cada ano.
 Dentre os metais encontrados:
 Arsênio
 Cádmio
 Cromo
 Cobre
 Chumbo
 Prata
História da Lógica Programável

 1970 – Texas desenvolve um circuito integrado
 programável por máscara chamado TMS2000 e baseado
 na memória associativa da IBM.
 1971 – General Eletric (GE) desenvolve um dispositivo
 lógico programável baseado na tecnologia PROM.
 1973 – National Semiconductor desenvolveu um
 dispositivo lógico programável sem registradores de
 memória.
 1974 – GE faz um acordo com a Monolithic Memories para
 desenvolver um dispositivo lógico programável
 incorporando inovações da GE.
 1978 – A MMI introduziu um dispositivo chamado PAL
 (Programmable Logic Array), de arquitetura mais simples
 pois omitia a matriz programável OR.
Lógica Programável Moderna

 CPLD – Complex Logic Programmable Device
 - Nível de complexidade entre PAL e FPGA
 - Base de Macrocélulas

 FPGA – Field Programmable Gate Array
 - Desenvolvido pela Xilinx Inc. em 1985
Como se trabalha com FPGA

1. Descrever a função lógica em um computador.
2. Compilar a função lógica em um computador.
3. Conectar o FPGA ao computador
4. Enviar o binário para o FPGA

5. Observações:
•  FPGA baseado em RAM
•  Mais rápido do que usar chips com circuito equivalente
•  Caso desligado, perde a funcionalidade
Funcionamento básico de um FPGA

 Construídos apartir de uma célula básica composta de
 uma LUT (Lookup Table) um Flip-Flop e um Mux.
Funcionamento básico de um FPGA

 Interconexão de células
FPGAs vs Microprocessadores

 FPGA = Microprocessador?
 Processador  => Processo Sequencial
 FPGA               => Processo Paralelo




                          VS
Processamento Paralelo
Programação para FPGA

 FPGA pode ser programado em Verilog, VHDL ou
 Diagrama de Portas/Blocos Lógicos
 Modo texto ou visual
 Pode ser mista entre todas as linguagens
Verilog

  Semelhante ao pascal

reg [5:0] Registrador6bits = 0;

always @(posedge clock)
begin
      Registrador6bits <= Registrador6bits + 1;
end
VHDL

  Outra linguagem muito usada de programação é o
  VHDL:
architecture behv of contador is
signal Registrador6Bits: std_logic_vector(5 downto 0);
begin
   process(clock)
   begin
      if (clock='1') then
          Registrador6Bits <= Registrador6Bits +1;
      end if;
   end process;

end behv;
Diagrama de Portas/Blocos

 Programação visual através de portas lógicas ou blocos
 pré-prontos
Processamento em pipeline
 Processo serializado
 Usado hoje em alguns
 processos como
 renderização gráfica e
 cálculos matemáticos
Exemplo de código

#include <stdio.h>

int fatormultiplicador = 5;
int fatormultiplicado = 2;

int resultado = 0;

int main() {

    while ( fatormultiplicador != 0 ) {
       resultado = resultado + fatormultiplicado;
      fatormultiplicador--;
    }
    printf("%d",resultado);
    return 0;
}
Tempo de operação

0)fatormultiplicador = 5 – resultado = 0
1)resultado = 2
2)fatormultiplicador = 4
3)resultado = 4
4)fatormultiplicador = 3
5)resultado = 6
6)fatormultiplicador = 2
7)resultado = 8
8)fatormultiplicador = 1
9)resultado = 10
10)fatormultiplicador = 0
11)FIM

10 ciclos de operação
Bloco de pipeline

 Bloco com as entradas: Entrada numérica, um clock, um
 fator numérico.
 Saídas: Saída Numérica e clock ClockX
Blocos associados

 Associando 5 blocos serializados para multiplicar por 5
Inserindo dados ao bloco

 Inserindo 0 na entrada e 2 ao fator, e logo após emitindo
 um pulso de clock.
 Receber o resultado na última saída
Após a execução

 Apenas 5 nanosegundos de atraso
 Resultado antes do próximo ciclo
Projetos com FPGA

 FPGA MD5 Hash Cracker
 - 44 milhões de hashes por minuto a 50MHz
 - Uma hash a cada 68 ciclos
 http://infinityexists.com/videos/fpga-md5-cracker/
 NSA@Home
 - Senha de 8 caracteres em um dia.
 800 hashes em paralelo
 Poder computacional de 240W equivalente a 1500
 Athlon FX consumindo 250kW
 http://nsa.unaligned.org/index.php
 FPGA Arduino
 http://gadgetforge.gadgetfactory.net/gf/project/wiringide
 /
Projeto Terminal “Virtual”

 Bloco de controle da tela de LCD
 Bloco TX/RX Serial
 Bloco RX PS2
 Memória RAM para armazenar os caracteres
 Memoria “ROM” para armazenar imagens
 Totalmente implementado por lógica
EnergyLabs Brasil e Lucas Teske

 Site da EnergyLabs Brasil
      http://www.energylabs.com.br
 IRC:
 Servidor: irc.shadowworld.net/6667
 Canal:    #dangercenter
 Fórum:
      http://forum.energylabs.com.br
 Email:
      lucas@teske.com.br
      lucas@energylabs.com.br
Bíbliografias

 http://tecnologia.uol.com.br/ultimas-
 noticias/redacao/2010/02/22/reciclagem-de-lixo-eletronico-na-
 usp-aproveita-ate-ultimo-parafuso-de-pcs-antigos.jhtm
 http://ambiente.hsw.uol.com.br/lixo-eletronico1.htm
 http://www.mundodoquimico.hpg.ig.com.br/metais_pesados_e_seus_
 efeitos.htm
 http://pt.wikipedia.org/wiki/Dispositivo_l%C3%B3gico_program%C3
 %A1vel
 http://pt.wikipedia.org/wiki/CPLD
 http://pt.wikipedia.org/wiki/FPGA
 http://www.energylabs.com.br/el/ver-documento/813
 http://www.energylabs.com.br/el/ver-documento/820
 http://en.wikipedia.org/wiki/Instruction_pipeline

Mais conteúdo relacionado

Mais procurados

Pcs2031 projeto01 introducao_pic_v4
Pcs2031 projeto01 introducao_pic_v4Pcs2031 projeto01 introducao_pic_v4
Pcs2031 projeto01 introducao_pic_v4Flávia Martins
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
TDC2016POA | Trilha IoT -  Controlando AR Drone com PHPTDC2016POA | Trilha IoT -  Controlando AR Drone com PHP
TDC2016POA | Trilha IoT - Controlando AR Drone com PHPtdc-globalcode
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônicaFabio Souza
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoFabio Souza
 
Pic apostila
Pic apostilaPic apostila
Pic apostilamoschen
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051Thiago Oliveira
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 

Mais procurados (20)

Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
Apostila cpic
Apostila cpicApostila cpic
Apostila cpic
 
Pcs2031 projeto01 introducao_pic_v4
Pcs2031 projeto01 introducao_pic_v4Pcs2031 projeto01 introducao_pic_v4
Pcs2031 projeto01 introducao_pic_v4
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
HC11
HC11HC11
HC11
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
TDC2016POA | Trilha IoT -  Controlando AR Drone com PHPTDC2016POA | Trilha IoT -  Controlando AR Drone com PHP
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - Introdução
 
Pic apostila
Pic apostilaPic apostila
Pic apostila
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051
 
Eripi2018 p4 tutorial
Eripi2018 p4 tutorialEripi2018 p4 tutorial
Eripi2018 p4 tutorial
 
Roteiro exp9
Roteiro exp9Roteiro exp9
Roteiro exp9
 
sistema
sistemasistema
sistema
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
Pic16f628a
Pic16f628aPic16f628a
Pic16f628a
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Seminario pic
Seminario picSeminario pic
Seminario pic
 

Semelhante a FPGA e Hardware Reprogramável

Raspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores IRaspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores IEdwildson Coelho Rodrigues
 
Webinar: Projeto de Hardware: ASIC e FPGA
Webinar: Projeto de Hardware: ASIC e FPGAWebinar: Projeto de Hardware: ASIC e FPGA
Webinar: Projeto de Hardware: ASIC e FPGAEmbarcados
 
Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...
Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...
Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...fesaab
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetFabio Souza
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosDouglas Esteves
 
Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Douglas Esteves
 
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014Fabio Souza
 
1LogicaProgramavelResolvido (1).pptx
1LogicaProgramavelResolvido (1).pptx1LogicaProgramavelResolvido (1).pptx
1LogicaProgramavelResolvido (1).pptxAlvaro Silva
 
Geração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAGeração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAAndré Costa Lima
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Slides do treinamento Altera - Introdução a FPGA
Slides do treinamento Altera - Introdução a FPGASlides do treinamento Altera - Introdução a FPGA
Slides do treinamento Altera - Introdução a FPGAandrecasp
 
Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!Samir Siqueira
 
Introdução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfIntrodução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfCliverRaimundo2
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduinoEdson Paz
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaLinux User Goup Alagoas
 

Semelhante a FPGA e Hardware Reprogramável (20)

Raspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores IRaspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores I
 
Cpld top dos tops
Cpld top dos topsCpld top dos tops
Cpld top dos tops
 
Webinar: Projeto de Hardware: ASIC e FPGA
Webinar: Projeto de Hardware: ASIC e FPGAWebinar: Projeto de Hardware: ASIC e FPGA
Webinar: Projeto de Hardware: ASIC e FPGA
 
Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...
Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...
Controle de protótipo movimentado por liga de memória de forma (sma) pelo pc,...
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da Internet
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentos
 
Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12
 
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
O impacto do arduino no mundo dos embarcados - TRILHA EMBEDDED - TDC2014
 
1LogicaProgramavelResolvido (1).pptx
1LogicaProgramavelResolvido (1).pptx1LogicaProgramavelResolvido (1).pptx
1LogicaProgramavelResolvido (1).pptx
 
Geração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAGeração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGA
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
TDC2014 - Arduino Legacy
TDC2014 - Arduino LegacyTDC2014 - Arduino Legacy
TDC2014 - Arduino Legacy
 
Slides do treinamento Altera - Introdução a FPGA
Slides do treinamento Altera - Introdução a FPGASlides do treinamento Altera - Introdução a FPGA
Slides do treinamento Altera - Introdução a FPGA
 
Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!
 
Introdução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfIntrodução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdf
 
Mini Curso IoT - Sieng 2016 - Dia 2
Mini Curso IoT - Sieng 2016 - Dia 2Mini Curso IoT - Sieng 2016 - Dia 2
Mini Curso IoT - Sieng 2016 - Dia 2
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduino
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em Robótica
 
Palestra omap
Palestra omapPalestra omap
Palestra omap
 

Mais de Campus Party Brasil

Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosCampus Party Brasil
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Campus Party Brasil
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesCampus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solarCampus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custoCampus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresCampus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusivaCampus Party Brasil
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXCampus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusivaCampus Party Brasil
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreCampus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito ImpressoCampus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasCampus Party Brasil
 

Mais de Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 

FPGA e Hardware Reprogramável

  • 2. Breve Apresentação Lucas Teske 20 anos Formado Técnico em Eletrônica pela ETEc Getúlio Vargas em 2009 Formado no curso HackerTeen em 2007 Cursando Bacharelado em Sistemas de Informação na Universidade Federal de São Carlos previsão para término em 2016. Conhecimentos em Programação C/C++, Pascal, PHP, Delphi, x86 Assembly, Verilog, Eletrônica Avançada
  • 3. Conteúdo da Palestra Questão Ambiental e Hardware Reprogramável Resumo da história da Lógica Programável Lógica Programável Moderna Como se trabalha com FPGA Funcionamento básico de um FPGA FPGA vs Microprocessadores Programação para FPGA Processamento em Pipeline Apresentação de Projetos com FPGA
  • 4. Questão Ambiental Segundo Greepeace 20 a 50 milhões de toneladas de lixo eletrônico são geradas no mundo a cada ano. Dentre os metais encontrados: Arsênio Cádmio Cromo Cobre Chumbo Prata
  • 5. História da Lógica Programável 1970 – Texas desenvolve um circuito integrado programável por máscara chamado TMS2000 e baseado na memória associativa da IBM. 1971 – General Eletric (GE) desenvolve um dispositivo lógico programável baseado na tecnologia PROM. 1973 – National Semiconductor desenvolveu um dispositivo lógico programável sem registradores de memória. 1974 – GE faz um acordo com a Monolithic Memories para desenvolver um dispositivo lógico programável incorporando inovações da GE. 1978 – A MMI introduziu um dispositivo chamado PAL (Programmable Logic Array), de arquitetura mais simples pois omitia a matriz programável OR.
  • 6. Lógica Programável Moderna CPLD – Complex Logic Programmable Device - Nível de complexidade entre PAL e FPGA - Base de Macrocélulas FPGA – Field Programmable Gate Array - Desenvolvido pela Xilinx Inc. em 1985
  • 7. Como se trabalha com FPGA 1. Descrever a função lógica em um computador. 2. Compilar a função lógica em um computador. 3. Conectar o FPGA ao computador 4. Enviar o binário para o FPGA 5. Observações: • FPGA baseado em RAM • Mais rápido do que usar chips com circuito equivalente • Caso desligado, perde a funcionalidade
  • 8. Funcionamento básico de um FPGA Construídos apartir de uma célula básica composta de uma LUT (Lookup Table) um Flip-Flop e um Mux.
  • 9. Funcionamento básico de um FPGA Interconexão de células
  • 10. FPGAs vs Microprocessadores FPGA = Microprocessador? Processador => Processo Sequencial FPGA => Processo Paralelo VS
  • 12. Programação para FPGA FPGA pode ser programado em Verilog, VHDL ou Diagrama de Portas/Blocos Lógicos Modo texto ou visual Pode ser mista entre todas as linguagens
  • 13. Verilog Semelhante ao pascal reg [5:0] Registrador6bits = 0; always @(posedge clock) begin Registrador6bits <= Registrador6bits + 1; end
  • 14. VHDL Outra linguagem muito usada de programação é o VHDL: architecture behv of contador is signal Registrador6Bits: std_logic_vector(5 downto 0); begin process(clock) begin if (clock='1') then Registrador6Bits <= Registrador6Bits +1; end if; end process; end behv;
  • 15. Diagrama de Portas/Blocos Programação visual através de portas lógicas ou blocos pré-prontos
  • 16. Processamento em pipeline Processo serializado Usado hoje em alguns processos como renderização gráfica e cálculos matemáticos
  • 17. Exemplo de código #include <stdio.h> int fatormultiplicador = 5; int fatormultiplicado = 2; int resultado = 0; int main() { while ( fatormultiplicador != 0 ) { resultado = resultado + fatormultiplicado; fatormultiplicador--; } printf("%d",resultado); return 0; }
  • 18. Tempo de operação 0)fatormultiplicador = 5 – resultado = 0 1)resultado = 2 2)fatormultiplicador = 4 3)resultado = 4 4)fatormultiplicador = 3 5)resultado = 6 6)fatormultiplicador = 2 7)resultado = 8 8)fatormultiplicador = 1 9)resultado = 10 10)fatormultiplicador = 0 11)FIM 10 ciclos de operação
  • 19. Bloco de pipeline Bloco com as entradas: Entrada numérica, um clock, um fator numérico. Saídas: Saída Numérica e clock ClockX
  • 20. Blocos associados Associando 5 blocos serializados para multiplicar por 5
  • 21. Inserindo dados ao bloco Inserindo 0 na entrada e 2 ao fator, e logo após emitindo um pulso de clock. Receber o resultado na última saída
  • 22. Após a execução Apenas 5 nanosegundos de atraso Resultado antes do próximo ciclo
  • 23. Projetos com FPGA FPGA MD5 Hash Cracker - 44 milhões de hashes por minuto a 50MHz - Uma hash a cada 68 ciclos http://infinityexists.com/videos/fpga-md5-cracker/ NSA@Home - Senha de 8 caracteres em um dia. 800 hashes em paralelo Poder computacional de 240W equivalente a 1500 Athlon FX consumindo 250kW http://nsa.unaligned.org/index.php FPGA Arduino http://gadgetforge.gadgetfactory.net/gf/project/wiringide /
  • 24. Projeto Terminal “Virtual” Bloco de controle da tela de LCD Bloco TX/RX Serial Bloco RX PS2 Memória RAM para armazenar os caracteres Memoria “ROM” para armazenar imagens Totalmente implementado por lógica
  • 25. EnergyLabs Brasil e Lucas Teske Site da EnergyLabs Brasil http://www.energylabs.com.br IRC: Servidor: irc.shadowworld.net/6667 Canal: #dangercenter Fórum: http://forum.energylabs.com.br Email: lucas@teske.com.br lucas@energylabs.com.br
  • 26. Bíbliografias http://tecnologia.uol.com.br/ultimas- noticias/redacao/2010/02/22/reciclagem-de-lixo-eletronico-na- usp-aproveita-ate-ultimo-parafuso-de-pcs-antigos.jhtm http://ambiente.hsw.uol.com.br/lixo-eletronico1.htm http://www.mundodoquimico.hpg.ig.com.br/metais_pesados_e_seus_ efeitos.htm http://pt.wikipedia.org/wiki/Dispositivo_l%C3%B3gico_program%C3 %A1vel http://pt.wikipedia.org/wiki/CPLD http://pt.wikipedia.org/wiki/FPGA http://www.energylabs.com.br/el/ver-documento/813 http://www.energylabs.com.br/el/ver-documento/820 http://en.wikipedia.org/wiki/Instruction_pipeline