Main Page      
MyNOR
        Boards        
          Tools          
      Software      
    Downloads    

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.


License Information

This work (MyNOR hardware and software) is licensed under a
Creative Commons Attribution-ShareAlike 4.0 International License
.
Creative Commons License

The cross assembler "myca" is licensed under the GNU General Public License, Version 3.

website visits