计算机组成原理CPU设计实验报告.docx
《计算机组成原理CPU设计实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理CPU设计实验报告.docx(49页珍藏版)》请在冰豆网上搜索。
计算机组成原理CPU设计实验报告
计算机组成原理CPU设计实验报告
课程设计题目:
16位CPU设计
学院:
信息学院
班级:
电子A班
学号:
1115102015
姓名:
方茹
1
1实验方法......................................................................................................................4
2总体说明......................................................................................................................52.1指令系统:
..............................................................................................52.1.1指令格式分类(按指令字长和操作数不同):
......................................................52.1.2具体指令汇总表:
..............................................................................................62.1.3相关指令流程图:
..............................................................................................62.1.4指令数据通路的构建:
.......................................................................................82.1.5指令的分组及节拍:
.........................................................................................122.1.6指令执行状态图:
(见下页)................................................................................132.1.7具体微指令:
...................................................................................................132.2系统整体介绍.......................................................................................162.2.1系统基本模块划分............................................................................................162.2.2总体结构图:
(见下页).......................................................................................17
3CPU的控制逻辑与具体数据通道设计...........................................................................183.1取指令逻辑的设计...............................................................................................19
3.1.1指令地址的保存................................................................................................19
3.1.2指令存储器.......................................................................................................203.1.3下一条指令地址的计算.....................................................................................203.2指令译码逻辑的设计............................................................................................213.3指令执行逻辑的设计............................................................................................223.4存储器访问逻辑的设计........................................................................................233.5结果写回逻辑的设计............................................................................................243.6单周期CPU的总成..............................................................................................25
4各部分说明..................................................................................................................264.1ALU....................................................................................................................264.2数据选择器BUS_MUX........................................................................................284.3器件T1...............................................................................................................304.4标志寄存器FLAG_REG.......................................................................................314.5T2:
....................................................................................................................334.6程序计数器PC....................................................................................................334.7地址寄存器AR和指令寄存器IR:
......................................................................344.8寄存器、寄存器组和寄存器的选择.......................................................................364.9一位控制信号/WR...............................................................................................374.10节拍发生器.......................................................................................................374.11控制逻辑...........................................................................................................394.12T3......................................................................................................................424.13REG_OUT.........................................................................................................434.14存储器...............................................................................................................444.15总线选择器........................................................................................................45
2
4.16REG_TEST........................................................................................................46
5附录:
.........................................................................................................................47
附录A:
组员分工:
.................................................................................................47
附录B:
组员设计总结:
..........................................................................................47
3
1实验方法
实验要完成的工作主要包括:
指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。
这几部分的工作之间是先行后续的关系,也就是只有前一个步骤完成了下一个步骤才可以开始进行,不存在并行完成的情况。
实验主要流程如下图所示:
设计FPGA-CPU的指令集。
我们
选择了不做流水及Cache。
指令系统设计
分析并确定CPU主要功能模块,分
析每条指令的执行过程,数据的流向
和控制信号的产生,画出逻辑结构图
逻辑设计
按模块分别实现并模拟
具体实现
整体模拟仿真,检查时序关系配
合是否正确
软件模拟
下载到FPGA中进行硬件调试
硬件调试
其中指令系统和逻辑结构的设计主要参考了相关文献。
主要的方法是先确定CPU所要实现的功能,根据寄存器等的情况划分指令格式,然后根据功能写出指令,根据不同指令的特点将它们分组并确定操作码;接下来设想每条指令的执行过程,需要哪些硬件支持,最后确定整个CPU的逻辑结构图。
在各个功能模块的实现中主要使用了自底向上的设计方法。
先实现寄存器,再实现寄存器组,等等,最后将各个器件和模块之间互连,得到顶层设计图。
4
2总体说明
2.1指令系统:
计算机的指令是用户使用计算机与计算机本身运行的最小功能单位。
一台计算机支持的
全部指令就构成该机的指令系统。
从计算机本身的组成看,指令系统直接与计算机系统的性
能和硬件结构的复杂程度等密切相关,它是CPU设计的起始点和基本依据。
设计指令系统的核心问题是选定指令的格式和功能。
具体到我们的设计来说,指令的功
能应该包括简单的算术和逻辑运算,移位操作,数据传送,跳转,读写内存,另外还可能包
括一些其他功能如置条件码等。
为了指令的规整性和便于译码,我们主要采用了定长的操作码组织方案,操作码为8位。
寻址方式包括了寄存器寻址、立即数寻址、直接地址和相对寻址。
2.1.1指令格式分类(按指令字长和操作数不同):
(1)单字指令
单字节指令格式
(2)双字指令
5
2.1.2指令操作码
操作码功能表
2.1.3相关指令流程图:
1.算术逻辑运算指令2.访存指令
6
将指令中存储器将参与运算的两个操作数分将寄存器中数
地址经地址总线别放入ALU的A端和B端据经数据总线
送入MAR当中,送入MDA
并把存储器读写
使能端置为读ALU进行运算,结果存入暂将地址经地址存器Y中总线送入
MAR,并读写将存储器中数据
使能端为写送入MDR将暂存器Y中结果经总线送
回指定寄存器
将MDR中数据将MDR中数经数据总线送入据存入存储器寄存器
3.访寄存器指令4.跳转指令
取指令中立即数送入将寄存器中将立即数经
ALU的A端,将PC操作数送入符号扩展后
得值送入B端总线送入总线
ALU完成加运算,将
结果送到暂存器Y中将总线上的数送
往寄存器
将Y中数据经数据总
线送入PC
7
2.1.4指令数据通路的构建:
1.取指令数据通路的构建
取指令的微操作安排如下:
T0:
PC,BUS,MAR,PC,BUS,A,1,READ
T1:
M(MAR),MDR,BUS,IR,ALU(A+2),Y
T2:
Y,BUS,PC,IR,ID
数据通路如下:
(再配合流程图来说明工作流程,说明每一个部件的功能;以下同)
PC_INIR_IN
YPCIR
ALUOPALU
ABA_INB_INB
BUS_MUX
U
SMUX
MAR_I
NMAR
MDR_IMEM
NMDR
2.算逻指令执行周期数据通路构建
算逻指令执行周期微操作安排如下:
T0:
$R2,BUS,A
T1:
$R3,BUS,B
T2:
ALU(A,B),Y,BUS,$R1
8
数据通路如下:
IRRF
YALUOPRF_IN
BALU
U
ABA_INB_IN
SBUS_MUX
MUX
3访存指令执行周期数据通路构建
IRRF
Y
RF_IN
ALU
ABB
BUS_MUXU
SMUX
MARMDR_IMEMNMDR
9
LDRR指令执行周期的微操作安排如下:
T0:
Ad(IR),扩位,BUS,MAR,1,READ
T1:
M(MAR),MDR
T2:
MDR,BUS,$R
STRR指令执行周期的微操作安排如下:
T0:
$R,BUS,MDR
T1:
Ad(IR),扩位,BUS,MAR,1,WRITE
T2:
4.访寄存器组指令执行周期数据通路构建访寄存器指令执行周期微操作安排如下:
T0:
$R2,BUS,$R1T1:
T2:
数据通路如下:
10
IRRF
B
RF_IN
U
BUS_MUX扩位
S
MUX
5.跳转指令执行周期数据通路构建
跳转指令执行周期的微操作安排如下:
T0:
Im(IR),扩位和移位,BUS,A
T1:
PC,BUS,B
T2:
ALU(A+B),Y,BUS,PC
11
YALUOPPCIR
B
ALU
UPC_IN
扩位ABS
BUS_MUX
MUX
2.1.5指令的分组及节拍:
由于没有中断操作,本机指令的执行步骤可概括如下:
(画图描述)
读取指令:
地址寄存器<-指令地址,修改PC内容使其指向下一条将要执行的指令;
读内存,指令寄存器<-读出的内容。
分析指令:
指令译码。
执行指令:
通用寄存器之间的运算或传送,可1步完成;
读写内存,通常要两步完成。
根据指令的执行步骤不同,可以把全部指令分为A、B两组。
其中A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成,包括:
ADD,SUB,AND,CMP,XOR,TEST,OR,MVRR,DEC,INC,SHL,SHR,ADC,SBB,JR,JRC,JRNC,JR
Z,JRNZ,JRS,JRNS,CLC,STC;B组指令完成的是一次内存读写操作,在取指之后可两步完成,包括:
JMPA,LDRR,STRR,MVRD。
在编码的时候以指令操作码的最高位来区分A、B组指令,0为A组指令,1为B组指令。
在控制器方面我们选用了组合逻辑控制器方案。
使用节拍来标记每条指令的执行步骤。
12
由指令而定,在我们的系统中不同的执行步骤只有5个,,故使用3位节拍就足够了。
100
AR<-PC,
PC<-PC+1
000
读内存,
IR<-读出内容
001
B组指令控制器译码传送地址读写内存
AR<-地址101111
A组指令
011
寄存器之间的数
据运算或传送
2.1.6指令执行状态图:
(见下页)
2.1.7具体微指令:
(以下设计过程(思路)的描述解释)
<1>ADDDR,SR
T1:
MEM_ADDR?
PCWR?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
RESULT?
SR+DR
T3:
DR?
RESULTPC?
PC_NEXTGENERATEZGENERATEC
<2>SUBDR,SR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATAPC_NEXT?
PC+1
T2:
RESULT?
SR-DR
T3:
DR?
RESULTPC?
PC_NEXTGENERATEZGENERATEC
13
上图的名称和标号,解释改图,图再画清楚一些。
<3>CMPDR,SR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
RESULT?
SR-DR
T3:
PC?
PC_NEXTGENERATEZ
<4>MOVRTRDR,SR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
RESULT?
SR
T3:
DR?
RESULTPC?
PC_NEXT
14
<5>JMPADDR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
T2:
RESULT?
ADDR+PC
T3:
PC?
RESULT
6>JNCADDR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
GENERATECFLAGRESULT?
ADDR+PC
T3:
if(CFLAG==0)PC?
RESULTelsePC?
PC_NEXT
<7>JNZADDR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
GENERATEZFLAGRESULT?
ADDR+PC
T3:
if(ZFLAG==0)PC?
RESULTelsePC?
PC_NEXT
<8>CLC
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
C?
0
T3:
PC?
PC_NEXT
<9>STC
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
C?
1
T3:
PC?
PC_NEXT
<10>LDRRDR,SR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
MEM_ADDR?
SR
T3:
WE?
1MEM_DATA?
OBDR?
MEM_DATAPC?
PC_NEXT
<11>STRRDR,SR
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
T2:
MEM_ADDR?
DR
T3:
WE?
0MEM_DATA?
SROB?
MEM_DATAPC?
PC_NEXT
<12>MOVDTRDR,DATA
T1:
MEM_ADDR?
PCWE?
1MEM_DATA?
OBIR?
MEM_DATA
PC_NEXT?
PC+1
15
T2:
MEM_ADDR?
PC_NEXT
T3:
WE?
0MEM_DATA?
OBDR?
MEM_DATAPC?
PC+2
2.2系统整体介绍
2.2.1系统基本模块划分
整个系统可划分为控制器,寄存器,ALU,寄存器组,数据选择器,相关时序部件及组合逻辑部件,总线和主存等。
整个CPU系统以控制器为中心,负责指令的译码及发出各种相关控制信号。
节拍发生器控制着整个系统的时钟信号,系统的相关部件在统一的节拍控制下发挥自己的作用。
IR为指令寄存器,负责存储即将执行的下一条指令,AR为地址寄存器,存放被访问存储单元的地址。
PC为程序计数器,存放现行指令的地址,具有计数功能。
ALU负责处理相关数据运算操作。
寄存器组负责存放相关操作数和中间临时变量。
多路数据选择器在相关控制信号的作用下将相关数据输入ALU处理。
总线