CPUの創りかたのTD4をDE0-CVに実装した

RISC-VをDE0-CVに実装しようとしたけど、そもそもCPUの知識がなくて挫折した。

ので、CPUの創りかたのTD4を実装することにした。

実装したものがこちら。QuartusII 17.0.0 でアーカイブ
DE0_CV_TD4.qar - Google ドライブ

Simしてないのでバグあるかも。。。
追記ここから
 SimしたらLOAD3のデコードがバグってたので修正
 Sim環境もqarに含んだ。
 qarを展開したらsimフォルダが入っているので、ModelSimでsimフォルダに移動
 do tb_DE0_CV_TD4.do と叩くと勝手にコンパイルしてSimが走る。
 Simのときはif-generateで50MHzで動くようにしている。
追記ここまで

周波数が50MHzだと早すぎるので、PLLで5MHzに落としたあと
カウンタで524288分周して約9.5Hzにしている。
PLL使っているのでバージョンが違うとめんどくさいかも。

基本的には74シリーズをVHDL化して、CPUの創りかた275ページ「CPUの全回路図」通りに結線した。
ただ、74HC10や74HC32で作っているデコーダ部分は面倒なのでそのままTD4_Decoder.vhdで直書きした。

プログラムはTD4_ROM.vhdに直書きする。 いまはラーメンタイマーのプログラムを書いている。

    constant cdata : rom_vector :=
    ( X"B3", X"01", X"E1", X"01", X"E3", X"B6", X"01", X"E6",
      X"01", X"E8", X"B0", X"B4", X"01", X"EA", X"B8", X"FF"
    );

変換は、CPUの創りかたを見つつ、ハンドアセンブル

9.5Hzだからなのか、なんかすごく処理が早い気がする。
フラグのところ間違ってないよな……?
上で追記したバグのせいだった。