Engenharia de Software para Computação Embarcada Prof. Frederico Ferlini Aula 3
CONTEÚDO Implementação de Circuitos Digitais Introdução Exemplos Dispositivos Reconfiguráveis FPGAs Spartan3 Linguagens de Descrição de Hardware
Implementação de Circuitos Digitais INTRODUÇÃO Criação de um projeto de circuito digital Pode ser até um desenho em uma folha (a) Eventualmente haverá a necessidade de implementar esse circuito em um dispositivo físico (b) Como? Introdução k p s w B elt W a r n (a) Digital circuit design si IC (b) Physical implementation ?
Implementação de Circuitos Digitais Produzir o nosso próprio CI Meses de projeto e fabricação Milhões em dinheiro Totalmente ou Semi customizado (1) Totalmente customizado (Full-custom IC) Utiliza-se ferramentas de CAD (Computer Aided Design) Layout descreve a localização e a dimensão de cada transistor e conexão Envia para FAB (fabrication plant) que fabrica o CI Custos: NRE (setup), respin (erros de projeto). JUSTIFICA? B elt W a r n k p w C us t om l a y out s IC F ab mo n ths a
Implementação de Circuitos Digitais Produzir o nosso próprio CI (2) Semicustomizado Gate Array ou Standard Cell Application Specific IC (ASIC) (2a) Gate Array Arranjos de portas lógicas CI com transistores pré-projetados O trabalho feito é a interconexão Utilizando-se ferramentas de CAD Comparação com Full-custom Menor custo e tempo de projeto Pior performance, área e consumo k B elt W a r n p w s ( b ) ( a ) k p s ( c ) IC ( d ) w w eeks ( just wi r ing) F ab
Implementação de Circuitos Digitais Produzir o nosso próprio CI (2a) Gate Array Exemplo do mapeamento de um meio somador Half-adder equations: S = a’b + ab’ Soma = a XOR b CO = ab CarryOut = a AND b Half-adder equations: s = a'b + ab' co = ab a c o ab a'b ab' b s G a t e a r r a y a
Implementação de Circuitos Digitais Produzir o nosso próprio CI (2) Semicustomizado (2b) Standar Cell Células (pequenos circuitos) AND3, MUX21, AOI... Mesma altura (tipicamente) Biblioteca:células pré-projetadas Faixas de altura de padrão O trabalho: Escolha e posicionamento das células Conexão Comparação com Gate Array Um pouco mais complexo Melhor desempenho, consumo e área k BeltWarn p w s ( b ) Cell library ( a ) k w p cell row s cell row cell row ( c ) Fab IC ( d ) 1-3 months (cells and wiring)
Implementação de Circuitos Digitais Produzir o nosso próprio CI (2b) Standard Cell Exemplo do mapeamento de um meio somador Half-adder equations: S = a’b + ab’ Soma = a XOR b CO = ab CarryOut = a AND b Ferramentas de CAD bem avançadas: Roteamento e Otimização do circuito Ex.: CADENCE co = ab s = a'b + ab' G a t e a r y s c o b a'b ab' ab Número menor de portas Tamanho menor das conexões a ab a'b ab' co b s cell row cell row cell row a
Implementação de Circuitos Digitais Outra solução: TTL Exemplo: aviso do cinto de segurança (a) k p w s w I 14 I 13 I 12 I 11 I 10 I 9 I 8 s k ( a ) 74LS27 I C Converting to 3-input NOR gates p ( b ) s k w I 1 I 2 I 3 I 4 I 5 I 6 I 7 ( c ) Connecting the pins to create the desired circuit
Implementação de Circuitos Digitais Outra solução: TTL Motorola 6800 based computer http://en.wikipedia.org/wiki/Transistor%E2%80%93transistor_logic
Dispositivos Reconfiguráveis A fabricação de CIs é cara e pode levar meses Custo inicial de fabricação elevado (milhões $$$) CIs Programáveis (Reconfiguráveis) são pré-fabricados Permite a implementação de um circuito imediatamente Simples, através do carregamento de bits no dispositivo Mais lentos/caros/consumo do que um CI customizado Pode ser comprado pronto, online e sem o custo de fabricação Mais popular FPGA “Field-programmable gate array” Desenvolvido no fim dos anos 80 Não possui gate-arrays Nome originado da popularidade dos gate-arrays Permite a implementação de um circuito em segundos FPGAs
Dispositivos Reconfiguráveis Outras tecnologias PLD – (Programmable Logic Device) 1970 (anterior ao FPGA) CIs pré-fabricados estruturas de portas AND ou OR Conexões programáveis Customiza o circuito Exemplo Implementa funções: até 3 entradas até 3 termos F = abc + a'bc' + a'b'c' F PLD I C c b a programmable nodes
Dispositivos Reconfiguráveis PLD – Variações Fused ou Anti-fused Baseado em memória O1 PLD I C 3 2 1 programmable nodes p r o g r ammable node Fuse based ( a ) F use "unbl o wn" fuse "bl o wn" fuse Memory based mem mem 1 ( b )
Dispositivos Reconfiguráveis Extensões do PLD Duas saídas Registradores nas saídas CPLD (Complex PLD) I 3 2 1 ( a ) PLD C O1 O2 b FF × programmable bit clk Two-output PLD PLD with programmable registered outputs
FPGAs Idéia básica: Memória implementa lógica combinacional Mem. 4x1 1 função lógica Mem. 4x2 2 funções lógicas (mesmas entradas) Memória = LUT (Look-Up Table) F = x'y' + xy ( d ) F = x'y' + xy G = xy' x 1 y F G 4x 2 Mem. 10 00 01 1 2 3 rd a1 a0 x y D1 D0 F G ( e ) 4x 1 Mem. 4x 1 Mem. 1 2 3 rd a1 a0 D ( c ) x y F 1 rd 1 1 y=0 x=0 F=1 1 1 1 2 1 1 1 3 x a1 y a0 D F ( a ) ( b ) a a
FPGAs - LUTs Exemplo: Funcionamento da LUT Aviso do cinto de segurança k p s w BeltWarn ( a ) ( b ) k 1 p s w Programming (seconds) Fab 1-3 months ( c ) 8x 1 Mem. 1 D w I C 2 3 4 5 6 7 a2 a1 a0 k p s a a
FPGAs - LUTs LUTs Mais entradas? 3-entradas 4-entradas (Spartan3) + ineficiente Mais entradas? Solução: partição em várias LUTs a a 512x 1 M em. 3x1 b b c c d d e F e 3x1 3x1 F f f 8x 1 M em. g g h h 3x1 i i ( a ) ( b ) ( c ) Partitioned among 3x1 LUTs Requires only 4 3-input LUTs (8x1 memories) – much smaller than a 9-input LUT (512x1 memory) Original 9-input circuit
FPGAs - LUTs Exemplo: Partição em várias LUTs Aviso do sinto de segurança (+estendido) Circuito com 5 entradas Somente LUTs de 3 entradas disponível (3-LUT) Sub-circuits have only 3-inputs each 8x 1 Mem. D 2 3 4 5 6 7 a2 a1 a0 k p s kps' BeltWarn Partição do circuito em LUTs k p s t d x w BeltWarn ( b ) 3 inputs 1 output x=kps' w=x+t+d x d t ( c ) 8x 1 Mem. D w 2 3 4 5 6 7 a2 a1 a0 x+t+d k p w s t d ( a ) Circuitos 5-entradas, porém, só LUTs com 3-entradas a Mapeamento em LUTs
FPGAs - Interconexão Como é feita? Exemplo anterior Interconexão Programável Matriz de chaveamento 8x 1 Mem. D 2 3 4 5 6 7 a2 a1 a0 k p s x d t w k p s t d x w BeltWarn ( b ) m0 o0 o1 i0 s0 d s1 i1 i2 i3 m1 m2 m3 2-bit memory Switch matrix 4x 1 mux FPGA (partial) 8x 2 Mem. 8x 2 Mem. 00 00 1 00 1 00 2 00 2 00 P0 3 00 3 00 P6 P1 a2 a2 4 00 4 00 P2 a1 m0 m1 o0 o1 m2 m3 Switch matrix a1 P7 P3 a0 5 00 a0 5 00 6 00 6 00 7 00 7 00 D1 D0 D1 D0 P8 P9 P4 P5 ( a )
FPGAs - Interconexão Exemplo Aviso do sinto de segurança Obs.: ignorar a entrada d k p s t d x w BeltWarn FPGA (partial) Switch matrix 8x 2 Mem. 8x 2 Mem. 00 1 1 1 m0 s1 s0 2 2 1 i0 m1 o0 i1 3 3 1 4x 1 w m2 d k a2 a2 i2 mux 4 x 4 00 m3 a1 a1 i3 p 00 o0 a0 5 a0 5 00 s m0 o1 10 6 1 m1 6 00 m2 10 7 m3 7 00 D1 D0 Switch D1 D0 matrix s1 s0 i0 i1 o1 4x 1 d i2 mux t i3 ( a ) ( b )
FPGAs – Blocos Lógicos Configuráveis CLB (Configurable Logic Blocks) LUTs implementam o circuito combinacional Circuito sequêncial ? Inclusão de um flip-flop na saída de cada LUT Configurable Logic Block CLB = (LUT + flip-flops) A saída do CLB pode vir do flip-flops ou das LUTs, diretamente Configurável FPGA CLB CLB 8x 2 Mem. 8x 2 Mem. 00 00 1 00 1 00 2 00 2 00 P0 3 00 3 00 P1 a2 a2 4 00 4 00 P2 a1 a1 00 o0 P3 a0 5 00 5 00 m0 o1 a0 00 6 00 m1 6 00 m2 7 00 m3 7 00 flip-flop CLB output D1 D0 Switch D1 D0 matrix 2x 1 1-bit CLB output configuration memory P6 P7 P8 P9 P4 P5
Conexões globais de longa distância FPGAs - Arquitetura Visão geral Centenas de milhares de CLBs e matrizes de chaveamento Conexões globais de longa distância Conexões locais Interface do CLB CLB CLB CLB SM SM CLB CLB CLB SM SM CLB CLB CLB
Comparação das Tecnologias FPGA Protótipo de ASIC FPGA to ASIC (Anti-Fuse) Full-custom Standard cell (semicustom) Gate array (semicustom) FPGA PLD reprogrammable Quicker availability Faster performance Lower design cost Higher density Lower power Larger chip capacity Easier design More optimized
Spartan-3 FPGA Family Data Sheet (ds099) Arquitetura IOBs LVTTL, LVCMOS, GTL, LVDS... Multiplicadores DSPs CLBs BRAMs
Spartan-3 FPGA Family Data Sheet (ds099) Arquitetura CLB 4x Slices 2x SLICEM 2x SLICEL
Spartan-3 FPGA Family Data Sheet (ds099) Arquitetura CLB 4x Slices LUTs FFs Carry
Spartan-3 FPGA Family Data Sheet (ds099) Arquitetura IOBs BRAM CLB DSP 4x Slices LUTs DCMs FFs Outros: Carry PCIE, GBE...
Linguagens de Descrição de Hardware VHDL “Very High Speed Integrated Circuits” (VHSIC), início 1980 Originou como linguagem para descrever o comportamento de ASICs, definido pelo U.S Department of Defense VHDL VHSIC Hardware Description Language Padrão IEEE em 1987 (Institute of Electrical and Electronics Engineers), revisado em 1993 Linguagem utilizada mundialmente por empresas de CAD para especificação, simulação, síntese, propriedade intelectual Outras linguagens de descrição de hardware SystemC, VERILOG, Handel-C, SDL, ISP, Esterel, …