動かしてわかるCPUの作り方 第7、8講

第7講 VHDL を用いてCPU を設計する

パタヘネに比べて、この設計に至る過程がかなり省略されている。そういうコンセプトではあるのだが、一読するだけではどこまで理解が得られるのだろうか。逆に、ある程度理解しているところなので、それほど難しい点はない。

VHDLの実装だが、ひたすら写経して、それが終わった時点でかなりの満足感を味わえた。GHDLのコンパイルがものすごく早いので、そのストレスはなかった。また、エラーメッセージも比較的的確なので、修正もサクサク進んだ。

書籍通りに進めると、CPUのテストベンチも例が提示されている。これをつかって、引き続きGHDLでシミュレーション&GTKWaveで波形を表示した。

あれ、なんかプログラムカウンタが早い段階で停止している。何か間違っていることは分かったが、どうやってデバッグすれば良いのか分からず、途方に暮れた。以下は、私がたどったデバッグ手順。PCからすると、JE命令で意図せずPCが上書きされているらしい。JE命令は比較結果を保持するCMP_FLAGで判断しているので、これを表示してみる。しばらく有効にならないはずなのに、有効になっている。ここで、ALUを実装しているexec.vhdの該当する命令の記述を確認するも、特におかしなところはない。となると、その手前のCMP命令が怪しいのかも。ALUに入力されるREG_AとREG_Bの波形を見ると、たしかに同値になっている。CMP命令の実装は正しいようだが、そもそもREG_AとREG_Bが同値になること自体が意図していない。cpu15_btのレジスタまわりの接続を確認していると、REG_Bを指定する第2オペランドが、第1オペランドと同じになっている!というわけで、ここを修正して、再度シミュレーションを動かしてみる。外部メモリに相当するIO65_OUTを波形表示してみると、期待通りの値になり、さらにPCも停止している。というわけで、うまく行った模様。

第8講 FPGA評価ボード上でCPU を動作させる

単なる読み物とした。なぜなら、実機を持っていないので、あまり検討しても楽しくない。7セグ表示の仕組みを作っても、波形しか見られないので、何が起きているのか全然分からない。 

動かしてわかる CPUの作り方10講

動かしてわかる CPUの作り方10講

  • 作者:井澤 裕司
  • 発売日: 2019/08/21
  • メディア: 単行本(ソフトカバー)