Articulo de referencia

VHDL

{{cite book |author=David R. Coelho |title=The VHDL Handbook |url=https://books.google.com/books?id=IxZqlbYMJCIC&q=Ada |date=30 June 1989 |publisher=Springer Science & Business ...

Código fuente VHDL para un sumador con signo

VHDL ( lenguaje de descripción de hardware VHSIC ) es un lenguaje de descripción de hardware que permite modelar el comportamiento y la estructura de sistemas digitales en múltiples niveles de abstracción, desde el nivel del sistema hasta el de las compuertas lógicas . Se puede utilizar para la entrada de diseño, la documentación y la verificación. El lenguaje se desarrolló para el programa militar estadounidense VHSIC en la década de 1980 y ha sido estandarizado por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) como IEEE  Std  1076 ; la versión más reciente es IEEE  Std  1076-2019 . Para modelar sistemas analógicos y de señal mixta , se ha desarrollado un HDL estandarizado por el IEEE basado en VHDL llamado VHDL-AMS (oficialmente IEEE  1076.1).

Historia

En 1983, VHDL se desarrolló originalmente a petición del Departamento de Defensa de los Estados Unidos para documentar el comportamiento de los ASIC que las empresas proveedoras incluían en sus equipos. La norma MIL-STD-454N [ 2 ] , en el requisito 64 de la sección 4.5.1, "Documentación de ASIC en VHDL", exige explícitamente la documentación de "Dispositivos microelectrónicos" en VHDL.

La idea de poder simular los ASIC a partir de la información de esta documentación resultó tan atractiva que se desarrollaron simuladores lógicos capaces de leer los archivos VHDL. El siguiente paso fue el desarrollo de herramientas de síntesis lógica que leyeran el VHDL y generaran una definición de la implementación física del circuito.

Debido a que el Departamento de Defensa exige que la mayor parte de la sintaxis se base en Ada, para evitar reinventar conceptos que ya habían sido probados exhaustivamente en el desarrollo de Ada, VHDL toma prestados muchos elementos del lenguaje de programación Ada tanto en concepto como en sintaxis .

La versión inicial de VHDL, diseñada según el estándar IEEE 1076–1987, [ 3 ] incluía una amplia gama de tipos de datos, incluidos numéricos ( enteros y reales ), lógicos ( bits y booleanos ), caracteres y tiempo , además de matrices de bitcadenas llamadas bit_vectory de cadenascharacter llamadas .

Sin embargo, un problema que no se resolvió en esta edición fue la lógica multivaluada , donde también se consideran la intensidad de la señal (ninguna, débil o fuerte) y los valores desconocidos. Esto requirió la norma IEEE 1164 , que definió los tipos lógicos de 9 valores: escalar std_logicy su versión vectorial std_logic_vector. Al ser un subtipo resuelto de su std_Ulogictipo padre, std_logiclas señales de tipo permiten la activación múltiple para modelar estructuras de bus, donde la función de resolución conectada maneja adecuadamente las asignaciones conflictivas.

La versión actualizada de IEEE 1076 , de 1993, hizo que la sintaxis fuera más consistente, permitió una mayor flexibilidad en la nomenclatura, amplió el charactertipo para permitir caracteres imprimibles ISO-8859-1xnor , agregó el operador, etc.

Los cambios menores en el estándar (2000 y 2002) añadieron la idea de tipos protegidos (similar al concepto de clase en C++ ) y eliminaron algunas restricciones de las reglas de asignación de puertos.

Además del estándar IEEE 1164, se introdujeron varios estándares secundarios para ampliar la funcionalidad del lenguaje. El estándar IEEE 1076.2 mejoró el manejo de tipos de datos reales y complejos. El estándar IEEE 1076.3 introdujo tipos con y sin signo para facilitar las operaciones aritméticas con vectores. El estándar IEEE 1076.1 (conocido como VHDL-AMS ) proporcionó extensiones para el diseño de circuitos analógicos y de señal mixta.

Algunos otros estándares apoyan un uso más amplio de VHDL, en particular VITAL (VHDL Initiative Towards ASIC Libraries) [ 4 ] y las extensiones de diseño de circuitos de microondas .

En junio de 2006, el Comité Técnico VHDL de Accellera (delegado por el IEEE para trabajar en la próxima actualización del estándar) aprobó el llamado Borrador 3.0 de VHDL-2006. Si bien mantiene la compatibilidad total con versiones anteriores, este estándar propuesto proporciona numerosas extensiones que facilitan la escritura y la gestión del código VHDL. Los cambios clave incluyen la incorporación de estándares secundarios (1164, 1076.2, 1076.3) al estándar principal 1076, un conjunto ampliado de operadores, una sintaxis más flexible para las sentencias case y generate , la incorporación de VHPI (VHDL Procedural Interface) (interfaz para lenguajes C/C++) y un subconjunto de PSL ( Property Specification Language ). Estos cambios deberían mejorar la calidad del código VHDL sintetizable, hacer que los bancos de pruebas sean más flexibles y permitir un uso más amplio de VHDL para descripciones a nivel de sistema.

En febrero de 2008, Accellera aprobó VHDL 4.0, también conocido informalmente como VHDL 2008, que solucionaba más de 90 problemas detectados durante el período de prueba de la versión 3.0 e incluía tipos genéricos mejorados. En 2008, Accellera presentó VHDL 4.0 al IEEE para su votación e inclusión en la norma IEEE 1076-2008. La norma VHDL IEEE 1076-2008 [ 5 ] se publicó en enero de 2009.

Normalización

El estándar IEEE 1076 define el lenguaje de descripción de hardware VHSIC , o VHDL. Fue desarrollado originalmente bajo el contrato F33615-83-C-1003 de la Fuerza Aérea de los Estados Unidos, adjudicado en 1983 a un equipo formado por Intermetrics, Inc. como expertos en el lenguaje y contratista principal, Texas Instruments como expertos en diseño de chips e IBM como expertos en diseño de sistemas informáticos. El lenguaje ha sufrido numerosas revisiones y cuenta con diversos subestándares asociados que lo complementan o amplían de forma significativa.

La norma IEEE 1076 fue y sigue siendo un hito en el diseño de sistemas electrónicos. [ 6 ]

Revisiones

  • IEEE 1076–1987 [ 3 ] Primera revisión estandarizada de la versión 7.2 del lenguaje de la Fuerza Aérea de los Estados Unidos.
  • IEEE 1076–1993 [ 7 ] (también publicado con ISBN 1-55937-376-8). Mejoras significativas resultantes de varios años de retroalimentación. Probablemente la versión más utilizada y con mayor soporte de herramientas del proveedor.
  • IEEE 1076–2000. [ 8 ] Revisión menor. Introduce el uso de tipos protegidos .
  • IEEE 1076–2002. [ 9 ] Revisión menor de 1076–2000. Se relajan las reglas con respecto a los puertos de búfer .
    • IEC 61691-1-1:2004. [ 10 ] Adopción por parte de la IEC de la norma IEEE 1076–2002.
  • IEEE 1076c–2007. [ 11 ] Introdujo VHPI, la interfaz procedimental de VHDL, que proporciona al software los medios para acceder al modelo VHDL. El lenguaje VHDL requirió modificaciones menores para adaptarse a VHPI.
  • IEEE 1076–2008 (anteriormente conocida como 1076–200x). Revisión principal publicada el 26 de enero de 2009. Entre otros cambios, esta norma incorpora un subconjunto básico de PSL, permite el uso de genéricos en paquetes y subprogramas e introduce el uso de nombres externos .
    • IEC 61691-1-1:2011. [ 12 ] Adopción por parte de la IEC de IEEE 1076–2008.
  • IEEE 1076–2019. Revisión importante.
  • IEEE 1076.1 VHDL Analógico y de Señal Mixta ( VHDL-AMS )
  • Paquetes estándar VHDL-AMS IEEE 1076.1.1 (stdpkgs)
  • Paquete matemático VHDL IEEE 1076.2
  • Paquete de síntesis VHDL IEEE 1076.3 (vhdlsynth) ( estándar numérico )
  • Paquete de síntesis VHDL IEEE 1076.3 – Punto flotante (fphdl)
  • Sincronización IEEE 1076.4 (Iniciativa VHDL para bibliotecas ASIC: VITAL)
  • IEEE 1076.6 Interoperabilidad de síntesis VHDL (retirada en 2010) [ 13 ]
  • Paquetes de lógica multivalor VHDL IEEE 1164 (std_logic_1164)

Diseño

VHDL se utiliza generalmente para escribir modelos de texto que describen un circuito lógico. Dicho modelo solo se procesa mediante un programa de síntesis si forma parte del diseño lógico. Un programa de simulación se utiliza para probar el diseño lógico mediante modelos de simulación que representan los circuitos lógicos que interactúan con el diseño. Este conjunto de modelos de simulación se conoce comúnmente como banco de pruebas .

Un simulador VHDL suele ser un simulador orientado a eventos . [ 14 ] Esto significa que cada transacción se agrega a una cola de eventos para un tiempo programado específico. Por ejemplo, si la asignación de una señal debe ocurrir después de 1 nanosegundo, el evento se agrega a la cola para el tiempo +1ns. También se permite un retardo cero, pero aún así debe programarse: para estos casos, se utiliza el retardo delta , que representa un paso de tiempo infinitesimal. La simulación alterna entre dos modos: ejecución de sentencias, donde se evalúan las sentencias activadas, y procesamiento de eventos, donde se procesan los eventos en la cola.

VHDL cuenta con construcciones para manejar el paralelismo inherente a los diseños de hardware, pero estas construcciones ( procesos ) difieren en sintaxis de las construcciones paralelas de Ada ( tareas ). Al igual que Ada, VHDL es fuertemente tipado y no distingue entre mayúsculas y minúsculas . Para representar directamente operaciones comunes en hardware, VHDL incluye muchas características que no se encuentran en Ada, como un conjunto extendido de operadores booleanos, incluyendo nand y nor .

VHDL admite entrada y salida de archivos, y puede utilizarse como lenguaje de propósito general para el procesamiento de texto. Sin embargo, los archivos se utilizan con mayor frecuencia en bancos de pruebas de simulación para datos de estímulo o verificación. Existen algunos compiladores de VHDL que generan binarios ejecutables. En este caso, sería posible utilizar VHDL para escribir un banco de pruebas que verifique la funcionalidad del diseño mediante archivos en el ordenador anfitrión para definir estímulos, interactuar con el usuario y comparar los resultados con los esperados. No obstante, la mayoría de los diseñadores delegan esta tarea al simulador.

Para un desarrollador inexperto, es relativamente fácil producir código que se simule correctamente, pero que no pueda sintetizarse en un dispositivo real o que sea demasiado grande para ser práctico. Un error común es la producción accidental de biestables transparentes en lugar de flip-flops tipo D como elementos de almacenamiento. [ 15 ]

Se puede diseñar hardware en un IDE VHDL (para implementación en FPGA, como Xilinx ISE, Altera Quartus, Synopsys Synplify o Mentor Graphics HDL Designer) para generar el esquema RTL del circuito deseado. Posteriormente, el esquema generado se puede verificar mediante software de simulación, que muestra las formas de onda de las entradas y salidas del circuito tras generar el banco de pruebas adecuado. Para generar un banco de pruebas apropiado para un circuito o código VHDL específico, las entradas deben definirse correctamente. Por ejemplo, para la entrada de reloj, se requiere un bucle o una instrucción iterativa. [ 16 ]

Cuando un modelo VHDL se traduce en las puertas y cables que se asignan a un dispositivo lógico programable, como un CPLD o un FPGA , entonces es el hardware real el que se configura, en lugar de que el código VHDL se ejecute como si estuviera en algún tipo de chip procesador.

Ventajas

La principal ventaja de VHDL, cuando se utiliza para el diseño de sistemas, es que permite describir (modelar) y verificar (simular) el comportamiento del sistema requerido antes de que las herramientas de síntesis traduzcan el diseño a hardware real (puertas y cables).

Otra ventaja es que VHDL permite describir un sistema concurrente . VHDL es un lenguaje de flujo de datos en el que cada instrucción se considera para su ejecución simultáneamente, a diferencia de los lenguajes de programación procedimentales como BASIC, C y el lenguaje ensamblador, donde una secuencia de instrucciones se ejecuta secuencialmente, una instrucción a la vez.

Un proyecto VHDL es multipropósito. Al crearse una sola vez, un bloque de cálculo puede utilizarse en muchos otros proyectos. Además, se pueden ajustar numerosos parámetros de configuración y funcionalidad del bloque (parámetros de capacidad, tamaño de memoria, base de elementos, composición del bloque y estructura de interconexión).

Un proyecto VHDL es portable. Al haber sido creado para una base de elementos, un proyecto de dispositivo informático puede portarse a otra base de elementos; por ejemplo, VLSI con diversas tecnologías.

Una gran ventaja de VHDL en comparación con el Verilog original es que VHDL tiene un sistema de tipos completo . Los diseñadores pueden usar el sistema de tipos para escribir código mucho más estructurado (especialmente declarando tipos de registro ). [ 17 ]

Ejemplos de diseño

En VHDL, un diseño consta, como mínimo, de una entidad que describe la interfaz y una arquitectura que contiene la implementación propiamente dicha. Además, la mayoría de los diseños importan módulos de biblioteca. Algunos diseños también contienen múltiples arquitecturas y configuraciones .

Una puerta lógica AND simple en VHDL se vería algo así:

-- (este es un comentario VHDL) /*  este es un comentario de bloque (VHDL-2008) */ -- import std_logic de la biblioteca IEEE library IEEE ; use IEEE.std_logic_1164. all ;-- esta es la entidad entidad ANDGATE es puerto ( I1 : entrada std_logic ; I2 : entrada std_logic ; O : salida std_logic ) ; fin entidad ANDGATE ;-- esta es la arquitectura arquitectura RTL de ANDGATE es begin O <= I1 and I2 ; end arquitectura RTL ;

(Nótese que RTLsignifica diseño de nivel de transferencia de registros ). Si bien el ejemplo anterior puede parecer extenso para los principiantes en HDL, muchas partes son opcionales o necesitan escribirse solo una vez. Generalmente, las funciones simples como esta forman parte de un módulo de comportamiento más grande, en lugar de tener un módulo separado para algo tan simple. Además, el uso de elementos como el std_logictipo podría parecer al principio excesivo. Se podría usar fácilmente el tipo integrado bity evitar la importación de la biblioteca al principio. Sin embargo, usar una forma de lógica de muchos valores , específicamente lógica de 9 valores ( U, X, 0, 1, Z, W, H, L, -), en lugar de simples bits (0,1) ofrece una herramienta de simulación y depuración muy potente para el diseñador que actualmente no existe en ningún otro HDL.

En los ejemplos que siguen, se verá que el código VHDL se puede escribir de forma muy compacta. Sin embargo, los diseñadores más experimentados suelen evitar estas formas compactas y utilizan un estilo de codificación más detallado en aras de la legibilidad y el mantenimiento.

Constructos sintetizables y plantillas VHDL

VHDL se utiliza frecuentemente para dos fines distintos: la simulación de diseños electrónicos y la síntesis de dichos diseños. La síntesis es un proceso en el que un código VHDL se compila y se adapta a una tecnología de implementación, como una FPGA o un ASIC.

No todas las construcciones de VHDL son aptas para la síntesis. Por ejemplo, la mayoría de las construcciones que tratan explícitamente sobre la temporización, como wait for 10 ns;no son sintetizables a pesar de ser válidas para la simulación. Si bien las distintas herramientas de síntesis tienen capacidades diferentes, existe un subconjunto sintetizable común de VHDL que define qué construcciones e modismos del lenguaje se corresponden con el hardware común de muchas herramientas de síntesis. La norma IEEE 1076.6 define un subconjunto del lenguaje que se considera el subconjunto oficial de síntesis. Generalmente se considera una buena práctica escribir código muy idiomático para la síntesis, ya que los resultados pueden ser incorrectos o subóptimos para construcciones no estándar.

Plantilla MUX

El multiplexor , o «MUX» como se le suele llamar, es una construcción sencilla muy común en el diseño de hardware. El siguiente ejemplo muestra un MUX simple de dos a uno, con entradas Ay B, selector Sy salida X. Cabe destacar que existen muchas otras formas de expresar el mismo MUX en VHDL. [ 18 ]

X <= A cuando S = '1' de lo contrario B ;

Un ejemplo más complejo de un multiplexor con 4×3 entradas y un selector de 2 bits:

biblioteca IEEE ; usar IEEE.std_logic_1164. all ; entidad mux4 es puerto ( a1 : entrada std_logic_vector ( 2 downto 0 ); a2 : entrada std_logic_vector ( 2 downto 0 ); a3 : entrada std_logic_vector ( 2 downto 0 ); a4 : entrada std_logic_vector ( 2 downto 0 ); sel : entrada std_logic_vector ( 1 downto 0 ); b : salida std_logic_vector ( 2 downto 0 ) ); fin mux4 ; arquitectura rtl de mux4 es -- parte declarativa: vacío inicio p_mux : proceso ( a1 , a2 , a3 , a4 , sel ) inicio caso sel es cuando "00" => b <= a1 ; cuando "01" => b <= a2 ; cuando "10" => b <= a3 ; cuando otros => b <= a4 ; fin del caso ; fin del proceso p_mux ; fin de rtl ;

Plantilla de pestillo

Un pestillo transparente es básicamente un bit de memoria que se actualiza cuando se activa una señal de habilitación. De nuevo, existen muchas otras formas de expresar esto en VHDL.

-- plantilla de bloqueo 1: Q <= D cuando Habilitar = '1' sino Q ;-- plantilla de bloqueo 2: proceso ( todos ) inicio Q <= D cuando ( Habilitar ); fin del proceso ;

Biestables tipo D

El flip-flop tipo D muestrea una señal entrante en el flanco ascendente (o descendente) de un reloj. Este ejemplo tiene un reinicio asíncrono activo en alto y muestrea en el flanco ascendente del reloj.

DFF : proceso ( todos ) es comenzar si RST entonces Q <= '0' ; si no, si rising_edge ( CLK ) entonces Q <= D ; fin si ; fin proceso DFF ;

Otra forma común de escribir comportamientos activados por flanco en VHDL es mediante el atributo de señal 'event'. Se debe escribir un apóstrofo entre el nombre de la señal y el nombre del atributo.

DFF : proceso ( RST , CLK ) es begin if RST then Q <= '0' ; elsif CLK 'evento y CLK = '1' then Q <= D ; end if ; end process DFF ;

VHDL también se presta a "líneas de código únicas" como por ejemplo:

DFF : Q <= '0' cuando RST = '1' de lo contrario D cuando rising_edge ( clk );

o:

DFF : proceso ( todos ) es inicio si flanco ascendente ( CLK ) entonces Q <= D ; fin si ; si RST entonces Q <= '0' ; fin si ; fin proceso DFF ;

o:

Biblioteca IEEE ; USE IEEE.Std_logic_1164.all ;La entidad RisingEdge_DFlipFlop_SyncReset es el puerto ( Q : salida std_logic ; Clk : entrada std_logic ; sync_reset : entrada std_logic ; D : entrada std_logic ); fin RisingEdge_DFlipFlop_SyncReset ;arquitectura Comportamiento de RisingEdge_DFlipFlop_SyncReset es inicio proceso ( Clk ) inicio si ( rising_edge ( Clk )) entonces si ( sync_reset = '1' ) entonces Q <= '0' ; sino Q <= D ; fin si ; fin si ; fin proceso ; fin Comportamiento ;

Lo cual puede ser útil si no es necesario reiniciar todas las señales (registros) controladas por este proceso.

Ejemplo: un contador

El siguiente ejemplo muestra un contador ascendente con reinicio asíncrono, carga paralela y ancho configurable. Demuestra el uso del tipo 'unsigned', las conversiones de tipo entre 'unsigned' y 'std_logic_vector', y los genéricos de VHDL . Los genéricos son muy similares a los argumentos o plantillas de otros lenguajes de programación tradicionales como C++. El ejemplo está escrito en VHDL 2008.

biblioteca IEEE ; use IEEE.std_logic_1164.all ; use IEEE.numeric_std.all ; -- para el tipo sin signoLa entidad CONTADOR es genérica ( ANCHO : en natural := 32 ); puerto ( RST : en std_logic ; CLK : en std_logic ; CARGAR : en std_logic ; DATOS : en std_logic_vector ( ANCHO - 1 hasta 0 ); Q : salida std_logic_vector ( ANCHO - 1 hasta 0 )); fin de la entidad CONTADOR ;La arquitectura RTL de COUNTER escomenzarEl proceso ( todos ) comienza si RST entonces Q <= ( otros => '0' ); si no , si flanco ascendente ( CLK ) entonces si CARGA = '1' entonces Q <= DATOS ; si no, Q <= vector_lógico_estándar ( sin_signo ( Q ) + 1 ); fin si ; fin si ; fin proceso ;arquitectura RTL final ;

Los contadores más complejos pueden incluir sentencias condicionales (if/then/else) rising_edge(CLK) elsifpara añadir funciones adicionales, como habilitar el conteo, detenerse o reiniciarse al alcanzar un valor determinado, y generar señales de salida, como señales de conteo terminal. Es fundamental prestar atención al orden y la anidación de estos controles si se utilizan conjuntamente, para lograr las prioridades deseadas y minimizar el número de niveles lógicos necesarios.

Construcciones solo para simulación

Una gran parte del código VHDL no se puede traducir a hardware. Este subconjunto se conoce como el subconjunto no sintetizable o de simulación de VHDL y solo se puede usar para prototipado, simulación y depuración. Por ejemplo, el siguiente código generará un reloj con una frecuencia de 50  MHz. Se puede usar, por ejemplo, para controlar una entrada de reloj en un diseño durante la simulación. Sin embargo, es una construcción exclusiva de simulación y no se puede implementar en hardware. En hardware real, el reloj se genera externamente; su frecuencia se puede reducir internamente mediante lógica de usuario o hardware dedicado.

proceso inicio CLK <= '1' ; esperar 10 NS ; CLK < = ' 0' ; esperar 10 NS ; fin proceso ;

Las estructuras basadas únicamente en simulación permiten construir formas de onda complejas en muy poco tiempo. Estas formas de onda pueden utilizarse, por ejemplo, como vectores de prueba para un diseño complejo o como prototipo de la lógica de un sintetizador que se implementará en el futuro.

proceso comenzar esperar hasta que START = '1' ; -- esperar hasta que START sea alto para i en 1 a 10 bucle -- luego esperar unos pocos períodos de reloj... esperar hasta el flanco ascendente ( CLK ); fin del bucle ;para i en 1 a 10 bucle -- escribe los números del 1 al 10 en DATA, 1 cada ciclo DATA <= to_unsigned ( i , 8 ); esperar hasta el flanco ascendente ( CLK ); fin del bucle ;-- esperar hasta que cambie la salida wait on RESULT ; -- ahora generar ACK para el período de reloj ACK <= '1' ; esperar hasta rising_edge ( CLK ); ACK <= '0' ;-- y así sucesivamente... fin del proceso ;

Características de VHDL-2008

Alias ​​jerárquicos

biblioteca ieee ; usar ieee.std_logic_1164. all ;la entidad bfm es entidad final ; arquitectura beh de bfm es señal en : std_logic ; inicio -- insertar implementación aquí arquitectura final ;// ------------------------------------------ library ieee ; use ieee.std_logic_1164. all ;La entidad test1 es la entidad final ; la arquitectura beh de test1 es beginibfm : entidad trabajo.bfm ; -- El proceso del banco de pruebas proceso alias probe_en es << señal.test1.ibfm.en : std_logic >> ; inicio probe_en <= ' 1' ; esperar 100 ns ; probe_en <= ' 0 ' ; esperar 100 ns ; probe_en < = ' 1 ' ; esperar 100 ns ; std.env.stop ( 0 ) ; fin del proceso ; fin de la arquitectura ;

Bibliotecas estándar

También conocidos como paquetes estándar.

Paquete estándar IEEE

El paquete estándar IEEE incluye lo siguiente: [ 19 ]

simuladores VHDL

Comercial:

Otro:

  • EDA Playground es un IDE VHDL gratuito basado en la web (utiliza Synopsys VCS, Cadence Incisive, Aldec Riviera-PRO y GHDL para la simulación VHDL).
  • GHDL es un compilador VHDL de código abierto [ 21 ] que puede ejecutar programas VHDL. ( GHDL en GitHub )
  • boot, de freerangefactory.org, es un compilador y simulador VHDL basado en GHDL y GTKWave .
  • Simili de Symphony EDA es un simulador VHDL comercial gratuito disponible en Wayback Machine (archivado el 2 de octubre de 2007).
  • nvc de Nick Gasson es un compilador y simulador VHDL de código abierto. [ 22 ] [ 23 ]
  • freehdl de Edwin Naroska era un simulador VHDL de código abierto, abandonado desde 2001. [ 24 ]

Véase también

Referencias

  1. David R. Coelho (30 de junio de 1989). The VHDL Handbook . Springer Science & Business Media. ISBN 978-0-7923-9031-2.
  2. Departamento de Defensa (1992). Norma militar, Requisitos generales estándar para equipos electrónicos . Consultado el 15 de noviembre de 2017 .
  3. 1 2 1076-1987 – Manual de referencia del lenguaje VHDL estándar IEEE . 1988. doi : 10.1109/IEEESTD.1988.122645 . ISBN 0-7381-4324-3.
  4. "VHDL - VITAL" . www.vhdl.renerta.com . Archivado del original el 22/10/2011.
  5. 1076-2008 – Manual de referencia del lenguaje VHDL estándar IEEE . 2009. doi : 10.1109/IEEESTD.2009.4772740 . ISBN 978-0-7381-6854-8.
  6. Grupo de trabajo IEEE P1076 Grupo de análisis y estandarización de VHDL (VASG)
  7. 1076-1993 – Manual de referencia del lenguaje VHDL estándar IEEE . 1994. doi : 10.1109/IEEESTD.1994.121433 . ISBN 0-7381-0986-X.
  8. 1076-2000 – Manual de referencia del lenguaje VHDL estándar IEEE . 2000. doi : 10.1109/IEEESTD.2000.92297 . ISBN 0-7381-1948-2.
  9. 1076-2002 – Manual de referencia del lenguaje VHDL estándar IEEE . 2002. doi : 10.1109/IEEESTD.2002.93614 . ISBN 0-7381-3247-0.
  10. IEC 61691-1-1 Primera edición 2004-10; IEEE 1076 — IEC/IEEE Lenguajes de comportamiento – Parte 1-1: Manual de referencia del lenguaje VHDL (Adopción de IEEE Std 1076-2002) . 2004. doi : 10.1109/IEEESTD.2004.95752 . ISBN 2-8318-7691-5.
  11. 1076c-2007 – Manual de referencia del lenguaje VHDL estándar IEEE, Enmienda 1: Interfaz de aplicación de lenguaje procedimental . 2007. doi : 10.1109/IEEESTD.2007.4299594 . ISBN 978-0-7381-5523-4.
  12. 61691-1-1-2011 — Lenguajes de comportamiento – Parte 1-1: Manual de referencia del lenguaje VHDL . 2011. doi : 10.1109/IEEESTD.2011.5967868 . ISBN 978-0-7381-6605-6.
  13. "IEEE 1076.6-2004 - Norma IEEE para la síntesis de nivel de transferencia de registros (RTL) de VHDL" .
  14. "ELEC3017 - Simulación" (PDF) . Universidad de Southampton. Archivado (PDF) del original el 23 de febrero de 2017. Consultado el 23 de febrero de 2017 .
  15. "¿Por qué debería importarme el cierre transparente?" . Doulos. Archivado del original el 18 de junio de 2025. Recuperado el 27 de marzo de 2026 .
  16. "Generación de reloj - Guía para diseñadores de VHDL" . Doulos. Archivado del original el 20 de enero de 2013. Consultado el 22 de diciembre de 2012 .
  17. Jiri Gaisler. "Un método de diseño VHDL estructurado" (PDF) . Archivado (PDF) del original el 10 de octubre de 2022. Consultado el 15 de noviembre de 2017 .
  18. "Operadores lógicos VHDL y asignaciones de señales para lógica combinatoria" . FPGAtutorial . 16 de mayo de 2020. Consultado el 23 de agosto de 2020 .
  19. Chiusano, Silvia (5 de abril de 2011). "Tipos de datos y operadores VHDL disponibles en los paquetes estándar IEEE" (PDF) . Universidad Politécnica de Turín . Archivado (PDF) del original el 10 de octubre de 2022.
  20. "VCS: La solución de simulación de mayor rendimiento de la industria " . synopsis.com
  21. "Derechos de autor | Licencias" . Documentación de GHDL -- Documentación de GHDL 0.36-dev . readthedocs.io.
  22. Gasson, Nick (5 de noviembre de 2011). "Escribiendo un compilador VHDL" .
  23. Gasson, Nick (22 de julio de 2023). "NVC - Compilador y simulador VHDL" . Recuperado el 23 de julio de 2023 .
  24. "freehdl: Por hilo" . Archivado del original el 10 de febrero de 2002.
Notas
  • 1076/INT-1991 – Interpretaciones de las normas IEEE: IEEE Std 1076-1987, Manual de referencia del lenguaje VHDL estándar IEEE . 1992. doi : 10.1109/IEEESTD.1992.101084 . ISBN 0-7381-0987-8.

Lecturas adicionales

  • Ashenden, Peter J. (2008). The Designer's Guide to VHDL, Third Edition (Systems on Silicon) . ISBN 978-0-1208-8785-9.(El libro de referencia de VHDL escrito por uno de los principales desarrolladores del lenguaje)
  • Bryan Mealy, Fabrizio Tappero (febrero de 2012).La guía práctica para escribir código VHDL potente para tus implementaciones digitales. Archivado del Free Range VHDL original el 13 de febrero de 2015.
  • Johan Sandstrom (octubre de 1995). "Comparación sintáctica y semántica de Verilog con VHDL" . Diseño de sistemas integrados . EE Times. Sandstrom presenta una tabla que relaciona las construcciones de VHDL con las de Verilog .
  • Qualis Design Corporation (2000-07-20). "Tarjeta de referencia rápida de VHDL" (PDF) . 1.1. Qualis Design Corporation. Archivado del original (PDF) el 10-12-2003.
  • Qualis Design Corporation (2000-07-20). "Tarjeta de referencia rápida de paquetes 1164" (PDF) . 1.0. Qualis Design Corporation. Archivado del original (PDF) el 14 de marzo de 2016.
  • Janick Bergeron, "Writing Testbenchs: Functional Verification of HDL Models", 2000, ISBN 0-7923-7766-4(La Biblia de los bancos de pruebas HDL)
  • Krolikoski, SJ (mayo de 1995). «Estandarización de bibliotecas ASIC en VHDL usando VITAL: Un tutorial». Actas de la Conferencia IEEE de Circuitos Integrados Personalizados de 1995. págs. 603–610 . doi : 10.1109/CICC.1995.518256 . ISBN  0-7803-2584-2.
  • Vreeland, Russell E. "Conectando el sistema al chip: Uso de VHDL/VITAL para la simulación a nivel de placa" (PDF) . Consultado el 12 de mayo de 2025 .
  • Rushton, Andrew (2011). VHDL para síntesis lógica (3.ª  ed.). Chichester, West Sussex, Reino Unido: Wiley . pág.  4. ISBN 9780470977972.
  • Vreeland, Russell E. "Modelado de componentes a nivel de placa utilizando VITAL" . Recuperado el 12 de mayo de 2025 .
  • Tuzov, Ilya; Ruiz, Juan-Carlos; de Andrés, David (septiembre de 2017). «Simulación precisa de los efectos de fallos en modelos VHDL descritos a nivel de implementación». 13.ª Conferencia Europea de Computación Confiable (EDCC) de 2017. Instituto de Ingenieros Eléctricos y Electrónicos . pp. 10-17 . doi : 10.1109/EDCC.2017.26 . ISBN  978-1-5386-0602-5.
  • Sitio web oficial
  • Grupo de Análisis y Estandarización de VHDL (VASG)