Cuando se aborda el diseño de un sistema electrónico y surge
la necesidad de implementar una parte con hardware dedicado son varias las
posibilidades que hay actualmente en el mercado. Las FPGA (Field Programmable
Gate Array) son circuitos lógicos programables directamente por el usuario el
cual permite aterrizar una idea que se encuentra en lo digital a lo material.
Las FPGA son muy utilizados por fabricantes que producen tecnología a baja
escala, como por ejemplo diseñadores de equipos de propósito específico, los
cuales no pueden justificar la producción de ASICs por los bajos volúmenes de
dispositivos que venden.
Otro aspecto que se debe tener en cuenta para decidirse por
este tipo de implementación es que el coste de realización es muy bajo, por lo
que suele ser una buena opción para la realización de prototipos.
El proceso de diseño de un circuito digital utilizando una
matriz lógica programable puede descomponerse en dos etapas básicas:
- Dividir el circuito en bloques básicos, asignándolos a los
bloque configurables del dispositivo.
- Conectar los bloques de lógica mediante los conmutadores
necesarios.
Figura 1.
Los elementos básicos constituyentes de una FPGA se pueden ver
en la Figura 1 y son los siguientes:
- Bloques lógicos, cuya estructura y contenido se denomina
arquitectura. Hay muchos tipos de arquitecturas, que varían principalmente en
complejidad (desde una simple puerta hasta módulos más complejos o estructuras
tipo PLD). Suelen incluir biestables para facilitar la implementación de circuitos
secuenciales. Otros módulos de importancia son los bloques de Entrada/Salida.
- Recursos de interconexión, cuya estructura y contenido se
denomina arquitectura de rutado.
- Memoria RAM, que se carga durante el RESET para
configurar bloques y conectarlos.
Las FPGAs que existen en la actualidad en el mercado se pueden
clasificar como pertenecientes a cuatro grandes familias, dependiendo de la
estructura que adoptan los bloques lógicos que tengan definidos. Las cuatro
estructuras se pueden ver en la figura 2, sin que aparezcan en la misma los
bloques de entrada/salida.
- Matriz simétrica, como son las de XILINX
- Basada en canales, ACTEL
- PLD jerárquica, ALTERA o CPLDs de XILINX.
en este apartado se hablara acerca de XILINX.
XILINX.
Es una compañía de tecnología americana, tiene varios tipos
de software y que se usan para los FPGA, el
software para este se denomina ISE (Integrated Software Environment).
Este software constituye un verdadero entorno EDA (Electronic Desing
Automation).
La interfaz gráfica de usuario (GUI: Graphic User Interface)
se denomina Proyect Navigator y facilita el acceso a todos los componentes del
proyecto. Los diseños de usuario se pueden introducir mediante diferentes
formatos. Los más utilizados son: los esquemáticos, los grafos de estados y las
descripciones hardware en VHDL. Una vez compilados los diseños se puede simular
su comportamiento a nivel funcional o a nivel temporal. A nivel funcional no
tiene en cuenta los retardos provocados por el hardware y a nivel temporal
simula el diseño teniendo en cuenta cómo se va a configurar el hardware.
Hay que aclarar cómo se realiza el proceso de programación
(ie., las conexiones necesarias entre bloques y pistas). En primer lugar, si se
piensa que el número de dispositivos de conexión que hay en una FPGA es muy
grande (típicamente superior a 100.000), es necesario que cumplan las
siguientes propiedades:
- Ser lo más pequeños
posible.
- Tener la resistencia ON lo más baja posible, mientras la OFF
ha de ser lo más alta posible (para que funcione como conmutador).
- Se deben poder incorporar al proceso de fabricación de la
FPGA
El proceso de programación no es único, sino que se puede realizar mediante
diferentes “tecnologías”, como son células RAM estáticas, transistores EPROM y
EEPROM, etc. En el caso de las FPGAs de XILINX los elementos de programación se
basan en células de memoria RAM que controlan transistores de paso, puertas de
transmisión o multiplexores.
VHDL
Lenguaje de
descripción de hardware.
El VHDL nos permite modelar sistemas digitales, a
partir de estos modelos podremos sintetizar y simular.
Se pueden
trabajar con dos tipos de circuitos combinacionales y circuitos secuenciales.
Con el VHDL modelamos el hardware, pero
también nos permite programar algoritmos (software).
Entidad y
arquitectura:
Una unidad de
hardware se visualiza como una caja negra, el interfaz de la caja negra está
completamente definido, el interior está oculto. El VHDL la caja
negra se denomina entidad, la ENTITY describe le E/S del diseño. Para describir
su funcionamiento se asocia una implementación que se denomina arquitectura.
Puertos
de la entidad
Ports =canales
de comunicación Cada una de las posibles conexiones se
Denomina un PORT
y consta de:
- Un
nombre, que debe ser único dentro de la
entidad.
- Una
lista de propiedades, como: a
dirección del flujo de datos, entrada, salida,
bidireccional y se conoce como MODO del
puerto.
- los
valores que puede tomar el puerto:
'0’,'1'o (‘Z’), etc., los valores posibles dependen de lo que se denomina tipo
de señal.
- Los
puertos son una clase especial de señales
que adicionalmente al tipo de señal añade el modo.
Tipos
de datos básicos
Tipo es la
definición de los valores posibles que puede tomar un objeto, lo tipos
preferidos son:
- Escalares:
- integer
- floating
point
- enumerated
- physical
2. Compuestos: array
3. Punteros:
4.
Archivos:
Algunos
tipos básicos predefinidos
- INTEGER:
tipo entero, usado como valor índice en lazos, constantes o valores genéricos
- BOOLEANO:
tipo lógico, puede tomar como valores
TRUE O FALSE.
- ENUMERATED:
enumeración, conjunto de valores definido por el usuario, un ejemplo de ello
TYPE estados IS (inicio, lento, rápido).
TIPOS STD_LOGIC Y STD_LOGIC_VECTOR
- Definidos en el
paquete IEEE.standar_logic_1164.
- Son un estándar
industrial.
- Los emplearemos
siempre para definir los puertos de las entidades.
- Tipo STD_LOGIC:
valor presente en un cable de bit.
- Tipo
STD_LOGIC_VECTOR: para definir buses (array
the std_logic).
'0' Salida de una puerta con nivel
lógico bajo.
'1'
Salida de una puerta con nivel lógico alto.
'U' No inicializado, valor por defecto.
'X' Desconocido. Debido a un
CORTOCIRCUITO.
'Z' Alta Impedancia.
Las principales familias de XILINX
Hay múltiples familias lógicas dentro de XILINX. Las
primeras que surgieron son: XC2000 (descatalogada en el año 1999), XC3000 y
XC4000, correspondientes respectivamente a la primera, segunda y tercera
generación de dispositivos, que se distinguen por el tipo de bloque lógico
configurable (CLB) que contienen. En la actualidad existen también las familias
de FPGA SpartanII, SpartanIII, Virtex, VirtexII y VirtexPro. La tabla 1 muestra
la cantidad de CLBs que puede haber en cada FPGA de las familias base y ese
mismo valor expresado en puertas equivalentes.
XC2000: poderosa
serie xc200 es un nuevo estándar de 16 / micro controladores de 32 bits
especialmente diseñado para atender las necesidades de las aplicaciones de
automatización. Contiene como elementos principales una tabla de look-up de 4
entradas y un biestable D. La tabla de look-up puede reproducir cualquier
función de cuatro variables o dos funciones de tres variables. De las dos
salidas del CLB una se puede registrar, o se pueden dejar las dos
combinacionales.
XC3000: Línea
completa de cuatro relacionada Field Programmable Gatefamilias de productos de
gama- XC3000A, XC3000L, XC3100A, XC3100L Ideal para una amplia gama de tareas
de diseño VLSI personalizados Sustituye TTL, MSI, y otra lógica PLD, Se integra
subsistemas completos en un solo paquete, Evita la NRE, retardo de tiempo, y el
riesgo de convencionales matrices de puertas enmascarados. La tecnología CMOS
de memoria estática de alto rendimiento. Las tasas de palanca garantizado del
70 al 370 MHz, la lógica retrasos de 7 a 1,5 ns. Reloj del sistema velocidades
de más de 85 MHz, bajo consumo de energía en reposo y activo. Arquitectura
flexible FPGA, compatible matrices que van desde 1,000 a 7,500 puerta
complejidad, amplio registro, combinatoria, y E / S.
XC4000XL: Las
familias XC4000 proporcionan flexibilidad y programación de la arquitectura de
bloques lógicos configurables (CLBs), interconectados por una poderosa
jerarquía de enrutamiento versátil recursos, y rodeado por un parámetro
programable. Los bloques de entrada / salida (IOBS). Dispositivos
XC4000-familia tienen recursos de enrutamiento generosas a acomodar los
patrones de interconexión más complejos.
Características:
Tercera generación del campo-matrices de puertas
programables.
- La abundancia de flip-flops
- Generadores de funciones flexibles.
- Servicio en el chip de memoria RAM ultra-rápido.
- Circuito de equipaje de propagación de alta
velocidad Dedicado.
- Decodificadores borde ancho.
- Jerarquía de las líneas de interconexión.
- La capacidad interna de bus de 3 estados.
- Ocho relojes o señal de distribución de baja
oblicuidad mundial red.
Matriz arquitectura flexible.
- Bloques lógicos programables e I / O bloques.
- Interconexiones programables y decodificadores
de ancho.
Proceso CMOS submicrónicas.
- La lógica de alta velocidad y de interconexión.
- Bajo consumo de energía.
Características orientadas a los sistemas
- IEEE soporte lógico frontera de exploración
compatible con 1149.1.
- Velocidad de respuesta de salida programable.
- Programable entrada de pull-up o resistencias
pull-down.
- 12 mA corriente absorbida por salida (familia
XC4000).
- Corriente absorbida de 24 mA por salida (XC4000A
y familias XC4000H).
TABLA COMPARATIVA
Serie
|
Tipo
CLB
|
No
DE CLB
|
PUERTAS
EQUIVALENTES
|
XC2000
|
1
LUT, 1 FF
|
64-100
|
1.200-1.800
|
XC3000
|
1 LUT, 2 FF
|
64-484
|
1.500-7.500
|
XC4000XL
|
3
LUT, 2 FF
|
64-3.136
|
1.600-180.000
|
El bloque lógico ha de ser capaz de proporcionar una función
lógica en general y reprogramable. La mejor forma de realizar esto es mediante
una tabla de valores “pre asignados” o “tablas de look-up”. Básicamente, una
tabla de look-up (LUTs en adelante) es una memoria, con un circuito de control
que se encarga de cargar los datos. Cuando se aplica en una dirección las
entradas de la función booleana la memoria devuelve un dato, lo que se puede
hacer corresponder con la salida requerida. Falta añadir los componentes
necesarios para desempeñar funciones no implementables con una memoria, tales
como una batería de registros, multiplexores, buffers etc. Estos componentes
están en posiciones fijas del dispositivo. La ventaja de la utilización de este
tipo de tablas es su gran flexibilidad: una LUT de k entradas puede implementar
cualquier función booleana de k variables, y hay 22k funciones posibles. El
inconveniente es obvio: ocupan mucho espacio y no son muy aprovechables.
bibliográfia.