PAGE
PAGE 47
计算机组成原理专题实验报告
——CPU设计
指导教师 姜欣宁
小组成员列表
成员
姓名
学院
班级
学号
教师评分
组长
冯福力
电信
计算机75班组员
王智
电信
计算机75班组员
杜建营
电信
计算机75班
组员
沈培均
电信
计算机75班组员
刘大方
电信
计算机75班完成时间:2010年4月
目录
TOC \o "1-3" \h \z \u 1 实验方法 4
2 总体说明 5
2.1指令系统: 5
2.1.1指令格式分类(按指令字长和操作数不同): 5
2.1.2具体指令汇总表: 6
2.1.3相关指令流程图: 7
2.1.4指令数据通路的构建: 8
2.1.5指令的分组及节拍: 11
2.1.6指令执行状态图:(见下页) 12
2.1.7具体微指令: 12
2.2 系统整体介绍 15
2.2.1系统基本模块划分 15
2.2.2总体结构图:(见下页) 16
3 CPU的控制逻辑与具体数据通道设计 17
3.1取指令逻辑的设计 18
3.1.1指令地址的保存 18
3.1.2指令存储器 19
3.1.3下一条指令地址的计算 19
3.2指令译码逻辑的设计 20
3.3指令执行逻辑的设计 21
3.4存储器访问逻辑的设计 22
3.5结果写回逻辑的设计 23
3.6单周期CPU的总成 24
4各部分说明 25
4.1 ALU 25
4.2数据选择器BUS_MUX 27
4.3器件T1 29
4.4标志寄存器FLAG_REG 30
4.5 T2: 31
4.6程序计数器PC 32
4.7地址寄存器AR和指令寄存器IR: 33
4.8寄存器、寄存器组和寄存器的选择 34
4.9一位控制信号/WR 36
4.10 节拍发生器 36
4.11控制逻辑 38
4.12 T3 41
4.13 REG_OUT 42
4.14存储器 43
4.15总线选择器 44
4.16 REG_TEST 44
5附录: 46
附录A:组员分工: 46
附录B:组员设计总结: 46
1 实验方法
实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。这几部分的工作之间是先行后续的关系,也就是只有前一个步骤完成了下一个步骤才可以开始进行,不存在并行完成的情况。实验主要流程如下图所示:
设计FPGA-CPU的指令集。我们选择了不做流水及Cache。
设计FPGA-CPU的指令集。我们选择了不做流水及Cache。
指令系统设计
指令系统设计
分析并确定CPU主要功能模块,分析每条指令的执行过程,数据的流向和控制信号的产生,画出逻辑结构图
分析并确定CPU主要功能模块,分析每条指令的执行过程,数据的流向和控制信号的产生,画出逻辑结构图
逻辑设计
逻辑设计
按模块分别实现并模拟
按模块分别实现并模拟
具体实现
具体实现
整体模拟仿真,检查时序关系配合是否正确
整体模拟仿真,检查时序关系配合是否正确
软件模拟
软件模拟
下载到FPGA中进行硬件调试
下载到FPGA中进行硬件调试
硬件调试
硬件调试
其中指令系统和逻辑结构的设计主要参考了相关文献。
主要的方法是先确定CPU所要实现的功能,根据寄存器等的情况划分指令格式,然后根据功能写出指令,根据不同指令的特点将它们分组并确定操作码;接下来设想每条指令的执行过程,需要哪些硬件支持,最后确定整个CPU的逻辑结构图。
在各个功能模块的实现中主要使用了自底向上的设计方法。先实现寄存器,再实现寄存器组,等等,最后将各个器件和模块之间互连,得到顶层设计图。
2 总体说明
2.1指令系统:
计算机的指令是用户使用计算机与计算机本身运行的最小功能单位。一台计算机支持的全部指令就构成该机的指令系统。从计算机本身的组成看,指令系统直接与计算机系统的性能和硬件结构的复杂程度等密切相关,它是CPU设计的起始点和基本依据。
设计指令系统的核心问题是选定指令的格式和功能。具体到我们的设计来说,指令的功能应该包括简单的算术和逻辑运算,移位操作,数据传送,跳转,读写内存,另外还可能包括一些其他功能如置条件码等。
为了指令的规整性和便于译码