第1部のcpu15.vhdの動作確認

pp.216ff.
テキスト第1部までのcpu15.vhd (pp.186-207)をそのまま動かしてみる。

ピンアサインは下のようにした(参考: 『MAX10実験キットで学ぶFPGA&コンピュータ (トライアルシリーズ)』)。今使っている評価ボードMAX10-FB (10M08SAE144C8G)にも発振器(48 MHz)は載っているが、ここではクロックとしてFGから50 Hzを入力した。
f:id:ti-nspire:20210124142123p:plain:h325 f:id:ti-nspire:20210124133320p:plain:h325

LEは535個を消費した。テキストはCyclone Vを使っていて、そのALM消費量は194個である(p.208)。ALM 1個はLEの2.65個に相当するとの由(p.138)。ALMはAdaptive Logic Modules。/アデャプティヴ/。
f:id:ti-nspire:20210124133126p:plain:w400

ここでは、fetch.vhdに直接記述した下のプログラムで1+2+ ... +10=55 を計算する。

ldh Reg0, 0    ;レジスタ0 (総和の初期値)をクリアする。
ldl Reg0, 0

ldh Reg1, 0    ;レジスタ1に1 (増分)をセットする。
ldl Reg1, 1

ldh Reg2, 0    ;レジスタ2 (足す数の初期値)をクリアする。
ldl Reg2, 0

ldh Reg3, 0    ;レジスタ3に10 (ループ回数)をセットする。
ldl Reg3, 10

add Reg2, Reg1 ;足す数をインクリメントして、
add Reg0, Reg2 ;それをここまでの総和に加算して、
st  Reg0, 64   ;ここまでの総和をOUTポートに出力して、
cmp Reg2, Reg3 ;足す数==ループ回数であるなら、
je  14         ;ループを抜けるが、
jmp 8          ;そうでなければ加算を繰り返す。

hlt
nop

したがってIO64_OUTからは下の順に出力される。
0+1=1 (0b 0000 0001)
1+2=3 (0b 0000 0011)
3+3=6 (0b 0000 0110)
6+4=10 (0b 0000 1010)
10+5=15 (0b 0000 1111)
15+6=21 (0b 0001 0101)
21+7=28 (0b 0001 1100)
28+8=36 (0b 0010 0100)
36+9=45 (0b 0010 1101)
45+10=55 (0b 0011 0111)