计算机组成与系统结构课程设计单周期32位CPU的设计.docx
- 文档编号:30502660
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:20
- 大小:904.89KB
计算机组成与系统结构课程设计单周期32位CPU的设计.docx
《计算机组成与系统结构课程设计单周期32位CPU的设计.docx》由会员分享,可在线阅读,更多相关《计算机组成与系统结构课程设计单周期32位CPU的设计.docx(20页珍藏版)》请在冰豆网上搜索。
计算机组成与系统结构课程设计单周期32位CPU的设计
学号:
计算机组成与系统结构课程设计
设计说明书
单周期32位CPU的设计
起止日期:
2014年1月13日至2014年1月17日
学生姓名
班级
11计算机2班
成绩
指导教师(签字)
计算机与信息工程学院
2014年1月17日
1、指令系统设计
R型指令(op=0001)
│←─━━━op────→│←rs→│←rt→│←rd→│←─━━━━func━━━────│
add(func=000001):
将rs寄存器中的值和rt寄存器中的值相加,结果存入rd寄存器
sub(func=000010):
将rs寄存器中的值和rt寄存器中的值相减,结果存入rd寄存器
and(func=000011):
将rs寄存器中的值和rt寄存器中的值相与,结果存入rd寄存器
or(func=000100):
将rs寄存器中的值和rt寄存器中的值进行或运算,结果存入rd寄存器
I型指令
│←─━━━op────→│←rs→│←rt→│←─━━━━━━━立即数━━━━────│
addi(op=1000):
将rs寄存器中的值与(补零成32位的)立即数减,结果存入rt寄存器
ori(op=0010):
将rs寄存器中的值与(补零成32位的)立即数或,结果存入rt寄存器
lw(op=0011):
将RAM中地址为[rs+立即数]单元的值写入rt
sw(op=0100):
将rt中的值写入RAM中地址为[rs+立即数]单元
beq(op=0101):
若rs中的值=rt中的值,则跳转到(原本的下一个地址+立即数)
wr(op=0111):
把(补零成32位的)立即数写入寄存器rt
J型指令
│←─━━━op────→│←───invalid──→│←─━━━━━━━地址━━━━━━────│
8
8
jump(op=0110):
直接跳转到目的地址(8位)开始执行
指令译码器的作业是对取指令操作中得到的指令进行译码,确定这条指令需要完成的操作。
从而产生相应的控制信号,驱动执行状态中的各种动作。
它是控制器的一个重要组成部分。
在MIPS指令集中,根据操作码OP和功能码FUNC来区别指令。
根据表3-3列出的20条指令编码的逻辑表达式如下,其中,OP[5..0]为操作码OP,FUNC[5..0]为功能码FUNC,电路符号如图9-4所示。
域编号
[31..26]
[25..21]
[20..16]
[15..11]
[10..06]
[05..00]
R形式
Op
Rs
Rt
Rd
Sa
Func
Add
000000
Rs
Rt
Rd
00000
100000
Sub
000000
Rs
Rt
Rd
00000
100010
And
000000
Rs
Rt
Rd
00000
100100
Or
000000
Rs
Rt
Rd
00000
100101
Xor
000000
Rs
Rt
Rd
00000
100110
Sll
000000
00000
Rt
Rd
Sa
000000
Srl
000000
00000
Rt
Rd
Sa
000010
Sra
000000
00000
Rt
Rd
Sa
000011
Jr
000000
Rs
00000
00000
00000
001000
I形式
Op
Rs
Rt
Immediate(立即数)
Addi
001000
Rs
Rt
Immediate
Andi
001100
Rs
Rt
immediate
Ori
001101
Rs
Rt
immediate
Xori
001110
Rs
Rt
immediate
Lw
100011
Rs
Rt
Offset
Sw
101011
Rs
Rt
Offset
Beq
000100
Rs
Rt
Offset
Bne
000101
Rs
rt
Offset
Lui
001111
000000
Rt
Immediate
J形式
Op
address
J
000010
target
jal
000011
target
图5-2指令执行时序图2
仿真结果:
2、
控制部件设计
控制器是计算机中发号施令的部件,它控制计算机的各部件有条不紊的进行工作。
更具体的讲,控制器的任务是从内存中取出指令解题步骤加以分析,然后执行某种操作。
PCSOURCE是用于标记下一条指令的地址,通过计算得到的下一条指令有下列4种情况:
为0时:
下一条指令地址取PC+4(用于指令存储器的地址是[7..2]);为1时:
下一条指令地址取分支跳转(BEQ、BNQ指令);为2时:
下一条指令地址取跳转(J指令);为3时:
下一条指令地址取跳转变链接(JAL指令)。
CALL(JAL)标记31号寄存器,由于JAL指令要把分支延迟槽下一条指令的指令地址保存在寄存器31号中,故需要设置一个控制信号CALL,当CALL=1时,选择31号寄存器,为JAL跳转指令提供寄存器,当CALL=0时,从32位的寄存器堆中根据地址选择出一个32位的寄存器用于读或写数据。
M2REG(LW指令)标记是将运算的结果直接写入寄存器堆,还是将数据存储器的数据取出后写入寄存器堆。
ALUC运算器的控制信号,用于选择做何种运算。
WMEM数据存储器的读写信号。
SHIFT标记移位运算,由于移位运算的运算数需要位数拓展。
ALUIMM标记立即数运算,由于有立即数参与运算前需要位数拓展。
SEXT标记参加运算的是有符号数。
WREG寄存器堆的读写信号。
REGRT标记指令中的[20..16]或[15..11]中的哪一种作为运算的目标寄存器。
它的电路符号如图9-7。
根据3.3节指令的执行分析,可以得出这20条控制信号的逻辑表达式如图所示:
表3-1。
指令(R类型)
Add
Sub
And
Or
Xor
Sll
Srl
Sra
Jr
输入
Op[5..0]
000000
000000
000000
000000
000000
000000
000000
000000
000000
Func[5..0]
100000
100010
100100
100101
100110
000000
000010
000011
001000
Z
X
X
X
X
X
X
X
X
X
输出
Pcsource
[1..0]
00
00
00
00
00
00
00
00
10
Aluc[3..0]
X000
X100
X001
X101
X010
0011
0111
1111
X
Shift
0
0
0
0
0
1
1
1
X
aluimm
0
0
0
0
0
0
0
0
x
Sext
X
X
X
X
X
X
X
X
x
Wmem
0
0
0
0
0
0
0
0
0
Wreg
1
1
1
1
1
1
1
1
0
M2reg
0
0
0
0
0
0
0
0
X
Regrt
0
0
0
0
0
0
0
0
X
Call
0
0
0
0
0
0
0
0
x
指令
(I类型)
Addi
Andi
Ori
Xori
Lw
Sw
Beq
Bne
Lui
输入
Op[5..0]
001000
001100
001101
001110
100011
101011
000100
000101
001111
Func[5..0]
Xxxxxx
Xxxxxx
Xxxxxx
Xxxxxx
Xxxxxx
Xxxxxx
Xxxxxx
Xxxxxx
Xxxxxx
Z
X
X
X
X
X
X
0
1
0
1
x
输出
Pcsource
[1..0]
00
00
00
00
00
00
00
01
01
00
00
Aluc[3..0]
X001
X001
X101
X010
X000
X000
X100
X100
X110
Shift
0
0
0
0
0
0
0
0
0
Aluimm
1
1
1
1
1
1
0
0
1
Sext
1
0
0
0
1
1
1
1
1
Wmem
0
0
0
0
0
1
0
0
0
Wreg
1
1
1
1
1
0
0
0
1
M2reg
0
0
0
0
1
X
X
X
0
Regrt
1
1
1
1
1
X
X
X
1
Call
0
0
0
0
0
X
X
X
0
指令
(J类型)
J
Jal
输入
Op[5..0]
000010
000011
Func[5..0]
Xxxxxx
Xxxxxx
Z
X
x
Pcsource
[1..0]
11
11
Aluc[3..0]
X
X
Shift
X
X
Aluimm
X
X
Sext
X
X
Wmem
0
0
Wreg
0
1
M2reg
X
x
Regrt
X
X
Call
X
1
仿真结果:
、
指令存储器用于在计算机中保存指令。
在本届中使用LPM_ROM来实现,它能保存64条指令字,如图9-10所示。
指令存储器输入:
A[31..0](指令地址),实际使用的地址为A[7..2]。
指令的输出信号:
DO[31..0]。
指令存储器的元件符号如图9-10所示。
真值表如9-3所示,DO表示在指令数据文件中地址A对应的指令数据。
波形分析。
10.0ns~20.0ns这一段,A为00000004,CLK在10.0ns时刻有一个下降沿。
故此时DO的值应该变为地址00000004对应的指令数据为3C010000,然后直到20.0ns时刻之前都是上升沿,故一直保持不变为3C010000,直到20.0ns时刻来了一个下降沿,DO的值应该变为地址00000008对应的指令数据为34240050。
图9-20中此刻时段正好也为这样,因此得证。
最后,根据原理图,按照第4.1.3小节中的方法生成元器件原理图。
仿真结果:
输入
WE
0
0
1
1
X
X
A[31..0]
A
A
A
A
A
A
DI[31..0]
X
X
DI
DI
X
X
CLK
X
X
0
0
1
1
MEMCLK
↑
↓
↑
↓
↑
↓
输出
DO[31..0]
DO
不变
DI
不变
DO
不变
↑为上升沿。
↓为下降沿
数据存储器的原理图设计
(1)加法指令数据文件
(2)调用lpm_ram_dp宏设计数据存储器
(3)
仿真结果:
:
波形分析。
20.0ns~25.0ns这一时刻,A为00000060,CLK为0,WE为0,则为读信号,MEMCLK此时此刻有一个上升沿,故独处地址A对应的数据DO位000000A3。
30.0ns~35.0ns这一时刻,A为00000000,DI为00000300,CLK为0,WE为1,则写为信号。
MEMCLK此时此刻有一个上升沿,故将DI数据写入到地址A对应的位置DO为00000300。
图9-31中正是如此,只是整体有一个周期的时延,因此得证。
3、单周期中央处理器cpu设计
通过调用前面编写的一系列元器件来实现单周期CPU,它能处理MIPS中列出的20条常用指令。
CPU输入信号:
CLOCK为时钟信号,RESETN为设置0信号,INSTR为指令数据,MEM为运算数据。
CPU输出信号:
PC是下一条要执行指令在指令存储器中的地址,DATA是运算得到的要写入数据存储器的数据。
根据控制器各控制信号的描述以及3.3节中CPU设计思路分析,可综合完整的CPU逻辑设计,如图9-33所示。
最终得到CPU的原理图
4、计算机主机系统设计
主机系统的设计与现实是离不开存储器的,因为CPU要从指令存储器中取得指令,分析解释后在从数据存储器中取得用于计算的数据,计算的接过可存放到数据存储器中。
故本杰将在9.6节的基础上为CPU加上指令存储器和数据存储器,得到一个计算机主机系统。
主机系统的电路图
分析CPU的设计描述及各端口描述,不难得出如图所示的主机系统的原理图
原理图:
5、调试程序编制及主机系统调试
加法程序调试仿真
在这里做一个加法163+39+121+277=600
指令寄存器数据文件:
仿真结果:
6、心得体会
在此次课设进行前我们在老师帮助下提前做了几章的实验,所以对QuartusⅡ软件的操作有了一定基础的了解,让我们更好的去做这个课设,经过一个星期的努力,熟练地掌握了quartus的使用方法。
在此次课设中,我们从最底层了解到了计算机的本质,对CPU、寄存器、控制器登入到精简指令计算机,都有了一定程度上的了解。
在课设当中自己动手实践开发设计能力得到了极大地提高,为今后的相关硬件课程打下了坚实的基础,硬件设计思维得到了进一步的锻炼和提升。
参考资料
[1]朱子玉,李亚民.CPU芯片逻辑设计技术[M].北京:
清华大学出版社,2005:
31-110.
[2]王诚等.AlteraFPGA/CPLD设计基础篇[M].北京:
人民邮电出版社,2005:
1-28.
[3](美)DominicSweetman.MIPS处理器设计透视[M].北京:
北京航空航天大学出版社,2005:
190-202.
[4]胡伟武,唐志敏.龙芯1号处理器结构设计[J].计算机学报,2003,26(4):
385-396.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 系统 结构 课程设计 周期 32 CPU 设计