指令执行步骤示例 三
alu_func Cy Over Sign Zero ar_wt
1201
0
pc_src
1
二选一
二 0 选 一 1
1
1
二 选 0 一 1
B 寄 存 器 缓 A 堆 冲 REGs 器
reg_input
三选一
10 00 01
缓 冲 器
0 1 0
S A L U R
y_sel alu_out
0二 选 1一
Hale Waihona Puke ABalu_func Cy Over Sign Zero ar_wt
1202
0
pc_src
1
二选一
二 0 选 一 1
1
1
二 选 0 一 1
B 寄 存 器 缓 A 堆 冲 REGs 器
reg_input
三选一
10 00 01
缓 冲 器
0 1 0
S A L U R
y_sel alu_out
0二 选 1一
AB
0032 45FE
Y
AR
offset
sr
a_sel reg_src
1
00 01 四 10 选 11 一
00三 10选 01一
DB
A
D 存储器
r_sel
addr_sel
pc_wt
取指操作:在取指周期, 作地址读内存, 取指操作 在取指周期,以PC作地址读内存,读出指令送 ,计算下条指令地址 在取指周期 作地址读内存 读出指令送IR, 假设PC的内容为 假设 的内容为 1200,内存 ,内存1200单元的内容为 0023,IR的内容未定 单元的内容为 , 的内容未定 实现功能:pc→AB, mem[AB]→ir , , 实现功能 控制信号:addr_sel=01, gate_en=1, 控制信号 pc+1→pc mio=1, ir_wt=1, pc_wt=1
clock reset 控制信号 产生线路 CU
CZVS MAX 202 串行 接口
Flag 00
flag_funrc
npc_wt NPC
b_sel
ncp_ib
三态门
add_out
加法器
指 令 内 容
add_src
reg_wt
dr 4 0
00 01 三 选 10 一
s_sel
00 01 四 10 选 11 一
程序运行的初始状态:程序已读入内存, 条指令地址已经在 条指令地址已经在PC中 程序运行的初始状态:程序已读入内存,第1条指令地址已经在 中,
的初值为2345。 假定 R2的初值为 1234, R3的初值为 的初值为 , 的初值为 。
ADD指令的二进制代码为 00000000 0011 0010,已在内存中 指令的二进制代码为 JRNC指令的二进制代码为 01000101 1111 1110 ,已在内存中 指令的二进制代码为 STRR指令的二进制代码为 10000011 0010 0011 ,已在内存中 指令的二进制代码为 3 条指令都要在取指周期执行读取指令的操作, 条指令都要在取指周期执行读取指令的操作, 取指周期执行读取指令的操作 ADD 指令要在 执行周期完成数据运算与写回功能; 执行周期完成数据运算与写回功能 完成数据运算与写回功能; 结束 JRNC指令要在 执行周期完成指令地址计算并保存功能; 结束 完成指令地址计算并保存功能; 指令要在 执行周期完成指令地址计算并保存功能 STRR指令要在 执行周期完成数据地址计算并保存功能, 完成数据地址计算并保存功能, 指令要在 执行周期完成数据地址计算并保存功能 还要在 存储周期完成存储器的写入功能。 存储周期完成存储器的写入功能。 结束 完成存储器的写入功能
ncp_ib
三态门
add_out
加法器
指 令 内 容
add_src
reg_wt
dr 4 0
00 01 三 选 10 一
s_sel
00 01 四 10 选 11 一
alu_func Cy Over Sign Zero ar_wt
1203
0
pc_src
1
二选一
二 0 选 一 1
1
1
二 选 0 一 1
B 寄 存 器 缓 A 堆 冲 REGs 器
1200
0
pc_src
1
二选一
二 0 选 一 1
1
B 寄 存 器 缓 A 堆 冲 REGs 器
reg_input
三选一
10 00 01
缓 冲 器
0 1 0
S A L U R
y_sel alu_out
0二 选 1一
AB
0023 45FE
Y
AR
offset
sr
a_sel reg_src
1
00 01 四 10 选 11 一
取指周期占用控制器和存储器, 取指周期占用控制器和存储器,实现 占用控制器和存储器 读取指令与计算下条相邻指令地址, 读取指令与计算下条相邻指令地址, 执行周期占用运算器完成数据或数据 执行周期占用运算器完成数据或数据 内存地址计算,用控制器计算指令地址, 内存地址计算,用控制器计算指令地址, 存储周期占用运算器、 存储周期占用运算器、控制器和存储 占用运算器 器完成数据读写或指令地址的读写。 器完成数据读写或指令地址的读写。
1200 1200 1200 1200 1200 1200
PC
IR 三态门 io_port
ir_rt
y_ib gate_en gate_dir
双向 三态门
IB
ADD
R3, R 2 ,
动画演示
REGs(3) + REGs(2) → REG(3) 假设R2的内容为 的内容为1234 假设 的内容为 R3的内容为 的内容为2345 的内容为
指令格式
8位 位 4位 位 4位 位
操
作
码
目的寄存器 源寄存器 I/O 端 口 地 址 相对转移指令的偏移量
立即数 / 直接地址 / 变址偏移量 指令执行步骤
取指 周期 000 复位状态 100 执行 周期 001 存储 周期 011
所有指令都经过取指和执行周期, 所有指令都经过取指和执行周期, 取指 周期 仅有读写内存操作的7条指令要用到存储周期 条指令要用到存储 仅有读写内存操作的 条指令要用到存储周期
00000000 0011 0010
2 1234 2345 3
+
0 0 3579
控制信号: 控制信号: b_sel 选00 a_sel 选00 s_sel 选00 r_sel 选00 alu_func 选000 reg_src 选00 reg_wt 选1 flag_func选 001 选
在执行周期, 在执行周期,完成在取指周期读出来的加法指令的具体运算过程
4、CPU设计的 设计的VHDL语言程序 设计的 语言程序
1、按照指令系统的功能要求,设计计算机各部件的组成及其连接关系, 、按照指令系统的功能要求,设计计算机各部件的组成及其连接关系 2、划分指令执行步骤,设计各步骤完成的功能,分配功能到各个部件 、划分指令执行步骤,设计各步骤完成的功能,分配功能到各个部件, 3、确定要为每个执行步骤中各个部件提供哪些控制信号,设计这些控 、确定要为每个执行步骤中各个部件提供哪些控制信号, 制信号的当前值。 制信号的当前值。 完成,都必经取指 执行周期 仅读写内存用到存储周期。 取指和 周期, 存储周期 指令用 2 – 3 步完成,都必经取指和执行周期,仅读写内存用到存储周期。
reg_input
三选一
10 00 01
缓 冲 器
0 1 0
S A L U R
y_sel alu_out
0二 选 1一
AB
0032 8323 8323
Y
AR
offset
sr
a_sel reg_src
1
00 01 四 10 选 11 一
00三 10选 01一
DB
A
D 存储器
r_sel
addr_sel
pc_wt
1201 1201 1201 1201 1201 1201
0023 0023
PC
IR
y_ib sr_ib
三态门 io_port
三态门
gate_en gate_dir
双向 三态门
ir_rt
IB
JRNC 1200
clock reset 控制信号 产生线路 CU
01000101 11111110
CZVS MAX 202 串行 接口
0023 45FE 45FE
Y
AR
offset
sr
a_sel reg_src
1
00 01 四 10 选 11 一
00三 10选 01一
DB
A
D 存储器
r_sel
addr_sel
pc_wt
取指操作:在取指周期, 作地址读内存, 取指操作 在取指周期,以PC作地址读内存,读出指令送 ,计算下条指令地址 在取指周期 作地址读内存 读出指令送IR, 此时PC的内容为 的原有内容0023 此时 的内容为 1201,内存 ,内存1201单元的内容为 45FE,IR的原有内容 单元的内容为 , 的原有内容 实现功能:pc→AB, mem[AB]→ir , , 实现功能 控制信号:addr_sel=01, gate_en=1, 控制信号 pc+1→pc mio=1, ir_wt=1, pc_wt=1
取指操作:在取指周期, 作地址读内存, 取指操作 在取指周期,以PC作地址读内存,读出指令送 ,计算下条指令地址 在取指周期 作地址读内存 读出指令送IR, 此时PC的内容为 的原内容45FE,假设内存 此时 的内容为 1202,IR的原内容 , 的原内容 ,假设内存1203单元的内容为 8323 单元的内容为 实现功能:pc→AB, mem[AB]→ir , , 实现功能 控制信号:addr_sel=01, gate_en=1, 控制信号 pc+1→pc mio=1, ir_wt=1, pc_wt=1