• RL 1 - Logisim, Digital, and Logisim-Evolution

    Travis Ayres07/19/2021 at 07:51 1 comment

    As far as simulators go, one could of course use a full HDL language and simulator (such as GHDL, or Icarus Verilog), and while I am doing some of that for this project I decided to check out Logisim's descendants Digital and Logisim-Evolution. Work on the original Logisim has stopped, and it's up to the community to continue it - fortunately, multiple groups have continued its...well, Evolution. 

    I started by checking out Digital, and after scanning through the issues it looks like the ability to draw a custom representation for a circuit is not yet available (although it is in progress); Logisim-Evolution has this feature, so I went with it. After looking through the issues on Github, it appears that the simulator's core would require some serious refactoring to support true bidirectional pins - then again, V1 of Chisel didn't support tri-state pins either (whatever that means - I never bothered with Chisel).

    Anyway, it's what I went with (along with VHDL/Verilog, but it's likely easier for people to follow along with if using a tool like Logisim Evolution).

    But here's the deal: THIS is the tutorial that everyone needs to see. It's what sold me on Logisim Evolution, for the same reason the author states - the other tutorials will put you to sleep, let's see something real, fast.

    LEGIT. 

    Ok, next we're going to add some items to our References section:

    Cool stuff!

  • Research - Entry 0

    Travis Ayres07/18/2021 at 13:35 0 comments

    Wrote some VHDL for the AM2901, but I haven't decided if I'm going for full accuracy or something for an FPGA. It's been a lot of fun reading the data sheet though - including some "Wait, what?" moments when trying to figure things out. It is possible to design an excessive battery of tests, which sounds like some bit of fun... or we could just plug an AM2901 into a socket, stick that socket on a breadboard, and then run some wires over to an FPGA board kicking around my lab - obviously with something to handle the level translation between the 2901 and whatever (relatively) modern FPGA.

    I'm not an expert at level translating things from the mid 1970's; I just "expect" whatever outputs I have are powerful enough to do what I want, whenever. See? Having all this power makes you lazy. How boring. 

    Abusing VHDL to create a simulation-only model of this chip (as well as a synthesizable one) does sound like fun too, but less fun than wiring things up. That's definitely something to put on the back burner. 

    It's interesting - it's like the AM2901 "expects" to be used in a certain way in a system, and if you're familiar with how it expects to be used, you can see how other microcoded systems could be extended or pieces they're missing. Taking a look at other small microcode systems, you see how they'd benefit from a computer control unit (CCU), or how to better take interrupts to provide for condition control. 

    Then there are some SUPER hardcore microcode projects that have done so much, you're pretty sure they're who you want to be when you grow up; I'm going to list them here out of inspiration, and honestly more than a little envy. But the nice thing about engineering, Kung Fu, whatever, is that it rewards study and deep practice, and just thinking "That's awesome" without joining in the fun is no way to get there. Anyway, here they are:

    https://hackaday.io/project/172073-microcoding-for-fpgas

    http://www.microcorelabs.com/home.html

    Next post is on Logisim, Digital, and Logisim-Evolution - because that's what a lot of people are using, and these simulators (especially Digital and Logisim-Evolution) have become really cool tools for learning digital design. Actually maybe a 2901 model in one of those simulators would be even more useful...