View unanswered posts | View active topics It is currently Fri Apr 19, 2024 8:51 pm



Reply to topic  [ 5 posts ] 
 Omicron - 1 bit minimalistic homebrew CPU/Computer 
Author Message

Joined: Sun Oct 18, 2015 6:53 pm
Posts: 7
Omicron is a minimalistic, 1 bit computer, I wanted to build since ages. Its design was inspired by Jeff Laughton’s one bit computer, and also by the Motorola MC14500 ICU. There are many obvious differences comparing to those. Jeff’s design is more capable and practical and in fact used in real application. Omicron is really a toy, but it is self-contained and despite its simplicity it does a ‘lot’ with very little.

One of my design goals was to build something, which can be programmed on its own. Omicron has 8 word (each word is 6 bits) of program memory made of DIP switches. This can be extended to 16 words and it has a 16 pin connector for this purpose. It has four input buttons/switches and also 3 input ports, which can accept external signals. Also it has a led bar display of 10 leds (some of them in different colors for application like traffic lights), a seven segment display, it has 10 output ports and a piezo beeper as well. It can act as a kind of micro-controller as it can receive external signals, it can ‘process’ them and activate the output ports accordingly.

The instruction set is minimal of course, but it was designed to be as useful as possible. The instruction codes were designed such a way, so that it is easy to memorize them. It can operate at a range of 0.5 Hz to 3Khz, and also can be manually clocked. The range is selected, so that the produced frequency would be audible in a piezo beeper.
There is a 4 bit PC and a one bit accumulator. As some of the outputs are fed back to inputs, it has 3 one bit registers in addition.
000.ppp SET sets port ppp to 1
000.000 NOP (alias) no operation
001.ppp LDA loads accumulator from port ppp
001.000 NEG negates the accumulator
010.ppp STA stores accumulator content in port ppp
011.ppp STN stores the negate of accumulator content in port ppp
10.aaaa JZ jumps to address aaaa if accumulator is zero
11.aaaa JNZ jumps to address aaaa, if accumulator is not zero

Finally, here are some example programs running. The first one is scanning the keyboard (i.e. the colored switches) constantly. Pushing red/yellow/green switches will turn the respective led on.

https://www.youtube.com/watch?v=ovXcqpK4DXQ

The second one is a ‘synth’ program. Omicron is doing all the work. Scanning the switches, generating the corresponding frequency thus by creating a tone.

https://www.youtube.com/watch?v=toQkL5Qb6cE

I think it is a kind of remarkable, that it is achieved in 8 program lines, in total of 8 of 6 bit words or 6 bytes.


Thu Mar 24, 2022 5:57 pm
Profile

Joined: Wed Apr 24, 2013 9:40 pm
Posts: 213
Location: Huntsville, AL
Very cool indeed. Congratulations. Thanks for sharing. Enjoyed your videos.

Looking at your instruction set, I was wondering why you chose to name one of your instructions NEG rather than complement? I'm wondering if you'd thought of using one of your opcodes, plus an additional register, to be able to support a serial arithmetic operation?

_________________
Michael A.


Thu Mar 24, 2022 10:50 pm
Profile

Joined: Sun Oct 18, 2015 6:53 pm
Posts: 7
Thank you for the kind words MichaelM.

Maybe NEG is not the best choice. But I wanted three letter words. So complement would be CMP, which is usually something different (i.e. comparision).

The whole design is so minimalistic, I wanted to go down to the bare minimum (no arithmethical operations, nothing). Also I do not have any gates and space left on the board. All gates of all ICs are already in use. Still, with the use of conditional branches addition or substraction can be circumvented. In fact, on of my sample programs is a 3 bit counter.


Fri Mar 25, 2022 5:36 am
Profile

Joined: Mon Oct 07, 2019 2:41 am
Posts: 592
Would a Trinary version, -1 0 +1 still count as a '1' bit cpu?
Ben.


Fri Mar 25, 2022 6:16 am
Profile

Joined: Wed Feb 03, 2021 4:13 am
Posts: 19
Cool implementation. :)

oldben wrote:
Would a Trinary version, -1 0 +1 still count as a '1' bit cpu?
Ben.


'1' trit CPU, I presume. :)


Fri Mar 25, 2022 7:07 am
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 5 posts ] 

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software