演算がNANDと左シフトのみが可能な、6ビットCPUを考えてみた。ここのところ、PICやLPCなどの組込みマイコンと、MZ-80Kの話題ばかり続いたが、このブログは本来、副題にもあるとおり「IC・トランジスタで出来たコンピューターを設計・製作する」ためのもので、久々にその初心の話。NANDの組み合わせだけですべての論理演算が可能であるのはよく知られていることであり、初期のコンピューターの中には、このロジックで作成されていたものもあったらしい。いうことは、CPUで使える演算子としてNANDだけを用意しておけば良いはずで、あと、上位ビットと下位ビットとの間での情報のやりとりとして、シフト演算(左シフト)があれば、すべての演算が行える。加えて、条件分岐できれば、CPUとしての体裁が整うはずである。この、必要最小限の機能を持ったCPUを如何にシンプルな構造で構築するかというのを、この1-2週間考えていた。[CPU]2012年12月11日ほぼ、完成。SKIPなど、いくつかの命令が予想通り動くことを確認。[CPU]2012年12月4日RISCアーキテクチャを用いたCPUに変更する事になりそうだ。新しいCPUの仕様に従って、回路をこつこつと設計していたのだが、7割ほど出来上がったところで問題が発生した。今の設計では、小規模のCPLD(マクロセル64以下)には収まりそうもなく、比較的規模の大きいCPLDか、FPGAの規模になってしまいそうである。なると、まず最初のCPUをCPLDの中に納めるという短期目標が難しくなり、トランジスターで組むという最終目標はほとんど達成できそうもない。今のまま進めても、CPLDレベルや汎用ロジックのレベルでは何とかなるかも知れないが、最初の設計の段階で手を打っておかないと、後で一からやり直しということになりかねないように思う。CPUをなるだけ簡単にするという事で真っ先に思い浮かぶのはRISCアーキテクチャで、4ビットのCPUもこれで出来ないかと、少し考えてみた。[CPU]2012年11月22日CPLDで回路を組んでいる途中で気が付いたことに対応するため、命令の順を若干変更した。ソースをbit3-5に固定、デスティネーションをbit0-2に固定するため、ロード命令のsssとdddを入れ替えたこと。インクリメント・デクリメントとリテラル値のSレジスタへの代入を余った領域に割り当て直したこと。これらの変更で、回路が若干簡略化される。CPUの仕様が、ほぼ固まったと思う。[CPU]2009年10月7日CPUの規格を、変更。[CPU]2009年9月18日ジャンプ・コール・リターンの3つの命令が実行できるようになった。バックアップの意味もかねて、記事を上げる。現在設計中のコンピューターの特徴は、次のとおり。