HYPERCONCERTO株式会社のチーフエンジニア雑記Blog

hyperconcerto株式会社のチーフエンジニアが日々気づいたことを書いています

CPUをどうやって作ろうか?

どのような手法でCPUを自作したらいいのでしょうか?
ご存じのとおりCPUは2進数で計算処理をする装置で、さらにその2進数は電圧の低いと高いで表現され、その電圧はトランジスタの組み合わせで表現できます。
計算はトランジスタを組み合わせて作られたANDやOR、NOTなど論理の組み合わせで
表現でき、ANDとかを集積回路に集積したICが汎用ロジックICとして販売されていました。
販売されていましたというのも、今時単品のロジックICをたくさん使って希望の回路を実現するよりは、集積率の高い集積岐路に押し込んでしまった方が安くて安価に作ることができるのです。
大昔は実際にロジックICを大量に使ってコンピュータが作られていたのですが、集積回路の集積率が上がったため今ではCore i7などを見たらわかるように一つのチップで構成されています。

この前ふりで汎用ロジックICで、CPUを作りそうな雰囲気を出していましたがそんなつもりは全くなく、お手軽ではんだ付けもいらないFPGAで作ります。
(表示装置自作のためはんだ付けはするかもしれない…)

FPGAって?
組み込みハードウェアのエンジニアではないのでまったく詳しくないのですが、FPGAは好き放題に内部の論理素子を定義できる物だそうです。
もう少し正確に書くと空の論理素子が大量に集積されており、FPGAのスペックの範囲で好きに配線を書き換える事ができるものです。
もちろん専用設計の集積回路と違って速度は遅い上に集積率も良くないです。
ネットワーク機器に搭載されている事が多いので、ITエンジニアでご存知の方もいらっしゃると思います。
というわけで、このFPGAの中にCPUとして動作する論理素子を定義してあげれば、CPUとして動作するはずです。

今回ターゲットとなるFPGA評価ボードは「Nexys 4 DDR」で、このボードにはXilinx社のArtix-7というFPGAが搭載されています。
似たようなボードではもっとお安くて入手しやすいBASYS 3などがあります。

 

実装するCPUですが、高度な物は実装できそうにありませんので「CPUの創りかた」に載っているTD4のバイナリ互換CPUを実装したいと思います。

 

備考
Nexys 4 DDRDigi-Keyで購入しました。
BASYS 3もDigi-Key経由で購入できますが、秋月電子様でも販売しています。
Nexys 4 はストロベリーリナックス様でも購入できます。
Digi-Keyだと海外通販となり色々面倒ですので、国内調達ですぐ欲しいという場合はBASYS 3かNexys 4が良いでしょう。
Nexys 4 DDRオンボードで128MBのメモリが搭載されています。