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, basado 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 co-simulación con Verilog. [6]
- Un sistema de tipos de datos avanzado, independiente de los tipos de datos tradicionales. La herramienta de traducción de MyHDL escribe automáticamente funciones de conversión cuando el idioma de destino las requiere.
MyHDL es desarrollado por Jan Decaluwe. [7]
Ejemplos de conversión
Aquí puede 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 específicamente el convertidor de código binario a Gray:
def bin2gray ( B , G , ancho : int ): "" "Codificador gris. B - señal intbv de entrada, codificada en binario G - señal intbv de salida, ancho codificado en gris - ancho de bit "" " @always_comb def lógica (): Bext = intbv ( 0 ) [ anchura + 1 :] Bext [:] = B para i en gama ( ancho ): G . siguiente [ i ] = Bext [ i + 1 ] ^ Bext [ i ] devolver la lógica
Puede 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 , ancho ) bin2gray_inst = toVHDL ( bin2gray , B , G , ancho )
El código de 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 ; Bext = 9'h0 ; Bext = B ; para ( i = 0 ; i < 8 ; i = i + 1 ) comience G [ i ] <= ( Bext [( i + 1 )] ^ Bext [ i ]); fin finendmodule
El código VHDL generado tiene el siguiente aspecto:
biblioteca IEEE ; utilice IEEE.std_logic_1164. todo ; utilice IEEE.numeric_std. todo ; use std.textio. todo ;use work.pck_myhdl_06. todo ;la entidad bin2gray es el puerto ( B : in unsigned ( 7 downto 0 ); G : out unsigned ( 7 downto 0 ) ); entidad final bin2gray ; arquitectura MyHDL de bin2gray esempezarBIN2GRAY_LOGIC : proceso ( B ) es variable Bext : unsigned ( 8 downto 0 ); comenzar Bext : = to_unsigned ( 0 , 9 ); Bext : = cambiar el tamaño ( B , 9 ); para i en 0 a 8 - 1 bucle G ( i ) <= ( Bext (( i + 1 )) xor Bext ( i )); ciclo final ; finalizar el proceso BIN2GRAY_LOGIC ; arquitectura final MyHDL ;
Ver también
Referencias
- ^ http://www.myhdl.org/
- ^ http://docs.myhdl.org/en/stable/manual/conversion.html
- ^ http://docs.myhdl.org/en/stable/whatsnew/0.6.html#conversion-of-test-benches
- ^ http://docs.myhdl.org/en/stable/whatsnew/0.6.html#conversion-of-lists-of-signals
- ^ http://docs.myhdl.org/en/stable/whatsnew/0.6.html#conversion-output-verification
- ^ http://docs.myhdl.org/en/stable/manual/cosimulation.html
- ^ http://www.linuxjournal.com/article/7542
- ^ http://docs.myhdl.org/en/stable/manual/conversion_examples.html