東大の理学部情報科学科の名物授業CPU実験のエントリ(CPU実験で自作CPUにUNIXライクOS (xv6) を移植した話 - 豆腐の豆腐和えなど)が話題になったのを見て、kivantiumというハンドルネームは高校生の時に作ろうとした自作CPUプロジェクトの名前から来ていることを思い出しました。機械学習の勉強中ですが、気が向いた時に気が向いたことをやるのも大事だと思ってCPU製作をやってみようと思います。
そもそも自作CPUを作ろうと思ったのは
CPUの創りかた
という素晴らしい本を読んだのがきっかけです。この本ではロジックIC10個で動くCPUのTD4(「とりあえず動作するだけの4bitCPU」の略)の設計が説明されているのですが、とにかく分かりやすい。表紙がメイドさんであることからも分かるように終始ふざけた雰囲気で進んでいきますが、読み終わる頃にはいつのまにか「よし、いっちょCPUを作ってみるか」という気分になります。とにかくおすすめです。
www.amazon.co.jp
IC 10個でCPUを作るのがこの本の目的なわけですが、物心ついたときにはワンチップマイコンがあったお子様世代にはちょっと配線が厳しいところです。というわけで楽をするためにFPGAを使います。将来の拡張のためにもちょうどいいでしょう。
というわけで一人CPU実験のとりあえずの目標はFPGAでTD4をつくることとします。
部品の調達
FPGAボードは高価なものが多く入手しづらいのですが、秋月で売っている
Papilio One 500Kは値段が6680円(2015年3月28日現在)と手が届きやすい上にUSB接続するだけで書き込みができるお手軽なボードでなかなか良さそうなので一つ買ってみました。
Lチカに必要な他の部品も全て秋月で買いました。秋月サイコー!以下パーツリスト。
とりあえずLチカ
ボードの動作確認を兼ねてLチカのサンプルプログラムを動かしてみます。いつものように環境はUbuntu 14.04ですがWindowsでも動くはずです。
ソフトのインストール
基本的にはPapilio platform - Getting Startedを参照します。
sudo apt-get install libftdi-dev default-jdk
手元の環境ではlibftdi1:i386, lib32stdc++6が必要でした。
- GadgetFactory/Papilio-Loader · GitHubからPapilio-Loaderをダウンロードします。
- 解凍したフォルダで
./linux-installer.sh
を実行
- Getting Startedのページからサンプルファイルのダウンロード(リンク:http://papilio.cc/sketches/Quickstart-Papilio_One_500K-v1.5.bit
- ターミナルからpapilio-loader-guiを起動してダウンロードしたbitファイルを読み込む
ハードの準備
- (重要)Papilio One 500KのUSB ミニBポートの近くにあるジャンパーピンを動かしてUSBからの電源供給モードに切り替える
- パソコンのUSBポートとPapilio One 500KのUSB ミニBポートをケーブルでつなぐ
- ダウンロードしたサンプルファイルでは偶数番のピンがON/OFFするので、適当な偶数番のピンから抵抗・LED・GNDにつながる回路をブレッドボード上に作成する