MyHDL trazendo o Python para o mundo das FPGAs

April 12, 2010

[Warning: This post is a backup recovery from my previous Wordpress blog. All content was automatically converted accessing a MySQL database using a Python script (details). Mostly are in Portuguese but if you are interest I can translate to English. If you found any problem dont’t hesitate to contact me in comments.]

From Python to silicon

Depois de uma longa histria estou participando de dois um curso aberto sobre hardware: um abordando VHDL e outro Verilog. At a nada de novo, quando... descobri algo interessante. Algo que realmente motivou a mudar minha rotina de trabalho para (durante alguns dias) levantar as 7h. a escrever sobre o assunto aqui no blog. :p

MyHDL

Em poucas palavras, um pacote para o Python que permite utiliz-lo para descrever e verificar uma linguagem de descrio de hardware. Alm disso voc pode converter seu cdigo Pyhton em Verilog ou VHDL, automaticamente, para gravar numa CPLD ou FPGA. Para quem quiser aprender, o tutorial mais completo est na documentao oficial do projeto. H tambm uma introduo muito boa em portugus feito pela UFPE.

No vou fazer um tutorial, apenas transcreverei os exemplos utilizados em sala de aula para Pythom, produzir os testes e os equivalentes em VHDL e Verilog. Um dos primeiros exerccios era descrever um multiplexador de 4 entradas.

from myhdl import *  

def Mux(dout, din_1, din_2, din_3, din_4, sel):

	@always_comb
	def muxLogic():

		if sel == 0x0:
			 dout.next = din_1
		if sel == 0x1:
			 dout.next = din_2
		if sel == 0x2:
			 dout.next = din_3
		if sel == 0x3:
			 dout.next = din_4

	return muxLogic

def convert():
	dout, din_1, din_2, din_3, din_4  = [Signal(intbv(0)[8:]) for i in range(5)]
	sel =   Signal(intbv(0)[2:])
	toVHDL(Mux, din_1, din_2, din_3, din_4, dout, sel)
	toVerilog(Mux, din_1, din_2, din_3, din_4, dout, sel)

convert()

As funes toVHDL() e toVerilog() produzem arquivos Mux.vhd ou Mux.v respectivamente (o nome o mesmo da funo definida).

Aguardem os prximos posts onde vou apresentar o test case para este e os novos exerccios que forem sugeridos em sala.