sábado, 25 de septiembre de 2021

Lenguaje VHdl

 A partir del desarrollo de circuitos Integrados Digitales programables con una gran cantidad de componentes lógicos y la necesidad de sistema digitales para aplicaciones mas complejas, las herramientas de diseño tradicionales se vuelven cada vez más ineficientes y poco efectivas para lograr desarrollos adecuados, por lo tanto las empresas fabricantes de circuitos integrados desarrollan herramientas más útiles, originándose así los HDL ó Lenguajes de Descripción de hardware. Así cada empresa crea el suyo estableciendo una diversidad de lenguajes muy grande. Para tratar de unificar estas herramientas, entre los años 1984 y 1987, el IEEE y el Departamento de Defensa de los Estados Unidos (DoD) patrocinan el desarrollo de un Lenguaje llamado VHDL. Su nombre viene de VHSIC HDL, o sea Lenguaje de Descripción de hardware para circuitos integrados de muy alta velocidad. Considerando que un lenguaje de descripción de hardware es una herramienta formal que permite describir la estructura y comportamiento de un sistema para lograr una adecuada especificación, documentación y simulación del mismo antes de su realización real; para su implementación se establecieron ciertas características fundamentales, que aún hoy siguen siendo válidas, y son: • Cada elemento de diseño tiene una interfaz única y perfectamente definida, que permite conectarla a otros elementos. • Cada elemento tiene un comportamiento preciso y unívocamente definido, que permiten su posterior simulación. • La especificación de comportamiento que permite definir la operatividad puede realizarse a través de un algoritmo ó de una estructura de hardware real. • Los diseños mantienen una estructura jerárquica, que permite descomponerlo adecuadamente. • Las características concurrentes, temporizadas y de sincronismo (por ej. reloj) pueden ser modeladas adecuadamente. • Se puede simular cualquier operación lógica y de temporización. Se establece así una herramienta que además tiene amplias características de modelado y documentación. De esta forma cualquier circuito digital se puede especificar y simular adecuadamente. Luego del desarrollo de este lenguaje aparecieron las herramientas adecuadas de síntesis que completan el panorama de diseño de un sistema digital. Así de esta forma se puede decir que si utiliza VHDL se puede diseñar, simular y sintetizar cualquier sistema digital, desde el combinacional más simple hasta la estructura secuencial más compleja. Las nuevas versiones de HDL permiten también el desarrollo de circuitos analógicos.


1. Etapa de Desarrollo: Tiene varios pasos, a saber:

 a. Planteo General del Sistema: Consiste en hacer un Diagrama en Blocks funcional y jerárquico del sistema a desarrollar. Definición de módulos e interfaces generales del sistema

b. Codificación: Consiste en escribir el código VHDL para todos los componentes planteados, módulos específicos e interfaces. Se trata de un simple discurso de texto, por lo que puede realizarse en cualquier editor conocido por el diseñador. Sin embargo, los ambientes de diseño incluyen un Editor VHDL especializado, por lo que el desarrollo de esta etapa es más sencilla. Estos editores incluyen características propias del lenguaje, como sangría automática, resaltado de palabras clave, verificación sintáctica, etc.

 c. Compilación: En esta etapa el compilador VHDL transforma el programa fuente en objeto, por lo cual analiza la sintaxis de lo escrito y verifica la compatibilidad con cualquier otro módulo ingresados como fuente del presente programa. Junto a esto produce toda la información necesaria para la posterior simulación del proyecto. 


Nota: A veces, en proyectos complejos conviene realizar compilaciones parciales, ganando así tiempo posterior de desarrollo. 

d. Verificación: Esta etapa es muy importante, pues permite establecer si el circuito obtenido funciona como se pretendió al fijar las pautas de diseño.

 Existen dos características a verificar, y ellas son las Funcional y la Temporal. En el primer caso se analiza el funcionamiento lógico del circuito, sin considerar el tiempo como variable. Aquí los elementos lógicos son considerados como ideales, es decir sin retardos. En la verificación temporal se analizan los resultados del circuito real, considerando retardos estimados, ya que aún no se han seleccionado los circuitos reales de síntesis. De esta manera se verifica la funcionalidad temporal de circuitos combinacionales y especialmente los secuenciales con características de memorización. La verificación funcional y temporal se realiza a través de un proceso complejo conocido como simulación, el cual permite detectar errores en el diseño obtenido, y de esta forma hacer las correcciones adecuadas antes de pasar a la etapa de síntesis.

 Simulación: Este procedimiento de verificación permite definir entradas y aplicarlas al prototipo de software, analizar el comportamiento de los diversos módulos definidos y observar las salidas. Todo esto sin tener que realizar el prototipo físico con circuitos reales. Para proyectos pequeños se pueden generar entradas y verificar salidas en forma manual; pero en grandes sistemas se crean ¨bancos de prueba” con la capacidad de establecer entradas, verificar salidas y realizar las comparativas con lo valores esperados. La simulación funcional es completa y precisa, sin embargo la temporal sólo es aproximada pues se basa en valores estimados, y sirve para establecer que vamos en el camino correcto. Esto es así pues es muy dependiente de la síntesis, dónde se establecen los circuitos específicos y es allí dónde salen los verdaderos valores de retardos de acuerdo al circuito, a la tecnología, al layout, tipo de componentes discretos, etc.

 2. Etapa de Realización: Las características y herramientas son algo diferentes de la anterior. Tiene varios pasos, a saber:

 a. Sintesís: Convierte el modelo descripto por VHDL en un conjunto de primitivas ó componentes que se articularán en un circuito real en una tecnología adecuada. Generalmente estas herramientas presentan la posibilidad de establecer filtros, premisas ó restricciones específicas del tipo de circuito ó tecnología. Por ejemplo en los circuitos lógicos programables, como PAL, GAL, CPLD, FPGA las herramientas de síntesis pueden generar ecuaciones booleanas; y en el caso de ASIC ó ASSP generar una lista de compuertas y la malla que fija el cableado correspondiente de interconexión. 

b. Ajuste y Enrutamiento: Son herramientas que mapean las ecuaciones ó componentes de acuerdo a los recursos disponibles de cada dispositivo. Como en el paso anterior, el diseñador puede especificar restricciones ó asignaciones específicas para lograr el módulo correcto. 

 Verificación temporal y total del circuito: Este es la etapa crucial ya que establece la funcionalidad temporal correcta basada en todos los parámetros reales introducidos en el diseño, como circuitos integrados reales, longitud de los buses incorporados, longitud de los alambres, cargas de los elementos físicos, etc. Generalmente se aplican las mismas señales ó bancos de prueba utilizadas en la etapa de desarrollo. 

Modulos embebidos DSP

  Componentes de un sistema embebido Un  estaría formando por un microprocesador y un software que se ejecute sobre éste. Sin embargo este...