migen ? o que é ?

Migen (Milkymist gerador)

  Como esta devendo um post sobre Migen . esta aqui , baseado no git e no tutorial fornecido pela M-labs que constantemente estao atualizando no git-hub .
O Migen é  uma caixa de ferramentas do Python para a construção de hardware digital de complexo
mais rápido para , design de hardware .

 Usando  Verilog e  o VHDL é tedioso e ineficaz por várias razões. O event-driven
modelo introduz questões e codificação manual que são as vezes desnecessários para
circuitos sincronos , que representam a maior parte dos projetos lógicos de hoje. Contra-
regras aritméticas intuitivos resultar em curvas de aprendizado mais íngremes ou digamos mais  complexas  e fornecer uma Ferramenta  com erros sutis no designer. Finalmente, o apoio  aos processoes de geração de lógica (metaprogramação) através de declarações em “Geraré muito
limitado e restringe os códigos de formas que  podem ser feito de forma  genérica, e mais importante  é ser reutilizados e organizado.

Para abordar melhor essas questões, desenvolvemos a biblioteca Migen FHDL que
substitui os paradigmas baseado em eventos com as noções  combinatória de
declarações síncronos, tendo como regras aritméticas que fazem os inteiros sempre se comportam
como inteiros na  matemáticas, e mais importante permite que a lógica do projeto para ser 
 construída por um programa em Python.Este último ponto permite que os designers de hardware
possam  aproveitar melhor a riqueza da linguagem Python – orientada a objeto
na programação, os parâmetros da função, geradores, sobrecarga de operadores, bibliotecas,
etc , para construir um projeto  bem organizado e  projetos reutilizáveis ​​e sem perder a elegancia.

Outras bibliotecas MIGEN foram  construídos sobre FHDL e fornecem várias ferramentas, tais como a
infra-estrutura de interconexãosystem-on-chip”, um sistema de programação de fluxo de dados, com um ou mais tradicional sintetizador de alto nível que reúne rotinas Python e  em máquinas de estado com caminhos de dados, e um simulador que permite o uso de  bancos de testes para ser
escrito em Python.

Introdução rápida:

from migen.fhdl.std import *
from mibuild.platforms import m1
plat = m1.Platform()
led = plat.request("user_led")
m = Module()
counter = Signal(26)
m.comb += led.eq(counter[25])
m.sync += counter.eq(counter + 1)
plat.build_cmdline(m)

Código repositório:
https://github.com/mlabs/migen
System-on-chip design baseado em Migen:
https://github.com/mlabs/misoc

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s