当前位置:文档之家› 计算机设计与实践CPU设计报告(内含详细说明及各模块源码)

计算机设计与实践CPU设计报告(内含详细说明及各模块源码)

8
Sbb Ri,Rj
10010
Reg(Ad1(IR))-Reg(Ad2(IR))-Reg(cy)->Reg(Ad1(IR))
9
And Ri,X
11000
Reg(Ad1(IR)) and Reg(Ad(IR))->Reg(Ad1(IR))
10
And Ri,Rj
10011
Reg(Ad1(IR)) and Reg(Ad2(IR))->Reg(Ad1(IR))
Reg(R0)//1->Reg(cy)
15
Jmp add
00000
Reg(R7)//Ad(IR)->PC
16
Jz sign
00001
Zero(Reg(Ad1(IR)))·Reg(R7)//Ad(IR)+NZero(Reg(Ad1(IR)))·PC->PC
17
Jc sign
00010
C=1:PC+1+sign->PC
5 访存控制模块
5.1结构框图:
pc_r ir_out
pc_in nMREQ
mem_signal nRD
mem_rw nWR
addr_in data_out
nBHE
data_in nBLE
DBUS
ABUS
5.2功能描述:当取址模块发出取址请求时,根据PC取出指令送给取址模块;根据存储管理模块给的读写请求对存储器进行读写操作。
计算机设计与实践
CPU设计报告
学号:1110310506
姓名:刘秋如
一、指令格式设计
■指令是由操作码和地址码两部分组成的.
■指令系统中指定所有的指令都是二地址指令.
■通用寄存器的数量为8,需3位地址与之对应
■访存的形式地址为8位
■指令的高5位表示操作码
因此,设计如下两种指令格式,分别对应寄存器-寄存器型指令和其他指令。
reg_in : in STD_LOGIC_VECTOR (7 downto 0);
addr_in : in STD_LOGIC_VECTOR (15 downto 0);
signaltoctrl : out STD_LOGIC;
w_r : out STD_LOGIC;
data_in : in STD_LOGIC_VECTOR (15 downto 0);
5
Adc Ri,X
10110
Reg(Ad1(IR))+Reg(Ad(IR))+Reg(cy)->Reg(Ad1(IR))
6
Adc Ri,Rj
10001
Reg(Ad1(IR))+Reg(Ad2(IR))+Reg(cy)->Reg(Ad1(IR))
7
Sbb Ri,X
10111
Reg(Ad1(IR))-Reg(Ad(IR))-Reg(cy)->Reg(Ad1(IR))
访存地址
data_out
8
Out
存储管理模块/回写模块
回写数据的输出
4.4接口说明:
entity cpu_memory is
Port ( cs : in STD_LOGIC;
clk : in STD_LOGIC;
reset : in STD_LOGIC;
c0 : in STD_LOGIC;
c1 : in STD_LOGIC;
t4 : out STD_LOGIC);
end cpu_clock;
2 取址模块
2.1结构框图:
cs
reset
pc_updata
clk pc_out
pc_new
ir_new ir_out
pc_toctrl
2.2功能描述:取指模块主要负责取指操作,当复位信号为1时,pc置零;若pc更新标志(pc_updata)为1,则更新当前的pc值;在第一个节拍,将当前pc给到访存控制模块,在将当前的指令从主存读出送到取指模块;同时将取得的指令送往运算模块、回写模块,pc送往回写模块。之后PC+1;
reg_out : out STD_LOGIC_VECTOR (7 downto 0);
pc_out : out STD_LOGIC_VECTOR (15 downto 0);
addr_out : out STD_LOGIC_VECTOR (15 downto 0));
end cpu_alu;
4存储管理模块
cs
1
In
时钟管理模块/存储管理模块
进行节拍控制
reset
1
In
进行复位
c0
1
In
运算模块/存储管理模块
(c0=1、c1=1)写请求输入
c1
1
In
运算模块/存储管理模块
(c0=1、c1=0)读请求输入
reg_in
8
In
运算模块/存储管理模块
来自运算模块数据的输入
addr_in
16
In
运算模块/存储管理模块
reset : in STD_LOGIC;
pc_update : in STD_LOGIC;
clk : in STD_LOGIC;
r : out STD_LOGIC;
pc_out : out STD_LOGIC_VECTOR (15 downto 0);
ir_out : out STD_LOGIC_VECTOR (15 downto 0);
4.1结构框图:
cs w_r
clk addr_out
reset data_toctrl
c0 signaltoctrl
c1 data_out
reg_in
addr_in
data_in
4.2功能描述:
此模块主要完成从存储管理模块进行不同指令的存数与取数的请求。
4.3数据流关系:
信号名
位数
方向
来源/去向
意义
1 时钟管理模块
1.1结构框图:
clk t1
t2
rest t3
t4
1.2功能描述:时钟模块为一节拍发生器,以输入时钟信号作为触发,四个节拍循环往复,当“rest”为1时节拍复位。
1.3数据流关系:
信号名
位数
方向
来源/去向
意义
clk
1
In
/时钟管理模块
时钟信号输入
rst
1
In
/时钟管理模块
进行复位
t1~t4
addr_out : out STD_LOGIC_VECTOR (15 downto 0);
data_toctrl : out STD_LOGIC_VECTOR (15 downto 0);
data_out : out STD_LOGIC_VECTOR (7 downto 0));
end cpu_memory;
pc_new : in STD_LOGIC_VECTOR (15 downto 0);
ir_new : in STD_LOGIC_VECTOR (15 downto 0);
pc_toctrl : out STD_LOGIC_VECTOR (15 downto 0));
end cpu_getir;
3 运算模块
取指模块/运算模块、回写模块
送IR
ir_new
16
In
访存控制模块/取指模块
接收当前指令
r
1
Out
取指模块/访存控制模块
设置取指阶段读信号有效
pc_toctl
16
Out
取指模块/访存控制模块
向访存控制模块送PC
2.4接口说明:
entity cpu_getir is
Port ( cs : in STD_LOGIC;
2.3数据流关系:
信号名
位数
方向
来源/去向
意义
cs
1
In
时钟管理模块/取指模块
进行节拍控制
reset
1
In
进行复位
pc_updata
1
In
回写模块/取指模块
回写标志位
pc_new
16
In
回写模块/取指模块
得到回写的PC
clk
1
In
时钟
pc_out
16
Out
取指模块/回写模块
送PC
ir_out
16
Out
15 11 10 8 7 2 0
op
AD1
AD2
15 11 10 8 7 0
op
AD1
AD2
二、微操作的定义
注:Ri代表3位该寄存器号的二进制表示,X,sign为8位立即数,add为8为地址
序号
伪指令
二进制
微操作
1
Mov Ri,X
10101
X->Reg(Ad1(IR))
2
Mov Ri,[add]
11010
Reg(Ri)//Ad1(IR)->MAR,1->Rj,M(MAR)->MDR,MDR->Reg(Ad(IR))
3
Mov[add],Ri
11011
Reg(Ri)//Ad1(IR)->MAR,1->w,Reg(Ad1(IR))->MDR,MDR->M(MAR)
4
Mov Ri,Rj
10000
Reg(Ad2(IR))->Reg(Ad1(IR))
(一)整体框图
T0 T1 T2 T3
Pcnew
Pcnew reg_in
Raddr Pcupdata
Pcupdata Reg_out
相关主题