MyHDL [1] es un lenguaje de descripción de hardware (HDL) basado en Python .
Las características de MyHDL incluyen:
MyHDL es desarrollado por Jan Decaluwe. [7]
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 conversor 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 bits """ @always_comb def logic (): Bext = intbv ( 0 )[ ancho + 1 :] Bext [:] = B para i en el rango ( ancho ): G . siguiente [ i ] = Bext [ i + 1 ] ^ Bext [ i ] lógica de retorno
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 Verilog generado tiene el siguiente aspecto:
módulo bin2gray ( B , G ); entrada [ 7 : 0 ] B ; salida [ 7 : 0 ] G ; registro [ 7 : 0 ] GRAMO ; siempre @( B ) comenzar : BIN2GRAY_LOGIC entero i ; reg [ 9-1 : 0 ] Bext ; _ _ Bext = 9'h0 ; Bexto = B ; para ( i = 0 ; i < 8 ; i = i + 1 ) comience G [ i ] <= ( Bext [( i + 1 )] ^ Bext [ i ]); fin fin módulo final
El código VHDL generado tiene el siguiente aspecto:
biblioteca IEEE ; utilice IEEE.std_logic_1164. todo ; utilice IEEE.numeric_std. todo ; Utilice std.textio. todo ; utilice work.pck_myhdl_06. todo ; la entidad bin2gray es el puerto ( B : entrada sin firmar ( 7 hasta 0 ); G : salida sin firmar ( 7 hasta 0 ) ); entidad final bin2gray ; La arquitectura MyHDL de bin2gray es comenzarBIN2GRAY_LOGIC : proceso ( B ) es variable Bext : sin firmar ( 8 hasta 0 ); comenzar Bext : = to_unsigned ( 0 , 9 ); Bext := cambiar tamaño ( B , 9 ); para i en 0 a 8 - 1 bucle G ( i ) <= ( Bext (( i + 1 )) xor Bext ( i )); bucle final ; finalizar el proceso BIN2GRAY_LOGIC ; arquitectura final MyHDL ;