ck.v | 8bitのエセカウンタ |
cu.v | 制御回路 |
eu.v | ALU |
io.v | OUT命令用 |
minicpu.v | top module |
mu.v | メモリ |
mul.mif | メモリ内容(256Byte) |
ram_8.v | メモリの下請け |
ru.v | レジスタ |
minicpuは以上9ファイルから構成されています。top moduleから入力する信号はclkとres信号です。
それぞれクロック信号とリセット信号に対応します。
評価ボードに搭載されているクロック信号は33Mhzです。(L6ピン)
それをck.vで8分周してminicpuに与えています。
|
|
|
|
res信号はボード内の赤いディップスイッチ1番(Y10ピン)に割り付けてあります。
スイッチをclose側にする事によって信号はlowレベルに出来ます。
minicpuの仕様として、最初はlowレベルにしておかなければなりません。
ダウンロードが終了し、動作し始めた状態でopen側にすると動きだします。
ロジアナのプローブはJ11ヘッダピンに写真のように
取り付けてください。上8つは実は未使用なので繋がなくてもOKです。
|
|
サンプルプログラムの内容は掛け算プログラムになっています。
[0a]h*[0a]h を行い、結果として[64]h がアキュームレータに格納されます。
ロジアナの波形に[64]hが表示されれば成功です。
プログラムの内容を以下に示します。
|
|
00:
|
+00:81 00
|
LD #00
|
Acc <- 00
|
|
+02:01 82
|
ST (82)
|
Acc -> MEM[82]
|
|
+04:81 08
|
LD #08
|
Acc <- 08
|
|
+06:D1 83
|
ST (83)
|
Acc -> MEM[83]
|
|
|
|
|
II:
|
+08:91 81
|
LD (81)
|
Acc <- MEM[81]
|
|
+0A:87 01
|
TST #01
|
Acc & 01 (Change flag Z only)
|
|
+0C:5E
|
CLC
|
CF <- 0 Carry Flag Clear
|
|
|
|
|
|
+0D:91 82
|
LD (82)
|
Acc <- MEM[82]
|
|
+0F:C3 02
|
JZ +02 (LL)
|
Jump if 0
|
|
+11:98 80
|
ADD (80)
|
Acc <- ACC + MEM[80]
|
LL:
|
+13:7A
|
RRC
|
Rotate Right with Carry
|
|
+14:D1 82
|
ST (82)
|
Acc -> MEM[82]
|
|
|
|
|
|
+16:91 81
|
LD (81)
|
Acc <- MEM[81]
|
|
+18:7A
|
RRC
|
Rotate Right with Carry
|
|
+19:D1 81
|
ST (81)
|
Acc -> MEM[81]
|
|
|
|
|
|
+1B:91 83
|
LD (83)
|
Acc <- MEM[83]
|
|
+1D:71
|
DEC
|
Acc <- Acc -1
|
|
+1E:D1 83
|
ST (83)
|
Acc -> MEM[83]
|
|
|
|
|
|
+20:C3 02
|
JZ +02 (SS)
|
Jump if 0
|
|
+22:C8 08
|
JMP #02 (II)
|
Jump II
|
SS:
|
+24:91 82
|
LD (82)
|
Acc <- MEM[82]
|
|
+26:0E
|
OUT
|
Out Acc
|
|
+27:91 81
|
LD (81)
|
Acc <- MEM[81]
|
|
+29:0E
|
OUT
|
Out Acc
|
END:
|
+2A:0F
|
HLT
|
|
|
|
|
|
|
|
|
|
80:
|
+00:0A
|
(80)
|
被乗数
|
|
+01:0A
|
(81)
|
乗数
|
|
+02:00
|
(82)
|
答え
|
|
+03:00
|
(83)
|
ループ回数
|
|