stringtranslate.com

VHDL

Fuente VHDL para un sumador firmado

El lenguaje de descripción de hardware VHSIC ( VHDL ) es un lenguaje de descripción de hardware (HDL) que puede modelar el comportamiento y la estructura de sistemas digitales en múltiples niveles de abstracción , desde el nivel del sistema hasta el de puertas lógicas , para entrada de diseño, documentación, y fines de verificación. Desde 1987, VHDL ha sido estandarizado por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) como IEEE Std 1076 ; cuya última versión es IEEE Std 1076-2019 . Para modelar sistemas analógicos y de señal mixta , se ha desarrollado un HDL estandarizado por IEEE basado en VHDL llamado VHDL-AMS (oficialmente IEEE 1076.1).

VHDL lleva el nombre del programa del Departamento de Defensa de los Estados Unidos que lo creó, el Programa de circuitos integrados de muy alta velocidad (VHSIC). A principios de la década de 1980, el programa VHSIC buscó un nuevo HDL para utilizarlo en el diseño de los circuitos integrados que pretendía desarrollar. El producto de este esfuerzo fue VHDL Versión 7.2, lanzada en 1985. El esfuerzo por estandarizarlo como estándar IEEE comenzó el año siguiente.

Historia

En 1983, VHDL se desarrolló originalmente a instancias del Departamento de Defensa de EE. UU. para documentar el comportamiento de los ASIC que las empresas proveedoras incluían en sus equipos. El estándar MIL-STD-454N [2] en el Requisito 64 en la sección 4.5.1 "Documentación ASIC en VHDL" requiere explícitamente 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 era tan obviamente atractiva que se desarrollaron simuladores lógicos que podían leer los archivos VHDL. El siguiente paso fue el desarrollo de herramientas de síntesis lógica que leen el VHDL y generan una definición de la implementación física del circuito.

Debido a que el Departamento de Defensa exige que la mayor cantidad posible de sintaxis se base en Ada, para evitar reinventar conceptos que ya se habían probado exhaustivamente en el desarrollo de Ada, [ cita necesaria ] VHDL toma prestado en gran medida de Ada Lenguaje de programación 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 ), de caracteres y de tiempo , además de matrices de datosbit llamados bit_vectory de cadenacharacter llamada .

Sin embargo, un problema que esta edición no resolvió fue la "lógica de valores múltiples", donde también se consideran la intensidad de la señal (ninguna, débil o fuerte) y los valores desconocidos. Esto requería el estándar IEEE 1164 , que definía 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 principal, std_logiclas señales de tipo - permiten múltiples manejos para modelar estructuras de bus, por lo que la función de resolución conectada maneja adecuadamente las asignaciones conflictivas.

El IEEE 1076 actualizado , en 1993, hizo la sintaxis más consistente, permitió más flexibilidad en la denominación, amplió el charactertipo para permitir caracteres imprimibles ISO-8859-1xnor , agregó el operador, etc. [ especificar ]

Cambios menores en el estándar (2000 y 2002) agregaron la idea de tipos protegidos (similar al concepto de clase en C++ ) y eliminaron algunas restricciones de las reglas de mapeo 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 agregó un mejor 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 en vectores. El estándar IEEE 1076.1 (conocido como VHDL-AMS ) proporcionó extensiones de diseño de circuitos de señales mixtas y analógicas.

Algunos otros estándares admiten un uso más amplio de VHDL, en particular VITAL (Iniciativa VHDL hacia bibliotecas ASIC) y extensiones de diseño de circuitos de microondas .

En junio de 2006, el Comité Técnico VHDL de Accellera (delegado por IEEE para trabajar en la próxima actualización del estándar) aprobó el llamado Draft 3.0 de VHDL-2006. Si bien mantiene total compatibilidad con versiones anteriores, este estándar propuesto proporciona numerosas extensiones que facilitan la escritura y administración de 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, sintaxis más flexible de mayúsculas y minúsculas y declaraciones de generación , incorporación de VHPI (interfaz de procedimiento VHDL) (interfaz a lenguajes C/C++). ) y un subconjunto de PSL ( lenguaje de especificación de propiedades ). 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 solucionó más de 90 problemas descubiertos durante el período de prueba de la versión 3.0 e incluye tipos genéricos mejorados. En 2008, Accellera lanzó VHDL 4.0 al IEEE para su inclusión en IEEE 1076-2008. El estándar VHDL IEEE 1076-2008 [4] se publicó en enero de 2009.

Estandarizació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 otorgado en 1983 a un equipo de Intermetrics, Inc. como expertos en idiomas y contratista principal, Texas Instruments como expertos en diseño de chips e IBM como diseño de sistemas informáticos. expertos. El lenguaje ha sido objeto de numerosas revisiones y tiene una variedad de subestándares asociados que lo aumentan o amplían de manera importante.

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

Revisiones

Normas relacionadas

Diseño

VHDL se utiliza generalmente para escribir modelos de texto que describen un circuito lógico. Un modelo de este tipo es procesado por un programa de síntesis, sólo si forma parte del diseño lógico. Se utiliza un programa de simulación para probar el diseño lógico utilizando modelos de simulación para representar los circuitos lógicos que interactúan con el diseño. Esta colección de modelos de simulación se denomina comúnmente banco de pruebas .

Un simulador VHDL suele ser un simulador controlado por eventos. [13] Esto significa que cada transacción se agrega a una cola de eventos durante un tiempo programado específico. Por ejemplo, si se produce una asignación de señal después de 1 nanosegundo, el evento se agrega a la cola durante un tiempo +1 ns. También se permite el retardo cero, pero aún es necesario programarlo: en estos casos se utiliza el retardo delta , que representa un paso de tiempo infinitamente pequeño. La simulación alterna entre dos modos: ejecución de declaraciones, donde se evalúan las declaraciones desencadenadas, y procesamiento de eventos, donde se procesan los eventos en la cola.

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

VHDL tiene capacidades de entrada y salida de archivos y puede usarse como un lenguaje de propósito general para el procesamiento de texto, pero los archivos se usan más comúnmente en un banco de pruebas de simulación para datos de estímulo o verificación. Hay algunos compiladores VHDL que crean archivos binarios ejecutables. En este caso, podría ser posible usar VHDL para escribir un banco de pruebas para verificar la funcionalidad del diseño usando archivos en la computadora host para definir estímulos, interactuar con el usuario y comparar resultados con los esperados. Sin embargo, la mayoría de los diseñadores dejan este trabajo en manos del simulador.

Es relativamente fácil para un desarrollador sin experiencia producir código que simule exitosamente pero que no pueda sintetizarse en un dispositivo real o que sea demasiado grande para ser práctico. Un problema particular es la producción accidental de pestillos transparentes en lugar de chanclas tipo D como elementos de almacenamiento. [14]

Se puede diseñar hardware en un IDE VHDL (para implementación FPGA como Xilinx ISE, Altera Quartus, Synopsys Synplify o Mentor Graphics HDL Designer) para producir el esquema RTL del circuito deseado. Después de eso, el esquema generado se puede verificar utilizando un software de simulación que muestra las formas de onda de las entradas y salidas del circuito después de generar el banco de pruebas apropiado. Para generar un banco de pruebas apropiado para un circuito particular o código VHDL, las entradas deben estar definidas correctamente. Por ejemplo, para la entrada del reloj, se requiere un proceso de bucle o una declaración iterativa. [15]

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

Ventajas

La ventaja clave 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 en hardware real (puertas y cables).

Otro beneficio es que VHDL permite la descripción de un sistema concurrente . VHDL es un lenguaje de flujo de datos en el que cada declaración se considera para su ejecución simultáneamente, a diferencia de los lenguajes informáticos procedimentales como BASIC, C y código ensamblador, donde una secuencia de declaraciones se ejecuta secuencialmente, una instrucción a la vez.

Un proyecto VHDL es multipropósito. Al crearse una vez, un bloque de cálculo se puede utilizar en muchos otros proyectos. Sin embargo, se pueden ajustar muchos parámetros de bloques formativos y funcionales (parámetros de capacidad, tamaño de memoria, base de elementos, composición de bloques y estructura de interconexión).

Un proyecto VHDL es portátil. Al crearse para una base de elementos, un proyecto de dispositivo informático se puede trasladar a otra base de elementos, por ejemplo VLSI con diversas tecnologías.

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

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 real. 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 AND simple en VHDL se vería así

-- (este es un comentario VHDL) /* este es un comentario de bloque ( VHDL - 2008 ) */ -- importa std_logic de la biblioteca IEEE IEEE ; utilice IEEE.std_logic_1164. todo ;        - esta es la entidad entidad ANDGATE es el puerto ( I1 : en std_logic ; I2 : en std_logic ; O : fuera de std_logic ); entidad final ANDGATE ;                   - esta es la arquitectura RTL de ANDGATE : comienza O < = I1 e I2 ; arquitectura final RTL ;           

(Observe que RTLsignifica Diseño de nivel de transferencia de registro ). Si bien el ejemplo anterior puede parecer detallado para los principiantes en HDL, muchas partes son opcionales o deben escribirse solo una vez. Generalmente, funciones simples como esta son 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 puede parecer a primera vista excesivo. Se podría utilizar fácilmente el tipo integrado bity evitar la importación de la biblioteca al principio. Sin embargo, el uso de 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 bits simples (0,1) ofrece una herramienta de simulación y depuración muy poderosa para el diseñador que actualmente no no existe en ningún otro HDL.

En los ejemplos siguientes, verá que el código VHDL se puede escribir en una 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.

Construcciones sintetizables y plantillas VHDL.

VHDL se utiliza frecuentemente para dos objetivos diferentes: simulación de diseños electrónicos y síntesis de dichos diseños. La síntesis es un proceso en el que un VHDL se compila y se asigna a una tecnología de implementación como un FPGA o un ASIC.

No todas las construcciones en VHDL son adecuadas para la síntesis. Por ejemplo, la mayoría de las construcciones que abordan explícitamente la sincronización, como por ejemplo, wait for 10 ns;no son sintetizables a pesar de ser válidas para la simulación. Si bien las diferentes herramientas de síntesis tienen diferentes capacidades, existe un subconjunto sintetizable común de VHDL que define qué construcciones de lenguaje y modismos se asignan al hardware común para muchas herramientas de síntesis. IEEE 1076.6 define un subconjunto del lenguaje que se considera el subconjunto de síntesis oficial. Generalmente se considera una "mejor práctica" escribir código muy idiomático para 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 demuestra un MUX simple de dos a uno, con entradas Ay B, selector Sy salida X. Tenga en cuenta que existen muchas otras formas de expresar el mismo MUX en VHDL. [17]

X <= A cuando S = '1' más B ;        

Un ejemplo más complejo de MUX con 4x2 entradas y un selector de 2 bits:

biblioteca IEEE ; utilice IEEE.std_logic_1164. todo ; entidad mux4 es puerto ( a1 : en std_logic_vector ( 2 hasta 0 ); a2 : en std_logic_vector ( 2 hasta 0 ); a3 : en std_logic_vector ( 2 hasta 0 ); a4 : en std_logic_vector ( 2 hasta 0 ); sel : en std_logic_vector ( 1 hasta 0 ); b : salida std_logic_vector ( 2 hasta 0 ) ); finalizar mux4 ; la arquitectura rtl de mux4 es - parte declarativa: vacío comenzar p_mux : proceso ( a1 , a2 , a3 , a4 , sel ) comenzar caso sel es cuando "00" => b <= a1 ; cuando "01" => b <= a2 ; cuando "10" => b <= a3 ; cuando otros => b <= a4 ; caso final ; finalizar el proceso p_mux ; fin rtl ;                                                                                         

Plantilla de pestillo

Un pestillo transparente es básicamente un bit de memoria que se actualiza cuando se genera una señal de habilitación. Nuevamente, hay muchas otras formas en que esto se puede expresar en VHDL.

-- plantilla de pestillo 1: Q <= D cuando Habilitar = '1' en caso contrario Q ;        - plantilla de pestillo 2: el proceso ( todos ) comienza Q <= D cuando ( Habilitar ); proceso finalizado ;     

Chanclas 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 asincrónico, activo-alto y muestras en el flanco ascendente del reloj.

DFF : el proceso ( todos ) comienza si RST y luego Q <= '0' ; elsif rise_edge ( CLK ) entonces Q <= D ; terminara si ; finalizar el proceso DFF ;                   

Otra forma común de escribir comportamiento activado por flanco en VHDL es con el atributo de señal 'evento'. Se debe escribir un solo apóstrofo entre el nombre de la señal y el nombre del atributo.

DFF : el proceso ( RST , CLK ) comienza si RST y luego Q <= '0' ; elsif CLK 'evento y CLK = '1' entonces Q <= D ; terminara si ; finalizar el proceso DFF ;                        

VHDL también se presta a "frases ingeniosas" como

DFF : Q <= '0' cuando RST = '1' más D cuando rise_edge ( clk );            

o

DFF : el proceso ( todos ) comienza si rise_edge ( CLK ) entonces Q <= D ; terminara si ; si RST entonces Q <= '0' ; terminara si ; finalizar el proceso DFF ;                      

o:

Biblioteca IEEE ; UTILICE IEEE.Std_logic_1164. todo ;  la entidad RisingEdge_DFlipFlop_SyncReset es el puerto ( Q : fuera std_logic ; Clk : en std_logic ; sync_reset : en std_logic ; D : en std_logic ); finalizar RisingEdge_DFlipFlop_SyncReset ;                         arquitectura El comportamiento de RisingEdge_DFlipFlop_SyncReset es comenzar el proceso ( Clk ) comenzar si ( rising_edge ( Clk )) entonces si ( sync_reset = '1' ) entonces Q <= '0' ; de lo contrario Q <= D ; terminara si ; terminara si ; proceso finalizado ; terminar Comportamiento ;                                

Lo cual puede ser útil si no se deben restablecer todas las señales (registros) impulsadas por este proceso.

Ejemplo: un contador

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

biblioteca IEEE ; utilice IEEE.std_logic_1164. todo ; utilice IEEE.numeric_std. todo ; -- para el tipo sin firmar    la entidad CONTADOR es genérica ( ANCHO : en natural : = 32 ); puerto ( RST : en std_logic ; CLK : en std_logic ; CARGA : en std_logic ; DATOS : en std_logic_vector ( ANCHO - 1 hasta 0 ); Q : fuera std_logic_vector ( ANCHO - 1 hasta 0 )); entidad final CONTADOR ;                                      La arquitectura RTL de COUNTER es    comenzar el proceso ( todos ) comienza si RST y luego Q <= ( otros => '0' ) ; elsif rise_edge ( CLK ) entonces si LOAD = '1' entonces Q <= DATA ; else Q <= std_logic_vector ( sin firmar ( Q ) + 1 ); terminara si ; terminara si ; proceso finalizado ;                               arquitectura final RTL ;  

Los contadores más complejos pueden agregar declaraciones if/then/else dentro del rising_edge(CLK) elsifpara agregar otras funciones, como habilitar el conteo, detenerse o revertirse en algún valor de conteo, generar señales de salida como señales de conteo de terminales, etc. Se debe tener cuidado con el orden y anidamiento de dichos controles si se usan juntos, para producir las prioridades deseadas y minimizar el número de niveles lógicos necesarios.

Construcciones de solo simulación

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

proceso comienza CLK <= '1' ; espera 10 NS ; _ CLK <= '0' ; espera 10 NS ; _ proceso finalizado ;               

Las construcciones de sólo simulación se pueden utilizar para construir formas de onda complejas en muy poco tiempo. Esta forma de onda se puede utilizar, por ejemplo, como vectores de prueba para un diseño complejo o como prototipo de alguna lógica de sintetizador que se implementará en el futuro.

el proceso comienza , espera hasta INICIO = '1' ; -- espere hasta que START esté alto para i en el bucle 1 a 10 -- luego espere unos cuantos períodos de reloj... espere hasta rise_edge ( CLK ); bucle final ;                     para i en el bucle 1 a 10 : escriba los números del 1 al 10 en DATOS, 1 en cada ciclo DATOS <= to_unsigned ( i , 8 ); espere hasta el borde_aumento ( CLK ); bucle final ;                 -- esperar hasta que cambie la salida esperar en RESULTADO ; - ahora genera ACK para el período de reloj ACK <= '1' ; espere hasta el borde_aumento ( CLK ); ACUERDO <= '0' ;               -- y así sucesivamente... finalizar el proceso ; 

Características de VHDL-2008

Alias ​​jerárquicos

biblioteca ieee ; utilice ieee.std_logic_1164. todo ;  entidad bfm es entidad final ; la arquitectura detrás de bfm es señal en : std_logic ; comenzar - insertar aquí la implementación finalizar la arquitectura ;             // ------------------------------------------ biblioteca ieee ; utilice ieee.std_logic_1164. todo ;  la entidad test1 es la entidad final ; La arquitectura detrás de test1 es el alias probe_en es << señal . prueba1 . ibfm . es : std_logic >> ; comenzar               ibfm : trabajo de entidad . bfm ; - El proceso del banco de pruebas comienza probe_en <= '1' ; espere 100 ns ; _ sonda_es <= '0' ; espere 100 ns ; _ probe_es <= '1' ; espere 100 ns ; _ std.env . detener ( 0 ); proceso finalizado ; arquitectura final ;                               

Bibliotecas estándar

También conocidos como paquetes estándar.

Paquete estándar IEEE

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

Simuladores VHDL

Comercial:

Otro:

Ver también

Referencias

  1. ^ David R. Coelho (30 de junio de 1989). El manual de VHDL. Medios de ciencia y negocios de Springer. ISBN 978-0-7923-9031-2.
  2. ^ Departamento de Defensa (1992). Norma militar, Norma de requisitos generales para equipos electrónicos . Consultado el 15 de noviembre de 2017 .
  3. ^ ab 1076-1987 - Manual de referencia del lenguaje VHDL estándar IEEE . 1988. doi :10.1109/IEEESTD.1988.122645. ISBN 0-7381-4324-3.
  4. ^ 1076-2008 - Manual de referencia del lenguaje VHDL estándar IEEE . 2009. doi :10.1109/IEEESTD.2009.4772740. ISBN 978-0-7381-6854-8.
  5. ^ Grupo de trabajo IEEE P1076 Grupo de estandarización y análisis VHDL (VASG)
  6. ^ 1076-1993 - Manual de referencia del lenguaje VHDL estándar IEEE . 1994. doi :10.1109/IEEESTD.1994.121433. ISBN 0-7381-0986-X.
  7. ^ 1076-2000 - Manual de referencia del lenguaje VHDL estándar IEEE . 2000. doi :10.1109/IEEESTD.2000.92297. ISBN 0-7381-1948-2.
  8. ^ 1076-2002 - Manual de referencia del lenguaje VHDL estándar IEEE . 2002. doi :10.1109/IEEESTD.2002.93614. ISBN 0-7381-3247-0.
  9. ^ IEC 61691-1-1 Primera edición 2004-10; IEEE 1076 - Lenguajes de comportamiento IEC/IEEE - 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.
  10. ^ 1076c-2007 - Enmienda 1 del manual de referencia del lenguaje VHDL del estándar IEEE: Interfaz de aplicación del lenguaje procesal . 2007. doi :10.1109/IEEESTD.2007.4299594. ISBN 978-0-7381-5523-4.
  11. ^ 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.
  12. ^ "IEEE 1076.6-2004 - Estándar IEEE para síntesis de nivel de transferencia de registro (RTL) VHDL".
  13. ^ "ELEC3017 - Simulación" (PDF) . Universidad de Southampton. Archivado (PDF) desde el original el 23 de febrero de 2017 . Consultado el 23 de febrero de 2017 .
  14. ^ "¿Por qué debería importarme los pestillos transparentes?". Doulos . Consultado el 22 de diciembre de 2012 .
  15. ^ "Generación de reloj". Doulos . Consultado el 22 de diciembre de 2012 .
  16. ^ Jiri Gaisler. "Un método de diseño VHDL estructurado" (PDF) . Archivado (PDF) desde el original el 10 de octubre de 2022 . Consultado el 15 de noviembre de 2017 .
  17. ^ "Operadores lógicos VHDL y asignaciones de señales para lógica combinatoria". Tutorial de FPGA . 16 de mayo de 2020 . Consultado el 23 de agosto de 2020 .
  18. ^ Chiusano, Silvia (5 de abril de 2011). "Operadores y tipos de datos VHDL disponibles en los paquetes estándar IEEE" (PDF) . Universidad Politécnica de Turín . Archivado (PDF) desde el original el 10/10/2022.
  19. ^ "VCS: la solución de simulación de mayor rendimiento de la industria". sinopsis.com .
  20. ^ "Derechos de autor | Licencias". Documentación de GHDL - Documentación de desarrollo de GHDL 0.36 . readthedocs.io.
  21. ^ Gasson, Nick (5 de noviembre de 2011). "Escribir un compilador VHDL".
  22. ^ Gasson, Nick (22 de julio de 2023). "NVC - Simulador y compilador VHDL" . Consultado el 23 de julio de 2023 .
  23. ^ "freehdl: por hilo". Archivado desde el original el 10 de febrero de 2002.
Notas

Otras lecturas

enlaces externos