280 likes | 371 Views
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
E N D
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 B elt W a r n k si p ? w s IC (a) Digital circuit design (b) Physical implementation
Implementação de Circuitos Digitais C us t om l a y out F ab mo n ths IC B elt W a r n • 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 (ComputerAided Design) • Layout descreve a localização e a dimensão de cada transistor e conexão • Envia para FAB (fabricationplant) que fabrica o CI • Custos: NRE (setup), respin (erros de projeto). JUSTIFICA? k p w s a
Implementação de Circuitos Digitais k p s ( d ) ( c ) IC F ab w eeks ( justwi r ing) • Produzir o nosso próprio CI • (2)Semicustomizado • GateArray ou Standard Cell • Application SpecificIC (ASIC) • (2a)GateArray • 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 B elt W a r n k p w s ( b ) ( a ) w
Implementação de Circuitos Digitais a'b ab' • Produzir o nosso próprio CI • (2a)GateArray • Exemplo do mapeamento de um meio somador • Half-adderequations: • 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 b s G a t e a r r a y a
Implementação de Circuitos Digitais d ( ) IC 1-3 months (cells and wiring) • Produzir o nosso próprio CI • (2)Semicustomizado • (2b)StandarCell • 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 GateArray • Um pouco mais complexo • Melhor desempenho, consumo e área BeltWarn k p w Cell library s b ( ) a ( ) w k p cell row s cell row cell row c ( ) Fab
Implementação de Circuitos Digitais Número menor de portas Tamanho menor das conexões ab a'b a c o ab a'b ab' b ab' s G a t e a r r a y • Produzir o nosso próprio CI • (2b)Standard Cell • Exemplo do mapeamento de um meio somador • Half-adderequations: • 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' co a s b cell row cell row cell row a
Implementação de Circuitos Digitais 0 p k p w 0 s b ( ) Converting to 3-input NOR gates • Outra solução: • TTL • Exemplo: aviso do cinto de segurança (a) k p w s w 14 13 12 11 10 9 8 I I I I I I I s k a ( ) 74LS27 C I 1 2 3 4 5 6 7 I I I I I I I 0 c ( ) Connecting the pins to create the desired circuit
Implementação de Circuitos Digitais • Outra solução: • TTL Motorola 6800 basedcomputer • 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-programmablegatearray” • 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 – (ProgrammableLogicDevice) • 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' a b c I I I F PLD C I programmable nodes
Dispositivos Reconfiguráveis 1 2 3 I I I O1 PLD C I programmable nodes • PLD – Variações • Fused ou Anti-fused • Baseado em memória 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 0 ( b )
Dispositivos Reconfiguráveis 1 2 3 1 2 3 I I I I I I programmable bit O1 O1 2 × 1 FF O2 O2 2 × 1 FF PLD C PLD C I I clk a b ( ) ( ) • Extensões do PLD • Duas saídas • Registradores nas saídas • CPLD (Complex PLD) Two-output PLD PLD with programmable registered outputs
FPGAs F = x'y' + xy 4x 2 Mem. G = xy' 4x 1 Mem. 1 rd x y F G 1 rd 1 0 10 0 1 0 0 1 0 0 1 00 1 0 0 1 0 0 0 2 01 2 0 1 0 0 1 x=0 1 3 10 3 1 a1 a1 x 1 1 1 0 a0 y a0 D1 D0 D y=0 F=1 F G c d e ( ) ( ) ( ) • 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-UpTable) F = x'y' + xy 4x 1 Mem. x y F 1 rd 0 0 1 0 0 1 0 1 1 0 0 2 1 1 1 3 a1 x a0 y D F a b ( ) ( ) a a
FPGAs - LUTs BeltWarn k p s w k 0 0 0 0 p w 0 0 1 0 0 1 0 0 0 1 1 0 s 1 0 0 0 a ( ) 1 0 1 0 1 1 0 1 8x 1 Mem. 1 1 1 0 0 0 b ( ) 1 0 2 0 Programming 3 0 (seconds) k a2 4 0 p a1 5 0 s a0 Fab 6 1 1-3 months 7 0 D C I c ( ) w • Exemplo: Funcionamento da LUT • Aviso do cinto de segurança a a
FPGAs - LUTs • LUTs • 3-entradas • 4-entradas (Spartan3) • 6-entradas • + 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 3x1 e 3x1 F F f f 8x 1 M em. g g h h 3x1 i i ( b ) ( a ) ( 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 Sub-circuits have only 3-inputs each kps' 8x 1 Mem. 8x 1 Mem. BeltWarn k 0 0 0 0 p x 1 0 1 1 w 2 0 2 1 s 3 0 3 1 x t k a2 a2 4 0 4 1 p a1 a1 d 5 0 5 1 s a0 a0 6 1 6 1 x+t+d 3 inputs 3 inputs 7 0 7 1 1 output 1 output D D x=kps' w=x+t+d t b ( ) d Partição do circuito em LUTs w c ( ) • 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) BeltWarn k p w s t d a ( ) Circuitos 5-entradas, porém, só LUTs com 3-entradas a Mapeamento em LUTs
FPGAs - Interconexão BeltWarn k p x w s t d Switch matrix 2-bit memory s1 s0 m0 i0 8x 1 Mem. 8x 1 Mem. m1 o0 i1 4x 1 m2 d 0 0 0 0 i2 mux m3 i3 1 0 1 1 o0 2 0 2 1 o1 m0 2-bit 3 0 3 1 m1 x k a2 a2 memory m2 4 0 4 1 p a1 a1 m3 5 0 5 1 s a0 a0 Switch s1 s0 6 1 6 1 matrix i0 o1 i1 4x 1 7 0 7 1 d i2 mux D D i3 t d b ( ) w • Como é feita? • Exemplo anterior • Interconexão Programável • Matriz de chaveamento FPGA (partial) 8x 2 Mem. 8x 2 Mem. 0 00 0 00 1 00 1 00 2 00 2 00 P0 3 00 3 00 P6 P1 a2 a2 4 00 4 00 a1 a1 P2 P7 5 00 5 00 a0 a0 P3 6 00 6 00 7 00 7 00 D1 D0 D1 D0 P8 P9 P4 P5 a ( )
FPGAs - Interconexão BeltWarn k p x w s t d • Exemplo • Aviso do sinto de segurança • Obs.: ignorar a entrada d Switch matrix FPGA (partial) 8x 2 Mem. 8x 2 Mem. 00 0 0 0 0 0 0 1 0 0 1 0 1 s1 s0 m0 i0 2 0 0 2 0 1 m1 o0 0 i1 4x 1 3 0 0 3 0 1 m2 d w i2 mux k a2 a2 m3 4 0 0 4 00 i3 x a1 a1 p o0 00 5 0 0 5 00 a0 a0 s o1 m0 10 m1 6 0 1 6 00 10 m2 7 0 0 7 00 m3 Switch D1 D0 D1 D0 s1 s0 matrix i0 o1 i1 4x 1 d i2 mux t i3 0 a b ( ) ( )
FPGAs – Blocos Lógicos Configuráveis CLB output flip-flop 1-bit 1 0 1 0 1 0 1 0 CLB 0 0 0 0 2x 1 2x 1 2x 1 2x 1 output configuration memory • CLB (ConfigurableLogicBlocks) • LUTs implementam o circuito combinacional • Circuito sequêncial ? • Inclusão de um flip-flop na saída de cada LUT • ConfigurableLogicBlock • CLB = (LUT + flip-flops) • A saída do CLB pode vir do flip-flops ou dasLUTs, diretamente • Configurável FPGA CLB CLB 8x 2 Mem. 8x 2 Mem. 0 00 0 00 1 00 1 00 2 00 2 00 P0 3 00 3 00 P1 a2 a2 4 00 4 00 a1 a1 P2 o0 00 5 00 5 00 a0 a0 P3 o1 m0 00 m1 6 00 6 00 m2 7 00 7 00 m3 Switch D1 D0 D1 D0 matrix P6 P7 P8 P9 P4 P5
FPGAs - Arquitetura • Visão geral • Centenas de milhares de CLBs e matrizes de chaveamento Conexões locais Interface do CLB Conexões globais de longa distância 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 • CLB • 4x Slices • LUTs • FFs • Carry • IOBs • BRAM • DSP • DCMs • Outros: • PCIE, GBE...
Linguagens de Descrição de Hardware • VHDL • “VeryHighSpeedIntegratedCircuits” (VHSIC), início 1980 • Originou como linguagem para descrever o comportamento de ASICs, definido pelo U.S DepartmentofDefense • VHDL VHSIC Hardware DescriptionLanguage • Padrão IEEE em 1987 (InstituteofElectricalandElectronicsEngineers), 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, …