DISPOSITIVOS LOGICOS
PROGRAMABLES
10IMTF
Unidad 1
ALUMNO:
JORGE ARMANDO MARINES VEGA
JUAN MAURO SAAVEDRA MUÑIZ
JUAN ENRIQUE MEJIA MORIN
JUAN JOSE GALAVIZ MORENO
UVALDO DANIEL TORRES MORENO
M.C: EUTIQUIO CANALES RUIZ
Saber 1
Arquitectura de las interfaces y dispositivos programables de Explicar la
arquitectura de las interfaces y dispositivos programables de PLD´s
Existen en la actualidad infinidad de arquitecturas diferentes de PLDs y su número
se Existen en la actualidad infinidad de arquitecturas diferentes de PLDs y su
número se incrementa día a día. Aunque resulta casi imposible hacer una
referencia completa de todos incrementa día a día. Aunque resulta casi imposible
hacer una referencia completa de todos los tipos de PLDs en el mercado, en este
trabajo sólo se presentarán algunas de las más los tipos de PLDs en el mercado,
en este trabajo sólo se presentarán algunas de las más comunes y una amplia
lista de las distintas PLDs que podemos encontrar en el mercado. Ya comunes y
una amplia lista de las distintas PLDs que podemos encontrar en el mercado. Ya
que generalmente los PLDs disponen de muchas entradas y resultaría muy
complicado que generalmente los PLDs disponen de muchas entradas y resultaría
muy complicado mostrarlas en un dibujo, se utiliza una representación
simplificada, según la cual, para las mostrarlas en un dibujo, se utiliza una
representación simplificada, según la cual, para las puertas AND sólo se dibuja
una línea de entrada llamada línea producto. Esta línea se cruza puertas AND sólo
se dibuja una línea de entrada llamada línea producto. Esta línea se cruza con dos
líneas por cada entrada (entrada directa y entrada invertida), pudiendo existir un
con dos líneas por cada entrada (entrada directa y entrada invertida), pudiendo
existir un fusible en cada intersección. Aunque sólo se dibuja una línea de entrada
por cada puerta fusible en cada intersección. Aunque sólo se dibuja una línea de
entrada por cada puerta AND, en AND, en realidad esta realidad esta puerta
puerta tiene tan tiene tantas entradas tas entradas como intersecciones como
intersecciones de la de la línea producto. línea producto. Si en una intersección
hay una X, significa que el fusible está intacto; sí no hay una X, el Si en una
intersección hay una X, significa que el fusible está intacto; sí no hay una X, el
fusible esta fundido y no existe la conexión. En ocasiones, las puertas OR también
se dibujan fusible esta fundido y no existe la conexión. En ocasiones, las puertas
OR también se dibujan con una sola entrada. con una sola entrada.
En el diagrama simplificado de la figura 3.1.1 aparece una matriz de puertas AND
de seis En el diagrama simplificado de la figura 3.1.1 aparece una matriz de
puertas AND de seis entradas, cuyas salidas están conectadas a una puerta OR.
La intersección de las líneas entradas, cuyas salidas están conectadas a una
puerta OR. La intersección de las líneas producto con las líneas de entrada forma
una matriz de puertas AND programable de 6x3 producto con las líneas de
entrada forman una matriz de puertas AND programable de 6x3 fusibles.
El circuito está programado para realizar la función OR fusibles. El circuito está
programado para realizar la función OR ––exclusiva entre las entradas exclusiva
entre las entradas A y B-. La A y B-. La puerta AND infer puerta AND inferior está
marcada con está marcada con una X. Significa que una X. Significa que todos
sus fusibles están intactos y que su salida es 0. Cuando se funden todos los
fusibles de una línea producto, la intactos y que su salida es 0. Cuando se funden
todos los fusibles de una línea producto, la salida de la puerta AND asociada es 1.
PAL (Programmable Array Logic). También llamados PLAs, son un tipo de PLDs
en las que se pueden programar las uniones en la matriz de puertas AND, siendo
fijas las uniones en la matriz de puertas OR (Figura 3.1.2). Los dispositivos con
arquitectura PAL son los más populares y los más utilizados, razón ésta por la que
dedicamos el siguiente capítulo, para analizarlos más a fondo.
FPLA (Field Programmable Logic Array). Es un PLD en el que se pueden
programar las uniones en ambas matrices (Figura 3.1.3). Son los dispositivos más
flexibles, pero resultan penalizados en tamaño y en velocidad debido a los
transistores adicionales en la matriz de puertas OR. Se utilizan fundamentalmente
para construir máquinas de estados. Para otras aplicaciones, las PAL resultan
más efectivas. Las PAL y las FPLA son sistemas combinacionales incompletos
porque teniendo n entradas, disponen de menos de 2n términos producto.
PROM (Programmable Read Only Memory). Es un PLD en el que las uniones en
la matriz de puertas AND es fija, siendo programables las uniones en la matriz de
puertas OR (véase Figura 3.1.4). Una PROM es un sistema combinacional
completo que permite realizar cualquier función lógica con las n variables de
entrada, ya que dispone de 2n términos productos. Están muy bien adaptadas
para aplicaciones tales como: tablas, generadores de caracteres, convertidores de
códigos, etc. Generalmente las PROM tienen menos entradas que las PAL y
FPLA. Se pueden encontrar PROM con capacidades potencia de 2, que van
desde las 32 hasta las 8192 palabras de 4, 8 o 16 bit de ancho.
Un dispositivo programable por el usuario es aquel que contiene una arquitectura
general predefinida en la que el usuario puede programar el diseño final del
dispositivo empleando un conjunto de herramientas de desarrollo.
Las arquitecturas generales pueden variar, pero normalmente consisten en una o
más matrices de puertas AND y OR para implementar funciones lógicas. Muchos
dispositivos también contienen combinaciones de flip-flops y latches que pueden
usarse como elementos de almacenaje para entrada y salida de un dispositivo.
Los dispositivos más complejos contienen macro células. Las macro células
permiten al usuario configurar el tipo de entradas y salidas necesarias en el
diseño.
Saber 2. Explicar los principales elementos que conforman el
lenguaje gráfico.
La FPGA representa uno de los ultimo avances en tecnología de dispositivos
lógicos programables, es importante señalar que una FPGA realmente se re
configura con un programa, a diferencia de lo que normalmente se conoce como
sistema programado (microcontrolador, microprocesador etc.) en donde un
hardware fijo es capaz de interpretar y ejecutar un programa especificado como un
conjunto de instrucciones por el programador, en las FPGA lo que se tiene es un
hardware que se configura realizando conexiones físicas que son especificadas
por un programa o cadena de configuración.
Es importante notar que al realizar un diseño con FPGA se presentan los mismos
inconvenientes que al realizar un sistema con componentes discretos, es decir
toman relevancia los fenómenos de retardo de propagación y los relacionados con
las señales de clock.
Los primeros dispositivos lógicos programables eran las PAL o los SPLD, estos
presentaban compuertas (AND / OR) fijas que podían ser programadas para
responder a determinadas funciones de transferencias.
Las FPGA a diferencia de los SPLD y PAL, es que su estructura no está
compuesta por compuertas AND/OR, en su lugar contienen blocks lógicos para
implementar las funciones requeridas.
En la siguiente imagen se muestra la estructura general:
ESTRUCTURA DEL FPGA
Un FPGA consiste en arreglos de varios bloques programables (bloques lógicos)
los cuales están interconectados entre sí y con celdas de entrada/salida mediante
canales de conexión verticales y horizontales, tal como muestra la figura 27. En
general, se puede decir que posee una estructura bastante regular, aunque el
bloque lógico y la arquitectura de rutado varía de un fabricante a otro.
La estructura de un FPGA, comparada con la de una CPLD, es mucho más
regular, y se encuentra más orientada a diseños que manejan mayores
transferencias de datos y registros, en tanto que las CPLD implementan más
eficientemente diseños con una parte combinacional más intensa.
La arquitectura de una CPLD es una agrupación de PALs o GALs, interconectadas
entre sí. Cada bloque lógico tiene su propia parte combinacional que permite
realizar un gran número de funciones lógicas programables, más un biestable
asociado al pin de entrada/salida en caso de encontrarse habilitado. La
arquitectura de la FPGA cuenta también con un bloque lógico con una parte
combinacional y una parte secuencial. La parte combinacional es mucho más
simple que la de una de las PAL interna de una CPLD. La parte secuencial posee
uno o dos biestables, que no están generalmente asociados a un pin de entrada
salida, pues los bloques lógicos se distribuyen regularmente en todo el dispositivo.
No todas las FPGA son iguales. Dependiendo del fabricante nos podemos
encontrar con diferentes soluciones. 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
detenidos. Las cuatro estructuras se pueden ver en la figura 29, sin que aparezcan
en la misma los bloques de entrada/salida.
1. Matriz simétrica, como son las de XILINX
2. Basada en canales, ACTEL
3. Mar de puertas, ORCA
4. PLD jerárquica, ALTERA o CPLDs de XILINX.
En concreto, para explicar el funcionamiento y la estructura basica de este tipo de
dispositivos programables solo se considerarán las distintas familias de XILINX.
Bloques Lógicos
El bloque lógico consta de una parte combinacional, que permite implementar
funciones lógicas booleanas, más una parte secuencial que permite sincronizar la
salida con una señal de reloj externa e implementar registros. La parte
combinacional varía de un fabricante a otro. A continuación, explicaremos dos de
ellas, representativas porque poseen unas prestaciones opuestas.
Bloque lógico basado en LUT (look-up table): Una LUT es un componente de
células de memoria SRAM que almacena una tabla de verdad. Las direcciones de
las células son las entradas de la función lógica que queremos implementar, y en
cada celda de memoria se guardan el resultado para una de las combinaciones de
las entradas. En una LUT de n x 1 es posible implementar cualquier función lógica
de n entradas.
Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores,
se caracteriza porque requiere mucha menos lógica que el anterior basado en una
LUT, y, en consecuencia, ocupa mucha menos área. De este modo, se pueden
implementar mayor número de bloques lógicos en el mismo espacio, o, para el
mismo número de bloques, disponer de más espacio para incrementar los
recursos de rutado. Como contrapartida, no se puede implementar cualquier
función lógica de n entradas, como ocurría con las LUTs. En caso necesario, esta
función lógica hay que repartirla entre varios bloques lógicos.
La estructura de los bloques programables y las formas en que estas pueden ser
interconectadas, tanto salidas como entradas de los bloques, varía de acuerdo al
fabricante. En general un bloque programable tiene menos funcionalidad que la
combinación de sumas de productos y macroceldas de un CPLD, pero como cada
FPGA tienen una gran cantidad de bloques programables es posible implementar
grandes funciones utilizando varios bloques en cascada.
Interconexión entre bloques programables
Además de los bloques programables también es importante la tecnología
utilizada para crear las conexiones entre los canales (tecnología de
programación). Las más importantes son las siguientes:
1. Antifusible (Antifuse): Al igual que la tecnología PROM (memoria de solo lectura
programable), un FPGA que utiliza este tipo de tecnología sólo se puede
programar una sola vez, y utilizan algo similar a un fusible para las conexiones.
Una vez que es programado ya no se puede recuperar. La diferencia entre un
fusible y un anti fusible es que el primero se desactiva deshabilitando la conexión,
en cambio, para el segundo se produce una conexión cuando son programados,
por lo que normalmente se encuentran abiertos. La desventaja obvia es que no
son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y
costo de los dispositivos.
2. SRAM (StaticRAM): Estas guardan la configuración del circuito. Esto quiere
decir que las SRAM son utilizadas como generadores de funciones y además son
usadas para controlar multiplexores (que están incluidos en los FPGAs) y la
interconexión entre bloques. En éstas el contenido se almacena mediante un
proceso de configuración en el momento de encendido del circuito que contiene al
FPGA. Ya que al ser SRAM, el contenido de la memoria se pierde cuando se deja
de suministrar energía; la información binaria de las celdas SRAM generalmente
se almacena en memorias seriales EEPROM conocidas como memorias de
configuración o celdas de configuración. En el momento de encendido del circuito
toda la información binaria es transferida a los bloques e interconexiones del
FPGA mediante el proceso de configuración el cual es generalmente automático,
dado que el propio FPGA contiene un circuito interno que se encarga de hacer
toda la programación.
3. Flash: El avance experimentado en los últimos años en el diseño y prestaciones
de las celdas de memoria Flash ha permitido su incorporación reciente al mundo
de los dispositivos programables como tecnología de programación. Las FPGAs
basadas en celdas Flash recogen las ventajas principales de las dos técnicas
anteriores situándose en un punto intermedio. Su tamaño es bastante más
reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido de
un anti fusible; son reprogramables, aunque la velocidad de programación es
bastante más lenta que en el caso de una SRAM; y son no volátiles, por lo que no
necesitan un dispositivos auxiliar para guardar la configuración interna, como en el
caso de la SRAM.
Un FPGA que tiene una gran cantidad de canales de interconexión tiende a tener
pequeños bloques lógicos con muchas entradas y salidas en comparación con el
número de compuertas que puede generar el bloque Este bloque lógico se
caracteriza por ser bastante sencillo, con poca lógica en su parte combinacional.
Este es el caso del bloque lógico a base de multiplexores del apartado anterior.
Este tipo de FPGA generalmente utiliza tecnología antifusible. Un FPGA que tiene
una estructura pequeña en canales de interconexión tiende a tener grandes
bloques lógicos con pocas entradas y salidas en comparación con el número de
compuertas que existe en el bloque.
Este es el caso del bloque lógico basado en LUTs, que permiten implementar
cualquier función lógica del mismo número de entradas. Este tipo de FPGA
generalmente está fabricado con tecnología SRAM. Finalmente, las FPGAs
basadas en celdas Flash suelen emplear un bloque lógico sencillo para
incrementar los recursos de rutado, como ocurre con las FPGAs de antifusibles.
Una arquitectura con bloques pequeños permite utilizar todos los recursos del
dispositivo, sin embargo, tendremos que utilizar un gran número de estas para
poder implementar funciones lógicas de varios términos, lo cual genera un tiempo
de retardo por cada bloque implementado. Cuando el tamaño del bloque es
grande sucede lo contrario, en este tipo de bloques es posible utilizar un gran
número de compuertas por lo que podemos implementar funciones lógicas de
varios términos con pocos bloques. El que el tamaño del bloque sea grande no
afecta la frecuencia máxima de trabajo, ya que estamos hablando de que existe
una gran cantidad de compuertas que pueden ser utilizadas en la función
paralelamente, siendo el mismo tiempo de retardo para todas. Sin embargo,
cuando las funciones son pequeñas en comparación con el tamaño del bloque, no
es necesario utilizar todas las compuertas que soporta el bloque, por lo que este
tipo de bloques no son precisamente las más indicadas para desempeñar
pequeñas funciones.
Bloques entrada/salida.
La función de un bloque de entrada/salida es permitir el paso de una señal hacia
dentro o hacia el exterior del dispositivo. Además, debe contar con recursos tales
como:
• Salidas configurables como TRI-STATE u open-collector.
• Entradas con posibilidad de pull-up o pull-down programables.
• Registros de salida.
• Registros de entrada.
Saber 3. Explicar el entorno y sintaxis de la programación VHDL.
El lenguaje de descripción de hardware VHDL
VHDL es un lenguaje diseñado para describir sistemas electrónicos digitales.
Surgió del programa VHSIC (Very High Speed Integrated Circuits) impulsado por
Departamento de Defensa del gobierno de los Estados Unidos de América.
Durante el transcurso del programa se hizo notoria la falta de un lenguaje para
describir circuitos electrónicos. De esta forma se desarrolló el lenguaje VHDL
(VHSIC Hardware Design Language) que fue estandarizado inicialmente en el año
1987 por el Instituto de Ingenieros Eléctricos y Electrónicos (Institute of Electrical
and Electronics Engeneers, IEEE) en los Estados Unidos de América. Dicho
estándar se conoce como IEEE Std 1076-1987. Posteriormente en el año 1993 se
revisó este estándar originando el estándar conocido como IEEE Std 1076-1993
con algunos cambios respecto del anterior. El lenguaje VHDL está diseñado para
cubrir varias necesidades que surgen durante el proceso de diseño. Permite
realizar una descripción funcional o de comportamiento del circuito, utilizando
técnicas procedurales y familiares de programación. Permite describir la estructura
del diseño y declarar las entidades y subentidades que lo forman especificando
una jerarquía entre las mismas y como son sus interconexiones. Por último
permite simular el diseño y sintetizarlo con herramientas de síntesis especiales,
permitiendo su manufacturado y encapsulado como un microcircuito. Un aspecto
que resulta importante destacar es que, gracias a este tipo de lenguajes, se
elimina la fase de prototipación de componentes lo cual reduce los costos de
diseño y producción.
Un ejemplo de descripción en VHDL
El lenguaje VHDL presenta tres estilos de descripción que dependen del nivel de
abstracción. El menos abstracto es el nivel estructural mientras que el mas
abstracto y lejano a una posible implementación física es el algorítmico. A modo
de ejemplo, para ilustrar cada uno de los estilos, se describirá un multiplexor de
dos bits, cuya descripción se reutilizará en el trabajo final.
Un posible esquema del multiplexor se muestra en la figura 3.3.
Programación VHDL: Estructura
Este lenguaje está diseñado con principios de programación estructurada basado
en Pascal y ADA. Damos las siguientes definiciones:
• Entidad VHDL: Declaración de los vectores del módulo, generalmente entradas
y salidas. En otras palabras, podemos decir que se trata de identificador Vectorial
del sistema.
• Arquitectura VHDL: Descripción detallada de la estructura interna ó
comportamiento del módulo. Observado el siguiente diagrama en blocks,
vemos que la entidad implica los lazos que tiene un sistema para ser excitado y
entregar información a otros, es decir, implica todo lo externo del diagrama en
blocks, mientras que la arquitectura describe el interior del bloque. En el desarrollo
jerárquico se definen como entidades de nivel bajo ó inferior a aquellas que no
usan de otras entidades para describir su comportamiento, y entidades de nivel
superior a aquellas que hacen uso de las de menor grado ó nivel. Para realizar un
circuito a través de VHDL se deben declarar ambas características, la entidad y la
arquitectura. Por lo tanto, un programa VHDL es un archivo de texto dónde se
declara en primer lugar la entidad y luego se define la arquitectura, como vemos
en la fig Nº 3, para una compuerta AND.
VHDL ignora los saltos de línea y espacios, por lo tanto, el contexto formal de la
escritura del programa depende de la mejor inteligibilidad del mismo.
Comentarios: Comienzan con dos guiones – y finaliza automáticamente con el
final de línea.
Palabras clave, especiales ó reservadas: Son cadenas de caracteres especiales
reservados por VHDL para su sintaxis. En el ejemplo pueden leerse varias
ENTITY, PORT, IN, OUT, ACHITECTURE, ETC.
Identificadores: Son aquellas cadenas de caracteres que el diseñador utiliza para
nominar o identificar algo del diseño. En nuestro ejemplo: X, Y , Z, BIT,
Compuerta, etc. Hay algunos identificadores especiales que se usan para ciertos
tipos de definiciones. Es el caso de “BIT” en este ejemplo.
Las palabras clave y los identificadores no reconocen diferencia entre
mayúsculas y minúsculas.
Sintaxis General
1. Entidad: La declaración básica tiene el siguiente propósito:
a. Nombrar la entidad
b. Declaración de puertos, la cual define sus puertos ó señales de interfaz externa,
que se manifiesta y representa de la sig. forma sintáctica:
Para establecer esta declaración hay dos tipos de textos bien diferenciados:
Arquitectura: La declaración básica tiene por finalidad especificar la operatividad
y funcionamiento de la entidad. Las señales de puertos externos de una
arquitectura se heredan desde la parte de declaración de puertos de la
correspondiente declaración de entidad, que se manifiesta y representa de la sig.
forma sintáctica:
teniendo en cuenta las siguientes características generales:
nombre-arquitectura: Identificador elegido a gusto del usuario, generalmente
relacionado con la entidad, pudiendo tener el mismo nombre.
nombre-entidad: Debe ser el mismo seleccionado para nominar la entidad.
declaraciones: son las especificaciones que definen la arquitectura, son de
varias características y pueden aparecer en cualquier orden, a saber:
declaración de señal: Especifica la misma información que en una declaración de
puerto, excepto que no se establece ningún modo.
Signal nombre señal : tipo señal:
Puede definirse desde ninguna a varias señales dentro de una arquitectura y
pueden corresponder a los nodos que se identifican en un diagrama lógico.
declaración de constante: En VHDL esta declaración sirve para dar legibilidad,
mantenimiento y portabilidad a los programas, como ocurre en cualquier lenguaje,
cuya sintaxis es:
constant nombre constante : nombre tipo := valor; Las c
onstantes pueden utilizarse siempre que el valor se pueda necesitar. El valor de
una constante puede ser una expresión ó función simple. y consideremos los
siguientes ejemplos:
constant LSB: entero:= Ancho_BUS-1; -- número de bit del LSB
constant U: character:= `U´; -- Valor lógico No Inicializado
constant Tamaño_Bus: entero:= 16; -- Ancho del bus
SABER HACER 1.-Determinar principales elementos de una interfaz de programación de PLD's.
El nombre de Dispositivos lógicos Programables o PLD (Programmable Logic Device) es una
acepción genérica establecida para cualquier sistema digital cuyo funcionamiento está
determinado por el usuario, después que dicho dispositivo fuera fabricado. Al referirnos a usuario,
generalmente nos dirigimos a un profesional del diseño lógico, aunque pudiera ser realmente el
cliente final. Al hablar aquí de circuitos digitales en forma general, nos referimos a todos los
sistemas digitales incluyendo por supuesto a los combinacionales y secuenciales.
Actualmente se los utiliza para realizar todo tipo de circuitos digitales, desde los más sencillos a los
más complejos; que en el pasado se realizaba con lógica cableada a través del uso de una gran
cantidad de elementos lógicos convencionales SSI o MSI; utilizados en forma discreta. Pero la
diferencia fundamental es que estos dispositivos están armónicamente estructurados, tanto en su
hardware como en las herramientas de software utilizadas para el diseño lógico.
Estos circuitos PLD conforman una estructura básica compacta, perfectamente estructurada y por
lo general realizada en un solo circuito integrado (aunque a veces puede ser más de uno)
fabricados en alta (LSI), muy alta (VLSI) ó ultra alta (ULSI) escala de integración. Poseen diferentes
características según el fabricante, en cuanto a su capacidad de programación, tecnología, forma
exterior, etc. Al igual que las memorias programables, están aquellos que permiten una única
programación, los que pueden ser borrados con luz ultravioleta y aquellos borrables y
programables eléctricamente.
Los sistemas secuenciales síncronos de control microprogramados, también llamados
microcontroladores, constituyen una especie de dispositivos lógicos programables, pero como en
general poseen una arquitectura perfectamente definida y lo único que se programa es una
memoria PROM no se incluyen en el estudio de este tipo de circuitos. Algunos autores suelen
incluirlos, junto a los PLD propiamente dichos dentro del estudio y clasificación de las memorias
PROM.
Esta clasificación se presenta muy compleja pues se establece mucha confusión debido a que cada
fabricante establece su nomenclatura particular, con la finalidad de lograr su propio espacio de
poder en la comercialización de dichos dispositivos. Cada empresa fabricante de circuitos
integrados digitales establece un nombre, aunque dicho producto ya exista en el mercado con otra
denominación, aún más correcta. Generalmente estas ideas se aclaran estudiando detenidamente
el significado de dichas siglas.
Por lo antes, indicado realizaremos familias de PLD y ahora las analizaremos brevemente, para
luego dedicarnos de lleno al estudio pormenorizado de cada una de ellas.
1. Redes Lógicas Programables, PAL (Programable Array Logic) ó PLA (Programmable Logic Array).
Se las puede dividir en tres grandes subfamilias, según el tipo de matriz programable que incluya
en su estructura lógica: a) Matriz Y programable – matriz O programable: PLA. b) Matriz Y fija –
matriz O programable: PROM c) Matriz Y programable – matriz Y fija: PAL propiamente dichas, y
que según el tipo de dispositivo lógico que incluya en su estructura interna, pueden ser:
PAL combinacionales ó PAL simples.
PAL secuenciales. ó FPLS.
Desde el punto de vista de la tecnología de programación, se las divide en dos tipos: a) PAL
Bipolares. b) PAL CMOS.
2. EPLD (Erasable Programmable Logic Device) Son circuitos lógicos programables eléctricamente y
borrables con luz ultravioleta, que permiten desarrollar un diseño, borrando y regrabando hasta
sacarle todos los problemas lógicos ó eléctricos. Tenemos las siguientes familias:
EPLD Simples ó clásicas: Familia de serie EPXXXX.
EPLD Complejas ó CPLD (Complex Programmable Logic Device): Familia MAX ó de la serie
EPMXXXX. Múltiple Array matriz. Familia FLEX ó Flexible Lógic Element Matrix. Familia
APEX ó Advanced Programmable Element Matrix.
EPLD Específicas: Familia de serie EPB Familia de serie EPS
GAL (Generic Array Logic) Son equivalente a las memorias EEPROM, es decir que permiten ser
borradas y grabadas eléctricamente. Se pueden establecer las siguientes subfamilias:
Tipo PAL:
Matriz Y / Macrocelda programable de salida:
Borrables y Programables fuera del circuito.
Borrables y Programables en circuito.
TIPO FPLA :
Matriz Y / Matriz O / Macrocelda programable de salida.
Se introduce un nuevo concepto más general de redes/macroceldas programables.
4. ASIC: Son circuitos digitales completos, de uso directo por los diseñadores, sin necesidad de
programación posterior. Aparecieron al mismo tiempo que las PAL, pero como son programables
por máscaras en fábrica sólo se aplica a grandes producciones en serie, pues su costo es elevado y
su amortización se justifica solo en esos casos.
5. LCA (Logic Cell Array) ó FPGA (Field Programmable Gate Array) ó red de celdas lógicas. Podemos
decir que es un producto similar a las ASIC, pero programables por el usuario. Se caracteriza por
poseer una gran cantidad de bloques funcionales básicos, que en el estadio de diseño e
implementación el usuario interconecta para obtener las funciones lógicas deseadas.
6. FPGA de antifusibles: se trata de redes de compuertas lógicas muy similares a las LCA, pero con
una técnica de programación de las uniones totalmente diferentes, cuya denominación es la que
identifica a estos circuitos, es decir antifusibles.
SABER HACER 2.-Programación y simulación de ecuaciones boolenas en VHDL y software dedicado.
VHDL es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles
de abstracción. El significado de las siglas VHDL es VHSIC (Very High Speed Integrated Circuits)
Hardware Description Language. Esto significa que VHDL permite acelerar el proceso de diseño.
VHDL no es un lenguaje de programación, por ello conocer su sintaxis no implica necesariamente
saber diseñar con él. VHDL es un lenguaje de descripción de hardware, que permite describir
circuitos síncronos y asíncronos. Para realizar esto debemos: - Pensar en puertas y biestables, no
en variables ni funciones. - Evitar bucles combinacionales y relojes condicionados. - Saber qué
parte del circuito es combinacional y cuál secuencial. ¿Por qué usar un lenguaje de descripción
hardware? - Poder descubrir problemas en el diseño antes de su implementación física. - La
complejidad de los sistemas electrónicos crece exponencialmente, es necesaria una herramienta
que trabaje con el ordenador. - Permite que más de una persona trabaje en el mismo proyecto.
En particular VHDL permite tanto una descripción de la estructura del circuito (descripción a partir
de subcircuitos más sencillos), como la especificación de la funcionalidad de un circuito utilizando
formas familiares a los lenguajes de programación.
La misión más importante de un lenguaje de descripción HW es que sea capaz de simular
perfectamente el comportamiento lógico de un circuito sin que el programador necesite imponer
restricciones (ver ejemplo 1). En el ejemplo, una ejecución del código utilizando las reglas básicas
de cualquier lenguaje de programación al uso daría dos resultados diferentes sobre la misma
descripción del circuito. Esto es debido a que en HW todos los circuitos trabajan a la vez para
obtener el resultado (todo se ejecuta en paralelo) mientras que en software el orden de las
instrucciones delimita la actualización de las variables (ejecución secuencial de las instrucciones).
Un lenguaje de descripción HW, VHDL o cualquier otro de los existentes en el mercado, nos debe
dar el mismo resultado en simulación para los dos programas del ejemplo 1.
Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulación que
reproducen el funcionamiento del circuito descrito. Para la realización de la simulación existe un
estándar aprobado por el ieee, en el cual se explican todas las expresiones propias de VHDL y
cómo se simulan. Además, existen herramientas que transforman una descripción VHDL en un
circuito real (a este proceso se le denomina síntesis). La sintaxis para síntesis y su implementación
final, aunque sigue unas normas generales, depende en gran medida de la herramienta de síntesis
seleccionada.
Un sistema digital está descrito por sus entradas y sus salidas y la relación que existe entre ellas.
En el caso de VHDL por un lado se describirá el aspecto exterior del circuito: entradas y salidas; y
por otro la forma de relacionar las entradas con las salidas. El aspecto exterior, cuántos puertos de
entrada y salida tenemos, es lo que denominaremos entity. Y la descripción del comportamiento
del circuito architecture, toda architecture tiene que estar asociada a una entity. Además, aunque
no es estrictamente necesario, podemos definir también las bibliotecas y paquetes que vamos a
utilizar, lo que nos indicará que tipos de puertos y operadores podemos utilizar. Siempre ha de
aparecer la definición de las bibliotecas y paquetes antes de la definición de la entity.
SABER HACER.3- Comparar programación VHDL y lenguaje gráfico, similitudes y ventajas.
como lenguajes de programación convencionales, cuando en realidad se debería clasificarlos más
precisamente como lenguajes de modelado. En la práctica existen distintos tipos de simuladores
capaces de trabajar tanto con eventos discretos (digitales) como continuos (analógicos), existiendo
lenguajes HDL especificos para cada caso.
Verilog: Verilog es un lenguaje de descripcion de hardware (HDL, del Ingl´es Hardware Description
Language) usado para modelar sistemas electronicos. El lenguaje, algunas veces llamado Verilog
HDL, soporta el diseño, prueba e implementaci´on de circuitos analogicos, digitales y de señal
mixta a diferentes niveles de abstraccion. Cabe destacar que es lo m´as extensamente posible HDL
usado con una comunidad de usuario mas del active de 50.000 diseñadores. Los diseñadores de
Verilog querıan un lenguaje con una sintaxis similar a la del lenguaje de programacion C, de tal
manera que le resultara familiar a los ingenieros y ası fuera rapidamente aceptada. El lenguaje
tiene un preprocesador como C, y la mayorıa de palabras reservadas de control como ”if”, ”while”,
etc, son similares. El mecanismo de formateo en las rutinas de impresion y en los operadores del
lenguaje (y su precedencia) son tambien similares. A diferencia del lenguaje C, Verilog usa
Begin/End en lugar de llaves para definir un bloque de codigo. Por otro lado la definicion de
constantes en Verilog requiere la longitud de bits con su base. Verilog no tiene estructuras,
apuntadores o funciones recursivas. Finalmente el concepto de tiempo, muy importante en un
HDL, no se encuentra en C.
Lenguaje de descripcion de hardware (HDL) El modelado de comportamiento abstracto y el
modelado de la estructura hardware son dos aspectos de los lenguajes de descripcion
Hardware(HDL), el cual es un lenguaje de programacion software que es empleado a la hora de
modelar el funcionamiento de un circuito hardware. El modelado de comportamiento abstracto
hace referencia a un lenguaje cuando es declarativo con el objetivo de facilitar la descripcion del
comportamiento hardware de un circuito el cual esta siendo implementado, por otro lado, el
modelado de la estructura hardware es aquella estructura que puede ser modelada en un HDL
independientemente al lenguaje de descripcion hardware usado para modelar el comportamiento
del diseño, teniendo la posibilidad de ser modelado y representado en distintos niveles de
abstraccion durante el proceso de diseño.
La diferencia principal entre los modelos con altos y bajos niveles de abstracci´on es que mientras
que los modelos con niveles bajos de abstraccion incluyen mas detalles, los modelos de bajos
niveles de abstraccion describen el comportamiento del diseño de forma abstracta. Gracias a los
lenguajes de descripcion hardware se puede representar diagramas logicos y circuitos con
diferentes grados de complejidad, ademas, representan sistemas digitales de manera legible tanto
para las maquinas como para las personas
VHDL VHDL es un lenguaje de descripci´on de circuitos electr´onicos digitales, mediante ´el se
pueden describir los comportamientos de los circuitos. Este comportamiento puede transferirse a
alg´un dispositivo con sus componentes propios, y con ellos lograr´ a el comportamiento deseado.
El comportamiento el dispositivo es independiente al hardware del dispositivo.Para saber dise˜nar
circuito con VHDL, no solo se necesita conocer su sintaxis, sino que tambi´en es necesario tener en
cuenta que es necesario pensar con puertas l´ogicas y biestables, no en variables y funciones como
en los lenguajes de programaci´on. Tambi´en es importante evitar los bucles combinacionales y los
relojes que est´en condicionados. Y la ´ultima cuesti´on a tener en cuenta es que es necesario
saber diferenciar las partes del circuito en combinacionales y secuenciales. Este leguaje permite
una descripci´on de la estructura del circuito a partir de subcircuitos m´as sencillos, y tambi´en
permite especificar la funcionalidad de un circuito usando un formato similar al de los lenguajes de
programaci´on, permitiendo a los usuarios adaptarse m´as f´acilmente a este tipo de lenguaje. El
VHDL es un est´andar de dominio p´ublico llamado IEEE 1076-1993. Al ser un est´andar no
depende de ning´un fabricante o dispositivo, es independiente; esto tambi´en provoca que se
puedan reutilizar los dise˜nos; y por ´ultimo, al ser un est´andar tiene la ventaja de que es un
dise˜no jer´arquico, por lo que se mantiene un orden y se siguen ciertas reglas jer´arquicas.