Dispositivos Lógicos Programables - Facultad de Ingeniería

Transcription

Dispositivos Lógicos Programables - Facultad de Ingeniería
Electrónica Digital
Departamento de Electrónica
Dispositivos Lógicos Programables
Bioingeniería
Facultad de Ingeniería - UNER
Circuitos programables / configurables
Arquitectura no configurable
• Microprocesador / Microcontrolador
• ALU
• Registros
• Memorias
• Ejecución de un programa (firmware)
• Lenguaje de bajo nivel (assembler)
• Lenguaje de alto nivel (C)
Dispositivos programables
Arquitectura configurable
• Interconexión (re)configurable de
bloques lógicos
• Procesamiento ‘paralelo’
• Configuración por:
• Métodos tabulares, ecuaciones lógicas.
• Lenguajes de alto nivel (HDL Hardware
Description Language)
Dispositivos configurables
P
PLD
Programar consiste en
establecer las instrucciones para
la CPU
Programar consiste en cambiar las
conexiones y entradas/salidas de la
lógica del dispositivo: se configura
Ejecución secuencial
Ejecución en paralelo
Cambia el SW
Cambia el HW
Clasificación de los CIs
ASIC: Application Specific
Integrated Circuit
Principales fabricantes de PLDs
–
Xilinx , Lattice, Altera, AMD
–
Philips , Texas Instruments,
Cypress, ST Microelectronics
Dispositivos configurables
•
PLD
Programmable Logic Device
•
(PROM) (PLE) Programmable Read Only Memory
Programmable Logic Elements
•
PLA
Programmable Logic Array
•
PAL®
Programmable Array Logic (AMD)
•
GAL®
Generic Array Logic (Lattice)
•
CPLD
Complex PLD
•
FPGA
Field-Programmable Gate Arrays (Xilinx)
Arquitectura genérica básica de un PLD
• Sistemas MIMO: Multiple Inputs Multiple Outputs
• Fundamento: Cualquier función lógica puede ser expresada como una
suma de productos (AND-OR) (minitérminos)
Arquitectura general de un PLD
Ejemplo: PLD con 4 entradas y 3 salidas
Referencias
X: indica una conexión “configurable”
● : indica una conexión fija (de fábrica)
Simbología
+C
Referencias
X: indica una conexión “configurable”
● : indica una conexión fija (de fábrica)
PLD 4 x 3 con 6 términos de producto
Tipos de matrices y dispositivo PLD
• PLA: matriz AND configurable
matriz OR configurable
• PROM (PLE Programmable Logic Element): matriz AND fija
matriz OR configurable
• PAL: matriz AND configurable
matriz OR fija
PLA - Programmable Logic Array
•
Matriz AND configurable
•
Matriz OR configurable
•
No reprogramables
Especificación

Número de entradas (n)

Número de salidas (m)

Número de términos de producto (p)
En general: p  2n
Ejemplo: “PLA de n x m con p términos de producto”
• p compuertas AND de 2n entradas
• m compuertas OR de p entradas
PLA - Programmable Logic Array

•
Matriz AND programable
•
Matriz OR programable
n = 4; p  24; m = 4
Ejemplo
Ejemplo
O1 = I1 . I2 + I1’ . I2’ . I3’ . I4’
O2 = I1 . I3’ + I1’ . I3 . I4 + I2
O3 = I1 . I2 + I1 . I3’ + I1’ . I2’ . I4’
Programación para 1 o 0 constantes
AND: entrada no conectada fija un “1”
OR: entrada no conectada fija un “0”
Forma comercial:
Signetics 82S100
 16 entradas
 48 compuertas AND
 8 salidas (OR)
Ejemplo de diseño: Comparador de 2 bits
Diseño
A1
A0
B1 B0 A>B A<B A=B
0
0
0
0
0
0
1
0
0
0
1
0
1
0
A>B = A1B1/ + A1A0B0/ + A0B1/B0/
0
0
1
0
0
1
0
A<B = A1/B1 + A1/A0/B0/ + A0/B1B0
0
0
1
1
0
1
0
A=B = A1/A0/B1/B0/ + A1/A0/B1/B0 + A0/B1B0/ + A1A0B1B0
0
1
0
0
1
0
0
0
1
0
1
0
0
1
0
1
1
0
0
1
0
0
1
1
1
0
1
0
1
0
0
0
1
0
0
1
0
0
1
1
0
0
1
0
1
0
0
0
1
1
0
1
1
0
1
0
1
1
0
0
1
0
0
1
1
0
1
1
0
0
1
1
1
0
1
0
0
1
1
1
1
0
0
1
Se requiere un PAL:
• 4 entradas
• 3 salidas
• 4 términos de producto por cada salida
• Salida activa por alto
A>B = A1B1/ + A1A0B0/ + A0B1/B0/
A<B = A1/B1 + A1/A0/B0/ + A0/B1B0
A=B = A1/A0/B1/B0/ + A1/A0/B1/B0
+ A0/B1B0/ + A1A0B1B0
PROM – Programmable ROM
•
Matriz AND fija
– Se generan todos los minitérminos
•
Matriz OR programable
– Se programan las OR

n = 4; p = 24; m = 4
PAL® - Programmable Array Logic
PAL® es marca registrada de AMD®
 Matriz AND configurable
 Matriz OR fija
 Terminales bi-direccionales de E/S
 No reprogramables
PAL - Programmable Array Logic
•
Matriz AND programable
•
Matriz OR fija
•
Terminales bidireccionales de
entrada y salida

SALIDAS
n = 4; p  24; m = 4
Arquitectura de los dispositivos PAL
• PAL con salida combinacional
• PAL con salida secuencial
• Control de arquitectura: PAL combinacional, secuencial o una
combinación de ambos.
Tipos de salida
1.
Salida tri-estado
2.
Macroceldas de salida
•
Salida con polaridad configurable
•
Salida registrada (con entradas asíncronas)
•
Salida multiplexada
Salida tri-estado (alta impedancia)
Macrocelda con salida de polaridad configurable
Macrocelda combinacional con salida con
polaridad configurable y triestado
B
A (fuse)
B
salida
Por
defecto
0
0
0
0
1
1
Fusible
quemado
1
0
1
1
1
0
A
=B
= B/
Macrocelda combinacional con
salida con polaridad configurable
triestado y realimentación
Macrocelda con salida registrada (con entradas asíncronas)
Salida de los PALs secuenciales
Macrocelda registrada con salida con
polaridad configurable y triestado
Macrocelda con salida multiplexada
Permite configurar salidas combinacionales o registradas
TIBPAL22VP10-25M (Texas Instruments)
Formas
comerciales
• 22 entradas y 10 salidas
• Macrocelda de salida completamente configurable
• Permite diseño de circuitos con complejidad
equivalente de entre 500 a 800 compuertas
• Power-up clear function
• Fusible de seguridad
Formas
comerciales
Formas
comerciales
Formas
comerciales
PAL16L8
• 32 entradas (16 variables)
• 64 AND
• 8 OR de 7 entradas
DIP 20 terminales
Formas
comerciales
PAL16R8
• 8 entradas
• 8 salidas
• 8 FFD
• CLK, OE/
Formas
comerciales
PLDs reprogramables
• Fusibles reemplazados por transistores CMOS (celdas) borrables
eléctricamente (E2CMOS)
• Control de arquitectura: PLD combinacional, secuencial o una
combinación de ambos.
 GAL®
 PALCE®
Generic Array Logic (Lattice Semiconductor)
(AMD)
 CPLD
Complex PLD
 FPGA
Field-Programmable Gate Arrays
GAL® - Generic Array Logic
GAL® es marca registrada de Lattice Semiconductor®
•
Son programables y borrables eléctricamente
– Tecnología E2CMOS
•
Forma básica:
– Matriz AND configurable
– Matriz OR fija
– Lógica de salida en macrocelda (OLMC Output Logic Macro Cell)
GAL22V10, GAL18V10 and GAL26CV12 Block Diagram
Modo combinacional
Modo registrado
Formas comerciales
GAL16V8C
• 16 entradas
• 8 salidas
Configuración combinacional
(sin FFs en las salidas)
Formas
comerciales
GAL16V8R
• 3 configuraciones
• 16 entradas
• 8 salidas
• 8 FFD
• CLK, OE/
Configuración registrada
(con FFs en todas las salidas)
Formas
comerciales
GAL22V10
Formas
comerciales
Formas
comerciales
Nomenclatura
CPLD
Complex PLD
FPGA
Field Programmable Gate Array
Ejemplo: Arquitectura Spartan 3 de Xilinx
DCMs (Control digital de relojes)
Slew
Rate
Control
Tri state
path
Matriz de bloques
lógicos configurables
(CLBs)
D
Q
Passive
Pull-Up,
Pull-Down
Vcc
Prog.
Output
driver
Pad
Input
Buffer
Q
D
Delay
I/O Blocks (IOBs)
Cout
BRAM
Interconexiones
programables
CLB
CLB
Slice
X1Y1
MULs
CLBs (Configurable
Logic Blocks )
Slice
X1Y0
Cout
Switch
Matrix
Cin
Slice
X0Y1
CLB
CLB
Slice
X0Y0
Cin
Bloques lógicos configurables
Bloques de E/S configurables
Bloques de E/S configurables
Arquitectura de CPLD
CPLDs: Bloques de función (FB)
Granularidad fina y granularidad gruesa
Granularidad fina
Granularidad gruesa
• Mejor uso
• Pocos niveles de lógica
• Conversión directa a ASIC • Menos retardo de interconexión
C
P
L
D
F
P
G
A
•
•
•
•
Esencialmente, PLDs interconectados
Gran número de compuertas: cientos a decenas de miles
Macroceldas de salida
Algunos proveen lógica más flexible que la suma de productos, incluyendo
realimentaciones complejas y funciones lógicas avanzadas como aritmética,
por ejemplo.
• CPLD grandes: incluyen memoria on-chip
• Menor flexibilidad
• Menor potencia de prestaciones
•
•
•
•
•
•
•
•
Decenas a cientos de miles o varios millones de compuertas
Bloques de lógica configurables
Bloques de E/S configurables
Matriz de interconexión programable
Mayor flexibilidad
Mayor complejidad de diseño
Mayor potencia de prestaciones
Presencia de funciones de alto nivel (embedded functions) como ALUs,
sumadores, multiplicadores, etc.
• Memorias
• Decodificadores
Ficha técnica familia Spartan 3 de Xilinx
1 CLB = 4 SLICE; 1 SLICE = 2 LUTS + 2 FFs + Carry logic
Equivalent logic Cells (celdas lógica equivalentes) = 1 LUT + 1 FF + lógica de control.
Ventajas e inconvenientes de los FPGAs
Comparativa de las FPGAs frente a:
Lógica discreta
ASICs
 Tiempo de diseño (cambios sin “soldar”)
 Densidad integración (menor peso,
tamaño)
 Mayores prestaciones (consumo,
velocidad)
 Menor coste para circuitos medioscomplejos
 Mayor coste para circuitos muy simples
 Herramientas específicas (fabricante)
 Tiempo de diseño (cambios en el
laboratorio)
 Reconfigurable (pruebas o actualizaciones)
 Menor coste para tiradas cortas y medias
 Mayor coste para tiradas muy largas
 Menores prestaciones (consumo, velocidad)
 Menor densidad integración
-
número de unidades (tirada)
+
+
-
velocidad / consumo
+
Lógica discreta
complejidad
FPGAs
FPGAs
ASICs
Programación de PLDs
HDL
Hardware Description Language
•
PALASM, CUPL
•
ABEL®: Advanced Boolean Equation Language (Data I/O Corporation)
•
VHDL: Very High Speed Integrated Circuit Hardware Description Language
Programación de FPGAs
• SRAM based FPGAs
• Anti-fuse based FPGAs
Por la tecnología de la memoria de programación
No volátiles  Basadas en ROM
Reprogramables  Basadas en EPROM (Erasable-Programmable ROM) o flash
Se borran y se pueden volver a programar (unos 10.000 ciclos)
No reprogramables  Basadas en fusibles
Sólo se pueden programar una vez. No aptas para laboratorios, pero sí para el espacio
Volátiles  Basadas en RAM
Su programación se pierde al quitar la alimentación. Requieren una memoria externa no
volátil para configurarlas al arrancar (antes o durante el reset)
Fabricantes
Actel (fusibles y flash) , Altera, Atmel (con micros), Chip Express, Clear Logic, Cypress,
DynaChip, Fast Analog Solutions, Gatefield, HammerCores, Lattice (SRAM y flash), Lucent
Technologies, Motorola, Orbit, QuickLogic, QuickTurn, Vantis, Xilinx, ....
Formas comerciales
SRAM based FPGA families
• Altera FLEX family
• Atmel AT6000 and AT40K families
• Lucent Technologies ORCA family
• Xilinx XC4000 and Virtex families
Anti-fuse based FPGA families
• Actel SX and MX families
• Quicklogic pASIC family
FPGAs de Xilinx - Evolución
Virtex-5
550 MHz
24M gates*
Complejidad de Dispositivos
Virtex-II Pro
450 MHz
8M gates*
Virtex-II
450 MHz
8M gates
Virtex-E
240 MHz
4M gates
Virtex
200 MHz
1M gates
XC4000
100 MHz
250K gates
XC2000
50 MHz
1K gates
XC3000
85 MHz
7.5K gates
1985 1987
1991
XC5200
50 MHz
23K gates
1995
Spartan
80 MHz
40K gates
Virtex-4
500 MHz
16M gates*
Spartan-3
326 MHz
5M gates
Spartan-II
200 MHz
200K gates
1998 1999 2000 2002 2003 2004
2006
VHDL
Verilog
FF_AR_CE: process(CLK)
begin
if (CLK’event and CLK = ‘1’) then
if (RST = ‘1’) then Q <= ‘0’;
elsif (SET = ‘1’) then Q <= ‘1’;
elsif (CE = ‘1’) then
Q <= D_IN;
end if;
end if;
end process
always @(posedge CLK)
if (RST)
Q <= 0’b0;
else if (SET)
Q <= 1’b1;
else if (CE)
Q <= D_IN;
Ejemplos de codificación de un FF
VHDL
Verilog
process(sel, data)
begin
case (sel) is
when “000” => out <= data(0);
when “001” => out <= data(1);
when “010” => out <= data(2);
when “011” => out <= data(3);
when “100” => out <= data(4);
when “101” => out <= data(5);
when “110” => out <= data(6);
when “111” => out <= data(7);
when others => out <= ‘0’;
end case;
end process;
always @ (sel or data)
case(sel)
3'b000: muxout = data[0];
3'b001: muxout = data[1];
3'b010: muxout = data[2];
3'b011: muxout = data[3];
3'b100: muxout = data[4];
3'b101: muxout = data[5];
3'b110: muxout = data[6];
3'b111: muxout = data[7];
default : muxout = 0;
endcase
Ejemplos de codificación de un MUX
Características del diseño con PLDs
• ‘Simplicidad’ de diseño
• Funcionalidades adicionales
• Gran flexibilidad (distintas configuraciones)
• Posibilidad de reprogramar
• Programación in situ (isp - in system programmable)
• Bajo consumo (modos stand-by; wake up)
• Fiabilidad
• Menor costo
• Reducción del número de CIs
• Ahorro de espacio
• Seguridad
FIN
Ejemplo de diseño #1:
Convertidor de BCD a Gray
DIAPOSITIVA
OCULTA
Consideraciones a tener en cuenta en un diseño CPLDDIAPOSITIVA
OCULTA
• La tecnología de programación
• La capacidad del bloque de función
• La capacidad de entradas/salidas
Formas comerciales
• Altera: Familias MAX 7000, MAX 9000
• Atmel: Familias ATF y ATV
• Lattice: Familias ispLSI y (Vantis) MACH
• Xilinx: Familia XC9500
• Cypress: Familia FLASH370
actualizar
DIAPOSITIVA
FPGA – Field Programmable Gate Array
OCULTA
Antes  opciones de implementación  circuitos
TTL y memorias ROM
PAL/GAL Programmable Array Logic
1980  CPLDs Complex Programmable Logic Device
1984  Primera FPGA (Ross Freeman - Xilinx)
X Link X
Dispositivo lógico programable (su funcionalidad se fija por
el usuario después de la fabricación)
Field Programmable Gate Array
¿Cómo cambiar el hardware?
DIAPOSITIVA
OCULTA
Configurar: cambiar las funciones lógicas y las conexiones
Por ejemplo:
Estructura genérica FPGA
Salidas
Entradas
Lógica
configurable
Memoria de
programación
S
A
B
0/1 0/1 0/1 0/1
Interfaz programación
Información
de configuración
La implementación física de la memoria sirve para
clasificar las FPGAs
 Recordatorio: un multiplexor sirve
para implementar cualquier función
lógica
Elementos que componen la lógica configurable
DIAPOSITIVA
OCULTA
Bloques de salida
 Entrada, salida, bidireccional
 Compatibilidad estándares
 Registro o salida directa
Bloques lógicos (combinac. y secuenc.)
 Granularidad fina
 Granularidad gruesa
Otros bloques (memorias, P embeb.)
Bloques
lógicos
Bloques
lógicos
Pines
de E/S
Matriz
interconexión
Matriz
interconexión
Bloques
salida
a)
Bloques
lógicos
Otros elementos
 Osciladores de reloj internos
 DCMs (control digital del reloj)
b)
Bloques
lógicos
Sistemas de conexión
 Locales o vecino-vecino (a)
 Globales o larga distancia (b)
 De alta velocidad (carry)
 Dedicadas (reloj, reset)
Cada slice contiene:
Lógica de generación
rápida de acarreo
Carry logic
control
G4
G3
Generadores de funciones G2
(look-up tables) G1
Y
YQ
G
Gen.
Func.
D
Q
Parte superior
EC
SR REV
de 16x1 (f. de 4 variables)
WE
CK
WSGEN
Lógica común
y de memoria
distribuida
X
F4
F3
F2
F1
Carry logic
control
F
Gen.
Func.
SR REV
Q
D
EC
XQ
Salida
combinacional
Salida
registrada
Parte inferior
Información de pedido
Xilinx Spartan 3
Num. de System gates (puertas lógicas)  200 K
XC3S200 -4 FT 256 C
Tipo de
dispositivo
Speed grade*
Tipo de
encapsulado
Ejemplo
encapsulado
Rango de temperatura
C  comercial (0ºC a 85ºC)
I  Industrial (-40 ºC a 100 ºC)
Número de pines
Speed grade*  Depende de la tecnología de
FPGA, para las Spartan 3  Mayor numero,
más rápido el chip
Metodología de diseño con FPGAs
Captura del diseño
Simulación funcional
Diseño físico
Simulación con retardos
Programación
Introducir los datos sobre las características del circuito
que se quiere construir
Probar si la IDEA (y/o los primeros diseños) funcionan
Traducir el diseño a un circuito real
Probar si el circuito funcionará a la velocidad requerida,
una vez que se saben los retardos reales, y si lo hace igual
que la idea
Descargar la información de configuración a la FPGA
Pruebas prototipo
Probar el circuito REAL, en su entorno real de
funcionamiento
Depuración HW
Detectar las causas de problemas y corregirlos
Métodos de captura del diseño
Captura del diseño
Captura de
esquemas
Lenguaje
descr. HW
Ecuaciones
algebraicas
Diagrama de
estados
A
a
b
0
1
c
Traducción
s
If c=0 then
s<=a
else
s<=b
Síntesis
Lista de
Conexiones
(netlist)
s=ac + bc
1/1
0/1
0/1
B
C
1/1
Síntesis
sencilla
Síntesis
sencilla
Diseño físico
Fases del diseño físico en FPGAs
Captura diseño
Mapeado
(Mapping)
Emplazamiento
(Placement)
Agrupar o descomponer los símbolos lógicos en los elementos físicos
que componen la FPGA (CLBs, IOBs, etc.)
Colocar los CLBs resultantes en los CLBs disponibles de la FPGA,
atendiendo a criterios de proximidad para reducir el tiempo de propagación
de las señales en el interior del circuito
Conexionado
(Routing)
Gestionar los recursos de conexionado locales (vecino a vecino), de larga
distancia (buses y matrices de conexión) o globales (relojes, resets, etc.)
Cálculo de
retardos
Estimación de tiempos de propagación en función de las puertas usadas,
su carga y sus interconexiones, para poder realizar simulaciones precisas
Configuración
Generar la secuencia de bits que configura el dispositivo adecuadamente
Programación
¿Cómo seleccionar un FPGA?
•
•
•
•
•
¿Para que se va a usar?
– Funcionalidad / Prestaciones
– Consumo  tipo de dispositivo (Móvil, estático).
– Proveedor
– Familia de FPGA
¿Qué se va a implementar en la FPGA?
– Tamaño de la FPGA
– Escoger una más grande de la prevista (mejo si no es la más grande de
la serie)
¿ Que se va ha conectar a la FPGA ?
– Tipo y numero de IOs
– Cuantas IOs se prevé que se van a usar. Dispositivos Periféricos
– ¿La FPGA cubre el estándar de IO que se necesita?
¿ Hay restricciones de espacio?
– Tamaño del producto
– Encapsulado
NOTA : Pregunta clave
Precio de la FPGA
¿Hay otras soluciones que hagan lo mismo
– Entra en el presupuesto?
(iguales prestaciones y funcionalidad) a
menor precio y consumo?
Tendencias de los FPGAs
• Sistemas en Chip programable
1
Periféricos
GBps
Periféricos
Analógicos
Soft Core : Microprocesador
implementado con lógica de FPGA
Ejemplo:
Altera Nios Processor
Xilinx Microblaze (32 bits) y
Picoblaze (8 bits libre)
uP
Lógica
programable
(Actel Fusion
Silicon)
*DSP  Digital signal processing
Procesado digital de señales
Memoria
Bloques DSP*
2
Hard Core : Microprocesador
fundido en silicio
Ejemplo:
Altera Excalibur (lo han dejado)
Xilinx IBM PPC 450 (Virtex II Pro,
Virtex 4 FX)
Nota: Existen otros microprocesadores descritos en VHDL o Verilog que se pueden
implementar en un FPGA como LEON, 8051 y otros
Comparativa de implementar en FPGA (HW) o uP/DSP (SW)
Mayores ventajas de las FPGAs
Paralelismo !!!
+ Flexibilidad
X
Y
Reutilización del HW
Y
+
X
Y
X2 + XY + Y2
X
x
X
x
x
+
X
Y
Y
x
+
Computación espacial
Computación temporal
Mayores desventajas de las FPGAs
- Seguridad
+ Consumo
- Tolerancia a fallos
Y
x
Ámbito de aplicación
•
•
•
•
•
Prototipado Rápido  Diseño de bloques propietarios (IP CORES),
ejemplo : PCI, DCT, FFT, etc.
Para series pequeñas
Ejemplos Reales
– Productos
• Tecnología aeronáutica  Control de fuentes de alimentación,
control de alarmas y señalización del piloto.
• Inclinación de trenes para tomar curvas
• Aeropuerto
• Routers, estaciones bases
• HDTV
• NASA misión Pathfinder de Marte en 1997 (FPGA especial)
– Empresas en España: SIDSA, INDRA
– Empresas en Argentina
Aplicaciones que requieren alta capacidad de computo
Productos capaces de actualizarse después de la venta
¿CPLD o FPGA?
CPLD
FPGA
PAL
Arreglo de compuertas
Densidad
Baja a media
Media a alta
(hasta 106 compuertas)
Velocidad
Rápido
Dependiente de la aplicación
Crossbar
Routing
Alto
Medio
Arquitectura
Inteconexión
Consumo
Ejemplo
F1 = A
F2 = A’B
F3 = A + B’
F4 = A’B + AB’
F1 = AB’ + AB = A (B+B’) = A
F2 = A’B (directo)
F3 = A’B’ + AB’ + AB = B’ + AB = B’ + A
F4 = A’B + AB’ (directo)
Forma comercial
PAL16L8 (TI)
Forma comercial
PAL16R6 (TI)
Forma comercial
PALCE20V8 (Cypress)
Macrocelda (OLMC - Output Logic Macrocell)