Digital Logic Simulator
A downloadable game for Windows and Linux
Download NowName your own price
Simulate digital electronic circuits. You can place components and wire them up. Then apply signals from switches, push button, or clock.
VERSION 2 IS NOW AVAILABLE Logic Simulator 2
You can try to create circuits to match Truth Tables and run tests to check if they work properly.
You can also try to create simple computer circuits and program the ROM memory with micro-instructions and even your own OP codes. This is great for computer science students or hobbyists. You may also save and load memory data from disk.
View the development log posts
Cheers, Andrew Wilkes
Status | Released |
Platforms | Windows, Linux |
Rating | Rated 4.7 out of 5 stars (3 total ratings) |
Author | Andrew Wilkes |
Genre | Simulation |
Tags | electronics |
Download
Download NowName your own price
Click download now to get access to the following files:
Logic Simulator.exe 32 MB
Logic Simulator.pck 1.7 MB
Logic Simulator.x86_64 33 MB
LogicSimulator.tar.gz 14 MB
LogicSimulator.zip 26 MB
Source Code
if you pay $5 USD or more
Development log
- Logic Simulator Update - Sub CircuitsOct 02, 2021
- Logic Simulator UpdateAug 14, 2021
- Logic Simulator Update - Combinational Logic Tutorial Page AddedAug 10, 2021
- Logic Simulator Update - tutorial page addedAug 08, 2021
- Logic Simulator UpdateAug 07, 2021
- Logic Simulator - small updateJul 30, 2021
Comments
Log in with itch.io to leave a comment.
Tried this out today and while its the best one I've tried so far, got some suggestions:
The manual should be included inside the software like the help pages are. It should also detail all the controls in a way that stands out from the rest of the text. It took me a lot longer than I care to admit to find out I had to click a chip and press delete on my keyboard to remove a chip.
The inputs with sliders should take keyboard input to set them, so its easier to control what they contain (such as the Input 8). By this I mean something like having a button, or being able to click on the value displayed on them and change it that way.
Multi-pin Inputs and outputs should act like their pin counter parts: for example, the Input 8 module when in a circuit opened as a block, should take an input bus to pass on to the internal circuit, as opposed to having to get rid of it and using 8 input pins or an input bus "pin" in its place, so that users can test the circuit and leave that part in place with one part, instead of having to swap them out. This would also alleviate having to have, say, an input bus pin, immediately followed by an output bus to break the incoming bus into separate wires, since you'd have a part that effectively works like this by default. I know I can make my own part to do this, but its not immediately obvious that these other parts don't. Also, an Input 8 can't take input from an input bus, and the output 8 doesn't even have an output to connect it to anything for pass through (nor does it have a bus connection), where the regular output part does. I know this is a small issue, but it is quite frustrating, especially when the in software help shows circuits being used that have only an input 8 as the initial input, but you can't also do that.
Sometimes, when reloading circuits that have an output that is feeding an output pin from its right side connection, the simulator will break either just those connections, or all connections between all parts after the initial inputs connections.
Add a drop down or some other menu option that lets you either pin commonly loaded parts as blocks, or lists a folder that contains custom parts the user has saved to quick load them. It's really slow to even hit ctrl + b and scroll through a list of my parts to reuse them, especially when I want to make a complex circuit with only my own parts (I.E. if someone was following NAND2Tetris, which I plan to with this as so far it seems the only one capable of handling this task).
Add a function to add multiple chips of the same type to the grid at once, instead of having to manually add them one at a time (especially for the input and output since they have a choice). This would really be useful for making things like an 8bit or 16bit AND chip, as you'd need to manually add 24 parts at a minimum unless you build them incrementally using your own custom chips, and that could still take longer than it should given how custom chips are currently loaded. Even adding something like Ctrl + D duplicating the currently selected parts would help a lot with this quite a bit.
Add an option to the basic logic gates to increase their inputs. For example, being able to have an AND gate with 8 inputs instead of just the 2. It's not really fun to expand these chips when you've already done it a few times and can do it in your sleep, its even worse if you're going for something like a 16:1 AND gate.
Make wires able to be recolored so you can see at a glance where things are connected to, even when all the wires are spaghetti.
Make parts that have Displays in them show their display when loaded as a block.
Speaking of displays, if you wire them inline with each other, they display things in the wrong order. For instance, if I have 2 displays hooked up, with the bus going into the left one, then from the left one into the right one, the left one displays the 1s digit, and the right one displays the 10s digit. I have to instead wire the right one first and pass the bus through from the right one to the left one - not only does this not make sense given that components are set up to construct a circuit from left to right, it also doesn't make sense if everything is going by little-endian formatting. Maybe this could be a setting in the chip to switch them between the 2 modes?
Overall, as I said, this is the best one of these I've seen yet, and I've even used logisim and its forks a lot, and Sebastian Lague's Digital logical simulator, and with these updates it would be even better. The only other issue I have is that the source is locked behind a paywall and unfortunately, no I can't afford $5 (I'd be more than happy to otherwise, but work is little right now). If the source was on github instead, I'd be more than happy to try to implement some of these things for you and pass them on to you. Definitely understand wanting to get paid for your work, you should definitely getting paid for this. Just wish there was an option for those of us that can't pay for software right now to at least contribute to the code.
Hi, thanks for your nice review and feedback. Maybe I will re-code this from the ground up in Godot4, but for now I have made the code public at: https://github.com/andrew-wilkes/logic-simulator
Thank you for your response.
I've actually noticed a bug in the logic elsewhere: I made a 16 bit AND chip, and despite wiring it correctly (Out0 should only be high when A0 AND B0 are high), when I use the chip as a block, no matter which 2 and gates should output high, the 0 output always outputs high. A 16bit NOT works as expected
If I was to fix some things, what are the odds that they'd make it into the current version hosted here? Or would I have to fork it and upload my own version (I'd definitely give credit to you, if I did that)?
Hi, I think that the process with open source projects when you want to contribute is to fork the repository, develop and test your bug fix, and then create a pull request to the original repository. Then this pull request is reviewed and merged into the code base if approved. And you would be credited accordingly. In another scenario, there would be a team and various development branches and merges of features going on.
I more wanted to know what your process would be, but this is good enough for people who've never contributed to something before.
I wasn't able to replicate the 16 bit AND chip bug that you experienced. But, I am thinking to improve the software. Before, I was burning out doing it and just wanted to get the circuit block feature done and have a rest from it. But now I can do some updates. I will take your feedback on board.
I was using custom chips to make it, when I made it with nothing but the included AND gates it does work, but that kinda defeats the purpose of making your own chips. The way I did it was:
AND 4 - 4 and gates doing A0 AND B0 to A3 AND B3, outputting to OUT0-OUT3.
AND 8 - 2 AND 4s to expand it to 8 inputs and outputs
AND 16 - 2 AND 8s to expand to 16 inputs and outputs - this one would always output to OUT0 even though every chip prior was wired correctly.
Ok thanks. I will try this when I get to looking at the circuit block code again. Meanwhile I am improving the IO parts. I have added text input and some arrows to increment/decrement the input value (with a repeat if button held down), along with the slider. The text input may be decimal or hex prefixed with 0x. I will make the circuit block compile the IO to have pins and busses with auto-naming of the pins with the part tag used as a prefix probably.
The repository branch called "blocks" has the latest code. It is built using Godot Engine 3.x in case you didn't know.
In regard to the displays being in the wrong order: this is intentional behaviour since they display a value based on their input and output a divided value to the output to pass to the next display. I provided a bus loop-back part to route the bus data from right to left and bus parts can accept data flowing in this reversed direction. So this approach is needed to get multiple displays showing the number order in the expected way.
nodes
Hello! I stumbled across your project and I just gotta say, excellent choice on the engine! I have one question tho, is it possible and if it is, how do you clone or copy/paste blocks?
Hi, unfortunately there isn't a copy/paste feature. I guess that it would be a useful feature to add though. Thanks for your feedback.
Is it Open sourcw?
Hello, it wasn't open source but thanks to you, I changed it to OS :) https://github.com/andrew-wilkes/logic-simulator
Hey, i love this project and i would like to help you, but sadly the link doesnt work! I hope, that i can help you!
looks like that one isn't there any more, but here's a link to the old version: https://github.com/andrew-wilkes/digital-logic
Hi, I made the link public again :)
wow
wow
wow
wow
This looks like LogiSim but in fancy. Might give it a try later!
I hope that you do!
Hi guys, please download the .pck file as well as the engine executable file unless you are downloading a zip file etc.
Really cool… just added to my collection! Would you like to join Creactivity #1?
Thanks for your appreciation!
Hi folks, I just uploaded version 1.01 that has a smaller default screen size (1024x768) and then it maximizes to your screen size. Before it defaulted to 1080p which is most common but still many people use smaller screen sizes.
Ha ha, thanks for your feedback, and support!