湘潭大学计算机原理 实验三 多周期MIPS CPU的控制部件实验报告.docx
《湘潭大学计算机原理 实验三 多周期MIPS CPU的控制部件实验报告.docx》由会员分享,可在线阅读,更多相关《湘潭大学计算机原理 实验三 多周期MIPS CPU的控制部件实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
湘潭大学计算机原理实验三多周期MIPSCPU的控制部件实验报告
计算机原理与设计
实验报告
实验三多周期MIPSCPU的控制部件
用有限状态机实现多周期CPU的控制部件
姓名:
XXX
学号:
2013551728
班级:
13级软件工程2班
实验日期:
2014年11月12日
实验地点
信息楼605
硬件环境
Intel(R)Core™i3-3240,1.91GB
系统环境
WindowsXPSP3
设计软件
QuartusII13.0
器件型号
EP1C12QC240C8
一.实验目的
1、了解MIPS—CPU控制器的功能和工作原理;
2、掌握用有限状态机技术实现多周期控制器的方法;
3、熟练掌握用VerilogHDL语言设计多周期控制器的方法;
4、熟练掌握对多周期控制器的仿真实验验证和硬件测试两种调试方法;
5、掌握向MIPS-CPU顶层数据通路中增加控制单元的方法,并通过仿真验证和硬件测试两种方法对电路进行故障定位的调试技术。
二.实验内容
(1)MIPS—CPU控制器的有限状态机设计,根据MIPS—CPU各种类型指令执行要求和有限状态机的设计原理,将多周期控制器的指令执行划分为多个状态,确定每一种指令的有限状态机,最后归纳为完整的多周期控制器有限状态机。
通过VerilogHDL语言实现多周期控制器有限状态机。
(2)根据MIPS—CPU控制器的接口要求,在有限状态机的基础上,用VerilogHDL实现完整的MIPS—CPU控制器的设计,并根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;
(3)设计控制器的硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序重新编译;最终完成控制器的硬件电路设计;
(4)在MIPS—CPU指令系统的数据通路基础上,增加控制单元电路,并进行编译,仿真波形和调试。
根据仿真波形,验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;
(5)对增加了控制单元的顶层数据通路设计硬件下载测试方案。
将编译通过的电路下载到实验台中。
根据硬件调试结果验证设计的正确性,并对出现的故障进行定位,修改程序,重新编译;最终完成增加了控制单元的顶层数据通路设计。
三.实验原理与步骤
1.把指令执行分成多个阶段,每个阶段在一个时钟周期内完成
(1).时钟周期以最复杂阶段所花时间为准
(2).尽量分成大致相等的若干阶段
(3).每个阶段内最多只能完成:
1次访存或1次寄存器堆读/写或1次ALU
2.每步都设置相应的存储元件,执行结果都在下个时钟开始保存到相应单元
3.认真阅读书上的控制部件代码后,将其按照电路图进行拆分,拆分为三个部件,并在顶层模块中连接线路。
四.实验源代码
D触发器源代码:
下一状态部件源代码:
输出函数部件源代码:
五.EDA阶段的实验结果(“编译”、“仿真”等)
仿真结果如上图。
六.实验电路结构图
七.实验按键显示说明及引脚分配
1、本实验按键及显示说明
(1)按键说明
按键
对应功能
键1
op
键2
op
键3
func
键4
func
键7
clk
键8
clrn
(2)显示说明
数码编号
对应结果
数码1
aluc
数码2
aluscrb
数码3
pcsource[1..0]
数码4
jalregretm2reg
D1
wreg
D2
sext
D3
shift
D4
selpc
D5
wmem
D6
iord
D7
wir
D8
wpc
引脚分配表:
NodeName
Location
op[5]
PIN_238
op[4]
PIN_237
op[3]
PIN_236
op[2]
PIN_235
op[1]
PIN_234
op[0]
PIN_233
func[5]
PIN_7
func[4]
PIN_6
func[3]
PIN_4
func[2]
PIN_3
func[1]
PIN_2
func[0]
PIN_1
z
PIN_12
clrn
PIN_173
clk
PIN_169
wpc
PIN_160
wir
PIN_159
iord
PIN_158
wmem
PIN_141
selpc
PIN_140
shift
PIN_139
sext
PIN_138
wreg
PIN_137
aluc[3]
PIN_136
aluc[2]
PIN_135
aluc[1]
PIN_134
aluc[0]
PIN_133
alusrcb[0]
PIN_21
alusrcb[1]
PIN_41
pcsource[1]
PIN_18
pcsource[0]
PIN_17
m2reg
PIN_15
regrt
PIN_14
jal
PIN_13
八.测试时的电路总体结构及其说明
多周期CPU控制部件的状态转移图
多周期CPU控制部件的电路结构图
实验电路图
九.测试计划(包括计划进行的系统测试、每一测试的测试过程、测试所需的测试数据、预期结果数据等)及其相关说明
下一状态函数的真值表
实验结果如下:
输入
输出
op[5..0]
func5..0[]
状态
指令
Z
wpc
Pcsource[1:
0]
wir
iord
wmem
aluc[3:
0]
selpc
shift
alusrcb[1:
0]
sext
wreg
m2reg
regrt
jal
X
X
sif
x
X
1
00
0
0
0
X000
1
0
01
1
0
0
0
0
000011
X
sid
i_j
X
1
11
0
0
0
X000
1
0
00
1
0
0
0
0
000011
X
i_jal
X
1
11
1
0
0
X000
1
0
01
1
1
0
0
1
000000
001000
i_jr
X
1
10
0
0
0
X000
0
0
00
1
0
0
0
0
X
X
i-others
X
0
00
0
0
0
X000
1
0
01
1
0
0
0
0
000000
X
sexe
i_add
X
0
xx
0
x
0
X000
0
0
00
x
0
x
x
0
000000
X
i_sub
X
0
00
0
0
0
X100
0
0
00
1
0
0
0
0
000000
100000
i_and
X
0
00
0
0
0
X001
0
0
00
1
0
0
0
0
000000
100010
i_or
X
0
00
0
0
0
X101
0
0
00
1
0
0
0
0
000000
100100
i_xor
X
0
00
0
0
0
X010
0
0
00
1
0
0
0
0
000000
100110
i_sll
X
0
00
0
0
0
X011
0
1
00
1
0
0
0
0
000000
000000
i_srl
X
0
00
0
0
0
X111
0
1
00
1
0
0
0
0
000000
000011
i_sra
X
0
00
0
0
0
1111
0
1
01
1
0
0
0
0
001000
X
i_addi
X
0
00
1
0
0
X000
0
0
10
1
0
0
0
0
001100
X
i_andi
X
1
00
0
0
0
X001
1
0
10
0
0
0
0
0
001101
X
i_ori
X
0
00
0
0
0
X101
0
0
10
0
0
0
0
0
001110
X
i_xori
X
0
00
0
0
0
X010
0
0
10
0
0
0
0
0
100011
X
i_lw
X
0
00
0
0
0
X000
0
0
10
1
0
0
0
0
101011
X
i_sw
X
0
00
0
0
0
X000
0
0
10
1
0
0
0
0
000100
X
i_beq
0
0
00
0
0
0
X000
0
0
10
1
0
0
0
0
1
0
0
000101
X
i_bne
0
0
01
0
0
0
X010
0
0
00
1
0
0
0
0
1
1
0
001111
000000
i_lui
X
0
00
0
0
0
X110
0
0
00
1
0
0
0
0
100011
X
smem
i_lw
X
0
00
0
1
0
X000
0
0
00
1
0
0
0
0
101011
X
i_sw
X
0
00
0
1
0
X000
0
0
00
1
0
0
0
0
swb
r_type
X
001000
X
i_addi
X
1
00
1
0
0
X000
1
0
01
1
0
0
0
0
001101
X
i_ori
X
1
00
1
0
0
X000
1
0
01
1
0
0
0
0
001111
000000
i_lui
X
1
00
1
0
0
X000
1
0
01
1
0
0
0
0
100011
X
i_lw
X
0
00
0
0
0
X000
0
0
00
1
1
1
1
0
与预期实验结果相符。
十.关于实验电路设计的其他说明
q(state)值暂未进行输出。
十一.实验心得
这次实验将控制部件拆分花费了大量的时间,也使得我对于Verilog语言加深了理解和掌握。
对cpu的控制部件的结构和原理进行了深入的了解,对以后的学习起到了重要的作用。