evolução e estado da arte da lógica reprogramável · 7 lógicaauthor’s name | place, month...
TRANSCRIPT
Instituto de Plasmas e Fusão NuclearInstituto Superior TécnicoLisboa, Portugalhttp://www.ipfn.ist.utl.pt
Evolução e estado da arte da lógica reprogramável
Bernardo [email protected]
Author’s name | Place, Month xx, 2007 | Event2 Lógica programável | Lisboa, 12 Dezembro 2016
Dispositivos Lógicos Programáveis
• Circuitos lógicos como:– máquinas de estados;– shift registers;– contadores;– descodificadores, etc.
• implementados com– várias portas lógicas e flip-flops– p. ex. chips SSI (small-scale
integration) p.e. série 7400.
• Circuitos mais complexos podem requerer um número excessivo de SSI (mas nem sempre!).
http://www.bigmessowires.com/category/nibbler
Nibbler 4-bit CPU
Placa lógica com SSIs
Author’s name | Place, Month xx, 2007 | Event3 Lógica programável | Lisboa, 12 Dezembro 2016
Aplicações de FPGA’s
• Processamento Digital de Sinal
• Software-defined radio• Aero-espacial• Sistemas de Defesa• Imagem Médica• Visão por computador• Reconhecimento de voz• Criptografia• Bioinformática
• “Glue logic” em placas electrónicas multi-funcionais
• Sistemas completos num chip (SoC)
• Computação de elevada performance(p.e. FFT ou Convoluções, paralelismo massivo)
Author’s name | Place, Month xx, 2007 | Event4 Lógica programável | Lisboa, 12 Dezembro 2016
Implementação de protocolos (exemplo GPIB)
Author’s name | Place, Month xx, 2007 | Event5 Lógica programável | Lisboa, 12 Dezembro 2016
Processamento Digital de Sinais (DSP) em FPGAs
• Exemplo de maior performance:
Author’s name | Place, Month xx, 2007 | Event6 Lógica programável | Lisboa, 12 Dezembro 2016
FPGA: benefícios da tecnologia
• Performance:– paralelismo massivo– grande velocidade– grande capacidade lógica– mais rápida que
microprocessadores e DSPs
• Manutenção a longo-termo facilitada– Reprogramável em qualquer
momento– Permite implementar novas
funções
• Desenvolvimento rápido– a FPGA é um dispositivo
Commercial off-the-shelf (COTS)
– Compilação e teste rápidos; panóplia de bibliotecas
• Menor custo inicial e menor risco que ASICs
• Fiabilidade (sem OS –hardware determinístico dedicado a cada tarefa)
Author’s name | Place, Month xx, 2007 | Event7 Lógica programável | Lisboa, 12 Dezembro 2016
Comparação com outros dispositivos
Tecnologia Performance/Custo
Tempo até começar a operar
Tempo para obter alta performance
Tempo mudar as funções
ASIC Muito alta Muito longo
Muito Longo
Impossível
FPGA Média Médio Longo Médio
DSP Alta Longo Longo Longo
Processador genérico
Baixa-média
Muito Curto
Muito Curto
Muito Curto
Velo
cida
de
Flex
ibili
dade
Author’s name | Place, Month xx, 2007 | Event8 Lógica programável | Lisboa, 12 Dezembro 2016
Primórdios: Circuito Combinatório implementado com memória PROM
1 0 1 1 10 0 0
Linhas de endereço(entrada) 0 0 1 1 01 1 0
1 0 1 1 10 0 1
Linhas de dados(saídas)
a0a1a2
b0b1b2
Exemplo:b0 = F(a2,a1,a0) = (not a2) & a1 & (not a0) (a2, a1, a0 ) = (010) → b0 = 1
Tem de se descodificar TODAS as combinações de entrada(não permite simplificações).Muito ineficiente! (no entanto um método similar é utilizado nas FPGAs)
b7
Tabela paraa saída b7
Tabela paraa saída b0
Author’s name | Place, Month xx, 2007 | Event9 Lógica programável | Lisboa, 12 Dezembro 2016
Primeiro PLD de uso geral: Programmable Array Logic (PAL)
a0
a1 b0
Examplo:b0 = F(a1, a0) = a1. a0 + a1. a0
X
X
XX
Portas OR fixas
A PAL tem DOIS níveis de lógica:uma coluna ‘AND’ e uma coluna ‘OR’
São a base de dispositivos lógicos mais recentes, mais sofisticados:Simple Programmable Logic Devices (SPLD)
Coluna deAND’s
Programável
Programável uma única vez por fusíveis
Author’s name | Place, Month xx, 2007 | Event10 Lógica programável | Lisboa, 12 Dezembro 2016
Ciclo de Programação das PAL
Programação:• Base PROM (estoira os fusíveis permanentemente)• Base E-PROM (UV ‘Erasable’ PROM)• Programador de dispositivos Especializado ou Universal
Author’s name | Place, Month xx, 2007 | Event11 Lógica programável | Lisboa, 12 Dezembro 2016
Tecnologias de Programação de PLD’s
PORTA LÓGICA “AND” tipo EPROM FPGA
SRAM Anti-Fuse
Author’s name | Place, Month xx, 2007 | Event12 Lógica programável | Lisboa, 12 Dezembro 2016
PAL Típicas
EXEMPLOS• PAL16L8 = 8 saídas combinatórias• PAL16R8 = 8 saídas registadas• PAL16V8 = 8 saídas “variáveis”
PAL 16R4 - diagrama de blocos
SaídasRegistadas
Author’s name | Place, Month xx, 2007 | Event13 Lógica programável | Lisboa, 12 Dezembro 2016
SPLD - CPLD
Simple Programmable logic device•Um só nível AND•Flip-Flops e “feedback”
A B C
Flip-flop
SelectEnable
D Q
Clock
AND plane
MUX
1fPLD
BlockPLD
Block
Interconnection Matrix
I/O Block
I/O Block
PLDBlock
PLDBlock
I/O Block
I/O Block
•••
Interconnection Matrix
•••
•••
•••
Complex Programmable logic device•Várias PLDs interligadas•capacidade lógica equivalente de até ~50 SPLD típicas
Author’s name | Place, Month xx, 2007 | Event14 Lógica programável | Lisboa, 12 Dezembro 2016
FPGA
• A FPGA é um conjunto de blocos lógicos programáveis (CLB), dispostos numa matriz.
• Interligados por comutadores que permitem rearranjar as interligações.
• Blocos I/O programáveis para ligações externas.
• Linhas de relógio para levar os sinais de relógio para cada bloco lógico,
• Recursos lógicos adicionais tais como ALUs, memória, e Decoders etc.
I/O
I/O
Bloco lógico
Comutadores deinterconexão
I/O
I/O
N Input LUT
Q
QSET
CLR
DMUX
d
a
clk
rst
y
qb
c
Field Programmable Gate Array
Author’s name | Place, Month xx, 2007 | Event15 Lógica programável | Lisboa, 12 Dezembro 2016
FPGA – foto ampliada
Xilinx XC4000
Author’s name | Place, Month xx, 2007 | Event16 Lógica programável | Lisboa, 12 Dezembro 2016
FPGA: interligações
Author’s name | Place, Month xx, 2007 | Event17 Lógica programável | Lisboa, 12 Dezembro 2016
Bloco Lógico Configurável
• Funções Lógicas implementadas em Lookup Table LUTs• Multiplexers (seleccionam 1 de N entradas)• Flip-Flops. Registros (elementos de armazenamento
síncrono).
16-bit SR
flip-flop
clock
muxy
qe
abcd
16x1 RAM4-input
LUT
clock enable
set/reset
Grelha da FPGA Bloco Lógico
Author’s name | Place, Month xx, 2007 | Event18 Lógica programável | Lisboa, 12 Dezembro 2016
Lookup Tables LUTs
• Uma LUT contém Células de Memória que implementam pequenas funções lógicas.
• Cada célula está a ‘0’ ou ‘1’.• A LUT é programada com as saídas de uma tabela Booleana• As entradas seleccionam como saída o conteúdo de uma das células• A LUT pode assim implementar qualquer função de n entradas!
16-bitSR
flip-flop
clock
muxy
qe
abcd
16x1RAM
4-inputLUT
clock enable
set/reset
LUT de 3 entradas -> 8 células de memória
SRAM
Static Random Access MemoryCélulas SRAM
SRAM
3 – 6 Inputs
Multiplexer MUX
Author’s name | Place, Month xx, 2007 | Event19 Lógica programável | Lisboa, 12 Dezembro 2016
I/O (IOB)
DQ
D Q
D Q
Controlo de 3-estados
Linhas de saída
Linhas de entrada
3-estados
Saída
Relógio
Entrada direta
Entrada Registada
Faz a ligação entre os pinos físicos e as Células Lógicas.
Saídas em alta impedância(3-estado)
O mesmo pino físico pode ser configurado como entrada ou saída.
Saídas e Entradas podem ser registadas
Author’s name | Place, Month xx, 2007 | Event20 Lógica programável | Lisboa, 12 Dezembro 2016
Funções especiais na FPGA
• SRAM interna• Multiplicadores; blocos DSP• Analizador lógico embebido• CPUs embebidos• I/O de alta velocidade
(~10GHz)• Núcleos de interface SDRAM• PLLs e atrasos programáveis
DDR3 SDRAM controller
PLL
Author’s name | Place, Month xx, 2007 | Event21 Lógica programável | Lisboa, 12 Dezembro 2016
Exemplo: Virtex-4
1 Gbps IO
SRAM Block RAM/FIFO
Clocks/PLL500 MHz
PowerPC™ 405450 MHz, 680 DMIPS
Tri-ModeEthernet MAC
10/100/1000 Mbps
Multi-GigabitTransceivers
622 Mbps–10.3 Gbps
DSPs256 18x18 GMACs
CLBs200K Logic Cells
Author’s name | Place, Month xx, 2007 | Event22 Lógica programável | Lisboa, 28 Novembro 2016
Atrasos e frequência máxima
• Atraso de porta lógica: tPD
• Atraso no FF: tCO
• Atraso de interligação: tPD
Frequência máxima: a maior velocidade a que um circuito com flip-flops pode operar.
1/Fmax = Tco + Tpdlogica + Tpd interligação
Tco = 2.5 ns
Author’s name | Place, Month xx, 2007 | Event23 Lógica programável | Lisboa, 12 Dezembro 2016
• ABEL (Advanced Boolean Expression Language, criada em1983)
module MUX4title '4:1 MUX'MyDevice device 'P16L8' ;@ALTERNATE"inputsA, B, /P1G1, /P1G2 pin 17,18,1,6 "LS153 pins 14,2,1,15P1C0, P1C1, P1C2, P1C3 pin 2,3,4,5 "LS153 pins 6,5,4,3P2C0, P2C1, P2C2, P2C3 pin 7,8,9,11 "LS153 pins 10,11,12,13"outputsP1Y, P2Y pin 19, 12 "LS153 pins 7,9equationsP1Y = P1G*(/B*/A*P1C0 + /B*A*P1C1 + B*/A*P1C2 + B*A*P1C3);P2Y = P2G*(/B*/A*P2C0 + /B*A*P2C1 + B*/A*P2C2 + B*A*P2C3);end MUX4
Linguagens de Programação: PAL
Author’s name | Place, Month xx, 2007 | Event24 Lógica programável | Lisboa, 12 Dezembro 2016
Linguagens de Descrição de Hardware: CPLD/FPGA
• Verilog• VHDL• System C • System Verilog
“Nível-Básico” (equivalente ao ‘assembly’)
“Alto-Nível” (equivalente ao ‘C’)
HDL: Hardware Description Language(VHDL: Hardware Description Language)•Descrição do hardware numa linguagem de alto nível:
• Fácil de perceber• Permite simular o projeto antes do fabrico (para
identificar erros no projeto)
Author’s name | Place, Month xx, 2007 | Event25 Lógica programável | Lisboa, 12 Dezembro 2016
Modelo de desenvolvimento de código para CPLD/FPGA
Register-Transfer Level (RTL) um modelo de máquina-de-estados síncronabaseado em registos e lógica combinatória
Especificação
HDL(VHDL , Verilog, C , Simulink)
Simulação(Modelsim)
Síntese(Converter HDL para RTL)
Place & Route
Bit-File(Configuração da FPGA )
Restrições temporais lógicas
FPGA(Debug: usar o analisador lógico interno)
Simulação temporal(se necessário)
(Modelsim)Analise temporal
Restrições temporais físicas
Author’s name | Place, Month xx, 2007 | Event26 Lógica programável | Lisboa, 12 Dezembro 2016
VHDL: Introdução
Cada descrição de hardware em VHDL consiste num par “entity/architecture”(ou uma “entity” e múltiplas “architectures”)
•A secção “entity” é usada para declarar os portos I/O do circuito.
•A “architecture” descreve o comportamento do circuito em “processes”.
•“process” é um “bloco” que encapsula um conjunto de lógica e controlos.
Library Declaration
Entity
Architectureprocess
process
process
Bibliotecas standard são incluídas antes da declaração da “entity”.
Permite descrever•o comportamento lógico do sistema•os procedimentos de teste.
Author’s name | Place, Month xx, 2007 | Event27 Lógica programável | Lisboa, 12 Dezembro 2016
Exemplos de código VHDL
-- (este é um comentario VHDL)
-- import std_logic from the IEEE librarylibrary IEEE;use IEEE.std_logic_1164.all;
-- esta e’ uma entidadeentity ANDGATE is
port ( IN1 : in std_logic;IN2 : in std_logic;OUT1: out std_logic;OUT2: out std_logic);
end ANDGATE;
architecture RTL of ANDGATE isbegin OUT1 <= IN1 and IN2;OUT2 <= IN1 or IN2;
end RTL;
architectureEntradas Saídas
atenção: as atribuições (<=) operam em paralelo.
A B Q
0 0 1
0 1 1
1 0 1
1 1 1
Author’s name | Place, Month xx, 2007 | Event28 Lógica programável | Lisboa, 12 Dezembro 2016
Exemplo de um Contador Binário
library IEEE;use IEEE.std_logic_1164.all;use IEEE.numeric_std.all; -- for the unsigned type
entity counter_example isgeneric (WIDTH : integer := 32);port (CLK, RESET, LOAD : in std_logic;DATA : in unsigned(WIDTH-1 downto 0); Q : out unsigned(WIDTH-1 downto 0));
end entity counter_example;
architecture RTL of counter_example issignal cnt : unsigned(WIDTH-1 downto 0);beginprocess (RESET, CLK, LOAD)beginif RESET = '1' then
cnt <= (others => '0');elsif rising_edge(CLK) then
if LOAD = '1' thencnt <= DATA;
elsecnt <= cnt + 1;
end if;end if;
end process;Q <= cnt;
end architecture RTL;
• Num ‘process’:
• as instruções são executadas sequencialmente, o que permite introduzir sequenciação e controlo.
• outras instruções VHDL podem ser usadas tais como if-then-else e case.
• cada ‘process’ opera:
– em paralelo com outras ‘process’ ;
– em paralelo com outras instruções concurrentes.
‘Process’
Author’s name | Place, Month xx, 2007 | Event29 Lógica programável | Lisboa, 12 Dezembro 2016
Desenvolvimento Hierárquico
Top Design (top.vhd)
Component 1 (comp1.vhd)
Component 2(comp2.vhd)
Component 3(comp3.vhd)
VHDL permite uma hierarquia de entidades contendo componentes.Em cada nível o VHDL permite arquiteturas e configurações múltiplaspara cada entidade.
Desenvolvimento Hierárquico:
entity Top isPort(….);end Toparchitecture STRUCT of Top issignal X,Y,S,C : bit;component HALFADD --(defined in HALFADD.vhdl) port(A, B : in bit; SUM, CARRY : out bit);
end component;beginU1: HALFADD port map (X,Y,S,C); --(instance)-- other statementsend STRUCT;
Author’s name | Place, Month xx, 2007 | Event30 Lógica programável | Lisboa, 12 Dezembro 2016
Outros tipos de programação: “C/C++ para gates”
• A idea é compilar C/C++ para FPGA como alternativa ao CPU.
• Geralmente só envolve subconjuntos ‘simples’ do C/C++.
• Permite a transposição quase direta de um código que corre num CPU para uma FPGA!
Examplo: Mentor Catapult C
Author’s name | Place, Month xx, 2007 | Event31 Lógica programável | Lisboa, 12 Dezembro 2016
FPGA como “co-processador“ para CPU
Exemplo: Xilinx/Intel
• Multi-core–x86 cores, FPGAs
• Performance–8.5 GB/s banda–105 ns latência para 64 bytes
• Modelo de programação
–Espaco de memória global partilhada–Sempre consistente (coerência de HW)–Xilinx SDAccel permite um desenvolvimento rápido.
Author’s name | Place, Month xx, 2007 | Event32 Lógica programável | Lisboa, 12 Dezembro 2016
SLIDES AUXILIARES
Author’s name | Place, Month xx, 2007 | Event33 Lógica programável | Lisboa, 12 Dezembro 2016
n-LUT: implementação
• n-bit LUT – é implementado como uma memória 2n x 1:– As entradas escolhem uma de 2n
posições de memória.– As posições de memória
(latches) são carregadas com valores na da programação da FPGA.
– As entradas de endereçamento do mux control são as entradas do LUT.
• n-LUT pode assim implementar qualquer função de n emtradas!
latch
latch
latch
latch
16 x 1mux
16
INPUTS
OUTPUT
Latches programmed as partof configuration bit-stream
Author’s name | Place, Month xx, 2007 | Event34 Lógica programável | Lisboa, 12 Dezembro 2016
LUT (exemplo)
x1 x2 x3 x4
y
x1 x2
y
LUT
x1x2x3x4
y
0x1
0x2 x3 x4
0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
y0100010101001100
0x1
0x2 x3 x4
0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
y1111111111110000
x1 x2 x3 x4
y
x1 x2 x3 x4
y
x1 x2
y
x1 x2
y
LUT
x1x2x3x4
y
0x1
0x2 x3 x4
0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
y0100010101001100
0x1
0x2 x3 x4
0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
y0100010101001100
0x1
0x2 x3 x4
0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
y1111111111110000
0x1
0x2 x3 x4
0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1
y1111111111110000
Author’s name | Place, Month xx, 2007 | Event35 Lógica programável | Lisboa, 12 Dezembro 2016
Linguagens de Programação das PAL
PALASM (desenvolvida no início dos anos 80)TITLE video ; shift registerCHIP video PAL20V8CK /LD D0 D1 D2 D3 D4 D5 D6 D7 CURS GND NC REV Q7 Q6 Q5 Q4
Q3 Q2 Q1 Q0 /RST VCC (Pinos da PAL em ordem numérica; começa em 1)STRING Load 'LD*/REV*/CURS*RST' ; load data (Comentário)STRING LoadInv 'LD*REV*/CURS*RST' ; load inverted of dataSTRING Shift '/LD*/CURS*/RST' ; shift data from MSB to LSBEQUATIONS/Q0 := /D0*Load+D0*LoadInv:+:/Q1*Shift+RST (Atribuição registada)Q6 = D1 + /D2 (Atribuição Combinatória)
Author’s name | Place, Month xx, 2007 | Event36 Lógica programável | Lisboa, 12 Dezembro 2016
Bibliotecas Standard
Declaração de bibliotecas
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
STANDARD: Contains all basic declarations and definitions of language constructs and it is included in all VHDL specifications by default.
STD_LOGIC_1164: This package is not a part of the VHDL Standard but is a standard on its own; it contains the most often used language extensions.
TEXTIO: Contains declarations of basic operations on texts.
Author’s name | Place, Month xx, 2007 | Event37 Lógica programável | Lisboa, 12 Dezembro 2016
Fornecedores de FPGA’s
FPGAs baseadas em memória SRAMXilinx Inc. – www.xilinx.comAltera Corp. – www.altera.comAtmel Corp. – www.atmel.comLattice Semiconductor Corp.
– www.latticesemi.com
FPGAs baseadas em Antifuse e memória flashActel Corp. – www.actel.comQuickLogic Corp. – www.quicklogic.com
Author’s name | Place, Month xx, 2007 | Event38 Lógica programável | Lisboa, 12 Dezembro 2016
Mercado de Lógica Programável
Source: Company reportsLatest information available; computed on a 4-quarter rolling basis
XilinxAltera
LatticeActel QuickLogic: 2% Xilinx
All Others
Dois fornecedores dominantes (indicador de mercado maturo)
Segmento PLD Sub-Segmento FPGA
Other: 2%
51%33%
5% 7%
Altera
58%
31% 11%