pp.216ff.
テキスト第1部までのcpu15.vhd (pp.186-207)をそのまま動かしてみる。
ピンアサインは下のようにした(参考: 『MAX10実験キットで学ぶFPGA&コンピュータ (トライアルシリーズ)』)。今使っている評価ボードMAX10-FB (10M08SAE144C8G)にも発振器(48 MHz)は載っているが、ここではクロックとしてFGから50 Hzを入力した。
LEは535個を消費した。テキストはCyclone Vを使っていて、そのALM消費量は194個である(p.208)。ALM 1個はLEの2.65個に相当するとの由(p.138)。ALMはAdaptive Logic Modules。/アデャプティヴ/。
ここでは、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)