Program counter

This a a part of the program counter. Eight of these would be great because then I have 256 lines. 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 input signal)


The logic design of a module.


The schematic of a module.

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. It is important to save the starting-address for some commands.


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. 

Then I took my oscilloscope and displayed all outputs. 

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.

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: 

  • I only use n-ch Mosfets. (And not combined with p-ch.)
  • Each Mosfet has to discharge its electric field through a 47 kOhm resistor.
  • And each Mosfet gets charged through two 47 kOhm resistors.


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:

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: