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 retornoPuedes 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óduloEl 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
- ↑ "Inicio" . myhdl.org .
- ↑ "Conversión a Verilog y VHDL — Documentación de MyHDL 0.11" .
- ↑ "Novedades de MyHDL 0.6 — Documentación de MyHDL 0.11" .
- ↑ "Novedades de MyHDL 0.6 — Documentación de MyHDL 0.11" .
- ↑ "Novedades de MyHDL 0.6 — Documentación de MyHDL 0.11" .
- ↑ "Cosimulación con Verilog — Documentación de MyHDL 0.11" .
- ↑ "MyHDL: Un lenguaje de descripción de hardware basado en Python | Linux Journal" .
- ↑ "Ejemplos de conversión — Documentación de MyHDL 0.11" .
- lenguajes de descripción de hardware