This page is about MyNOR. MyNOR is a single board computer that does not have a dedicated CPU.
Instead, the CPU consists of discrete logic gates from the 74HC series. This computer
also has no ALU. Only a single NOR gate is used to perfom all computations such as
addition, subtraction, AND, OR and XOR. This computer is not fast, it is rather slow.
MyNOR can only perform 2600 8-bit additions per second, although it is clocked at 4 MHz.
This is because everything is done in software. MyNOR has only a 32 kB ROM for
program storage, but this is more than enough. The very slim microcode occupies
only 9 kB, the remaining 23 kB are used for the application program.
You can say that MyNOR is a homebuilt CPU with additional I/O.
Or it is a discrete microcontroller. Or a single board computer.
But I think it's also a kind of "work of art".
Check out this video to learn more:
This is the MyNOR computer board in all its beauty:
(Click on the image to read more about the board)
MyNOR is not just a fun project. It's a project that shows what can be done with just a few
components of the good old days. It shows how a CPU works and that a CPU does not necessarily
need to have an ALU. And it's the little brother of my other project MyCPU.
MyNOR can be used as calculator. It is capable of doing floating-point calculations with a reasonable speed.
The calculator extension board turns MyNOR into a simple calculator that can add,
subtract, multiply and divide numbers. Together with the LCD extension board
MyNOR can be used for infinitely different stuff. MyNOR can show the time and temperature and can play
simple music. I have also written some simple games for MyNOR, which are Tic-Tac-Toe, Tetris, Minesweeper and
a car driving game. More will follow.
MyNOR is simple. Not only the hardware is simple, but also the assembly language to program it.
If you want to learn assembly language, you can do it with MyNOR. Uploading your programs to MyNOR
is also simple. Simply copy and paste your program into the terminal window
(MyNOR is operated through a RS232 terminal).
And best of all: MyNOR is open source, and all documentation you need to build your own is
here! And you can soon buy complete MyNOR kits at BudgeTronics!
Available MyNOR configurations
MyNOR with calculator extension board |
|
MyNOR with LCD, keypad and sound |
| |
|
MyNOR design goals
When I started development in October 2019, I had this goals in mind:
The CPU should be as simple as possible.
Only logic chips that are still in production should be used. Other homebuilt CPU projects are using
the 74LS181 ALU chip, which is no longer being manufactured. Also all loadable 8-bit counters are no longer available.
So my design uses only the 4-bit counter 74HC161, lots of 8-bit registers 74HC574, tri-state buffers
74HC541 and various discrete logic gates. Only the 8kB RAM and the resetable register 74HC273
could be discontinued in the near future. The RAM can be replaced with a 32kB version,
and the 74HC273 can be replaced with a 74HC574 and a pull-down resistor array.
No lookup table for the ALU. When I developed MyCPU,
I was often criticized for my ALU design because I simply used a large lookup table in three big EPROMs.
So I decided to do something completely different now: A single NOR gate should do the job. All more complex logic
functions such as exclusive-or and addition/subtraction should be implemented in software (the microcode). An 8-bit addition
requires 96 NOR gate operations, and that is why MyNOR is so slow.
Lowest possible count of transistors. When I needed a single AND gate, I took a transistor
instead of wasting 3/4 of a 74HC08.
No more than 20 integrated circuits. I missed this goal because after the design was finished,
I added a 21st chip: An EEPROM for storing user application programs. And to fix a timing problem,
I needed two OR gates, which meant I had to add a 74HC32. Although the entire PCB contains
now 22 chips, the CPU itself consists of only 18 (four 74HC574 are used for the I/O ports).
Goal reached anyway?! :-)
Only one EPROM in the system. There are two reasons for this: first, the number of transistors in the circuit
should be kept low. And second, if someone wants to recreate my design, they should only have to program (or
"burn") a single EPROM chip.
THT (through hole technology) components only. Modern SMD components should not be used because these
components are difficult to assemble for inexperienced people. In addition, the old THT components would give
MyNOR a nice vintage look.
User friendliness. The new computer should be an 8-bit system with an easy-to-learn instruction set.
The instruction set should contain all the instructions that are necessary for easy programmability. MyNOR
has now 28 instructions, including instructions for conditional jumps, subroutine calls, addition,
subtraction, and stack operations.
Except for one point I have reached all my goals. MyNOR has become an universal single board computer that can
do almost anything that an (let's say) Arduino Uno can do (not in hardware, but emulated in software).
The only downside is that MyNOR is much slower ... but it has a lot fewer transistors, which is an advantage! :-)
The History of MyNOR
The idea for MyNOR was born on October 25, 2019. I was thinking about what I could do next winter.
On the way back home from work (a 35 minute bike ride) I thought of constructing a very simple
and small CPU. When I got home I painted a first sketch of MyNOR (click to enlarge):
To test whether my idea worked, I wrote a program to simulate the circuit at the gate level.
|
|
2019-11-02 |
The first version of the MyNOR simulator is running. The circuit works!
|
2019-11-17 |
I have finished the work on the microcode. I added support for MyNOR to my cross-assembler
myca.
|
2019-11-28 |
PCB layout completed. A friend told me about JLCPCB, so I ordered the prototype board there.
|
2019-12-03 |
MyNOR says "Hello World" via the bit-banging UART in the simulator.
|
2019-12-06 |
The program upload (text file) via RS232 to the 8kB SRAM works in the simulator.
|
2019-12-08 |
The fixed-point addition works (also tested in the simulator, since the ordered PCB has still not arrived).
|
2019-12-15 |
The fixed-point multiplication and division works (I am still waiting for hardware)
|
2019-12-20 |
The PCBs have arrived (MyNOR and an EPROM simulator). I populated the EPROM simulator board and programmed the AVR.
|
2019-12-21 |
MyNOR works! But the board has still an error: I had connected "/reset" to the EPROM pin 22 instead of
"reset". I fixed it with a wire bridge. Furthermore there was an problem with a RC delay circuit for
shifting the clock. I simply removed the capacitor and hurray! MyNOR talks over the RS232 interface!
|
2020-01-01 |
Started writing the monitor program. The monitor is already able to disassemble machine code.
I also ordered a new revision of the MyNOR PCB. I added an 64kB EEPROM to the board. And I
ordered the first version of the calculator extension board with the 7-segment displays at JLCPCB.
|
2020-01-17 |
I have finished working on the monitor program. I added functions for reading and writing the EEPROM.
MyNOR can now load and start programs out of the EEPROM.
|
2020-01-20 |
The ordered PCBs have arrived. I immediately populated the PCBs. MyNOR works, but I still need to replace the RS232
plug with a socket. The calculator works now with the 7-segment-display and the keyboard matrix.
MyNOR can be clocked with up to 10 MHz !!
|
2020-02-10 |
I have ordered the revision 1.1 of the calculator board and the version 1.0 of the new LCD display board
at JLCPCB. I added support for the I2C temperature sensor and the realtime clock to the operating system.
|
2020-03-07 |
The LCD board and the revised calculator board have arrived. The boards are working fine.
Also the game "Tic Tac Toe" that I wrote in the meantime runs perfectly on the LCD.
|
2020-03-16 |
Begin of a three-weeks Corona quarantine. I started the development of a new sound generator
for the LCD extension board. The first board had only a simple buzzer which was unsatisfactory for me.
|
2020-03-29 |
Finished the developing of the new sound generator. I have ordered revision 1.1 of the LCD board at JLCPCB.
|
2020-03-31 |
I got MyNOR board v1.2 and started the population. I also started with programming the minesweeper game. |
2020-04-16 |
MyNOR board v1.3 has arrived. Version 1.2 had a wrong pinout at the RS232 socket (I had swapped RxD and TxD...)
|
2020-04-18 |
LCD extension board v1.1 has arrived. It works perfectly!
|
2020-04-25 |
I finnished the work on the new car-driving-game. To be able to play it on the LCD, you need a "fast" LCD...
|
2020-06-02 |
I wrote the MyNOR filemanager. In the meantime I am mainly busy writing the documentation.
|
2020-06-06 |
MyNOR board v1.4 has arrived. MyNOR still had timing problems. It took about a month to find the error.
|
2020-06-14 |
Also the latest version 1.4 of the MyNOR board still shows some timing problems. It drives me crazy.
It seems that there are bus contentions causing bit-flips in the registers and the RAM.
|
2020-06-18 |
Finally I found the error. I had to add another 74HC32 to separate the register reads from each other.
I ordered MyNOR version 1.5 at JLCPCB.
|
2020-06-26 |
The new PCBs MyNOR board v1.5, LCD board v1.2 and Calculator v1.2 have arrived. I populated all the boards.
MyNOR works really well, nothing to complain. I'm done with the hardware right now!
|
2020-08-08 |
I have finished programming the Tetris game.
|
|