- 如果想直接打开
.xpr工程,需要vivado 2022.2;但是仍可以使用./rtl与约束文件./constrs; - 如果是使用Genesys2,约束文件可直接使用;否则需要自行修改;
- 可能需要简单配置clock wizard与ILA IP;
该CPU仅4个指令:移动寄存器、装载立即数、加减法。通过Genesys2上的开关实现指令输入,按键实现CPU执行,LED灯查看总线数据,可通过ILA查看波形。
II XX YY
- II:指令;
- XX:表示
Rx寄存器; - YY:表示
Ry寄存器;
四个指令如下:
| MV | MVI | ADD | SUB | |
|---|---|---|---|---|
| 编码 | 00 | 01 | 10 | 11 |
| 汇编指令 | MV Rx, Ry |
MVI Rx, #D |
ADD Rx, Ry |
SUB Rx, Ry |
| 功能 | Rx ← [Ry] |
Rx ← D |
Rx ← [Rx] + [Ry] |
Rx ← [Rx] - [Ry] |
#D:立即数
| 指令/时间 | T0 | T1 | T2 | T3 |
|---|---|---|---|---|
MV |
IR in |
RY out, RX in, done |
/ | / |
MVI |
IR in |
DIN out, RX in, done |
/ | / |
ADD |
IR in |
RX out, A in |
RY out, G in, Addsub=0 |
G out, RX in, done |
SUB |
IR in |
RX out, A in |
RY out, G in, Addsub=1 |
G out, RX in, done |
-
MV与MVI需要两个周期;ADD与SUB需要4个周期。 -
Addsub:ALU控制信号,Addsub=0为加法;Addsub=1为减法。 -
实际控制时序由手动按键触发,即系统框图中的
Clock;RTL代码中的时钟仅为提供给ILA使用。
-
装载立即数:
MVI R3, 0'b000_001;CPU执行过程:- 第1个cycle,SW输入:01_11_XX(指令:
MVI,RX=3,RY不关心); - 第2个cycle,SW输入:000001,即输入的6位立即数;
- 第1个cycle,SW输入:01_11_XX(指令:
-
移动寄存器:
MV R2, R3;CPU执行过程:- 第1个cycle,SW输入:00_10_11(指令:
MV,RX=2,RY不关心); - 第2个cycle,SW输入:不关心;
- 第1个cycle,SW输入:00_10_11(指令:
-
加法指令:
ADD R2, R3;CPU执行过程:- 第1个cycle,SW输入:10_10_11(指令:
ADD,RX=2,RY=3); - 第2个、第3个、第4个cycle,SW输入:不关心;
- 第1个cycle,SW输入:10_10_11(指令:
-
减法指令:
SUB R2, R3;CPU执行过程:- 第1个cycle,SW输入:11_10_11(指令:
SUB,RX=2,RY=3); - 第2个、第3个、第4个cycle,SW输入:不关心;
- 第1个cycle,SW输入:11_10_11(指令:
