Вы находитесь на странице: 1из 4

Los Dispositivos Lógicos Programables (PLD´s) son circuitos integrados, que proporcionan una solución al

diseño de forma análoga.

VHDL

TIPOS DE DESCRIPCION DE PROGRAMA (ESTRUCTURA)


Como se ha dicho antes, VHDL sirve para describir un circuito electrónico, pero el mismo circuito puede ser
descrito de varias formas. Las formas de hacerlo son:
- Descripción de comportamiento
- Descripción de flujo de datos (RTL Registred Transfer Level)
- Descripción estructural
Los tres ejemplos de código son sólo las arquitecturas, los tres podrían tener como entidad:

Descripción de comportamiento
Una descripción de comportamiento de un multiplexor de dos entradas, una salida y una señal de selección
sería: la salida será igual a la primera entrada si la señal de control está desactivada y la salida será la segunda
entrada si la señal de control está activada.
En VHDL la arquitectura de este multiplexor para la entidad llamada mux sería:

Descripción de flujo de datos


En una descripción de flujo de datos del mismo multiplexor la salida sería la ecuación lógica: s=(entrada1 AND
NOT control) OR (entrada2 AND control)
En VHDL la arquitectura sería:
Descripción estructural
Una descripción estructural consistiría en decir que el circuito tiene una puerta inversora U1, dos puertas AND
de dos entradas U2 y U3 y una puerta lógica OR de dos entradas U4, además también describe las conexiones
entre estas puertas, un ejemplo sería: la entrada de U1 es la señal de control, la salida de U1 se conecta a la
segunda entrada de U2, la primera entrada de U1 es entrada1, etc.
El código VHDL sería:

En el código anterior se deberían haber definido previamente las puertas inversor, and_2_entradas y
or_2_entradas.

DISEÑO CON VHDL


El lenguaje VHDL es en principio independiente del dispositivo programable que debamos utilizar. Puede
incluso utilizarse para hacer una simulación sin hacer referencia al CI programable. Además, el lenguaje es
suficientemente flexible para que un mismo problema admita diferentes codificaciones.
Sin embargo, no todas estas codificaciones darán los mismos resultados en cuanto a prestaciones y uso de
recursos a la hora de programar un circuito dado. Aunque los programas informáticos permiten optimizar el
paso de un código VHDL al fichero de programación de un CI programable, no podemos esperar en la
actualidad que la solución encontrada sea la mejor.
Por otro lado, optimizar puede tener sentidos distintos. Un diseñador puede estar interesado en obtener la
máxima frecuencia de trabajo, o bien en reducir la utilización de recursos del CI, de forma que quede espacio
para programar otras lógicas. Es tarea del diseñador ayudar “a mano” a que el resultado final sea lo más
eficiente posible. Es más, a veces la forma de escribir el código VHDL depende del dispositivo que se use (por
ejemplo si es una FPGA o un CPLD).
El ciclo de diseño se puede dividir, en general, en 3 fases: especificación, validación, materialización. En la
especificación se introduce el diseño bien mediante captura esquemática, bien mediante un lenguaje de
descripción hardware (HDL). El diseño debe verificarse sintácticamente.

Con la generación del “netlist” (síntesis) tenemos la descripción de una serie de elementos lógicos conectados
y podemos pasar a realizar la validación del diseño, mediante la simulación. La simulación puede ser funcional,
considerando los elementos como ideales (sin retrasos), o estructural, en el que la herramienta informática
incorpora modelos más elaborados de los elementos lógicos que permiten realizar la simulación incorporando
retrasos. En este último caso, podemos abordar además el análisis de los tiempos de setup y de hold. La
simulación funcional es más rápida y se aconseja realizarla primero hasta que la lógica de nuestro diseño se
compruebe.
Una vez que se ha realizado la simulación funcional podemos pasar a la implementación física, es necesario
una etapa de síntesis y ajuste (“fitting”) en el que el diseño se divide en elementos asimilables a los recursos
físicos de nuestra PLC (sumas de productos, multiplexores, memoria embebida).
Se puede observar en la figura que se pueden generar netlist tomando como base diferentes tipos de
elementos, por ejemplo, puertas elementales al inicio del diseño, o bien los elementos que realmente se
encuentran en un dispositivo programable, una vez que sabemos cuál vamos a utilizar.

Requerimientos y limitaciones.
En un diseño existen una serie de requerimientos previos como pueden ser:
- El diseño debe estar terminado en una cierta fecha.
- Debe funcionar correctamente, con el mínimo de material.
- Debe ser capaz de operar a una cierta frecuencia.
- No puede superar un cierto coste económico.
- Debe ajustarse a un circuito más complejo (limitaciones de espacio y compatibilidad).
El orden de los requerimientos puede ayudar a tomar decisiones. Por ejemplo, si la fecha limite es el
requerimiento más importante, el diseñador no dedica más tiempo a mejorar un diseño que ya cumple el
resto de requerimientos. Si la frecuencia de operación es un parámetro más crítico que el coste, no se pierde
tiempo intentando reducir el área si las prestaciones ya son suficientes.
Es necesario tener en cuenta también las limitaciones de los CI programables:
- Número de salidas/entradas.
- Número de biestables.
- El número de términos producto (o capacidad booleana).
- Las posibles combinaciones de reset/preset que admita.
- Los posibles esquemas de distribución reloj.
- La capacidad de interconexión interna de señales.

A la hora de decidir entre una CPLD o una FPGA es importante tener en cuenta algunas consideraciones. Las
CPLDs proporcionan habitualmente las mejores prestaciones, pero también contienen menos registros que las
FPGAs.
Las CPLDs pueden implementar funciones más complicadas en un sólo pase (sin que la salida sea realimentada
al integrado) y en ellas el análisis de tiempos es más fácil. Las FPGAs son más flexibles en cuanto a la
construcción de celdas lógicas en cascada debido a su granularidad más fina (celdas lógicas más sencillas, pero
en mayor número que en una CPLD, y con mayor capacidad de conexión).
La optimización y el análisis de tiempos son más difíciles en una FPGA.
Antes de elegir un dispositivo, es conveniente entender qué recursos necesita un diseño, su funcionamiento,
así como los objetivos de prestaciones, coste y otros. Con todos los requerimientos en una lista, se pueden
comparar las necesidades con lo que un dispositivo puede ofrecer.
Finalmente, hay que contar por supuesto con un software adecuado y manejable.

Las etapas de síntesis y ajuste


La síntesis (synthesis) es el proceso de crear las ecuaciones lógicas o las listas de nodos a partir del código
VHDL. El proceso de ajuste (fitting) consiste en encontrar la manera de que esa lógica sea realizada por un
dispositivo programable. Una optimización específica del dispositivo se puede dar tanto en un proceso como
en otro.
El término fitting se usa normalmente para referirse a CPLDs. El software de ajuste (fitter) se encarga de
repartir la lógica entre las macroceldas y de conectar y enviar las señales a través de la matriz de
interconexiones. El análogo en FPGA es el término de colocación y conexionado (place and routing), que es el
proceso de determinar qué celdas lógicas serán utilizadas y cómo las señales se transmitirán de una a otra.
El software de síntesis puede pasar al software de ajuste unas ecuaciones lógicas que indiquen qué recursos se
utilizarán, o puede pasar unas ecuaciones no optimizadas, siendo tarea del "fitter" dicha optimización. Lo
importante es que los programas de síntesis y ajuste estén bien acoplados, es decir que el "fitter" reciba la
información del algoritmo de síntesis de una forma que le permita producir la mejor implementación. Si el
"fitter" no produce ninguna optimización, entonces el proceso de síntesis debe pasar una ecuaciones lógicas y
una información de forma que el "fitter" no tenga más que situar la lógica.

Flip-Flops
El "Flip-flop" es el nombre común que se le da a los dispositivos de dos estados, que sirven como memoria
básica para las operaciones de lógica secuencial. Los Flip-flops son ampliamente usados para el
almacenamiento y transferencia de datos digitales y se usan normalmente en unidades llamadas "registros",
para el almacenamiento de datos numéricos binarios.

Вам также может понравиться