VHDL

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Fuente VHDL para una escalera firmada

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 los sistemas digitales en múltiples niveles de abstracción, que van desde desde el nivel del sistema hasta el de las puertas lógicas, con fines de entrada de diseño, documentación y 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 buscaba un nuevo HDL para usarlo en el diseño de los circuitos integrados que pretendía desarrollar. El producto de este esfuerzo fue la versión 7.2 de VHDL, lanzada en 1985. El esfuerzo por estandarizarlo como un estándar IEEE comenzó al 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 los equipos. El estándar MIL-STD-454N en el Requisito 64 en la sección 4.5.1 "Documentación ASIC en VHDL" requiere 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 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 requiere que la mayor parte de la sintaxis sea posible para estar basada en Ada, para evitar reinventar conceptos que ya se probaron exhaustivamente en el desarrollo de Ada, VHDL se basa en gran medida en la programación de Ada. lenguaje tanto en concepto como en sintaxis.

La versión inicial de VHDL, diseñada según el estándar IEEE IEEE 1076-1987, incluía una amplia gama de tipos de datos, incluidos numéricos (entero y real), lógicos (bit y booleano), caracteres y tiempo, además de matrices de bit llamado bit_vector y de character llamado string.

Sin embargo, un problema que no se resolvió con esta edición fue la "lógica de valores múltiples", en la que 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 de lógica de 9 valores: escalar std_logic y su versión vectorial std_logic_vector. Al ser un subtipo resuelto de su tipo principal std_Ulogic, las señales de tipo std_logic permiten la conducción múltiple 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ó una mayor flexibilidad en la denominación, amplió el tipo character para permitir caracteres imprimibles ISO-8859-1, agregó el xnor operador , etc.

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 analógicos y de señal mixta.

Algunos otros estándares admiten un uso más amplio de VHDL, en particular VITAL (VHDL Initiative Towards ASIC Libraries) 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 Borrador 3.0 de VHDL-2006. Si bien mantiene una compatibilidad total con las versiones anteriores, este estándar propuesto proporciona numerosas extensiones que facilitan la escritura y la administración del código VHDL. Los cambios clave incluyen la incorporación de estándares secundarios (1164, 1076.2, 1076.3) en el estándar principal 1076, un conjunto ampliado de operadores, una sintaxis más flexible de declaraciones case y generate, 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 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 votar por su inclusión en IEEE 1076-2008. El estándar VHDL IEEE 1076-2008 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.

Revisiones

  • IEEE 1076-1987 Primera revisión estandarizada de la versión 7.2 del idioma de la Fuerza Aérea de los Estados Unidos.
  • IEEE 1076-1993 (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 con el mayor soporte de herramientas de proveedores.
  • IEEE 1076-2000. Revisión menor. Introduces the use of tipos protegidos.
  • IEEE 1076-2002. Revisión menor de 1076-2000. Normas relativas a puertos de amortiguación están relajados.
    • IEC 61691-1-1:2004. IEC adopción de IEEE 1076-2002.
  • IEEE 1076c-2007. Introducido VHPI, la interfaz de procedimiento VHDL, que proporciona software con los medios para acceder al modelo VHDL. El lenguaje VHDL requiere modificaciones menores para dar cabida al VHPI.
  • IEEE 1076-2008 (previamente denominado 1076-200x). Major revision released on 2009-01-26. Entre otros cambios, este estándar incorpora un subconjunto básico de PSL, permite genéricos en paquetes y subprogramas e introduce el uso de nombres externos.
    • IEC 61691-1-1:2011. IEC adopción de IEEE 1076-2008.
  • IEEE 1076-2019. Revisión importante.

Estándares relacionados

  • IEEE 1076.1 VHDL Analog y Mixed-Signal (VHDL-AMS)
  • Paquetes estándar VHDL-AMS (stdpkgs)
  • Paquete de Matemáticas VHDL IEEE 1076.2
  • IEEE 1076.3 VHDL Synthesis Package (vhdlsynth) (numeric std)
  • IEEE 1076.3 VHDL Synthesis Package – Floating Point (fphdl)
  • IEEE 1076.4 Timing (VHDL Initiative Towards Towards ASIC Bibliotecas: vitales)
  • IEEE 1076.6 VHDL Synthesis Interoperability (retirada en 2010)
  • IEEE 1164 VHDL Multivalue Logic (std_logic_1164) Paquetes

Diseño

VHDL generalmente se usa para escribir modelos de texto que describen un circuito lógico. Tal modelo es procesado por un programa de síntesis, solo si es 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 prueba.

Un simulador VHDL suele ser un simulador basado en eventos. Esto significa que cada transacción se agrega a una cola de eventos durante un tiempo programado específico. P.ej. si se produce una asignación de señal después de 1 nanosegundo, el evento se agrega a la cola por un tiempo de +1 ns. También se permite un retardo cero, pero aún debe programarse: para estos casos se utiliza un retardo delta, que representa un paso de tiempo infinitamente pequeño. La simulación cambia 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 la 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 las operaciones que son comunes en el hardware, hay muchas funciones de VHDL que no se encuentran en Ada, como un conjunto ampliado de operadores booleanos que incluyen nand y nor.

VHDL tiene capacidades de entrada y salida de archivos, y se puede usar 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 estímulo o datos de verificación. Hay algunos compiladores VHDL que construyen binarios ejecutables. En este caso, podría ser posible usar VHDL para escribir un banco de prueba 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 al simulador.

Es relativamente fácil para un desarrollador sin experiencia producir código que simule con éxito pero que no se pueda sintetizar en un dispositivo real o que sea demasiado grande para ser práctico. Un escollo particular es la producción accidental de pestillos transparentes en lugar de chanclas tipo D como elementos de almacenamiento.

Se puede diseñar hardware en un IDE VHDL (para implementación de 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 adecuado. Para generar un banco de pruebas adecuado para un circuito en particular o un código VHDL, las entradas deben definirse correctamente. Por ejemplo, para la entrada de reloj, se requiere un proceso de bucle o una declaración iterativa.

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

Ventajas

La principal ventaja de VHDL, cuando se usa 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 instrucción se considera para su ejecución simultánea, a diferencia de los lenguajes de computación procesal como BASIC, C y el código ensamblador, donde una secuencia de instrucciones se ejecuta secuencialmente, una instrucción a la vez.

Un proyecto VHDL es polivalente. 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 varias 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 usar el sistema de tipos para escribir código mucho más estructurado (especialmente declarando tipos de registro).

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 compuerta AND simple en VHDL sería similar a

-- (esto es un comentario VHDL)/* esto es a bloque comentario ()VHDL-2008)*/-- importación std_logic de la biblioteca IEEEbiblioteca IEEE;uso IEEE.std_logic_1164.Todos;- esta es la entidadentidad ANDGATE es puerto ()  I1 : dentro std_logic; I2 : dentro std_logic; O : Fuera. std_logic);final entidad ANDGATE;-- esta es la arquitecturaarquitectura RTL de ANDGATE escomenzar O . I1 y I2;final arquitectura RTL;

(Tenga en cuenta que RTL significa diseño de nivel de transferencia de registro). Si bien el ejemplo anterior puede parecer detallado para los principiantes de HDL, muchas partes son opcionales o deben escribirse sólo una vez. En general, las 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 tipo std_logic puede parecer al principio una exageración. Uno podría usar fácilmente el tipo bit incorporado y 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 su lugar de bits simples (0,1) ofrece al diseñador una herramienta de simulación y depuración muy poderosa que actualmente no existe en ningún otro HDL.

En los ejemplos que siguen, 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 la facilidad de mantenimiento.

Construcciones sintetizables y plantillas VHDL

VHDL se utiliza con frecuencia 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 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 se ocupan explícitamente del tiempo, como esperar 10 ns;, no se pueden sintetizar 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 del 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 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 suele llamarse, es una construcción simple muy común en el diseño de hardware. El siguiente ejemplo muestra un MUX simple de dos a uno, con entradas A y B, selector S y salida X. Tenga en cuenta que hay muchas otras formas de expresar el mismo MUX en VHDL.

X . A cuando S = '1 ' más B;
biblioteca IEEE;uso IEEE.std_logic_1164.Todos;entidad mux4 es puerto() a1 : dentro std_logic_vector()2 abajo 0); a2 : dentro std_logic_vector()2 abajo 0); a3 : dentro std_logic_vector()2 abajo 0); a4 : dentro std_logic_vector()2 abajo 0); Sel : dentro std_logic_vector()1 abajo 0); b : Fuera. std_logic_vector()2 abajo 0) );final mux4;arquitectura rtl de mux4 es -- parte declarativa: vacíacomenzar 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 ; final Caso; final proceso p_mux;final rtl;

Plantilla de cerrojo

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 cierre 1:Q . D cuando Habilitación = '1 ' más Q;- Plantilla de captura 2:proceso()Todos)comenzar Q . D cuando()Habilitación);final proceso;- Plantilla de captura 3:biblioteca IEEE;uso IEEE.STD_LOGIC_1164.TODOS;entidad dflip esfinal dflip;arquitectura estructural de dflip es componente AND2 puerto ()in1, in2:dentro std_logic; 1: Fuera. std_logic); final componente; componente OR2 puerto ()in1, in2:dentro std_logic; 1: Fuera. std_logic); final componente; componente NOT1 puerto ()in1: dentro std_logic; 1: Fuera. std_logic); final componente; señal de señal D, E, E_NOT, Q, OUT_AND1, OUT_AND2: std_logic;comenzar  U0: NOT1 puerto mapa ()E, E_NOT); U1: AND2 puerto mapa ()E, D, OUT_AND1); U2: AND2 puerto mapa ()E_NOT, Q, OUT_AND2); U3: OR2 puerto mapa ()OUT_AND1, OUT_AND2, Q);final estructural;biblioteca IEEE;uso IEEE.STD_LOGIC_1164.TODOS;entidad NOT1 es puerto ()in1: dentro std_logic; 1: Fuera. std_logic);final NOT1;arquitectura conductual_not de NOT1 escomenzar 1 . no in1;final conductual_not;biblioteca IEEE;uso IEEE.STD_LOGIC_1164.TODOS;entidad AND2 es puerto()in1, in2: dentro std_logic; 1: Fuera. std_logic);final AND2;arquitectura conductal_and2 de AND2 escomenzar 1 . in1 y in2;final conductal_and2;biblioteca IEEE;uso IEEE.STD_LOGIC_1164.TODOS;entidad OR2 es puerto ()in1, in2: dentro std_logic; 1: Fuera. std_logic);final OR2;arquitectura conductal_or de OR2 escomenzar 1 . in1 o in2;final conductal_or;

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

DFF : proceso()Todos) escomenzar si RST entonces Q . '0'; elsif rise_edge()CLK) entonces Q . D; final si;final proceso DFF;

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

DFF : proceso()RST, CLK) escomenzar si RST entonces Q . '0'; elsif CLK'event' y CLK = '1 ' entonces Q . D; final si;final proceso DFF;

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

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

o

DFF : proceso()Todos) es comenzar si rise_edge()CLK) entonces Q . D; final si; si RST entonces Q . '0'; final si;final proceso DFF;

o:

Biblioteca IEEE;USE IEEE.Std_logic_1164.Todos;entidad RisingEdge_DFlipFlop_SyncReset es puerto() Q : Fuera. std_logic;  Clk : dentro std_logic;  sync_reset : dentro std_logic;  D : dentro std_logic  );final RisingEdge_DFlipFlop_SyncReset;arquitectura Comportamiento de RisingEdge_DFlipFlop_SyncReset escomenzar proceso()Clk) comenzar  si ()rise_edge()Clk) entonces si ()sync_reset='1 ') entonces  Q . '0'; más  Q . D;  final si; final si;  final proceso; final Comportamiento;

Lo que 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 de la palabra 'sin firmar' escriba, escriba conversiones entre 'sin firmar' y 'std_logic_vector' y VHDL genéricos. Los genéricos están muy cerca de los argumentos o plantillas en otros lenguajes de programación tradicionales como C++.

biblioteca IEEE;uso IEEE.std_logic_1164.Todos;uso IEEE.numeric_std.Todos; - para el tipo no firmadoentidad COUNTER es genérico genérico () WIDTH : dentro naturales naturales := 32); puerto () RST : dentro std_logic; CLK : dentro std_logic; LOAD : dentro std_logic; DATOS : dentro std_logic_vector()WIDTH-1 abajo 0); Q : Fuera. std_logic_vector()WIDTH-1 abajo 0));final entidad COUNTER;arquitectura RTL de COUNTER escomenzar proceso()Todos) es comenzar si RST entonces Cuenta . ()otros = '0'); elsif rise_edge()CLK) entonces si LOAD='1 ' entonces Q . DATOS; más Q . std_logic_vectr()no firmado()Q) + 1); final si; final si; final proceso;final arquitectura RTL;

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

Construcciones solo de simulación

Un gran subconjunto de VHDL no se puede traducir a hardware. Este subconjunto se conoce como el subconjunto no sintetizable o solo de simulación de VHDL y solo se puede usar para la creación de prototipos, la simulación y la depuración. Por ejemplo, el siguiente código generará un reloj con una frecuencia de 50 MHz. Puede, por ejemplo, usarse para controlar una entrada de reloj en un diseño durante la simulación. Sin embargo, es una construcción solo de simulación 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.

procesocomenzar CLK . '1 '; Espera. para 10 NS; CLK . '0'; Espera. para 10 NS;final proceso;

Las construcciones solo de simulación se pueden usar para crear formas de onda complejas en muy poco tiempo. Dicha 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.

procesocomenzar Espera. hasta START = '1 '; - Espera hasta que START esté alto  para i dentro 1 a 10 bucle Entonces espera unos cuantos relojes... Espera. hasta rise_edge()CLK); final bucle; para i dentro 1 a 10 bucle - escribir números 1 a 10 a DATOS, 1 cada ciclo DATOS . to_unsigned()i, 8); Espera. hasta rise_edge()CLK); final bucle; - espera hasta que cambie la salida Espera. on RESULTADOS;  - Ahora levante la espalda para el período de reloj ACK . '1 '; Espera. hasta rise_edge()CLK); ACK . '0'; - y así sucesivamente...final proceso;

Bibliotecas estándar

También denominados paquetes estándar.

Paquete estándar IEEE

El paquete estándar IEEE incluye lo siguiente:

  • numeric_std
  • std_logic_1164
    • std_logic_arith
    • std_logic_unsigned
    • std_logic_signed
    • std_logic_misc

Simuladores VHDL

Comercial:

  • Aldec Active-HDL
  • Cadence Incisive
  • Mentor Graphics ModelSim
  • Mentor Graphics Questa Advanced Simulator
  • Synopsys VCS-MX
  • Xilinx Vivado Design Suite (que cuenta con el Simulador Vivado)

Otro:

  • EDA Playground - Free web browser-based VHDL IDE (uses Synopsys VCS, Cadence Incisive, Aldec Riviera-PRO y GHDL para la simulación VHDL)
  • GHDL es un compilador VHDL de código abierto que puede ejecutar programas VHDL. GHDL en GitHub
  • boot by freerangefactory.org es un compilador y simulador VHDL basado en GHDL y GTKWave
  • VHDL Simili por Symphony EDA es un simulador VHDL comercial gratuito.
  • nvc por Nick Gasson es un compilador de código abierto VHDL
  • freehdl por Edwin Naroska era un simulador de código abierto VHDL, abandonado desde 2001.

Contenido relacionado

Solo

ELIZA

Códec

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save