Code Monkey home page Code Monkey logo

asmd-gen's Introduction

asmd-gen

Takes in an ASMD (hardware RTL state machine design) description and outputs Verilog or VHDL. Like QFSM, only simpler.

To be honest, though, it'll probably be more complex, not simpler. Time will tell.

ASMD

ASMD == Algorithmic State Machines with Datapath

When I write an algorithm, I usually think in terms of C or higher.

Functional programming is hard to wrap my head around. Designing things for functional programming requires a different approach.

Real hardware is yet another mind-bendingly different way to design an algorithm. One approach to going from a normal algorithm (or, in my case, thoughts like code) to hardware is to implement it using state machines that translate easily to hardware.

One such method is explained in chapter 11 of

RTL HARDWARE DESIGN USING VHDL Coding for Efficiency, Portability, and Scalability PONG P. CHU Cleveland State University

Basically, you draw out a finite state machine with special semantics. The special semantics yield a state machine and a datapath that interact with each other. The algorithm is fairly easy to draw up, then the drawing is fairly easy to code up in hardware. (This may not yield the MOST efficient hardware ever, but that's OK.)

ASMDGen

I'm tired of drawing out diagrams by hand and doing a large amount of boilerplate work to convert it into code. ASMDGen is intended to take a simple (ha!) text description of an ASMD and generate boilerplate VHDL or Verilog.

I'm aware that QFSM has similar capabilities. I haven't given it a go yet, but I doubt I can tweak it to my liking.

Ragel is another similar program; one option for this project is to simply fork and modify it to do hardware state diagrams and HDL outputs. Again, I haven't given it a go, but it doesn't look like it knows what an ASMD is.

Inspiration and Assistance

GNUU: Writing Your Own Toy Compiler

RTL HARDWARE DESIGN USING VHDL Coding for Efficiency, Portability, and Scalability by PONG P. CHU is readily available through the IEEE member library. Most universities, public libraries, and technically minded corporations have subscriptions.

asmd-gen's People

Contributors

jkunkee avatar sashalemon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.