Articulo de referencia

MiHDL

MyHDL [ 1 ] es un lenguaje de descripción de hardware (HDL) basado en Python . Las características de MyHDL incluyen: La capacidad de generar código VHDL y Verilog a partir de u...

MyHDL [ 1 ] es un lenguaje de descripción de hardware (HDL) basado en Python .

Las características de MyHDL incluyen:

  • La capacidad de generar código VHDL y Verilog a partir de un diseño MyHDL. [ 2 ]
  • La capacidad de generar un banco de pruebas (Conversión de bancos de pruebas [ 3 ] ) con vectores de prueba en VHDL o Verilog, basados ​​en cálculos complejos en Python.
  • La capacidad de convertir una lista de señales. [ 4 ]
  • La capacidad de convertir la verificación de salida. [ 5 ]
  • La capacidad de realizar cosimulación con Verilog. [ 6 ]
  • Un sistema avanzado de tipos de datos, independiente de los tipos de datos tradicionales. La herramienta de traducción de MyHDL escribe automáticamente funciones de conversión cuando el lenguaje de destino las requiere.

MyHDL fue desarrollado por Jan Decaluwe. [ 7 ]

Ejemplos de conversión

Aquí se pueden ver algunos ejemplos de conversiones de diseños MyHDL a VHDL y/o Verilog. [ 8 ]

Un pequeño diseño combinatorio

El ejemplo es un pequeño diseño combinatorio, más concretamente el convertidor de binario a código Gray:

def bin2gray ( B , G , width : int ): """Codificador de grises. B -- señal intbv de entrada, codificada en binario  G -- señal intbv de salida, codificada en Gray  width -- ancho de bits  """@always_comb def lógica (): Bext = intbv ( 0 )[ ancho + 1 :] Bext [:] = B for i in range ( ancho ): G . next [ i ] = Bext [ i + 1 ] ^ Bext [ i ]lógica de retorno

Puedes crear una instancia y convertirla a Verilog y VHDL de la siguiente manera:

ancho = 8B = Señal ( intbv ( 0 )[ ancho :]) G = Señal ( intbv ( 0 )[ ancho :])bin2gray_inst = toVerilog ( bin2gray , B , G , width ) bin2gray_inst = toVHDL ( bin2gray , B , G , width )

El código Verilog generado tiene el siguiente aspecto:

módulo bin2gray ( B , G );entrada [ 7 : 0 ] B ; salida [ 7 : 0 ] G ; reg [ 7 : 0 ] G ;siempre @( B ) comenzar : BIN2GRAY_LOGIC entero i ; reg [ 9-1 : 0 ] Bext ;Bexto = 9'h0 ; Bexto = B ; para ( i = 0 ; i < 8 ; i = i + 1 ) comience G [ i ] <= ( Bext [( i + 1 )] ^ Bext [ i ]); fin finfin del módulo

El código VHDL generado tiene el siguiente aspecto:

biblioteca IEEE ; usar IEEE.std_logic_1164.all ; usar IEEE.numeric_std.all ; usar std.textio.all ;usar work.pck_myhdl_06. todo ;la entidad bin2gray es puerto ( B : entrada sin signo ( 7 downto 0 ); G : salida sin signo ( 7 downto 0 ) ); fin entidad bin2gray ;La arquitectura MyHDL de bin2gray escomenzarBIN2GRAY_LOGIC : proceso ( B ) es variable Bext : sin signo ( 8 downto 0 ); inicio Bext := to_unsigned ( 0 , 9 ); Bext := resize ( B , 9 ); para i en 0 a 8 - 1 bucle G ( i ) <= ( Bext (( i + 1 )) xor Bext ( i )); fin del bucle ; fin del proceso BIN2GRAY_LOGIC ;arquitectura final MyHDL ;

Véase también

Referencias

  1. "Inicio" . myhdl.org .
  2. "Conversión a Verilog y VHDL — Documentación de MyHDL 0.11" .
  3. "Novedades de MyHDL 0.6 — Documentación de MyHDL 0.11" .
  4. "Novedades de MyHDL 0.6 — Documentación de MyHDL 0.11" .
  5. "Novedades de MyHDL 0.6 — Documentación de MyHDL 0.11" .
  6. "Cosimulación con Verilog — Documentación de MyHDL 0.11" .
  7. "MyHDL: Un lenguaje de descripción de hardware basado en Python | Linux Journal" .
  8. "Ejemplos de conversión — Documentación de MyHDL 0.11" .