组成原理设计.docx
- 文档编号:8176521
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:318.19KB
组成原理设计.docx
《组成原理设计.docx》由会员分享,可在线阅读,更多相关《组成原理设计.docx(18页珍藏版)》请在冰豆网上搜索。
组成原理设计
一、设计题目
基于Logisim软件仿真平台的5段流水CPU设计实现
二、设计内容
设计模型机系统的总体结构、指令系统和时序信号。
在对该模型机系统中的部件功能利用EDA软件的仿真功能进行仿真分析和功能验证的基础上,将部分电路下载到FPGA,并与适当的外围器件相配合,实现模型机的整机系统。
要求所设计的整机系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED适时显示信息。
三、设计要求
1)支持28条基本指令,具体见表1.1;
2)支持5段流水机制,可处理数据冒险,结构冒险,分支冒险;
3)能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。
4)能运行教师提供的标准测试程序,并统计执行时间。
四、设计流程
1)根据课程设计指导书的要求,制定出设计方案;
2)画出自己所设计计算机系统的原理框图,分析所需要的控制信号以及这些控制信号的有效形式;
3)画出各指令的指令周期流程图和所需要的控制信号;
4)设计出实现指令功能的控制器;
5)调试、数据分析、验收检查;
6)课程设计报告和总结。
五、成绩评定
成绩评定根据考勤、课程设计的过程、课程设计的效果、课程设计报告质量等进行综合评定;其中设计过程和结果占70%,课程设计报告占30%;课程设计的成绩评定等级为不及格、及格、中、良好、优秀五级;对基本功能进行扩展或设计具有非常鲜明的特征和一定程度的创新,可根据实际情况加分。
六、设计报告要求
课程设计报告主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
要求在适当位置配合相应的实验原理图、数据通路图、实验接线图等图表进行说明。
总结部分主要写设计工作简介以及设计体会。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
课程设计报告采用《计算机组织与结构》专用设计报告模板,A4纸双面打印。
七、时间安排
课程设计的总体时间为2周,具体安排如下:
1)第1天:
到实验室布置任务和集中讲解。
2)第1~3天:
学生查阅资料,开始方案设计。
3)第4天:
中期进度检查,单周期CPU验收检查。
4)第6天:
中期进度检查,理想流水线多周期CPU验收检查。
5)第10天:
最终结果验收。
6)
八、主要参考文献
[1]DAVIDA.PATTERSON(美).计算机组成与设计硬件/软件接口(原书第4版).北京:
机械工业出版社.
[2]DavidMoneyHarris(美).数字设计和计算机体系结构(第二版).机械工业出版社
[3]秦磊华,吴非,莫正坤.计算机组成原理.北京:
清华大学出版社,2011年.
[4]袁春风编著.计算机组成与系统结构.北京:
清华大学出版社,2011年.
[5]张晨曦,王志英.计算机系统结构.高等教育出版社,2008年.
1课程设计概述
课设目的
计算机组成原理是计算机专业的核心专业基础课。
课程设计是学完该课程并进行了多个单元实验后,综合所用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有自己指令系统的简单计算机系统。
课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行设计及实现,进一步提高分析和解决问题的能力。
设计任务
计算机系统设计的总体目标是设计模型机系统的总体结构、指令系统和时序信号。
所设计的主机系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED适时显示信息。
课程设计的主要任务是设计支持5段流水线的简单计算机系统,并调试通过。
具体设计任务如下:
(1)支持28条基本指令,具体见表1.1。
(2)支持5段流水机制,可处理数据冒险,结构冒险,分支冒险。
(3)能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。
(4)能运行教师提供的标准测试程序,并自动统计执行时间。
(5)能自动统计各种冒险冲突次数,动态预测流水线能自动统计预测成功次数。
设计要求
根据理论课程所学的至少,设计出简单计算机系统的总体方案,结合各单元实验积累和课堂上所学知识,选择适当芯片,设计简单的计算机系统,具体要求如下:
(1)根据课设指导书的要求,制定设计方案。
(2)画出自己所设计计算机系统的原理图,分析所需要的控制信号以及这些控制的有效形式。
(3)画出各指令的指令周期流程图和所需要的控制信号。
(4)设计出实现指令功能的微程序控制器或硬布线控制器。
(5)测试、数据分析、验收检查。
(6)课程设计报告和总结。
指
令
OP
MemtoReg
MemWrite
ALU
Ctl
ALU
Src
Reg
Dst
Reg
Write
Disp
Sign
Branch
Add
0
Add
1
1
ADDU
0
Add
1
1
AND
0
And
1
1
SUB
0
sub
1
1
OR
0
or
1
1
NOR
0
nor
1
1
SLT
0
cmp
1
1
SLTU
0
cmp
1
1
SLL
0
sll
1
1
SRA
0
sra
1
1
SRL
0
srl
1
1
JR
0
1
ADDI
1
add
1
1
ADDIU
2
add
1
1
ANDI
3
and
1
1
ORI
4
or
1
1
LW
5
1
add
1
1
SW
6
1
add
1
BEQ
7
1
BNE
8
1
SLTI
9
cmp
1
1
J
10
1
JAL
11
1
表1.1指令格式
2实验原理与环境
实验原理
本次课程设计,需要使用Logisim来创建一个32位5段流水CPU,该CPU是在32位单周期CPU的基础上改进而成的。
通过加入流水线寄存器、流水冲突检测器和流水冲突处理机制,实现5段流水CPU,能支持28条基本指令,能运行自己所设计的测试程序,能运行教师提供的标准测试程序,可处理数据冒险、结构冒险和分支冒险。
实验环境
本次课程设计是基于Logisim软件仿真平台的5段流水CPU设计实现;每日的工作日志通过金山快盘协作进行编写,统一汇总;任务分配以及问题讨论采用Tower在线平台进行交流讨论。
具体测试环境见表2.1。
表2.1开发平台软硬件配置
配置
说明
CPU
IntelCorei5
Memory
4GB
OS
Windows8.1
调试软件
Logisim软件仿真平台
工作日志
百会格格
任务讨论
Tower平台交流讨论
测试软件
Mars
3总体方案设计
构建单周期CPU
3.1.1总体设计
本次课程设计采用定长指令每条指令的长度为32位,总共有3种类型,如表3.1所示。
表3.1指令格式
R型
op
rs
rt
rd
Funct
Funct
位数
6
5
5
5
5
6
I型
op
rs
rt
立即数
位数
6
5
5
16
J型
op
跳转地址
位数
6
26
本次我们采用的方案是硬布线的方法,在分别构建PC、指令存储器IM、寄存器堆RF、运算器ALU、数据存储器DM等5个基本的功能部件后,按指令功能构建好数据通路,以及相关的控制信号,选取适当的逻辑器件构建控制器,地址转移逻辑部件等,逐条调试指令,修改增加线路,直到所有指令设计完成。
总体结构示意图如图3.1所示。
图3.1单周期CPU示意图
3.1.2主要功能部件
1.程序计数器PC
在本次课程设计中,我将程序计数器PC和地址转移逻辑NPC设计封装在一起,即与地址转移有关的操作均在此完成,分别有PC+4、jump跳转、条件跳转
等。
当跳转指令jump来临时,PC输出的是跳转的地址;当条件跳转成立时,PC输出的是条件跳转的地址;否则,PC输出的是普通的+4地址。
2.指令存储器IM
本次课程设计,采用指令与数据分离的存储方法,即指令存储在ROM中,数据存储在RAM中,指令的存取与数据的存取不存在相关性。
当PC给出地址时,就从ROM中取出相应的指令,送到译码器中进行译码。
3.寄存器堆RM
寄存器堆由4个寄存器组成,从中引出2个输出端,分别对应rs和rd的操作数,寄存器的读写由寄存器写信号RegWrite和选择信号sltw控制。
4.运算器ALU
运算器实现加、减、与、或、逻辑移位和算术移位运算,通过一些基本运算,能够实现各种指令的功能。
5.数据寄存器RM
采用指令和数据分离的方法,有效避免了取指令与取数据之间的相关性,数据存储器采用RAM,即可读写的存储器。
3.1.3构造指令数据通路
分析R型指令的格式,根据其包含的操作数rs、rt和rd,运算所涉及的电路组件,构造数据通路,分析其需要的控制信号,以便控制器产生相应的控制信号。
分析I型指令的格式,根据其包含的操作数rs、rt以及immediate,在指令具体执行时,所涉及到的电路部件,构造数据通路,分析相应的控制信号。
由于J型指令为无条件跳转指令,只有跳转的地址,相应的数据通路和控制信号比较简单。
3.1.4控制器封装
在各种指令的数据通路和控制信号均明确后,采用硬布线的方法,使用Logisim提供的相应的逻辑门、分线器和解码器等,在不同的指令时,输出相应的控制信号,完成对相应部件的控制
4详细设计与实现
构建单周期CPU
通过构建PC、IM、RF、ALU和DM等相关部件,分析指令的数据通路,分析相关控制信号,构建控制器,最终完成电路的连线,构成单周期CPU,其电路图如图4.1所示。
图4.1单周期CPU电路图
4.1.1主要功能部件实现
1.程序计数器PC
选用的元器件:
寄存器(数据位宽:
32,触发方式:
上升沿),逻辑非门(数据位宽:
32,输入引脚个数:
2,输出值:
运算结果),逻辑或门(数据位宽:
32,输入引脚个数:
2,输出值:
运算结果),数据选择器(数据位宽:
32,选择数据长度:
2),扩展器(输入位宽:
26,输出位宽:
32,扩展方式:
符号位扩展),加法器(数据位宽:
32),选择器选择端输入(默认参数值),时钟输入引脚(默认参数值),清零输入引脚(默认参数值),PCWrite输入引脚(默认参数值),PCin输入引脚(默认输入值),address输入引脚(默认输入
值),IMM输入引脚(默认输入值)。
输入:
时钟信号、清零信号,PCWrite输入信号,选择器选择端输入信号,PCin输入,address输入,IMM输入。
输出:
寄存器的输出端。
具体实现:
在本次课程设计中,将程序计数器PC和地址转移逻辑NPC设计封装在一起,PC由一个寄存器构成,其输入端有个多路选择器,选择输入的地址是普通的+4,还是jump跳转地址,或者是条件跳转地址,选择信号为控制器发出的信号Branch和一个转换逻辑的输出信号的与操作的结果,其中逻辑转换电路是将条件跳转的结果转换为控制多路选择器的信号。
当跳转指令jump来临时,PC输出的是跳转的地址address;当条件跳转成立时,PC输出的是条件跳转的地址IMM;否则,PC输出的是普通的+4地址,由加法器实现+4操作。
其中address由一个扩展器从26位扩展到32位,IMM已经扩展好。
具体电路见图4.2PC逻辑实现图图4.2。
图4.2PC逻辑实现图
2.运算器ALU
硬件原理图4.3所示。
为实现表1.1中的1~9条指令所对应的运算,在设计ALU时,采用了与门、或门、加法器、减法器、比较器、移位器同时运算,结果通过一个多路选择器选择输出,选择器的选择端为指令中的OP字段。
为了方便条件跳转指令的实现,利用ALU中的比较器,增加两个输出,分别为比较之后相等和大于成立时的输出。
在进行移位运算时,输入的B操作数通过一个分线器取出该32位操作数的
低6位,作为移位器的移位位数输入。
在实现slt指令时,由于比较器的输出为一位数,运用一个分线器将其扩展成32位输出。
图4.3ALU硬件原理图
3.寄存器堆RF
寄存器堆由32个寄存器组成,采用下降沿触发,目的是使的寄存器的读和写分别在一个时钟周期中的不同部分实现,消除寄存器的读写的相关性。
具体的实现原理图见图4.4。
从中引出2个输出端,分别对应rs和rd的操作数,在sltr1和sltr2的选择输入下,使得可同时去除两个操作数。
输入regw为要写入寄存器的数据,寄存器的读写由寄存器写信号RegWrite和选择信号sltw选择的结果信号进行与操作,当regwrite信号为1时,寄存器可被写,此时通过sltw选择要写的寄存器,在时钟的下降沿来临时,数据即可写入寄存器;当regwrite信号为0时,由于regwrite信号接入到寄存器的使能端,使得寄存器忽略时钟的输入,禁止数据写入寄存器,从而达到寄存器的写入控制。
图4.4寄存器推电路图
4.译码器DECODE
由于R型指令、I型指令和J型指令的操作数的来源不同,有来自寄存器的,有来自立即数的;实现的功能不同,有的实现基本运算,有的实现跳转,导致除了OP字段外的字段在译码输出时有重复的部分。
因此设计译码器的输出结构,通过分线器的反复使用,在进行指令译码输出的基础上,R型指令译码输出OP、rs、rt、rd、funct,增加I型和J型指令中立即数IMM和目标地址address的输出,解决了不同指令之间的译码输出重复的问题。
具体实现的电路图如图4.5所示。
图4.5译码器DECODE电路图
4.1.2构造指令通路
阅读单条指令,改写成RTL,根据RTL功能填写对应的指令的数据通路表,当发现新增需求时,合并至已有的部件,修改已有部件的功能,修改输入和输出,若已有的部件中没有相应的部件,则增加新的部件,新增部件后,扩展表格,增加扩展器输入,依次类推完善数据通路表格。
进行垂直方向合并,去除重复项,多输入用MUX综合,MUX的选择信号由控制器生成。
表4.1指令数据通路表
指令
PC
IM
ADD
PC+4
PC
ADDI
PC+4
PC
ADDIU
PC+4
PC
AND
PC+4
PC
ANDI
PC+4
PC
SLL
PC+4
PC
SRA
PC+4
PC
SRL
PC+4
PC
SUB
PC+4
PC
OR
PC+4
PC
ORI
PC+4
PC
NOR
PC+4
PC
LW
PC+4
PC
SW
PC+4
PC
BEQ
PC+4
PC
BNEQ
PC+4/PC+4+OFFSET
PC
SLT
PC+4/PC+4+OFFSET
PC
SLTI
PC+4
PC
SLTU
PC+4
PC
J
PC+4
PC
JAL
(PC&FC000000)|S-EXT
PC
JR
PC+4
PC
R1
PC
主要故障与调试
4.1.3故障1寄存器堆:
寄存器堆的数据存、取问题。
故障现象:
取出寄存器数据时,一次只能取出一个操作数;将数据存入寄存器时,寄存器都更新为输入端输入的值。
原因分析:
在取出寄存器数据时,如果只使用一个多路选择器输出,一次只能取出一个操作数,当指令的操作数为两个时则无法一次同时取出;在将数据存入寄存器时,给每个寄存器输入同一时钟,当上升沿触发时,导致每个寄存器都更新为输入端输入的值。
解决方案:
为解决两个操作数同时输出的问题,在输出寄存器数据时用两个选择器,在两个多路选择器的选择端输入不同的寄存器编号,可同时取两个操作数;在寄存器中存入数据时,使用寄存器的使能端,将选择信号通过解码器输出,然后和一个寄存器写控制信号regw进行与操作。
当regw信号为1时,使能端输入为1,通过时钟脉冲更新相应的寄存器;当regw信号为0时,使能端输入为0,寄存器忽略时钟输入,此时不更新寄存器内容。
4.1.4故障DECODE:
译码输出问题。
故障现象:
取出的指令送入译码电路进行译码,输出的R型指令、I型指令和J型指令操作数字段有重复。
原因分析:
R型指令、I型指令和J型指令的操作数的来源不同,有来自寄
存器的,有来自立即数的;实现的功能不同,有的实现基本运算,有的实现跳转,导致除了OP字段外的字段在译码输出时有重复的部分。
解决方案:
改进译码器的输出结构,通过分线器的反复使用,在进行指令译码输出的基础上,R型指令译码输出OP、rs、rt、rd、funct,增加I型和J型指令中立即数IMM和目标地址address的输出,解决了不同指令之间的译码输出重复的问题。
解决问题后的电路图如图5.2所示。
图5.2指令译码问题解决后电路图
4.1.5故障3显示指令:
执行显示指令时,显示数据一闪而过。
故障现象:
当显示指令执行完毕,显示数据一闪而过,变成其他数据了。
原因分析:
设计显示指令逻辑时没有考虑如何锁存过去的数据,执行显示指令时,能正常在32进制数字显示器上显示数据,当执行完显示指令后,显示的数据就变成其他指令中immediate字段部分了。
解决方案:
采用寄存器,将要显示的数据存储起来,通过控制器产生的显示控制信号Disp和显示器选择输入端解码产生的输出进行与操作,输入到寄存器的使能端,控制寄存器不随时钟的改变而改变,达到锁存的目的。
问题解决之后的电路图如图5.3所示。
图5.3显示数据锁存电路图
将PC+4接在数据选择器的0输入端
将PC+4+OFFSET接在数据选择器的1输入端
将JUMP指令的跳转地址接在2输入端
将JUMP_RIGEISTER接在4输入端
输出为PC_OUT
DECODE设计
设计R型指令
指令
31~26
25~21
20~16
15~11
10~6
5~0
Add
0
RS
RT
RD
0
0
ADDU
0
RS
RT
RD
0
1
AND
0
RS
RT
RD
0
2
SUB
0
RS
RT
RD
0
3
OR
0
RS
RT
RD
0
4
NOR
0
RS
RT
RD
0
5
SLT
0
RS
RT
RD
0
6
SLTU
0
RS
RT
RD
0
7
SLL
0
0
RT
RD
SA
8
SRA
0
0
RT
RD
SA
9
SRL
0
0
RT
RD
SA
10
JR
0
RS
0
HINT
11
设计I型指令
指令
31~26
25~21
20~16
15~11
10~6
5~0
ADDI
1
RS
RT
IMMEDIATE
ADDIU
2
RS
RT
IMMEDIATE
ANDI
3
RS
RT
IMMEDIATE
ORI
4
RS
RT
IMMEDIATE
LW
5
BASE
RT
OFFSET
SW
6
BASE
RT
OFFSET
BEQ
7
RS
RT
OFFSET
BNE
8
RS
RT
OFFSET
SLTI
9
RS
RT
IMMEDIATE
设计J型指令
指令
31~26
25~21
20~16
15~11
10~6
5~0
J
10
INSTR_INDEX
JAL
11
INSTR_INDEX
利用分离器完成指令格式中规定的几种。
控制信号综合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组成 原理 设计