1 testbench 文件 tb_rc.v ,第51行为程序代码文件
2 顶层文件 rc.v
3 编译文件 compile.v 里面第一行的INPUTFILE 为需要编译的源文件,OUTPUTFILE为编译后的文件
因为不会用c语言,所以用verilog写了这个编译代码,modelsim 里运行
4 说明文件 myrisc_fa.txt
这是我没事干,练手时随便写的一个cpu的代码,上传上来给大家看热闹
指令格式 代码
1 NOP 0000 0000 0000 0000
2 GOTO XXX 0001 NNNN NNNN NNNN XXX为16进制地址(0 -- 0XFFF) GOTO V0-V255
3 JUMP C0 XX 0010 00MN NNNN NNNN MXX(-FF -- +FF)
4 JUMP C1 XX 0010 01MN NNNN NNNN MXX(-FF -- +FF)
5 JUMP Z0 XX 0010 11MN NNNN NNNN MXX(-FF -- +FF) 全0跳转
6 JUMP Z1 XX 0010 10MN NNNN NNNN MXX(-FF -- +FF)
7 IRQ XX 0011 0000 XXXX XXXX XX(0 -- FF)
8 INPUTA XXX 0100 NNNN NNNN NNNN XXX为16进制地址(0 -- 0XFFF)
9 INPUTB XXX 0101 NNNN NNNN NNNN XXX为16进制地址(0 -- 0XFFF)
10 OUTPUTA XXX 0110 NNNN NNNN NNNN XXX为16进制地址(0 -- 0XFFF)
11 OUTPUTB XXX 0111 NNNN NNNN NNNN XXX为16进制地址(0 -- 0XFFF)
12 SETA XX 1000 0000 NNNN NNNN XX(0 -- FF) 比如SETA 23 相当于A=0x23 而不是A=23
13 SETB XX 1000 1000 NNNN NNNN XX(0 -- FF)
14 PORTI 1001 0000 0000 0000
15 PORTO 1001 1000 0000 0000
16 OUTPC 1010 0000 0000 0000
17 INPC 1011 0000 0000 0000
18 ADD 1100 0000 0000 0000
19 SUB 1100 0001 0000 0000
20 AND 1100 0010 0000 0000
21 OR 1100 0011 0000 0000
22 XOR 1100 0100 0000 0000
23 NOT 1100 0101 0000 0000
24 SHR 1100 0110 0000 0000
25 DIVE2 1100 0111 0000 0000
26 RR 1100 1000 0000 0000
27 RRC 1100 1001 0000 0000
28 SETC 1100 1010 0000 0000
29 CLEARC 1100 1011 0000 0000
30 ADC 1100 1100 0000 0000
31 SBC 1100 1101 0000 0000
32 LR 1100 1110 0000 0000
33 LRC 1100 1111 0000 0000
34 RET 1101 0000 0000 0000
35 UARTI 1110 0000 0000 0000
36 UARTO 1110 1000 0000 0000
37 GETSTATE 1111 0000 0000 0000