Dispositivos lógicos programáveis - SEL
Transcript of Dispositivos lógicos programáveis - SEL
Dispositivos
lógicos programáveis
Dispositivos lógicos programáveis
Lógica discreta (LD) versus programável (LP)
LD LP
Ciclo de projecto
Flexibilidade a alterações
Área de PCB
Custo unitário (baixas séries)
Stock de CIs
Característica comparativa
Baixo
Elevada Baixa
Baixo
Menor
Baixo
Programmable Logic Devices (PLDs)
Dispositivos lógicos programáveis
Dispositivos programáveis pelo utilizador
Elevado
Elevado
Elevado
Dispositivos lógicos programáveis
Classes de PLDs
PLDs simples
PLDs complexos
PLD
PLD simples
(SPLD)
PLD complexos
(HCPLD)
PLA PAL FPGA CPLD
Dispositivos lógicos programáveis
Princípio de funcionamento dos SPLDs
Baseia-se em SOPs
Buffers de
entrada e
inversores
Plano
AND
Plano
OR
x1 x2 xN-1 xN
P1
Estrutura geral de um SPLD
x1 x1 xN xN
PK
Z1
ZM
Dispositivos lógicos programáveis
SPLDs
Funcionalidades
Plano OR Dispositivo
Fixo
Fixo
Programável
Plano AND
PROM
PAL
Não programável
Programável
Fixo
Programável
Fixo
Programável PLA
Dispositivos lógicos programáveis
Programmable Logic Array (PLA) Esquema interno
x1 x2 x3 Conexões configuráveis (fusíveis)
Plano OR
Plano AND
P1
P2
P3
P4
f1 f2
Dispositivos lógicos programáveis
Programmable Logic Array (PLA) Arquitectura interna
x1 x2 x3
P1
P2
P3
P4
f1 f2
P1 = x1x2
P2 = x1x3
P3 = x1x2x3
P4 = x1x3
Dispositivos lógicos programáveis
Programmable Logic Array (PLA) Arquitectura interna
x1 x2 x3
P1
P2
P3
P4
f1 f2
f1 = P1+P2+P3
f2 = P1+P3+P4
Dispositivos lógicos programáveis
Programmable Logic Array (PLA) Esquema alternativo
OR plane
P1
AND plane
x1 x2 x3
P2
P3
P4
f1 f2
x1 x2 x3
Plano OR
Plano AND
P1
P2
P3
P4
f1 f2
x1 x2 x3 Plano OR
(programável)
Plano AND
(programável)
Dispositivos lógicos programáveis
Programmable Logic Array (PLA) Esquema alternativo
OR plane
P1
AND plane
x1 x2 x3
P2
P3
P4
f1 f2
x1 x2 x3
Plano OR
Plano AND
P1
P2
P3
P4
f1 f2
P1 = x1x2
P2 = x1x3
P3 = x1x2x3
P4 = x1x3
x1 x2 x3
Dispositivos lógicos programáveis
Programmable Logic Array (PLA) Esquema alternativo
OR plane
P1
AND plane
x1 x2 x3
P2
P3
P4
f1 f2
x1 x2 x3
Plano OR
Plano AND
P1
P2
P3
P4
f1 f2
x1 x2 x3
f1 = P1+P2+P3 f2 = P1+P3+P4
Dispositivos lógicos programáveis
Programmable Logic Array (PLA)
Vantagens
Eficiente em termos de área
Planos AND e OR programáveis
Desvantagens
Custo de fabricação elevado (2 níveis)
Baixo desempenho (atrasos significativos)
Adequado a funções lógicas na forma de SOPs
Dispositivos lógicos programáveis
Programmable Array Logic (PAL) Arquitectura interna (simplificada)
f1
f2
x1 x2 x3
P1
P2
P3
P4
Plano AND
(programável)
Plano OR
(fixo)
P1
P2
P3
P4
f1
f2
Dispositivos lógicos programáveis
Programmable Array Logic (PAL) Arquitectura interna (simplificada)
f1
f2
x1 x2 x3
P1
P2
P3
P4
P1
P2
P3
P4
f1
f2
P2 = x1x2x3
P3 = x2x3 P4 = x1x2x3
P1 = x1x2x3
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Vantagens
Maior velocidade (comparativa/ com a PLA)
Desvantagens
Menor potencial de programação que a PLA
Maior desempenho (menores atrazos que PLA)
Fabrico mais simples (1 nível)
Fabrico mais barato
Plano AND programável e OR fixo
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Macrocélulas: jusante dos ORs (por pino de saída)
registro e combinacional Modos de operação:
PAD do CI
(pino de saída)
macrocélula
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Modo registro
S1S0
0 0
0 1
1 0
1 1
S1S0
Modo
Combinacional
Registro
SB
D Q
Q 01
00
10
11
S1
S0
Entradas seleccionadas
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Modo combinacional
SB
S1S0
S1S0
0 0
0 1
1 0
1 1
Modo
Combinacional
Registro
D Q
Q 01
00
10
11
S1
S0
Entradas seleccionadas
D Q
Q 01
00
10
11
S1
S0
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Polaridade de saída (invertida)
SB
S1S0
S1S0
0 0
0 1
1 0
1 1
Polaridade
Activo a 0
Entradas seleccionadas
Activo a 0
Activo a 1
Activo a 1
D Q
Q 01
00
10
11
S1
S0
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Polaridade de saída (true)
SB
S1S0
S1S0
0 0
0 1
1 0
1 1
Polaridade
Activo a 0
Activo a 0
Activo a 1
Activo a 1
Entradas seleccionadas
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Realimentação
SB
0
1
Reinjecção
Pino isolado
Do pino SB
S1S0
1
0
SB
Realimentação seleccionada
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Realimentação
SB
0
1
Reinjecção
Pino isolado
Do pino SB
S1S0
1
0
SB
Realimentação seleccionada
Dispositivos lógicos programáveis
Programmable Array Logic (PAL)
Driver tristate
SB
S1S0
1
0
SB
Driver
Dispositivos lógicos programáveis
Exemplo Entradas
P, Q Estados
Y1, Y2 Saídas
Z
Dispositivos lógicos programáveis
Exemplo Entradas
P, Q Estados
Y1, Y2 Saídas
Z
S2 = P.Q.Y1
Dispositivos lógicos programáveis
Exemplo Entradas
P, Q Estados
Y1, Y2 Saídas
Z
S2 = P.Q.Y1
R2 = Y2
Dispositivos lógicos programáveis
Exemplo Entradas
P, Q Estados
Y1, Y2 Saídas
Z
S2 = P.Q.Y1
R2 = Y2
S1 = P.Q
Dispositivos lógicos programáveis
Exemplo Entradas
P, Q Estados
Y1, Y2 Saídas
Z
S2 = P.Q.Y1
R2 = Y2
S1 = P.Q
R1 = Q+P
Dispositivos lógicos programáveis
Exemplo Entradas
P, Q Estados
Y1, Y2 Saídas
Z
S2 = P.Q.Y1
R2 = Y2
S1 = P.Q
R1 = Q+P
Z = Y2.Y1.P.Q
Dispositivos lógicos programáveis
SPLDs Composto por apenas 1 plano AND e OR
Configuração
Programação dos planos AND e/ou OR
Programação dos flip-flops e realimentações
Tipicamente, menos de 32 entradas/saídas
Disponível em caixas
DIP: PCB com socket: Remoção da PAL para reprogramação
Tipicamente, menos de 100 portas lógicas
PLCC: até 100 pinos
Dispositivos lógicos programáveis
CPLDs Composto por múltiplos planos AND e OR
Extensão do conceito SPLD
Contendo múltiplos blocos do tipo PAL
Contendo múltiplas interligações internas
Facilmente se atingem 103-104 portas lógicas
Caixas disponíveis
PLCC
QFP até 200 pinos
Dispositivos lógicos programáveis
CPLDs Múltiplos blocos tipo PAL no mesmo CI
Interligações internas configuráveis
Estrutura interna
Bloco
tipo PAL
Bloco
tipo PAL
Bloco
tipo PAL
Bloco
tipo PAL
Interligações internas
I/O
I/O
I/O
I/O
Dispositivos lógicos programáveis
CPLDs Detalhe interno
Bloco tipo PAL
Bloco tipo PAL
D Q
D Q
Interligações
Dispositivos lógicos programáveis
CPLDs Características diferenciadoras
Suporte da função ISP (In-System Prog.)
Internamente possui um circuito de JTAG Joint Test Action Group
JTAG: programação não volátil Retém a programação na falta de energia
Dispositivos lógicos programáveis
Field-Programmable Gate Array (FPGA)
Constituída por células lógicas em forma de matriz
Características Elevada densidade de portas
Elevado desempenho Elevado número de I/O Esquema de interligação flexível
Vantagens Menores custos de prototipagem
Menores tempos de projecto
Dispositivos lógicos programáveis
FPGAs
Matriz de células lógicas Configuráveis
Barramentos de
interligação
Programação pode ser não permanente
Programáveis
Blocos lógicos
Células de I/O
Switch box
Dispositivos lógicos programáveis
FPGAs
Exemplo de
programação
Ligações
efectuadas
Blocos lógicos
Segmento
de ligação
Células de I/O
clocks
switch box
Dispositivos lógicos programáveis
FPGAs
Granularidade
Granularidade
Pequeno GrandeMédio
Grão: menor unidade configurável
Granularidade
Pequeno GrandeMédio
Dispositivos lógicos programáveis
FPGAs
Granularidade
Grão: menor unidade configurável
Unidades lógicas aritméticas Microprocesadores Memórias Núcleos FFT
Granularidade
Pequeno GrandeMédio
Dispositivos lógicos programáveis
FPGAs
Granularidade
Grão: menor unidade configurável
2 LUTs e 2 flip-flops
Maioria das FPGAs
Lógica em LUTs de 4 entradas
Granularidade
Pequeno GrandeMédio
Dispositivos lógicos programáveis
FPGAs
Granularidade
Grão: menor unidade configurável
Grande número de blocos lógicos simples
Tipos de blocos
Função lógica de 2 entradas (multiplexer 4:1) 1 flip-flop
Dispositivos lógicos programáveis
FPGAs Teorema da expansão de Shannon
Qualquer função F exprime-se por
F = A.F + A.F Se por hipótese
F = A.B + A.B.C + A.B.C Então,
F = A.(B) + A.(B.C+B.C) = A.(B) + A.(B.C+B.C)
F1 F2 Implementação de F
0
1F
F1
F2
A
select
F1
1F
F1
F2
A
= F1
0
Dispositivos lógicos programáveis
FPGAs Teorema da expansão de Shannon
Qualquer função F exprime-se por
F = A.F + A.F Se por hipótese
F = A.B + A.B.C + A.B.C Então,
Implementação de F
A = 0
F = A.(B) + A.(B.C+B.C) = A.(B) + A.(B.C+B.C)
F2
1
FF
1
F2
A
= F2
0
Dispositivos lógicos programáveis
FPGAs Teorema da expansão de Shannon
Qualquer função F exprime-se por
F = A.F + A.F Se por hipótese
F = A.B + A.B.C + A.B.C Então,
Implementação de F
A = 1
F = A.(B) + A.(B.C+B.C) = A.(B) + A.(B.C+B.C)
Dispositivos lógicos programáveis
FPGAs Implementação completa de F
F = A.F1 + A.F2
F1 = B.1 + B.0
F2 = (B.C+B.C) = B.(C) + B.(C)
0
1F
F2
F1
A0
1
F10
C
B
0
1
F2C
1
B
1
C
C
0
F2
F1
Dispositivos lógicos programáveis
FPGAs Implementação apenas com multiplexers
AND
0
1F = A.B
0
B
A
Dispositivos lógicos programáveis
FPGAs Implementação apenas com multiplexers
AND
0
1F = A.B
0
B
A
OR
0
1F = A+B
B
1
A
Dispositivos lógicos programáveis
FPGAs Implementação apenas com multiplexers
AND
0
1F = A.B
0
B
A
OR
0
1F = A+B
B
1
A
NOT
0
1F = A
1
0
A
Dispositivos lógicos programáveis
FPGAs Implementação apenas com multiplexers
AND
0
1F = A.B
0
B
A
OR
0
1F = A+B
B
1
A
NOT
0
1F = A
1
0
A
XOR
0
1F = A + B
B
B
A
(= A.B + A.B)
Dispositivos lógicos programáveis
FPGAs Conceito de lockup-table de N entradas
Memória: conteúdo dependente da programação
Ex.: F = A.B + A.B com LUT de duas entradas
Implementa qualquer função de N variáveis
Antes da
programação
A
0 1
0 1
0 1
0 1
0
1
0
10
1
B
F
A
0 1
0 1
0 1
0 1
0
1
0
10
1
B
F
1
0
0
1
Dispositivos lógicos programáveis
FPGAs Conceito de lockup-table de N entradas
Memória: conteúdo dependente da programação
Ex.: F = A.B + A.B com LUT de duas entradas
Implementa qualquer função de N variáveis
Depois da
programação
Dispositivos lógicos programáveis
FPGAs Blocos lógicos
Blocos lógicos configuráveis (CLBs)
Matriz de blocos lógicos (LABs)
Terminologia
Contém diversos elem. lógicos (LEs ou slices)
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
CLB LE 1
LE 2
LE 3
LE N-2
LE N-1
LE N
LAB
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs Ilustração de um LE
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs Ilustração de um LE
Tipicamente: Lockup table (LUT) de 4 entradas
2-4
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs Ilustração de um LE
Tipicamente: Lockup table (LUT) de 4 entradas Somador completo (FA) de 1 bit
2-4
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs Ilustração de um LE
Tipicamente: Lockup table (LUT) de 4 entradas Somador completo (FA) de 1 bit 1 flip-flop D
2-4
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs Ilustração de um LE
Tipicamente: Lockup table (LUT) de 4 entradas Somador completo (FA) de 1 bit 1 flip-flop D Circuitos de multiplexagem
2-4
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs
Lockup table (LUT) de 4 entradas?|
carry in clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs
Lockup table (LUT) de 4 entradas?|
Modo normal (normal mode)
carry in clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs
Lockup table (LUT) de 4 entradas?|
Modo aritmético (arithmetic mode)
carry in clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs
Independentemente do modo
Saída síncrona
carry in clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs
Independentemente do modo
Saída assíncrona
Dispositivos lógicos programáveis
FPGAs Elemento lógico de uma FPGA FLEX10K
Dispositivos lógicos programáveis
FPGAs Matriz de blocos lógicos (LABs) da FLEX10K
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Q
out
carry out clock
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
Dispositivos lógicos programáveis
FPGAs
Ex. 1: F = A.B + A.B.C + A.B.C
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
0
1
1
0
0
1
1
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
carry in clock
D Q
out
carry out clock
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
D = 0
Dispositivos lógicos programáveis
FPGAs
Ex. 1: F = A.B + A.B.C + A.B.C
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
0
1
1
0
0
1
1 D = 0
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
carry in clock
D Q
out
carry out clock
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
D = 1
Dispositivos lógicos programáveis
FPGAs
Ex. 1: F = A.B + A.B.C + A.B.C
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
0
1
1
0
0
1
1 D = 1
Dispositivos lógicos programáveis
FPGAs Ex. 2: contador de 0 a 7 (qualquer sequência)
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
0
1
0
1
0
Nº actual Prox. nº X Y Exemplo específico:
0, 3, 2, 5, 1, 6, 4, 7 1
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
#
0
1
2
3
4
5
6
7
#
3
6
5
2
7
1
4
0
Dispositivos lógicos programáveis
FPGAs Ex. 2: contador de 0 a 7 (qualquer sequência)
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
0
1
0
1
0
Nº actual Prox. nº X Y Exemplo específico:
0, 3, 2, 5, 1, 6, 4, 7 1
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
#
0
1
2
3
4
5
6
7
#
3
6
5
2
7
1
4
0
Componentes
(solução não óptima):
3 LUTs Z, X, Y
3 flip-flops
Dispositivos lógicos programáveis
FPGAs Ex. 2:
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
0
1
0
1
0
Nº actual Prox. nº X Y
1
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
LUT 1
Z = F1(A,B,C)
Dispositivos lógicos programáveis
FPGAs Ex. 2:
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
0
1
0
1
0
Nº actual Prox. nº X Y
1
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
LUT 1
Z = F1(A,B,C)
LUT 2
X = F2(A,B,C)
Dispositivos lógicos programáveis
FPGAs Ex. 2:
Z A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0
1
1
0
1
0
1
0
Nº actual Prox. nº X Y
1
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
LUT 1
Z = F1(A,B,C)
LUT 2
X = F2(A,B,C)
LUT 3
Y = F3(A,B,C)
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
Dispositivos lógicos programáveis
FPGAs Ex. 2:
Implementação
na FPGA
Antes da
programação
Dispositivos lógicos programáveis
FPGAs Ex. 2:
Implementação
na FPGA
Depois da
programação
D = 0
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
3-LUT
3-LUT FA
0
1
0
1
0
1
A
B
C
D
carry in clock
D Qout
carry out clock
LUT 1
LUT 1
LUT 2
LUT 2
LUT 3
LUT 3
GND
PAD