Program counter
September 23, 2021
This a a part of the program counter. Eight of these would be great because then I have 256 lines of possible machine code. Each line has a set machine code
My instruction pointer (many names are possible) has the memory address of the current statement/instruction stored. Every address is split into a unique output with a decoder. This output will power a word line in a read-only memory.
The yellow LED is showing the state of each counter module. (The green LED is the clock signal from the Arduino)
visible output
The logic design of a module.
logic design
The schematic of a module.
full schematic
zoom on schematic
The program counter is able to jump to a specific address. This is necessary if you want a for/while-loop, an if-else conditional or a subroutine. A simple goto is also possible. And it is important to save the starting-address for some commands.
finished board front
finished board backside
finished board with light
Update October 13th 2021
I made a total of eight pieces and changed all LEDs from red to green. Printed a roof and a base plate for the counter.
finished circuit
Then I took my oscilloscope and displayed all outputs.
circuit with oszi
Each module responds to the falling edge. And as every full-grown binary counter, also this one halves the previous signal frequency. Yellow is the first oscilloscope probe.
period of oszi
This delay is due to the fact that the signal has to travel through 4 logic gates. The following circuits have to be designed so that these "not allowed conditions" do not cause any troubles.
The weak edges are because:
The future will show if these slow rising edges are acceptable. The falling edges are slumping and are looking quite well. I even already have a solution for the long delay. (If this causes a muddle.)
This is what it maybe looks like when it is finished:
virtual complete program counter
These “shelves” on the back side split a binary number into a single bit. The black slots represent all 256 lines of code.
And here are the splitter in real:
make splitter boards
small splitter parts
the splitter
Update from January 2023:
122 lines of possible program code are finished until now.
look from behind
In total, 128 mini boards are needed for 256 lines of maschine language code.