SSブログ
English Version

SuperSimpleController(その25)ALLPCBのUSELESSコンテストに入賞 [OriginalCPU]

 中華系の格安プリント基板製造業者の一つであるALLPCBさんで "Useless" Design Competition を開催していたので応募してみました。ALLPCBさんでは初登録者への無料クーポン(送料も含めて基板製造が無料)の提供などのサービスがあり、一度基板製造を依頼してみてはいかがでしょうか?

 コンテストの結果ですが、拙作のオリジナル8bit CPUが「めっちゃ面白い賞」に選ばれました(^^)/

ALLPCB "Useless" Design Competition Result


 英語ですが応募内容も貼っておきます。


Original architecture 8-bit CPU board consisting of 13 DIP ICs

### Project background ###
I like to use DIP ICs to run old CPUs such as Z80. One of my design policies is to use as few chips as possible. It's completely useless, but this time I made the CPU itself using DIP ICs.

### Design policy ###
* An 8-bit CPU with a 16-bit address bus.
* Use only DIP type logic ICs and memory ICs (GAL can be used).
* Minimize the number of ICs used.
* Implement the CPU functions and the memory required for the CPU to operate on one board.

### CPU configuration ###
In order to reduce the number of ICs used, the machine language implementation method was a microprogram method using ROM. In addition, the ALU (Arithmetic and Logic Unit) function has been realized by using a large-capacity ROM(32Mbit) as a look-up table in order to realize addition, subtraction, logical operation and bit shift arithmetic processing. Two general-purpose registers (R0, R1) are implemented, and the output of these two registers is also used as the input of the ALU. Implemented a conditional jump instruction that refers to the zero flag and carry flag output from the ALU. In addition, the carry flag is also used as the input of the ALU, and the carry correspondence processing of arithmetic operations and bit shift instructions is also implemented.
Furthermore, it has an I/O space independent of the 64K bytes memory space, and by adding a connector for I/O, it is easy to connect an external interface.

### Outcome ###
* The CPU function was realized using only 13 DIP ICs and mounted on one board (11 ICs can be seen in the photo, but 2 ICs are mounted on the back of the board).
* I made an assembler for this CPU using the macro function of the macro assembler (M80, L80) for CP/M.
* By connecting a small board for serial communication to the external interface connector, I have developed a monitor program that can operate the memory and download the executable file.
* I created a 16-bit addition, subtraction, multiplication and division operation in machine language, and created a calculator program that can execute formulas in reverse Polish notation.

### Difficulties and solutions ###
* When creating microcode to implement machine language, it is difficult to create binary data directly, so I created an environment to convert microcode instructions into bit data using the macro function of the macro assembler.
* Furthermore, when implementing complex machine language such as call instructions, even microcode instructions are inefficient, so I created microcode by writing using microcode mnemonics with a higher degree of abstraction. However, I manually converted the microcode mnemonics to microcode instructions.
* To facilitate microcode debugging, I used the PIC24FJ64 to enable external clocking. By controlling the reset and clock with PIC24FJ64, it is possible to stop processing and step operation at the specified location of the microcode.



*Reference video
https://www.youtube.com/watch?v=LzoIbzHgR4k

*Reference fig

Fig. 1


Fig. 2


Fig. 3


Fig. 4


Fig. 5



[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。