A little introduction.
I've choosen my nickname Hans Cadans, because I love playin' the drums.
Besides this I like designing digital circuits and I also wrote many programs (assembler, C++, basic)
For example I've written a program in EXCEL, which simulates counters, shiftregisters and LED's
I hope, you will forgive me, when I make some mistakes in writing English, for this is not my native language.
I'm from The Netherlands.
My question is as follows:
I guess, that every dot on the screen acts like a cell in a spreadsheet.
when the program calculates all the cells, every time in an endless loop, then my question makes no sense.
BUT, when the program calculates only those cells, which are associated with an input-pin, an output-pin,
or wich are at the corner of a broken line (I mean a not a straight connection), will this slow down the simulation.
If this is the case, will it be better to make straight connections.
In line of this, it will maybe better to make a few complex components than to make many simple components
I can also imagine, that the use of many splitters will also slow down the simulation.
Furthermore I thank you for the free use of your wonderfull program.
I've already spent many months on working with Logic Circuits. Maybe I have to confess, that I'm addicted to your program.
I designed most of the general circuits like multiplexers, demultiplexers, counters, ALU´s, HEX-keyboards and so on.
This moment I´ve finished a simple 8-bits computer (accumulator based) and a 16-bits computer (Harvard architecture).
In the future I hope to make a copy of the Z-80 processor, including the complete instruction-set, for I´ve studied this
processor in the eighties.
If someone is interested in having the basic circuits, I will upload these (with a clear explanation of their working) to this forum.
By the way. I saw some lovely solutions, but also some unexpected solutions. I would like to discuss these circuits.
best regards
Hans Cadans
program velocity
-
- Posts: 57
- Joined: Thu Apr 24, 2014 12:30 pm
program velocity
Last edited by Hans Cadans on Sat May 10, 2014 4:43 am, edited 1 time in total.
Re: program velocity
Hi Hans,
Thank you for sharing our thoughts.
The way the program simulates the circuit is a bit more complicated than you’ve described. So first of all the drawings are translated to set of objects that can perform logical operations – gate functions. During this translation all the connections are calculated and splitters resolved, so during the execution it is does not slow down the execution. More over all the circuit hierarchy get flatted down. In other words all circuit symbols get replaced by sub circuits they represent. So it does not matter how many sub circuits you have. After that translation is done all the gates that are not connected to inputs that user can observe get removed. This get repeated until there is no floating outputs remains. This is a very basic optimization that helps reduce number of calculations.
The execution itself always starting at the point where the change in circuit state can occurred which is buttons, constants or clocks. Than all gates that connected to them are evaluated producing a new set of changes which is causing other gates to reevaluate and so on. So you can imagine a waive spreading from original point of change until no more changing of state is happening.
Hope this help you better design you circuits.
If you have some interesting circuits it would be great if you can share it here.
Thank you,
Eugene
Thank you for sharing our thoughts.
The way the program simulates the circuit is a bit more complicated than you’ve described. So first of all the drawings are translated to set of objects that can perform logical operations – gate functions. During this translation all the connections are calculated and splitters resolved, so during the execution it is does not slow down the execution. More over all the circuit hierarchy get flatted down. In other words all circuit symbols get replaced by sub circuits they represent. So it does not matter how many sub circuits you have. After that translation is done all the gates that are not connected to inputs that user can observe get removed. This get repeated until there is no floating outputs remains. This is a very basic optimization that helps reduce number of calculations.
The execution itself always starting at the point where the change in circuit state can occurred which is buttons, constants or clocks. Than all gates that connected to them are evaluated producing a new set of changes which is causing other gates to reevaluate and so on. So you can imagine a waive spreading from original point of change until no more changing of state is happening.
Hope this help you better design you circuits.
If you have some interesting circuits it would be great if you can share it here.
Thank you,
Eugene